當前位置:
首頁 > 最新 > 監控視頻幀間篡改檢測系統設計與性能優化研究

監控視頻幀間篡改檢測系統設計與性能優化研究

摘要:監控視頻作為司法取證的重要依據,其真實性難以得到保證。幀間篡改作為最常見的視頻篡改方式,其檢測演算法研究已取得大量卓越成果,但在實際場景應用中卻面臨著許多困難。分析司法場景下對監控視頻內容真實性鑒證的現實需求,設計實現了功能完備的幀間篡改檢測系統。為了解決系統實現演算法的大計算量問題,研究GPU的硬體結構、CUDA的線程模型和內存模型,提出了通過CUDA使用GPU進行性能優化的方法,有效提升了系統性能。

正文內容:

0 引 言

隨著互聯網技術的發展和進步,日漸強大和便捷的視頻圖像編輯技術使用戶可以輕易對數字圖像、視頻進行篡改,使得數字圖像和視頻作為司法證據時難以有效發揮作用。數字圖像視頻取證旨在檢測和分析圖像和視頻原始內容的真實性,以保證司法有效、公正。為了保證視頻原始內容的真實性,學術界已提出了許多主動取證技術,如數字水印技術。通過在錄製視頻時嵌入認證信息進行真實性驗證,但主動取證技術要求在視頻錄製時就嵌入認證信息,這在現實場景中很難實現。所以,基於視頻本身特徵的被動取證技術有更大的發展和應用空間。

視頻幀間篡改檢測技術是被動取證技術的主要分支。視頻的幀間篡改方式主要有:幀刪除,刪除原始視頻的一幀或部分幀;針插入,異源幀片段插入原視頻;幀複製,同源幀片段插入原視頻。現有的幀間篡改檢測方法主要分為兩類:基於篡改點內容不連續性的方法和基於二次編碼周期性效應的方法。

基於二次編碼周期性效應的方法最初用於研究JPEG圖像的雙重壓縮檢測,2006年開始越來越多的學者將其應用於視頻篡改檢測。針對兩次編碼前後視頻GOP結構是否對齊、視頻的不同編碼標準(MPEG-X、H.264、HEVC)、兩次編碼量化參數是否相同等多種情況,也提出了大量檢測演算法[1]。基於篡改點內容不連續性的方法研究始於2012年,是幀間篡改檢測領域的新方向。Chao等人[2]提出了一種基於LK光流[3]的方法,Wang等人[4]在此基礎上進一步研究,提出了基於高斯分布的篡改檢測方法。Wu等人[5]使用速度場揭示篡改帶來的不連續性。Wang等人[6]提出了一種基於灰度相關性係數穩定性的檢測方法。Yin等人[7]將非負張量分解演算法應用於幀間篡改檢測,提出將待檢視頻序列用四維張量表示,對其進行Tucker分解後提取時間維度因子矩陣表示視頻每幀內容,然後根據相關性檢測篡改行為。基於二次編碼效應的方法依賴於受檢視頻的編碼參數,而基於內容連續性的方法對編碼參數不敏感,具有更好的普適性,在實際應用中更具優勢。

本文圍繞基於內容連續性的檢測方法,設計了針對監控視頻的幀間篡改檢測系統,對系統的整體架構、功能模塊進行了設計實現。在此基礎上,該類方法的執行速度較慢。針對這一劣勢,對演算法進行GPU並行化計算的優化研究和設計實現,實現的系統具有良好的可用性和用戶友好性。

1 系統設計

視頻篡改檢測系統的需求主要源於司法領域,對作為司法證據的監控視頻的內容真實性進行驗證。現有網路環境下,視頻傳輸速率無法保障。考慮這一實際情況和應用場景的特殊性,系統採用單機應用模式,提供單獨友好的GUI(Graphical User Interface,圖形用戶界面)。系統界面使用Qt庫的Python介面PyQt實現。系統核心模塊包括視頻處理、篡改檢測和資料庫交互,使用Python、C/C++實現。

1.1 系統總體設計

系統設計是實現系統的首要步驟。只有在合理的架構下開發,才能保證系統最終的可用性。根據應用場景的具體需求,通過對系統的整體分析,設計了視頻篡改檢測系統的總體模塊結構,包括系統狀態管理、視頻預處理、篡改檢測、結果處理分析以及數據管理五大模塊,如圖1所示。

(1)系統狀態

系統狀態功能是向用戶展示系統當前的運行狀態,並對各個狀態下用戶可以進行執行的操作進行限制和管理。

(2)視頻預處理

