吳翔翔,范遠(yuǎn)超,葉恩光,劉 鎮(zhèn)
(江蘇科技大學(xué) 計算機科學(xué)與工程學(xué)院,江蘇 鎮(zhèn)江212003)
基于GPU 的并行化運動目標(biāo)檢測方法的研究
吳翔翔,范遠(yuǎn)超,葉恩光,劉 鎮(zhèn)
(江蘇科技大學(xué) 計算機科學(xué)與工程學(xué)院,江蘇 鎮(zhèn)江212003)
在智能視頻監(jiān)控領(lǐng)域中,運動目標(biāo)檢測已經(jīng)成為主要研究課題之一,針對傳統(tǒng)的方向梯度直方圖(HOG)算法并行化程度低等問題,采用了基于嵌入式GPU的并行化改進的運動目標(biāo)檢測方法,通過大數(shù)據(jù)量樣本圖片和實時采集視頻進行檢測驗證,在GPU并行化模式下得到的處理速度都比CPU模式下處理速度高3倍以上,從而驗證了經(jīng)并行化優(yōu)化的HOG算法檢測速度明顯提高,使系統(tǒng)整體的運行效率得到顯著提升。
運動目標(biāo)檢測;嵌入式GPU;并行化;HOG
隨著機器視覺和人工智能的發(fā)展,運動目標(biāo)檢測方法成為計算機視覺技術(shù)和圖像處理的主要研究課題之一。十多年來,基于圖像分割的圖像數(shù)據(jù)處理產(chǎn)生了多種算法,包括閾值分割、統(tǒng)計檢驗和檢測濾波器3大類,其主要缺點有:噪聲對分割效果影響巨大;運算復(fù)雜且處理速度慢;算法不靈活,只能處理單一圖像且閾值依賴于具體圖像。通過對算法的不斷優(yōu)化,傳統(tǒng)算法逐漸被基于幾何曲線、曲面演化的運動目標(biāo)檢測算法所取代,其主要的優(yōu)化在于將檢測問題轉(zhuǎn)化為能量泛函的建立和優(yōu)化,并使用偏微分方程從視頻或圖像中分割出預(yù)期目標(biāo)。
目前運動目標(biāo)檢測技術(shù)還處于發(fā)展完善階段,如方向梯度直方圖(HOG)算法,效果良好,但是性能相對較低,無法滿足實時性檢測的要求,則.性能成為了方向梯度直方圖(HOG)算法的一個瓶頸。該研究內(nèi)容就是針對HOG算法檢測效果較好、但時間復(fù)雜度髙的特點,基于CUDA平臺架構(gòu),調(diào)用GPU并行計算資源,對傳統(tǒng)的HOG檢測算法進行了并行化改進,以達(dá)到算法的實時化、實用化的目的。
1.1OpenCV圖像開發(fā)平臺介紹
OpenCV是一個開源的跨平臺計算機視覺庫,可以在Windows、Linux和Mac OS等多種系統(tǒng)上運行。目前OpenCV中又添加了GPU功能模塊,該模塊可以調(diào)用GPU硬件資源來對OpenCV庫中的傳統(tǒng)算法進行并行化改進,從而提高系統(tǒng)性能。
OpenCV可以實現(xiàn)的主要功能:1)對圖像視頻文件的輸入、輸出處理。2)對圖像等多種類型數(shù)據(jù)作為對象進行操作,如獲取、分配及釋放等操作。3)包含大量線性代數(shù)操作及算法操作程序。4)分析各種結(jié)構(gòu)。如霍夫變換,多距離計算等。5)分析運動物體,包括目標(biāo)跟蹤和運動分割。
1.2基于方向梯度直方圖的運動目標(biāo)檢測算法
在計算機視覺和圖像處理中,一般采用方向梯度直方圖(Histogram of Oriented Gradient,HOG)來描述物體檢測的特征,它主要利用統(tǒng)計圖像局部區(qū)域的方向梯度直方圖和計算來提取圖片的特征。在圖像識別中,Hog特征結(jié)合SVM分類器的算法已經(jīng)成為一種主流,并被普遍應(yīng)用在行人檢測中。流程圖如圖1所示。
HOG算法的主要思想是對于給出的一幅圖像通過局部目標(biāo)的表象和形狀能夠被梯度和邊緣的方向密度很好的表述。具體的實現(xiàn)方法首先是將圖像分割成小的連通區(qū)域,這些連通區(qū)域也被稱之為細(xì)胞單元,然后采集細(xì)胞單元各像素點的梯度或邊緣的方向直方圖,最后把這些直方圖通過一定規(guī)則組合起來,形成一個特征描述器。HOG算法的具體過程如下:
圖1 HOG+SVM檢測算法的基本流程圖
1)標(biāo)準(zhǔn)化gamma空間和顏色空間
對于采集到的圖片,首先需要將整個圖像進行規(guī)范化,目的是減少光照因素的影響,在圖像的紋理強度中,由于局部的表層曝光貢獻(xiàn)的比重相對較大,所以通過標(biāo)準(zhǔn)化gamma空間和顏色空間能夠有效地減少圖像局部的陰影和光照變化。
2)計算圖像梯度
計算圖像的梯度主要是計算圖像橫坐標(biāo)和縱坐標(biāo)方向的梯度,并根據(jù)圖像橫坐標(biāo)和縱坐標(biāo)方向的梯度計算每個像素位置的梯度方向值;同時進行求導(dǎo)操作不僅能夠捕獲輪廓、人影和一些紋理信息,還能進一步減弱光照等條件的影響。
對于采集到的一幅圖像,設(shè)圖像中某點處的灰度值為H (x,y),Gx(x,y),Gy(x,y)分別表示樣本圖像中像素點(x,y)處的水平方向梯度和垂直方向梯度。
水平方向梯度:
垂直方向梯度:
像素點(x,y)處梯度大小的定義為:
像素點(x,y)處梯度方向的定義為:
根據(jù)上面的計算可以得到除了圖像最邊緣的一圈像素之外其余的所有像素的二維梯度值。
3)構(gòu)建方向梯度直方圖
該操作的目的主要是為局部圖像區(qū)域提供一個編碼,同時能夠維持對圖像中人體對象的姿勢和外觀的弱敏感性。該步驟將圖像分成若干個“細(xì)胞單元cell”,每個cell有n*n個像素,例如:采用9個bin的直方圖進行統(tǒng)計n*n個像素的梯度信息,也就意味著要將cell的梯度方向360度按40度一塊分成9個方向塊。
4)像素塊內(nèi)歸一化梯度直方圖
梯度強度由于局部光照的變化以及前景與背景對比度的變化,使得自己的變化非常不穩(wěn)定。這就需要對梯度強度進行歸一化,歸一化能夠壓縮光照、陰影和邊緣等。一般采用的方法是將若干個cell單元組合成大的、空間上連通的像素塊區(qū)間(block),將一個block內(nèi)所有cell的特征向量串聯(lián)起來便得到該block的HOG特征,將歸一化之后的塊描述符(向量)就稱之為HOG描述符。此處選取的歸一化方法是L2-norm算法,公式為:
其中,ε為一個極小正值,以避免出現(xiàn)除0錯誤。
5)收集HOG特征
在上一步驟中有些區(qū)間是互有重疊的,所以每一個cell單元特征會以不同的結(jié)果多次出現(xiàn)在最后的特征向量中;該步驟是將檢測窗口中所有重疊的塊分別進行HOG特征的收集,并將收集到的HOG特征進行結(jié)合,形成最終的特征向量供分類使用。
6)線性SVM的預(yù)測過程
線性SVM預(yù)測實質(zhì)上是在樣本空間判斷測試向量偏向于正樣本集還是負(fù)樣本集。首先遍歷樣本空間,利用線性乘法及累加求和計算待測向量與樣本向量的相關(guān)值;根據(jù)得到的相關(guān)值比較正樣本和負(fù)樣本的相關(guān)度計算相關(guān)度偏差值;最后進行偏差值累加,并做出判斷。
2.1CUDA平臺介紹
GPU是一種圖像處理方面的硬件,在并行計算方面有著極大的優(yōu)勢?;谇度胧紾PU的處理系統(tǒng),其通用并行計算能力在提供強大的計算能力和存儲器帶寬的同時具有良好的可編程性和高度的靈活性,特別適用于音視頻數(shù)據(jù)的處理。計算統(tǒng)一設(shè)備架構(gòu)CUDA,通過使用GPU的處理能力來提升計算機的計算效率。目前CUDA已經(jīng)逐漸取代了DSP等硬件處理設(shè)備的部分功能,它作為一種軟硬件一體化的平臺,已成為了音頻與圖像處理領(lǐng)域新的研究熱點。
在并行計算中,通常將整個程序中的數(shù)據(jù)計算密集的部分交給GPU執(zhí)行,并封裝成一個函數(shù),稱之為核函數(shù)(Kernel)。GPU啟用多個線程并行執(zhí)行用戶定義的核函數(shù),計算完成后,將結(jié)果拷貝回系統(tǒng)內(nèi)存,交由CPU進行收尾處理。一個核函數(shù)會開啟一個線程塊格(Grid),一個線程格中包含若干個線程塊 (Block),一個線程塊中又包含若干個線程(Thread),線程塊中的線程共享相同的內(nèi)存。
2.2并行化改進HOG算法流程
圖2 HOG算法改進示意圖
圖2給出了基于GPU的HOG算法改進的示意圖,視頻處理過程中每次采集的數(shù)據(jù)為一幀圖像,經(jīng)過GPU并行化計算后,輸出為該幀圖像的HOG特征值。所以算法每次在處理一幀圖像時,只需要將數(shù)據(jù)打包一次性送入到GPU設(shè)備端(Device)進行并行化處理,當(dāng)提取完特征值以后,數(shù)據(jù)再一次性打包送回主機端(Host)。由此可見,在計算過程中,并沒有在Device端和Host端之間進行密集的大規(guī)模數(shù)據(jù)交互。
2.2.1并行化梯度計算
首先,將一幀圖片從主機端內(nèi)存?zhèn)魉椭猎O(shè)備端GPU的全局存儲器中(global memory),以減少CPU和GPU之間的I/O通信。與經(jīng)典HOG算法的梯度計算相比,該模塊分別對灰度圖像模式和彩色圖像模式進行了并行化改進。在CUDA平臺下,使用一個線程塊計算一個像素塊(block)的梯度值,一個線程塊內(nèi)包含512個線程(thread),每個thread完成一個像素的計算。所以,每執(zhí)行一個線程塊就可以最多完成512個像素的梯度計算。此外,將每個像素塊(block)的計算過程數(shù)據(jù)存儲在對應(yīng)線程塊的共享內(nèi)存(share momery)中,以獲得更快的訪存速度。
在灰度圖像處理模式下,從主機端把預(yù)處理后的灰度圖像送入到設(shè)備端,然后每個線程需要計算它的一個梯度幅值和梯度方向。在彩色圖像處理模式下,從主機端把預(yù)處理后的彩色圖像送入到設(shè)備端,根據(jù)彩色圖像有3個通道,每個線程則需要分別計算3個梯度幅值和梯度方向。
2.2.2并行化構(gòu)建方向梯度直方圖
該步驟使用了基于GPU共享內(nèi)存原子操作和全局內(nèi)存原子操作的CUDA核函數(shù),將直方圖的統(tǒng)計分為兩個階段。
在第一個階段中,每個并行線程塊將計算它所對應(yīng)數(shù)據(jù)的梯度直方圖。由于每個線程塊在執(zhí)行這個操作時都是相互獨立的,因此可以在共享內(nèi)存中計算這些直方圖,這將避免每次將寫入操作從芯片發(fā)送到DRAM。在第一個階段中分配一個共享內(nèi)存緩沖區(qū)并進行初始化,用來保存每個線程塊的臨時直方圖。第二個階段是將每個線程塊的臨時直方圖的每個元素都相加到最終梯度直方圖的相應(yīng)元素上。
具體的并行化資源分配方法為:一個CUDA線程塊相對應(yīng)的就是HOG算法中一個cell單元,計算一個cell單元中的n*n個像素的梯度直方圖,在每個線程塊內(nèi)使用共享內(nèi)存(share momery)存儲臨時直方圖的數(shù)據(jù);一個CUDA線程格內(nèi)包含m個線程塊,可以并行計算m個像素塊的梯度直方圖。
2.2.3直方圖歸一化
在這個步驟里需要對每個block進行對比度歸一化,根據(jù)每個CUDA的線程塊相對應(yīng)的是一個歸一化的像素塊。一個block內(nèi)包括p個直方圖,并且每個直方圖里面有q個bin,則需要p*q個線程進行歸一化,為了計算方便,一般每個歸一化線程塊中使用2n個線程。
計算block內(nèi)所有bin值的平方和可以采用并行歸約累加算法來實現(xiàn),并行歸約累加算法如圖3所示。512個線程可以用并行的方式來執(zhí)行歸約運算。首先將每個線程中的兩個值相加起來,根據(jù)每個線程都將兩個值合并為一個值,也就意味著數(shù)量下降了一半,重復(fù)執(zhí)行上述步驟,經(jīng)過9次迭代可以將512個值規(guī)約為1個值。然后將這個值寫入到block的臨時空間里。
圖3 并行歸約累加算法
實驗環(huán)境為嵌入式GPU移動終端,其處理芯片為Tegra K1,該芯片集成4個A15的處理器和一個ARM7的協(xié)處理器、2G內(nèi)存以及192個開普勒架構(gòu)的CUDA核。
實驗主要從兩個方面測試了基于嵌入式GPU的并行化運動目標(biāo)檢測算法的性能,一方面是對一定數(shù)量樣本圖片的處理時間進行測試,另一方面是利用視頻輸入設(shè)備進行現(xiàn)場視頻采集,對系統(tǒng)的運行流暢程度即視頻的幀率進行測試,以驗證運動目標(biāo)檢測系統(tǒng)的實時性。
首先分別利用 100張、200張和 500張 768*576分辨率的樣本圖片進行測試,根據(jù)處理的時間來對比傳統(tǒng)HOG算法和并行化HOG算法的性能。得到測試結(jié)果如表1所示:
表1 GPU和CPU模式下的樣本圖片集處理時間
從上表的數(shù)據(jù)可以看出,GPU模式下圖片的處理時間明顯低于CPU模式下的處理時間,說明利用GPU并行化加速的方法對傳統(tǒng)HOG算法的改進起到了顯著的作用;而且隨著處理圖片張數(shù)的增加,加速比也在不斷提升,從而論證了GPU更加適合大數(shù)據(jù)量的處理。
利用視頻輸入設(shè)備進行視頻采集測試結(jié)果如下圖4所示,根據(jù)視頻處理的幀率如表2所示,來對比傳統(tǒng)HOG算法和并行化HOG算法的性能。
圖4 4種模式下檢測出的運動目標(biāo)及幀率
表2 4種模式下的測試視頻平均幀率
由上表可知,在CPU彩色模式下的幀率為4.1 FPS,而在GPU彩色模式下幀率能達(dá)到18.7 FPS,兩者的比值達(dá)到了4.6:1;而在灰色的模式下兩者的比值幀率的比值為3.2:1。經(jīng)過分析對比,充分說明了使用GPU并行化HOG算法對系統(tǒng)的優(yōu)化明顯,系統(tǒng)運行幀率也得到提高,圖像處理速度有顯著提升。根據(jù)彩色模式下的加速比明顯高于灰度模式下的加速比,也體現(xiàn)了GPU加速對于大數(shù)據(jù)量的數(shù)據(jù)處理優(yōu)勢更加明顯。
這篇論文以視頻圖像處理的研究應(yīng)用為背景,以嵌入式GPU超級計算機為平臺,硬件以嵌入式系統(tǒng)為開發(fā)框架,軟件以CUDA架構(gòu)為核心算法開發(fā)平臺,采用并行程序優(yōu)化技術(shù),完成基于嵌入式GPU的并行化運動目標(biāo)檢測方法的研究。對比了目前比較常用的幾種檢測算法,選取HOG為主要研究方法,并通過OpenCV調(diào)用GPU硬件資源實現(xiàn)對HOG算法的并行化處理,加快了運動目標(biāo)檢測的速度。分析對比了傳統(tǒng)CPU模式的檢測算法和經(jīng)過GPU優(yōu)化加速的檢測算法,經(jīng)過對多次實驗的分析可知,使用GPU并行化算法對視頻圖像處理性能有明顯提升。
[1]Navneet Dalai,Bill Triggs.Histograms of oriented gradients for human detection[C].cvpr 2005.
[2]HOU Bei-ping,ZHU Wen.Fast human detection using motion detection and histogram of oriented gradients[C]. Journal of Computers,2011,6(8).
[3]Yuuki Nakashima,Joo Kooi Tan,Seiji Ishikawa,etal.On detecting a human and its body direction from a video[J]. Artificial Life and Robotics,2010,15(4):455-458.
[4]張杰.基于GPU的圖像特征并行計算方法[J].計算機科學(xué). 2015(10):297-300.
[5]李彤.基于HOG特征提取的騎車人檢測算法研究[J].電子技術(shù)與軟件工程,2015(8):99-100.
[6]錢悅.圖形處理器 CUDA編程模型的應(yīng)用研究.計算機與數(shù)字工程[J].2008,36(12):177-180.
[7]張秀芝.基于目標(biāo)運動信息和HOG特征行人檢測的研究與實現(xiàn)[D].西安:西安電子科技大學(xué),2013.
[8]VanBang L E.基于深度圖像HOG特征的實時手勢識別方法[J].上海:華東理工大學(xué)學(xué)報.2015(5):698-702.
[9]萬纓,韓毅,盧漢清.運動目標(biāo)檢測算法的探討[J].計算機仿真.2006(10):221-226.
[10]王鎮(zhèn)西,王冬青,張惠娟.基于改進差分算法的運動目標(biāo)檢測與跟蹤[J].工業(yè)控制計算機.2010(10):71-72.
[11]姚富士.基于場景的區(qū)域運動目標(biāo)檢測算法的研究[D].廣西:廣西大學(xué),2013.
[12]史露,朱星宇,東方.基于DM642的混合高斯模型運動目標(biāo)檢測系統(tǒng)設(shè)計與實現(xiàn)[J].北京:中國科技信息,2012(6):84.
[13]李淑芝,吳曉燕,張翔.基于小波變換的運動目標(biāo)檢測視頻水印算法[J].電視技術(shù),2015(15):6-10.
[14]李棚,吳曉紅,何小海.一種改進的PBAS運動目標(biāo)檢測算法[J].科學(xué)技術(shù)與工程,2015(27):48-53.
[15]劉威,趙文杰,李成.基于改進ORB特征匹配的運動小目標(biāo)檢測[J].光電工程,2015(10):13-20.
Based on parallel moving target detection of GPU researching the method
WU Xiang-xiang,F(xiàn)AN Yuan-chao,YE En-guang,LIU Zhen
(College of Computer Science and Technology,Jiangsu University of Science and Technology,Zhenjiang 212003,China)
In the field of intelligent video surveillance,moving object detection has become one of the main research topics.IN order to solve the problem that traditional histogram of oriented gradients(HOG)algorithm has low degree of parallelism,it use the embedded GPU parallelization to improve the method of the motion target detection.Through large amounts sample of pictures and live video for testing,it verified the resulting speed-up in GPU mode are three times more than in CPU mode.The experimental results show that the detection rate and the overall operating efficiency of the system significantly improves by the parallel and optimized HOG algorithm.
moving target detection;embedded GPU;parallelization;HOG
TN946.9
A
1674-6236(2016)22-0134-04
2015-11-25稿件編號:201511241
江蘇省科技廳政策引導(dǎo)類計劃(產(chǎn)學(xué)研合作)--前瞻性聯(lián)合研究項目(BY2015065-05)
吳翔翔(1993—),女,福建晉江人。研究方向:通信工程。