劉寶平,陳慶奎,,李金靜,劉伯成
(上海理工大學(xué) a.光電信息與計算機(jī)工程學(xué)院;b.上海理工大學(xué) 管理學(xué)院,上海 200093)
基于GPU的目標(biāo)識別算法的并行化研究
劉寶平a,陳慶奎a,b,李金靜a,劉伯成b
(上海理工大學(xué) a.光電信息與計算機(jī)工程學(xué)院;b.上海理工大學(xué) 管理學(xué)院,上海 200093)
針對可變形部件模型算法(DPM)的計算量大,無法完成實時檢測等問題,通過GPU編程模型CUDA,在Nvidia GPU上實現(xiàn)了HOG算法和DPM算法的并行化;采用OpenCL編程模型實現(xiàn)了DPM算法在集成顯卡上的并行化。通過CPU和GPU的協(xié)同計算,保證目標(biāo)識別效果的前提下,并行化的算法的執(zhí)行效率相比于OpenCV中的CPU或GPU實現(xiàn)有明顯的提高;通過對目標(biāo)識別算法的并行化,結(jié)合其他算法,使得這類復(fù)雜算法能夠在一些需要實時監(jiān)測的工程領(lǐng)域中得到應(yīng)用。
梯度方向直方圖;可變形部件模型;圖形處理器;協(xié)同計算;統(tǒng)一計算設(shè)備架構(gòu);開放運(yùn)算語言
目前,在汽車自動駕駛、智能交通、智能監(jiān)控安防等領(lǐng)域中,人工智能正在發(fā)揮越來越重要的作用,人工智能的應(yīng)用也使得人們從機(jī)械的簡單而重復(fù)的工作中解放出來,但是這也就要求這類人工智能算法有更加精確的效果和實時的監(jiān)測,對算法提出了更高的要求。傳統(tǒng)的算法都是基于CPU串行實現(xiàn)的,由于算法的計算量大,因此CPU無法完成對算法的實時計算。在這些領(lǐng)域中,對算法的并行化就是一個非常的需求,通過并行化算法使得算法的執(zhí)行效率相比于CPU得到數(shù)十倍的提高,從而實現(xiàn)算法的實時性計算。
筆者將重點介紹兩種目標(biāo)識別算法,梯度方向直方圖算法[1](HOG,histogram of oriented gradient)和可變形部件模型算法[2](DPM,deformable part model)。HOG算法是一個廣泛應(yīng)用在計算機(jī)視覺和圖像處理中的目標(biāo)檢測的特征描述子,而DPM算法是一個從HOG算法演化而來的一個檢測精度非常高的算法,相比于HOG算法,DPM算法增加了根和部件的思想。對一個目標(biāo)的描述由之前的單一模板改為根和部件來對目標(biāo)進(jìn)行描述,在目標(biāo)檢測和人臉識別等方面都有很好的應(yīng)用,但是這些算法都有計算量非常大,無法完成實時性處理的缺點。正是在這種對算法進(jìn)行加速的需求下,筆者采用并行化編程模型CUDA和OpenCL,重新設(shè)計算法的并行化實現(xiàn)方案,采用CUDA編程模型對HOG和DPM算法在Nvidia GPU上實現(xiàn)了并行化,同時采用OpenCL編程模型對DPM算法在intel 集成顯卡上完成了實現(xiàn)和測試,提高算法的執(zhí)行效率,使得這兩個目標(biāo)算法應(yīng)用在實時性環(huán)境成為可能,以后DPM算法也將應(yīng)用在更多的領(lǐng)域之中。
目標(biāo)檢測一直是計算機(jī)視覺領(lǐng)域中的難題,對于條形碼等剛性目標(biāo),一些簡單算法可能會取得比較好的檢測效果,但是對于人體這種易發(fā)生形變和部分遮擋的目標(biāo),檢測起來難度要更大。在2005年的CVPR會議上,Dalal和Triggs[1]兩位科學(xué)家提出了梯度方向直方圖 (HOG)的特征描述子,在進(jìn)行目標(biāo)檢測和分類過程中,采用基于HOG特征的單一模板來表示目標(biāo)。HOG算法是一個早期的目標(biāo)檢測算法,HOG+SVM在剛性目標(biāo)檢測中會取得比較好的檢測效果,但是對于人體等非剛性目標(biāo)的檢測效果一般。
2010年,Felzenszwalb et al[2]提出了基于HOG的改進(jìn)算法可變形部件模型算法,在HOG算法的原理基礎(chǔ)上,設(shè)計了檢測更為精確的可變形部件模型算法。DPM算法使用根和n個部件來描述目標(biāo)的結(jié)構(gòu),通過根來描述目標(biāo)的整體輪廓,通過n個部件來描述目標(biāo)的各個組成部分,對于人體這種容易發(fā)生形變的目標(biāo),根和部件的設(shè)計方案使得目標(biāo)檢測更加準(zhǔn)確。
2012年,在歐洲計算機(jī)視覺會議(ECCV)上,來自美國伯克利大學(xué)的團(tuán)隊,提出一種稀疏模型[3],再結(jié)合GPU加速,使DPM算法的執(zhí)行效率顯著提高,達(dá)到實時性要求。2014年,來自法國的一個實驗室團(tuán)隊,發(fā)表了一篇關(guān)于DPM算法的并行化[4]實現(xiàn),他們基于CUDA實現(xiàn)了DPM算法的并行化,文中詳細(xì)介紹了DPM算法的GPU實現(xiàn)細(xì)節(jié),并測試了最終的加速效果。
通過分析算法的實現(xiàn),結(jié)合其他研究成果[5-9],通過CUDA和OpenCL編程模型實現(xiàn)了算法的GPU移植,并訓(xùn)練不同目標(biāo)的分類器,實現(xiàn)多目標(biāo)分類。將以HOG算法為出發(fā)點,重點介紹 DPM算法的GPU并行化實現(xiàn)方案,提高算法的執(zhí)行效率,使得DPM算法在人體檢測以及人臉檢測[10]等計算機(jī)視覺領(lǐng)域能夠得到更加廣泛的應(yīng)用。
通過分析HOG算法實現(xiàn)細(xì)節(jié),發(fā)現(xiàn)HOG算法特別適合并行化處理,下面將簡單介紹HOG算法的并行化實現(xiàn)過程。
2.1 圖像Gamma校正
通過對輸入圖像進(jìn)行標(biāo)準(zhǔn)化,降低由于局部陰影和光照的劇烈變化所造成的影響,同時可以移植噪聲的干擾。對于RGB圖像需要對三通道都做Gamma校正,而灰度圖則只需要對灰度值Gamma校正。Gamma校正公式為,
I(x,y)=I(x,y)g.
(1)
式中,指數(shù)g值取0.5。
顯而易見,Gamma校正時各個像素點之間沒有任何邏輯相關(guān),我們?yōu)槊總€像素點分配一個線程進(jìn)行計算,這樣大大提高了計算效率。
2.2 計算圖像梯度
計算圖像中像素值在橫縱坐標(biāo)方向上的梯度,每個像素點算出一個梯度幅值和方向。
Gx(x,y)=H(x+1,y)-H(x-1,y) ;
(2)
Gy(x,y)=H(x,y+1)-H(x,y-1) .
(3)
式中:Gx(x,y),Gy(x,y)為圖像像素點(x,y)處的水平和垂直梯度;H(x,y)表示該點的像素值,則像素點(x,y)處的梯度幅值G(x,y)和梯度方向α(x,y)如下
(4)
(5)
對于灰度圖像來說,只需要計算出一通道灰度值。如果在RGB彩色圖像上進(jìn)行計算,則需要我們對RGB三通道分別算出梯度幅值和方向,然后選擇幅值較大的一個通道,作為該像素點(x,y)的梯度幅值和方向。
從算法實現(xiàn)來看,每個像素點計算梯度都是獨(dú)立進(jìn)行的,不同像素點之間不會有任何邏輯關(guān)聯(lián),所以在并行化的時候,我們依然是為每個像素點分配一個線程,每個線程計算對應(yīng)像素點的梯度。
2.3 計算細(xì)胞單元cell梯度方向直方圖
通過已得到的每個像素點的梯度幅值和方向,定義了每8×8個像素點為一個cell,這樣便可以將圖像表示為由一個個cell組成。我們?yōu)槊總€cell定義了一個9個bin的直方圖來統(tǒng)計當(dāng)前cell的梯度方向分布信息。所有像素點的方向范圍為0°~360°,我們需要其轉(zhuǎn)換為0°~180°,每20°一個bin,我們要將其投票到9個bin中,當(dāng)前cell中每個像素點都對自己對應(yīng)的梯度方向直方圖中進(jìn)行加權(quán)投影,我們就得到了當(dāng)前cell的梯度方向直方圖,每個cell都對應(yīng)一個9維的特征向量。
上面只是最簡單的獲得梯度方向直方圖的方式,在各種HOG算法的改進(jìn)中,關(guān)于如何進(jìn)行投票,方法有很多。比如,在可變形部件模型算法中,一個像素點將根據(jù)規(guī)則算出4個像素點的坐標(biāo),然后將這4個像素點的坐標(biāo)算出權(quán)重,根據(jù)權(quán)重加權(quán)投票到當(dāng)前像素點所在的cell的梯度方向直方圖中,根據(jù)0°~360°和0°~180°,分別算出一個對比度敏感18維梯度方向直方圖和對比度不敏感的9維梯度方向直方圖,對兩種梯度方向直方圖分別進(jìn)行歸一化,然后再進(jìn)行組合,加入歸一化因子,得到最終當(dāng)前cell的梯度方向直方圖。而且DPM算法中有應(yīng)用到PCA主成分分析算法進(jìn)行特征向量的將維,使得整個算法的計算量有明顯的降低。
本文依然為每個像素點分配一個線程,在HOG算法的GPU實現(xiàn)中,我們分配8×8的線程塊來處理8×8的cell單元,但是在投票的時候,8×8個線程同時往9維的梯度方向直方圖中進(jìn)行投票,這樣線程之間就會產(chǎn)生沖突,采用原子操作進(jìn)行顯存讀寫,這樣保證了數(shù)據(jù)的正確性。但是在DPM算法的GPU實現(xiàn)時,分別采用了折半規(guī)約和原子操作的兩種方式進(jìn)行投票,折半規(guī)約就是每個像素點都分配一個梯度方向直方圖,然后將cell內(nèi)所有像素點的梯度方向直方圖通過折半規(guī)約的方式進(jìn)行整合,最終得到整個cell的梯度方向直方圖。而原子操作就更加容易理解,就是當(dāng)前block內(nèi)的所有線程通過計算對應(yīng)像素點的梯度,然后采用原子操作將每個線程的結(jié)果累加到當(dāng)前cell所對應(yīng)的直方圖中。
2.4 塊(block)內(nèi)直方圖歸一化
上面我們得到了組成圖像的所有cell的梯度方向直方圖,為了進(jìn)一步弱化光照,陰影,噪聲等一系列因素的影響,我們將對特征向量進(jìn)行歸一化操作。我們將各個cell單元組合成更大的組成單元block,我們定義每2×2個cell組成一個block。這樣,block的HOG特征就是組成該block的4個cell的梯度方向直方圖串聯(lián)起來,每個block將得到一個36維的梯度方向直方圖。
將歸一化block內(nèi)的HOG特征向量,比較常用的歸一化函數(shù):
ε表示一個很小的常量,防止分母為0;
2) L2-Hys,方法同式(1),增加截斷操作,將v的最大值限制為0.2,再次重新歸一化。
一般采取第二種歸一化方法,這只是HOG算法中比較常用的歸一化函數(shù)的計算過程。在改進(jìn)的HOG算法中,也有很多其他的歸一化因子的計算,比如可變形部件模型算法中,根據(jù)當(dāng)前cell位置算出4個cell,然后將4個cell的block能量算出來以后,作為歸一化因子對特征向量進(jìn)行歸一化,而且是算出4個歸一化因子,分別對對比度敏感的18維梯度方向直方圖和對比度不敏感的9維梯度方向直方圖進(jìn)行歸一化操作,進(jìn)行4次歸一化操作,最終得到一個31維的梯度方向直方圖,也就是當(dāng)前cell對應(yīng)的最終的HOG特征向量。
并行化設(shè)計實現(xiàn)時,線程分配其實有很多種實現(xiàn)方法,本文的實現(xiàn)大概過程是為每一個特征向量中的每一維度計算都分配一個線程,可以采用折半規(guī)約的方式算出每個block的歸一化因子,然后采用上面的一種歸一化函數(shù),進(jìn)行歸一化操作。當(dāng)然,也可以采用為每個block的特征向量的歸一化操作分配一個線程,然后用該線程循環(huán)處理特征向量中的每一個維度。
2.5 窗口HOG特征值
完成block內(nèi)的特征向量的歸一化操作之后,我們需要進(jìn)一步得到檢測窗口的HOG特征值,這個特征值是我們最終用來進(jìn)行SVM分類的特征值。同理,對于opencv中的是實現(xiàn)的HOG算法,其檢測窗口有48×96和64×128兩種,cell由8×8個像素點組成,block有2×2個cell組成,那么64×128的檢測窗口由7×15個block組成,所以64×128對應(yīng)的窗口特征值為3 780維特征向量。同理可以得到,48×96對應(yīng)1 980維的窗口特征向量。
2.6 SVM分類和非最大值抑制
利用HOG+SVM進(jìn)行目標(biāo)檢測時,計算出每個窗口的特征值之后,然后將計算出的窗口特征值和事先訓(xùn)練好的SVM分類器進(jìn)行計算判別。最基本的線性判別函數(shù)
w·x+b=0 .
(6)
式中:w為窗口HOG特征值;x是訓(xùn)練好的分類器,兩個向量做點積計算,最后加上一個偏移量得到一個窗口分?jǐn)?shù),根據(jù)分?jǐn)?shù)得到最終的判別結(jié)果。特征向量和分類器進(jìn)行點積計算時,本文依然采用折半規(guī)約的方式進(jìn)行計算。
關(guān)于窗口的非最大值抑制,由于是在多尺度上所有位置處進(jìn)行目標(biāo)檢測,所以在同一尺度的相鄰位置和不同尺度的相鄰位置可能會多次檢測出同一個目標(biāo),這樣會導(dǎo)致窗口重疊,本文采用非最大值抑制算法來去除多余窗口。將不同尺度上的窗口都還原到原圖像中,如果窗口重疊面積大于某一個閾值,就會比較兩個窗口的分?jǐn)?shù)值,留下較大一個窗口的分?jǐn)?shù)值。
3.1 可變形模型算法的概述
可變形部件模型算法是HOG算法的改進(jìn),也是基于HOG特征值進(jìn)行目標(biāo)檢測,但是DPM算法增加了根和部件的思想,DPM算法用根和n個部件來描述一個目標(biāo)。DPM算法的前幾步的算法實現(xiàn)原理和上面介紹的原理一致,但是由于增加了根和部件的思想,所以在計算檢測窗口的得分時,就等于該窗口中根得分加上n個部件得分,由于部件捕捉更加精細(xì)的目標(biāo)特征,所以部件所在圖像金字塔中的分辨率是根所在層分辨率的二倍。計算部件得分時,由于考慮到目標(biāo)可能會發(fā)生形變,所以我們需要在部件錨點附近一定范圍內(nèi)開始搜索,找到部件的實際位置,然后根據(jù)偏離錨點的位置進(jìn)行部件懲罰,實際得分減去偏移懲罰得到部件在實際位置的最終得分,最后加上一維的偏移量。
下面公式表示了檢測窗口的得分:
(7)
式中:H表示特征金字塔;p代表金字塔中某一層中坐標(biāo)為(xi,yi)處的窗口特征值,第一部分表示根和部件的得分加起來,第二部分表示所有部件的偏移懲罰,其中(dxi,dyi)表示第i個部件的形變偏移,(dxi,dyi)=(xi,yi)-(2(x0,y0)+vi),(xi,yi)表示進(jìn)行部件搜索時的實際位置,(x0,y0)表示根的位置,由于部件濾波器所在層的特征分辨率是根濾波器所在層的特征分辨率的2倍,所以2(x0,y0)+vi就是部件的錨點位置,di表示懲罰系數(shù)。第三部分b表示最終分?jǐn)?shù)偏移。
3.2 可變形部件模型的并行化實現(xiàn)
可變形模型算法,采用GPU編程模型CUDA和OpenCL,設(shè)計了DPM算法的并行化解決方案。
由于DPM算法是基于HOG算法的改進(jìn),并且增加了根和部件的鏈接,本文在設(shè)計DPM算法的GPU移植的實現(xiàn)方案時,根據(jù)GPU架構(gòu)的特點,通過合理的內(nèi)存使用和線程分配,通過CPU端的循環(huán)控制,調(diào)用GPU的執(zhí)行核函數(shù),建立圖像金字塔,然后再算出特征金字塔,通過根和部件濾波器將圖像金字塔中所有尺度上所有位置的分?jǐn)?shù)都算出來,最后通過距離轉(zhuǎn)換,將根和部件鏈接起來,得到整個窗口的檢測得分。GPU端完成計算之后,我們將合并冗余窗口的處理轉(zhuǎn)移到CPU端進(jìn)行處理,因為合并冗余窗體邏輯性較強(qiáng),不適合GPU端進(jìn)行處理,通過這種CPU和GPU的協(xié)同計算,最大限度的提高處理效率。
3.3 距離轉(zhuǎn)換兩種并行化實現(xiàn)中的協(xié)同計算
下面我們將重點介紹DPM算法中的距離轉(zhuǎn)換部分的GPU實現(xiàn),分析兩種實現(xiàn)中GPU流處理器之間的協(xié)同計算,比較兩種并行化設(shè)計方案的效率。
前面我們已經(jīng)分析了,DPM算法中由一個根和n個部件來表示一個目標(biāo)的組成。我們?nèi)绾卧O(shè)計方案將根和部件鏈接起來呢?下面是采用OpenCL在intel集成顯卡上實現(xiàn)的兩種解決方案。
一種方案是我們?yōu)槊總€根的鏈接分配n個線程,這樣每個線程負(fù)責(zé)處理一個部件,最終根得分和n個部件的實際得分相加,得到整個目標(biāo)窗口的得分。以n值取8為例,這樣我們就只能在一個線程塊分配8,對于每個檢測窗口,通過線程塊中8個線程的協(xié)同處理,同步操作之后,8個線程的將負(fù)責(zé)的部件的得分進(jìn)行匯總,這樣就得到該檢測窗口的整體得分。這種設(shè)計中,雖然每個檢測窗口的部件是并行處理的,但是每個線程塊中卻只能分配少量線程。
另一種方案中,我們讓每個線程負(fù)責(zé)更多的工作,即每個線程負(fù)責(zé)檢測窗口中的根和n個部件的處理,我們?yōu)槊總€檢測窗口的根和部件的鏈接計算分配一個線程,也就是一個線程負(fù)責(zé)根和n個部件的鏈接,同時由于考慮的部件的可變形性,所以每個線程在計算時,需要在部件的錨點附近進(jìn)行搜索部件的實際位置。這樣,由于每個線程都是負(fù)責(zé)一個窗口的計算,每個線程的計算量將變得非常大,但是線程塊中卻可以分配盡量多的線程。同時我們通過優(yōu)化內(nèi)存的使用,減少對全局內(nèi)存的訪問,使得代碼的執(zhí)行時間成倍的降低,最終使得這部分的計算時間完全滿足了要求。
在前期距離轉(zhuǎn)換部分測試中,第一種解決方案,雖然為每個部件的處理都分配一個線程,但是由于這種方案設(shè)計導(dǎo)致線程塊中所能分配的線程數(shù)量極少,這種設(shè)計的執(zhí)行時間要1 200ms。第二種解決方案中,雖然每個線程負(fù)責(zé)處理n個部件,但是這種設(shè)計,線程塊中可以分配盡可能多的線程,使得算法更高效執(zhí)行,這種設(shè)計方案的執(zhí)行時間大概為300ms。
在可變形部件算法的GPU實現(xiàn)中,我們通過GPU的眾多流處理器的協(xié)同處理,并行化實現(xiàn)了梯度方向直方圖計算,歸一化,根和部件的鏈接等一系列操作,并最終由CPU完成了冗余窗口的合并,發(fā)揮了GPU和CPU各自的優(yōu)勢,通過CPU和GPU的協(xié)同和GPU內(nèi)部多處理器的協(xié)同計算,完成了DPM算法的設(shè)計實現(xiàn),使得算法的執(zhí)行效率成倍提高。
4.1 實驗環(huán)境及內(nèi)容概述
實驗環(huán)境:CPU:IntelCore(TM)2DuoCPUE8400,GPU:NvidiaGeForceGTX670,內(nèi)存:2GB.
本文測試的主要內(nèi)容是:
1) 對比OpenCV中的基于GPU實現(xiàn)的HOG算法和通過CUDA實現(xiàn)的HOG算法,本文將 對比兩者的檢測效果和執(zhí)行時間;
2) 對比HOG算法和DPM檢測效果對比;
3) 對比基于CUDA和OpenCL實現(xiàn)的DPM算法的執(zhí)行效率。
4.2 HOG算法的檢測效果及加速效果對比
4.2.1 兩種實現(xiàn)的檢測效果對比
OpenCV庫中實現(xiàn)的HOG算法檢測效果如圖1所示。CUDA實現(xiàn)的HOG算法的檢測效果如圖2所示。
圖1 OpenCV中HOG算法檢測
圖2 CUDA實現(xiàn)的HOG算法檢測
通過圖1和圖2的檢測效果我們發(fā)現(xiàn),兩種是實現(xiàn)的檢測效果已經(jīng)比較接近。
4.2.2 兩種實現(xiàn)的執(zhí)行效率對比
OpenCV庫GPU實現(xiàn)和我們通過CUDA實現(xiàn)的加速效果對比,如表1所示。
表1 兩種實現(xiàn)的運(yùn)行時間對比
4.3 HOG算法的檢測效果和DPM算法檢測效果對比
圖3 OpenCV中HOG算法檢測
圖4 CUDA實現(xiàn)的HOG算法
圖5 OpenCL實現(xiàn)的DPM算法
OpenCV庫函數(shù)檢測效果如圖3所示;CUDA實現(xiàn)的HOG算法的檢測效果如圖4所示;OpenCL實現(xiàn)的DPM算法的檢測效果如圖5所示。從上面給出的HOG算法和DPM算法的檢測效果中可以明顯看出HOG算法和DPM算法應(yīng)用在人體檢測中檢測精度的巨大差異,在人體等非剛性目標(biāo)的檢測中,DPM算法的檢測精度遠(yuǎn)遠(yuǎn)要高于DPM算法的檢測精度。
4.4 基于集成顯卡和獨(dú)立顯卡的DPM算法執(zhí)行效率對比
一般印象中,獨(dú)立顯卡的計算資源遠(yuǎn)大于集成顯卡,所以采用基于獨(dú)立顯卡的優(yōu)化肯定會明顯的強(qiáng)于基于集成顯卡的實現(xiàn),因為顯卡的計算資源是一定的,而編程模型只是一種調(diào)用顯卡資源的手段,無論采用何種編程模型,最終算法的執(zhí)行效率還是由并行化實現(xiàn)方案和顯卡的資源所決定。所以,本文將通過實驗來測試集成顯卡和獨(dú)立顯卡的各自優(yōu)勢。現(xiàn)在本文就將依照DPM算法在Nvidia獨(dú)立顯卡上和intel集成顯卡上的執(zhí)行效率做個對比。
基于intel集成顯卡的測試環(huán)境,測試設(shè)備使用intelCorei5-4460CPU,內(nèi)存4GB,顯卡采用intel集成顯卡HDGraphics4600。
基于Nvidia獨(dú)立顯卡的測試環(huán)境,本文采用intelCorei7-3930KCPU,內(nèi)存32GB,顯卡采用NvidiaGTX670獨(dú)立顯卡。
將對比采用DPM算法在intel集成顯卡和在Nvidia獨(dú)立顯卡上對于不同尺寸的圖片的檢測時間。
表2 DPM算法在集成顯卡和獨(dú)立顯卡的測試
通過對DPM算法在intel集成顯卡和Nvidia獨(dú)立顯卡上的執(zhí)行情況分析,雖然采用了不同的編程模型,但是編程模型只是對資源的調(diào)度方式不同,而顯卡的資源是一定的。我們對不同顯卡的設(shè)計方案也根據(jù)顯卡的特點進(jìn)行了調(diào)整,從上面的實驗結(jié)果可以看到,集成顯卡也并沒有想象中的那么弱,而且我們也從實際中得到,intel集成顯卡對于邏輯操作明顯要好于Nvidia獨(dú)立顯卡,由于算法的某些需要,我們在核函數(shù)中加入循環(huán)時,可以看到集成顯卡對這類操作的支持性明顯優(yōu)于獨(dú)立顯卡。但是由于獨(dú)立顯卡有絕對數(shù)量優(yōu)勢的流處理器,所以集成顯卡在流處理器的數(shù)量上處于絕對劣勢,導(dǎo)致集成顯卡的計算性能明顯要比獨(dú)立顯卡低。
以HOG算法為出發(fā)點,引出了更為優(yōu)秀的DPM算法,通過對DPM算法的詳細(xì)分析,本文重新采用CUDA和OpenCL兩種GPU編程模型分別在intel集成顯卡和Nvidia獨(dú)立顯卡上重新設(shè)計實現(xiàn)算法的并行化解決方案,使得HOG算法相比于OpenCV庫中的GPU實現(xiàn)有了明顯提高,同時使得DPM算法的執(zhí)行效率相比于OpenCV庫中的DPM算法的實現(xiàn)有了近10倍的提高,并且比較了兩種不同的DPM算法實現(xiàn),同時也分析了集成顯卡和獨(dú)立顯卡的計算性能。通過DPM算法的并行化,可以結(jié)合其他算法,將DPM算法應(yīng)用在某些特定場合進(jìn)行實時性檢測,比如通過某些提取前景算法得到運(yùn)動區(qū)域,然后對得到的運(yùn)動區(qū)域進(jìn)行目標(biāo)識別。同時,我們希望能夠?qū)PU用在深度學(xué)習(xí)上,使得GPU能夠應(yīng)用到更加多的領(lǐng)域中,發(fā)揮GPU的并行計算優(yōu)勢,在更多領(lǐng)域中發(fā)揮更重要的作用。
[1]DalalN,TriggsB.Histogramsoforientedgradientsforhumandetection[C]∥CordeliaS,StefanoS,GarloT.ProceedingofConferenceonComputerVisionandPatternRecognition.CA:SanDiego.,2005(1):886-893.
[2]FelzenszwalbPF,GirshickRB,McAllesterD,etal.Objectdetectionwithdiscriminativelytrainedpart-basedmodels[J].IEEETransactionsonPatternAnalysisandMachineIntelligence,2010,32(9):1627-1645.
[3]SongHO,ZicklerS,AlthoffT,etal.Sparseletmodelsforefficientmulticlassobjectdetection[J].SpringerBerlinHeidelberg,2012:802-815.
[4]GadeskiE,FardHO,LeBorgneH.GPUdeformablepartmodelforobjectrecognition[J].JournalofReal-TimeImageProcessing,2014:1-13.
[5]ChenYanping,LiShaozi,LinXianming.FasthogfeaturecomputationbasedonCUDA[C]∥IEEE.ProceedingofComputerScienceandAutomationEngineering(CSAE).China:Shanghai,2011,4:748-751.
[6]PedersoliM,VedaldiA,GonzalezJ,etal.Acoarse-to-fineapproachforfastdeformableobjectdetection[J].PatternRecognition,2014:1353-1360.
[7]HirabayashiM,KatoS,EdahiroM,etal.GPUimplementationsofobjectdetectionusingHOGfeaturesanddeformablemodels[C]∥IEEE.ProceedingofCyber-PhysicalSystems,Networks,andApplications(CPSNA).Taiwan,2013:106-111.
[8]AmitY,KongA.Graphicaltemplatesformodelregistration[J].PatternAnalysisandMachineIntelligence,IEEETransactionson,1996,18(3):225-236.
[9] 熊聰,王文武.基于DPM模型的行人檢測技術(shù)的研究[J].電子設(shè)計工程,2014(23):172-173.
[10] 尹雪聰.基于可變形部件模型的人臉檢測方法研[D].西安:西安電子科技大學(xué),2012.
(編輯:朱 倩)
Parallelization of Target Recognition Algorithms Based on GPU
LIU Baopinga,CHEN Qingkuia,b,LI Jinjinga,LIU Bochengb
(a.CollegeofOptical-ElectricalandComputerEngineering;b.CollegeofManagement,UniversityofShanghaiforScienceandTechnology,Shanghai200093,China)
Aiming at the disadvantage of large amount of calculation,the parallel solution methods of deformable part model(DPM) algorithm and Histogram of Oriented Gradient(HOG) algorithm based on GPU were proposed base on GPU with CUDA,and the parallel solution method of DPM algorithm was also proposed based on integrated graphics card with OpenCL.With the cooperative computation of GPU and CPU,under the premise of ensuring the target recognition effect,the execution efficiency of the parallel algorithms was significantly improved compared with the GPU or CPU implementations in OpenCV.Through the parallel implementations of target detection algorithms,and combination with other algorithms,the target recognition algorithms can be applied in some engineering fields that need to be monitored in real time.
Histogram of oriented gradient; Deformable part model; GPU; Collaboration computing; CUDA;OpenCL
1007-9432(2015)06-0713-06
2015-05-23
國家自然科學(xué)基金資助項目:面向?qū)崟r并發(fā)數(shù)據(jù)流的能耗優(yōu)化的GPU集群可靠處理機(jī)制研究(61572325),高等學(xué)校博士學(xué)科點專項科研博導(dǎo)基金資助(20113120110008),上海重點科技攻關(guān)項目資助(14511107902),上海市工程中心建設(shè)項目資助(GCZX14014),上海智能家居大規(guī)模物聯(lián)共性技術(shù)工程中心項目資助(GCZX14014),上海市一流學(xué)科建設(shè)項目資助(XTKX2012),滬江基金研究基地專項資助(C14001)
劉寶平(1990-),男,山東臨沂人,碩士生,主要從事模式識別、計算機(jī)視覺與并行計算的研究,(E-mail)1262782363@qq.com
陳慶奎,男,教授,博士生導(dǎo)師,中國計算機(jī)學(xué)會(CCF)會員,(E-mail)chenqingk@tom.com
TP 301
A
10.16355/j.cnki.issn1007-9432tyut.2015.06.015