該模塊是將用戶選擇的視頻進行預期處理,為後續的檢測工作提供服務。視頻分析功能利用FFprobe分析待檢視頻的編碼參數、解析度等信息。解碼功能將待檢視頻解碼成幀序列,其實現依賴於開源庫FFmpeg,通過合理的配置使其能夠處理儘可能多的視頻格式。圖像轉化功能主要是對解碼得到的圖像進行通道轉化,多為由RGB三通道轉為灰度單通道。

(3)篡改檢測

該模塊是核心功能模塊,利用實現的篡改檢測演算法對待檢視頻進行檢測。系統用C語言移植了文獻[2,7]的檢測演算法,並分析實際應用中存在的問題,設計了相應的功能模塊。滑動窗口功能在檢測長視頻序列時將其劃分為短序列,避免以單線操作整個長序列帶來的時間消耗。特徵計算功能通過解碼得到的幀序列計算檢測所需的特徵。該功能是整個流程中最耗時的部分,也是集中優化的部分。異常檢測則是通過檢測計算得到的特徵中的異常現象,判斷待檢視頻是否遭到篡改並得出篡改點信息。

(4)結果處理

結果處理是為了將待檢視頻的檢測結果以更豐富明晰的方式展現,可視化處理待檢視頻的篡改信息、視頻信息、特徵序列,給出多元的檢測結果報告。格式化數據組建將展示的結果信息和系統信息等組織成定義好的數據格式,存入資料庫作為存檔。

(5)數據管理

該模塊是系統的重要功能模塊。該模塊提供了檢測完成後待檢視頻序列檢測結果的存檔,同時還對執行檢測操作時的系統信息、視頻自身信息等進行記錄,並對這些重要信息提供簡便的檢索功能。這些功能均是源於應用場景的實際需求。

1.2 系統流程設計

完成系統的整體設計後,需要細化系統各模塊。這一步的主要工作是設計各個功能模塊的具體功能和不同模塊間的協作關係。系統的流程設計為主要環節,現對這方面進行簡要闡述。

系統採用經典的三層模型結構,自上而下為表示層、邏輯層和數據訪問層。表示層負責播放用戶選擇的待檢視頻、展示視頻篡改檢測的結果、展示記錄檢索的結果等功能界面;邏輯層負責執行待檢視頻的檢測,並針對檢測結果的增刪查改與數據訪問層相關聯;數據訪問層規定了對後台資料庫的操作方式。

根據用戶操作流程實現功能模塊,對於保證系統的可用性和用戶友好性具有重要作用。在此以用戶執行一次篡改檢測流程為例給出流程圖,以說明系統常規的操作流程,如圖2所示。

用戶在選擇需要檢測的視頻後,系統判斷解碼器是否支持該視頻的格式。若格式支持,前台表示層將播放該視頻,同時邏輯層對視頻執行篡改檢測。檢測結果決定了表示層向用戶展示的內容,若判斷待檢視頻未遭篡改,則將視頻的格式、編碼參數、解析度等信息展示給用戶;若判斷待檢視頻遭到篡改,則將篡改點類型、位置和特徵序列、篡改點前後幾幀等內容展示給用戶。用戶在查閱完結果後,可以選擇是否保存此次篡改檢測結果的信息。若選擇保存,則將相關信息和此次執行操作的記錄寫入資料庫;否則,將此次操作記錄寫入資料庫。

2 性能優化研究

2.1 問題分析

考慮到多種編碼參數的待檢視頻的適應性要求,在實現篡改檢測時,利用的演算法為基於篡改點內容不連續性的方法。該類方法在實際應用中的主要問題是其需要將視頻序列解碼成幀序列,之後再對幀序列逐幀計算特徵,會產生大量的時間消耗。在使用OpenCV實現的LK光流介面進行實驗時,處理1 280×720解析度的視頻效率接近2秒/幀。雖然大部分情況下篡改檢測操作沒有高實時性要求,但巨大的時間消耗無法滿足系統的可用性要求。為此,根據特徵計算的特點,系統使用GPU執行特徵計算,大幅降低了執行時間,大大改進了篡改檢測功能模塊。

2.2 GPU與CUDA

GPU(Graphics Processing Units,圖形處理器)目前已成為執行大規模並行計算的主要工具。不同於CPU的多核結構,GPU採用的是眾核架構,其絕大部分晶體管都用於執行單元而非複雜的控制單元和緩存。因此,GPU可以容納上千個沒有邏輯關係的數值計算線程,較CPU有更強大的計算能力。

CUDA(Compute Unified Device Architecture,統一計算設備架構)是NVIDIA於2007年推出的通用並行計算平台,提供了抽象的線程模型和內存模型。它為使用GPU執行並行計算提供了良好的編程模型,極大降低了使用GPU進行數據計算的開發難度。CUDA提供了CPU+GPU的異構計算架構。具體地,使用CPU執行複雜邏輯控制,使用GPU執行高度並行化的數據計算。主機端代碼通過CPU執行,GPU設備上的代碼則在主機端通過核函數(kernel)執行[8]。

2.3 特徵計算優化

在進行計算任務時,首先需要保證實現代碼的正確性,之後進行進一步的性能優化。性能優化的主要途徑有:訪存優化、計算資源優化以及數據本地化[9]。訪存優化與數據本地化利用CUDA的內存模型,使數據在GPU片上內存的存儲與載入能夠充分利用帶寬。計算資源優化利用CUDA的線程模型,以最大化發揮GPU計算單元的能力。

2.3.1 幀序列存儲與載入優化

CUDA的內存模型提供了多種可編程內存類型,包括寄存器、共享內存、本地內存、常量內存、紋理內存和全局內存。核函數的線程有私有的寄存器和本地內存;線程塊有對其所有線程可見的共享內存,而常量內存、紋理內存和全局內存對所有內存可見。

數據在主機與GPU設備之間的傳輸通常是GPU計算的瓶頸。使用GPU進行圖像計算時,大部分研究/開發人員選擇了在GPU上進行RGB三通道向灰度單通道轉換的計算。但實際中發現,在片上進行通道轉換意味著要將原始三通道圖像數據傳輸到設備上,不僅會增加多主機與設備間需要傳輸的數據量,而且會減少單次傳輸的圖像數量,反而降低了總體計算性能。更合理的方案是在主機端CPU上進行通道轉換,然後在GPU上處理單通道灰度圖。

在對視頻進行特徵計算時,不同於對單一圖像進行計算。首先,由於GPU片上內存空間的限制,大部分情況下無法將整個視頻的幀序列一次性拷貝到GPU的片上內存中。而採取處理單張圖像的方式逐幀傳輸與計算,則會大大增加主機與GPU設備之間的數據傳輸次數,嚴重影響整體的計算優化效果。考慮到每幀在計算特徵的同時需要使用歷史數據,本文採用類似滑動窗口的機制。首先根據GPU的存儲大小、視頻解析度決定窗口大小,在GPU的全局存儲空間內維護一個圖像序列。當序列中一定數量的圖像計算完成後,則拷貝進新的圖像覆蓋舊數據。為了避免進行新數據覆蓋時過多的數據移動操作,另用一個數組維護圖像序列的索引。這個過程用偽代碼表示為:

Input:Video frames

Output:EigenValues seq

winSize←generate(device,frameWidth,frameHeight)

images[winSize],index[winSize]

while(frames NOT null):

if(len(index)>1):

calculateEigenValue(images[i],seq)

removeFromIndex(i,index)

else:

loadNewFrames(images,frames)

refreshIndex(index)

return seq

在單幀圖像上執行計算時,也可以採取一定的措施提高數據的傳輸速率。將數據從全局內存中載入讀寫速度更快的共享內存,然後通過共享內存進行數據讀取,減少從較慢的全局內存讀取數據,提高了數據讀取速度。用CUDA提供的share??標識符聲明二維數組,使其作為共享變數來通過共享內存存取數據,從全局內存中讀入線程塊所需的數據後,所有線程通過此數組讀取數據而不再通過全局內存。

2.3.2 計算優化

計算過程的優化圍繞GPU的線程指令執行方式展開,GPU的架構圍繞流式多處理器(Streaming Multiprocessor,SM)的陣列搭建。CUDA的線程模型是一種兩層結構,第一層是最多由二維線程塊組成的線程網格,第二層是最多由三維線程組成的線程塊。線程塊是SM的調度單位。SM在線程塊上執行指令時,將32個線程劃分成一個基本執行單元——線程束。為了最大化利用線程束,在啟動核函數時,應將線程塊大小設置為32的整數倍,避免線程束出現空缺。

在線程束中,所有線程執行相同的指令。如果使用條件判斷使不同線程執行不同指令路徑,會造成線程束分化,導致所有線程無法同時執行,嚴重削弱性能。所以,應盡量避免條件分支。若無法避免條件分支,應盡量使分支粒度跨線程束,如設置判斷條件為if((tid/32)%2==0)。

計算中還應注意的是指令執行延遲。當每個時鐘周期中所有線程調度器都有線程束執行時,可以使計算資源充分利用。當一個線程束阻塞時,應當保證有其他滿足條件的線程束供調度器調度。根據利特爾法則(Little』s Law),保證充足的線程束數量可以達到延遲隱藏的目的。

利用線程模型進行計算資源的優化,主要方法為:合理設置線程塊大小,保證其是線程束大小的整數倍,保證線程塊中有足夠多的線程束,規避線程束分化問題。

2.3.3 總體流程與結果

使用GPU計算視頻幀序列的通用優化流程如圖4所示。依照該流程,系統實現了優化的特徵計算替換原先演算法實現中的相應部分。

依據優化流程取代原先實現的特徵計算部分,在Nvidia Geforce GTX850M(計算能力5.0),編譯環境Visual Studio Community 2015、CUDA8.0下,LK光流和NTF初步表現結果如表1、表2所示。

LK光流引入OpenCV實現的GPU模塊,對滑窗載入幀序列的效果進行簡要比對。OpenCV提供的LK光流的GPU API執行的是逐幀計算。可以看出,對內存存取和計算流程都採取合理的方法進行優化後,可以大幅縮短特徵計算時間,對大部分非高清視頻實現了篡改檢測總體流程完成時間低於視頻的播放時間。此外,儘管每幀數據量下降了3倍,但計算時間並沒有呈現3倍下滑。究其原因,一是角點檢測選取的特徵點數量並沒有呈現倍數下降,二是數據傳輸在異構計算中依舊佔據著大部分時間。所以,在進行GPU優化時更應關注片上內存讀寫的優化。

3 結 語

通過對實際需求的分析,結合傳統的系統架構設計,完成了針對監控視頻的幀間篡改檢測系統的設計和實現。在有效實現檢測演算法並使用CUDA對特徵計算過程進行合理優化後,系統的核心功能表現良好,提供的數據管理和結果展示等功能也保證了數據交互和用戶體驗。但是,在解碼階段,系統依靠FFmpeg開源庫,在應對一些稀少的視頻格式時系統無法有效處理。因此,後期會考慮優化解碼器部分,以提高系統應對多種格式視頻的能力。

參考文獻:

[1] 謝豐,蔣興浩,孫錟鋒.視頻雙壓縮檢測技術綜述[J].通信技術,2017,50(03):393-399.

[2] Chao J,Jiang X,Sun T.A Novel Video Inter-frame Forgery Model Detection Scheme based on Optical Flow Consistency[C].International Conference on Digital Forensics and Watermaking,2012:267-281.

[3] Lucas B D,Kanade T.An Iterative Image Registration Technique with an Application to Stereo Vision[C].International Joint Conference on Artificial Intelligence,1981:674-679.

[4] Wang W,Jiang X,Wang S,et al.Identifying Video Forgery Process Using Optical Flow[C].Digital-Forensics and Watermarking,2013:244-257.

[5] Wu Y,Jiang X,Sun T,et al.Exposing Video Inter-frame Forgery based on Velocity Field Consistency[C].IEEE International Conference on Acoustics,Speech and Signal Processing,2014:2674-2678.

[6] Wang Q,Li Z,Zhang Z,et al.Video Inter-Frame Forgery Identification Based on Consistency of Correlation Coefficients of Gray Values[J].Journal of Computer & Communications,2014,2(04):51-57.

[7] Yin L,Bai Z,Yang R.Video Forgery Detection based on Nonnegative Tensor Factorization[C].IEEE International Conference on Information Science and Technology,2014:148-151.

[8] 程潤偉,馬克斯?格羅斯曼,泰?麥克切爾.CUDA C編程權威指南[M].北京:機械工業出版社,2017.

[9] 梁軍,賈海鵬.視頻圖像處理與性能優化[M].北京:機械工業出版社,2017.

作者:韓宇軒,孫錟鋒,蔣興浩

單位:上海交通大學 電子信息與電氣工程學院,上海 200240

作者簡介:韓宇軒,男,碩士,主要研究方向為視頻篡改取證、高性能計算;

孫錟鋒,男,博士,副研究員,主要研究方向為視頻篡改檢測、視頻內容分析;

蔣興浩,男,博士,教授,主要研究方向為多媒體信息安全、視頻內容分析。

本文刊登在《通信技術》2018年第1期(轉載請註明出處,否則禁止轉載)

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 通信技術編輯部 的精彩文章:

基於IQ失衡補償技術的OFDM光纖通信系統研究

TAG:通信技術編輯部 |