- 相關(guān)推薦
基于圖形處理器的可變形部件模型算法的并行化
摘要:目前目標(biāo)識(shí)別領(lǐng)域,在人體檢測(cè)中精確度最高的算法就是可變形部件模型(DPM)算法,針對(duì)DPM算法計(jì)算量大的缺點(diǎn),提出了一種基于圖形處理器(GPU)的并行化解決方法。采用GPU編程模型OpenCL,對(duì)DPM算法的整個(gè)算法的實(shí)現(xiàn)細(xì)節(jié)采用了并行化的思想進(jìn)行重新設(shè)計(jì)實(shí)現(xiàn),優(yōu)化算法實(shí)現(xiàn)的內(nèi)存模型和線程分配。通過(guò)對(duì)OpenCV庫(kù)和采用GPU重新實(shí)現(xiàn)的程序進(jìn)行對(duì)比,在保證了檢測(cè)效果的前提下,使得算法的執(zhí)行效率有了近8倍的提高。
關(guān)鍵詞:可變形部件模型;OpenCL;人體檢測(cè);圖形處理器
引言
目前,在無(wú)人駕駛、智能監(jiān)控、智能交通等人工智能領(lǐng)域中,人工智能正在發(fā)揮越來(lái)越重要的作用,正在逐漸使人類從繁瑣重復(fù)的工作中解放出來(lái)。目前在這些領(lǐng)域中,由于這些場(chǎng)景都需要實(shí)時(shí)監(jiān)測(cè),所以最為普遍的需求是對(duì)算法進(jìn)行并行化加速,以提高算法的執(zhí)行效率,實(shí)現(xiàn)實(shí)時(shí)化處理。
本文將重點(diǎn)介紹一種目標(biāo)識(shí)別算法――可變形部件模型(Deformable Part Model, DPM)算法[1],目前DPM算法是一個(gè)檢測(cè)精度非常高的算法,在目標(biāo)檢測(cè)和人臉識(shí)別等方面都有很好的應(yīng)用,但是該算法也有計(jì)算量非常大、無(wú)法完成實(shí)時(shí)性處理等缺點(diǎn)。本文采用并行化編程模型OpenCL,重新設(shè)計(jì)DPM算法的并行化實(shí)現(xiàn),提高算法的執(zhí)行效率,使DPM算法應(yīng)用在實(shí)時(shí)檢測(cè)成為可能。
一、相關(guān)工作
目標(biāo)檢測(cè)一直是計(jì)算機(jī)視覺(jué)領(lǐng)域內(nèi)的難題,尤其是像人體這種非剛性物體,文獻(xiàn)[1]中提到,這類目標(biāo)外表和目標(biāo)大小千差萬(wàn)別,不同角度下人體姿勢(shì)也是千變?nèi)f化,由于這類目標(biāo)不是剛性物體且容易產(chǎn)生形變,所以這類目標(biāo)檢測(cè)起來(lái)的難度更大。
2005年,Dalal等[3]兩位法國(guó)科學(xué)家提出了使用梯度方向直方圖(Histogram of Oriented Gradient, HOG)來(lái)描述人體的方法,此方法使用基于HOG特征的單一模板來(lái)表示目標(biāo),采用HOG+支持向量機(jī)(Support Vector Machine,SVM)分類的方法進(jìn)行人體檢測(cè)。使用此模板在圖像的多個(gè)尺度和圖像中所有位置上進(jìn)行人體檢測(cè),進(jìn)而判別該區(qū)域是否包含人體。目前對(duì)HOG算法的并行化已經(jīng)比較成熟,OpenCV中也已經(jīng)提供了HOG算法的并行化版本。
文獻(xiàn)[1]中詳細(xì)介紹了DPM算法的實(shí)現(xiàn)細(xì)節(jié),包含訓(xùn)練和檢測(cè)兩部分的細(xì)節(jié)實(shí)現(xiàn),訓(xùn)練部分介紹關(guān)于隱藏變量支持向量機(jī)(Latent Support Vector Machine, LSVM)分類器的訓(xùn)練, 目前已成為眾多分類器、分割、人體姿態(tài)和行為分類的重要部分。DPM算法的實(shí)現(xiàn)較為復(fù)雜,考慮到根和部件的兩方面,人體的整體作為根,四肢、頭部和肩部等可以作為部件,通過(guò)模型,考慮到部件的懲罰,可以最終算出一個(gè)根和部件的總分,這樣檢測(cè)效果顯著提高,但是由于算法復(fù)雜性的提高,導(dǎo)致執(zhí)行時(shí)間大幅增加。然而對(duì)于DPM算法的并行化研究工作依然比較少。
2012年,歐洲計(jì)算機(jī)視覺(jué)國(guó)際會(huì)議(Europeon Conference on Computer Vision, ECCV),來(lái)自美國(guó)伯克利大學(xué)的團(tuán)隊(duì),所作的研究就是對(duì)DPM算法進(jìn)行優(yōu)化,使之能滿足實(shí)時(shí)性要求。該團(tuán)隊(duì)提出一種稀疏模型,使DPM算法的計(jì)算量減少,結(jié)合圖形處理器(Graphics Processing Unit, GPU)加速運(yùn)算,使算法完全滿足實(shí)時(shí)性的要求,而且在物體的模型訓(xùn)練上也比較全面,檢測(cè)精度也非常高。
文獻(xiàn)[2]介紹了基于計(jì)算統(tǒng)一設(shè)備架構(gòu)(Compute Unified Device Architecture, CUDA)實(shí)現(xiàn)DPM算法并行化的工作,并獲得了10倍的加速比。但是基于CUDA的并行化程序只能運(yùn)行在Nvidia的獨(dú)立顯卡上,無(wú)法實(shí)現(xiàn)通用性。而OpenCL作為行業(yè)標(biāo)準(zhǔn),具有通用性。因此,本文考慮采用OpenCL編程模型完成DPM算法的并行化移植。
文獻(xiàn)[3]介紹了梯度方向直方圖(HOG)算法的原理,可變形部件模型(DPM)算法的原理是HOG算法的優(yōu)化,在算法的原理上具有相似的實(shí)現(xiàn)原理。文獻(xiàn)[4-9]介紹了基于GPU的算法優(yōu)化和實(shí)現(xiàn)原理,以及對(duì)算法的改進(jìn)和DPM算法在不同領(lǐng)域的應(yīng)用。
其中,文獻(xiàn)[1]中詳細(xì)介紹了DPM算法的實(shí)現(xiàn)細(xì)節(jié),包含訓(xùn)練和檢測(cè)兩部分的細(xì)節(jié)實(shí)現(xiàn),訓(xùn)練部分介紹關(guān)于LSVM分類器的訓(xùn)練。一系列的關(guān)于算法并行化的工作也已經(jīng)實(shí)現(xiàn),文獻(xiàn)[4-7]中也提到一些基于GPU的算法并行化,以及算法的改進(jìn)優(yōu)化, 參考文獻(xiàn)[8-9]等可以看出,國(guó)內(nèi)很多領(lǐng)域都對(duì)DPM算法進(jìn)行研究并應(yīng)用,文獻(xiàn)[9]中將DPM算法應(yīng)用在人臉檢測(cè)中,DPM在人臉檢測(cè)中的檢測(cè)精度也是非常高的,特別適合人臉檢測(cè)的應(yīng)用領(lǐng)域。
通過(guò)分析發(fā)現(xiàn),DPM算法雖然檢測(cè)精度高,但卻因計(jì)算量巨大而無(wú)法對(duì)圖像進(jìn)行實(shí)時(shí)性檢測(cè)。通過(guò)對(duì)算法的實(shí)現(xiàn)細(xì)節(jié)進(jìn)行分析研究,發(fā)現(xiàn)DPM算法特別適合作并行化計(jì)算,而且其應(yīng)用前景和領(lǐng)域非常廣泛,所以它的并行化也就顯得十分重要,下面詳細(xì)介紹算法的并行化實(shí)現(xiàn)。
二、算法的概述
DPM算法是基于HOG的改進(jìn),它使用基于根和n個(gè)部件間的位置關(guān)系來(lái)描述目標(biāo)的結(jié)構(gòu),通過(guò)根來(lái)描述目標(biāo)的整體輪廓,通過(guò)n個(gè)部件來(lái)描述組成部分,對(duì)于人體這種容易發(fā)生形變的目標(biāo),再通過(guò)部件的偏移進(jìn)行部件懲罰,使目標(biāo)檢測(cè)更加準(zhǔn)確。DPM可以理解為一種星型結(jié)構(gòu),此模型由1個(gè)根濾波器和n個(gè)部件濾波器組成,用整個(gè)模型來(lái)描述一個(gè)目標(biāo),目標(biāo)的得分等于根得分加n個(gè)部件得分。在計(jì)算部件得分時(shí),由于人體等非剛性目標(biāo)的可變形,所以計(jì)算部件得分時(shí)需要在每個(gè)部件的理想位置的周圍搜索部件的實(shí)際位置,部件在實(shí)際位置的最終得分等于部件在實(shí)際位置的特征值向量與濾波器的卷積得分減去部件實(shí)際位置相對(duì)于理想位置的偏移懲罰,用偏移懲罰來(lái)衡量目標(biāo)的形變程度。根和部件的得分就是窗口特征值和濾波器的卷積。
含有n個(gè)部件的目標(biāo)模型可以表示為一個(gè)(n+2)元組:(F0,P1,P2,…,Pn,b),每個(gè)部件模型可以表示為一個(gè)三元組(Fi,vi,di),其中: Pi表示第i個(gè)部件濾波器; vi是一個(gè)二維向量,表示第i個(gè)部件濾波器的錨點(diǎn)位置; di是一個(gè)四維向量,表示部件發(fā)生形變時(shí)的相對(duì)于錨點(diǎn)位置的變形懲罰。含有n個(gè)部件的目標(biāo)模型的得分等于根濾波器分?jǐn)?shù)加部件濾波器分?jǐn)?shù),減去部件濾波器相對(duì)于根位置的變形懲罰,再加上一個(gè)偏差值:
∑ni=0Fi・φ(H,pi)-∑ni=1di・φd(dxi,dyi)+b (1)
其中:H表示特征金字塔;pi=(xi,yi,l)代表計(jì)算的圖像金字塔l層坐標(biāo)為(xi,yi)的窗口特征值;式(1)中的變量(dxi,dyi)=(xi,yi)-(2(x0,y0)+vi),其中: (xi,yi)表示第i個(gè)部件濾波器的坐標(biāo),部件濾波器所在層的特征分辨率是根濾波器所在層的特征分辨率的2倍; (x0,y0)表示根濾波器的坐標(biāo);vi代表該部件的錨點(diǎn)位置,是一個(gè)二維向量。∑ni=1di・φd(dxi,dyi)是對(duì)部件的變形懲罰,具體系數(shù)會(huì)在訓(xùn)練好的分類器中。
三、DPM算法的GPU并行化實(shí)現(xiàn)
CPU多核架構(gòu)并不擅長(zhǎng)于處理高清視頻圖像,但是GPU的眾核架構(gòu)在處理高清視頻圖像時(shí)具有非常大的優(yōu)勢(shì)。
通過(guò)利用參考文獻(xiàn)[13-14]中介紹的CUDA和OpenCL編程模型,本文針對(duì)GPU的架構(gòu)特點(diǎn),對(duì)算法重新設(shè)計(jì),無(wú)論是從執(zhí)行模式還是從數(shù)據(jù)的存儲(chǔ)模式,都需要針對(duì)并行化的方案進(jìn)行重新設(shè)計(jì)?勺冃尾考P退惴ǖ牟⑿谢唧w實(shí)現(xiàn)步驟如下。
3.1建立圖像金字塔
輸入圖像中人體尺寸的大小不一,而模型中檢測(cè)窗口的大小是固定的,所以,需要通過(guò)縮放圖像來(lái)適應(yīng)檢測(cè)窗口的大小,使算法能夠檢測(cè)到圖像中任意大小的人體。對(duì)某一尺度的圖像縮放時(shí),圖像中所有像素點(diǎn)之間的處理沒(méi)有邏輯關(guān)系,非常適合并行化處理,為圖像中的所有坐標(biāo)位置分配一個(gè)線程,所有線程完成對(duì)對(duì)應(yīng)坐標(biāo)的像素點(diǎn)計(jì)算,通過(guò)不斷地調(diào)整縮放尺度,最終建立一個(gè)圖像金字塔。圖像金字塔每隔10層縮放為原圖像的一半。
3.2計(jì)算圖像金字塔的梯度方向
圖像金字塔建立完成后,將計(jì)算圖像中所有像素點(diǎn)的梯度方向和梯度幅值。本文采用濾波器[-1,0,1]以及其轉(zhuǎn)置來(lái)計(jì)算坐標(biāo)為(x,y)處的像素點(diǎn)梯度幅值和方向。對(duì)于RGB彩色圖像來(lái)說(shuō),我們分別計(jì)算像素點(diǎn)每一通道的幅值和方向,選取幅值最大的那一通道的梯度幅值和方向作為當(dāng)前像素點(diǎn)處的梯度幅值和方向。
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)分別為當(dāng)前坐標(biāo)為(x,y)處像素點(diǎn)的水平方向梯度和垂直方向梯度。像素點(diǎn)(x,y)處的梯度幅值和梯度方向分別為:
G(x,y)=Gx(x,y)2+Gy(x,y)2(4
θ(x,y)=tan-1(Gx(x,y)Gy(x,y))(5
通過(guò)對(duì)上面的原理分析,可以看到,圖像中每個(gè)像素點(diǎn)對(duì)應(yīng)位置的梯度幅值和方向的計(jì)算均是獨(dú)立的,和鄰域內(nèi)的計(jì)算沒(méi)有任何邏輯關(guān)系,圖像中所有像素點(diǎn)對(duì)應(yīng)坐標(biāo)可以并行計(jì)算,每個(gè)線程計(jì)算一個(gè)像素點(diǎn)對(duì)應(yīng)坐標(biāo)的梯度方向和幅值,圖像邊緣可以將梯度幅值和方向賦固定值(比如0)。
3.3計(jì)算梯度方向直方圖
參考文獻(xiàn)[1-2]中的直方圖計(jì)算方法,將圖像按照8×8個(gè)像素點(diǎn)作為一個(gè)cell進(jìn)行分割,根據(jù)之前計(jì)算的每個(gè)像素點(diǎn)對(duì)應(yīng)坐標(biāo)的梯度方向和幅值,本文將以像素點(diǎn)的坐標(biāo)(x,y)算出4個(gè)像素點(diǎn)的坐標(biāo); 然后依照當(dāng)前像素點(diǎn)坐標(biāo)(x,y)在其所處的8×8的cell當(dāng)中的位置,分別算出對(duì)應(yīng)的4個(gè)像素點(diǎn)的權(quán)重,用4個(gè)像素點(diǎn)的梯度幅值分別乘以權(quán)重進(jìn)行投票,進(jìn)行直方圖歸一化操作,最終每個(gè)cell將得到一個(gè)梯度方向直方圖。
在設(shè)計(jì)GPU并行化解決方案時(shí),考慮到線程之間的沖突和效率的原因,每個(gè)線程對(duì)應(yīng)一個(gè)像素點(diǎn)的計(jì)算,本文為每個(gè)線程分配了一個(gè)18維(一個(gè)18個(gè)元素的float型數(shù)組)的共享內(nèi)存,這樣每個(gè)線程就會(huì)得到一個(gè)18維的梯度方向直方圖,然后采用折半規(guī)約的方法進(jìn)行規(guī)約,最終規(guī)約為每個(gè)cell一個(gè)梯度方向直方圖。
通過(guò)計(jì)算得到對(duì)比度敏感的18維的梯度方向直方圖和對(duì)比度不敏感的9維梯度方向直方圖。為實(shí)現(xiàn)梯度方向直方圖對(duì)偏置改變的不變性,本文將對(duì)得到的直方圖分別進(jìn)行歸一化操作。根據(jù)當(dāng)前cell的位置與周圍cell的位置關(guān)系,算出4個(gè)歸一化因子,對(duì)當(dāng)前cell的9維和18維梯度方向直方圖分別進(jìn)行歸一化操作和截?cái)?截?cái)嘁蜃釉O(shè)為0.2),然后再將4個(gè)歸一化因子作為最后4維,得到最終的31維梯度方向直方圖。
在設(shè)計(jì)歸一化計(jì)算GPU實(shí)現(xiàn)時(shí),本文為每個(gè)8×8的cell分配一個(gè)線程,每個(gè)線程都負(fù)責(zé)對(duì)當(dāng)前cell的18維和9維的梯度方向直方圖分別進(jìn)行歸一化,加上4個(gè)歸一化因子,最終得到當(dāng)前cell的31維梯度方向直方圖。
3.4窗口區(qū)域特征值和濾波器的卷積
本文將在圖像金字塔的所有尺度的縮放圖像上進(jìn)行人體檢測(cè),檢測(cè)窗口的大小不一。對(duì)于根模型,本文使用三種大。9×8、11×7、11×4(均以cell為單位),而對(duì)于部件模型,部件的大小均為6×6個(gè)cell組成。窗口的特征值即為該窗口內(nèi)包含的cell的特征值串聯(lián)起來(lái),然后窗口的特征值和訓(xùn)練好的濾波器進(jìn)行卷積,得到該窗口在圖像中該位置的分?jǐn)?shù),在圖像金字塔每一尺度上所有位置進(jìn)行檢測(cè),得到所有尺度所有位置處的窗口分?jǐn)?shù)。這樣得到了圖像金字塔所有尺度上的所有位置的根分?jǐn)?shù)和部件分?jǐn)?shù),下一步就是對(duì)根和部件進(jìn)行鏈接,得到整個(gè)檢測(cè)窗口的分?jǐn)?shù)。
在設(shè)計(jì)GPU并行化解決方案時(shí),本文為每個(gè)檢測(cè)窗口分配一個(gè)線程,相鄰檢測(cè)窗口之間相隔1個(gè)cell,可以理解為檢測(cè)窗口的滑動(dòng)步長(zhǎng)為1個(gè)cell。在圖像金字塔的某一個(gè)尺度上進(jìn)行計(jì)算時(shí),當(dāng)前層由M×N個(gè)cell組成,那么就分配M×N個(gè)線程,通過(guò)內(nèi)部的線程控制,使每個(gè)線程計(jì)算對(duì)應(yīng)窗口的濾波器和特征值卷積,至于block線程分配,本文采用每個(gè)block由8×8個(gè)線程組成,可以根據(jù)實(shí)際情況合理調(diào)整。同時(shí),內(nèi)存的訪問(wèn)對(duì)于核函數(shù)的執(zhí)行效率也有非常大的影響,本文在設(shè)計(jì)內(nèi)存存儲(chǔ)模型時(shí),也嘗試了多種內(nèi)存的使用。最終,在上面的線程分配方案下,采用共享內(nèi)存的方式,將當(dāng)前block內(nèi)的所有線程所需要的數(shù)據(jù)從全局內(nèi)存緩存到共享內(nèi)存中,然后線程進(jìn)行計(jì)算,減少對(duì)全局內(nèi)存的訪問(wèn),大大提高了核函數(shù)的執(zhí)行效率。
3.5距離轉(zhuǎn)換
通過(guò)特征值和濾波器的卷積,得到圖像金字塔中所有層中所有位置處的根和部件的得分,然后將可變形部件模型中根和部件聯(lián)系起來(lái),最終得到目標(biāo)分?jǐn)?shù)。首先部件位于圖像金字塔中2倍于根所在圖像大小的層,也就是部件所在層的特征分辨率是根所在層的特征分辨率的2倍,這樣部件就可以捕獲到相對(duì)于根更加精確的特征信息。目標(biāo)的得分是根得分加一系列部件的得分之和,本文在計(jì)算部件得分時(shí),將根坐標(biāo)的2倍加錨點(diǎn)的位置,不同部件的錨點(diǎn)不同,這樣就會(huì)得到不同部件未發(fā)生形變時(shí)的理想位置,而對(duì)于人這種容易發(fā)生形變的目標(biāo),要在理想位置的一定范圍內(nèi)進(jìn)行部件實(shí)際位置的搜索,根據(jù)偏移對(duì)部件的實(shí)際位置出進(jìn)行懲罰,得到實(shí)際位置處部件的得分。
Di,l(x,y)=maxdx,dy(Ri,l(x+dx,y+dy)-
di・φd(dx,dy))(6
距離轉(zhuǎn)換將部件的變形懲罰考慮在內(nèi),在進(jìn)行搜索的過(guò)程中,如果其中某個(gè)位置偏離錨點(diǎn)位置越遠(yuǎn),則懲罰越嚴(yán)重,在部件的錨點(diǎn)附近尋找對(duì)部件濾波器響應(yīng)最高分的檢測(cè)窗口,這個(gè)窗口就是該部件的實(shí)際位置。
在設(shè)計(jì)GPU并行化解決方案時(shí),通過(guò)分析可以看到,不同的根和部件的鏈接都是相互獨(dú)立計(jì)算的,之前沒(méi)有邏輯關(guān)系,所以本文的實(shí)現(xiàn)中為每一個(gè)根濾波器分配一個(gè)線程,每個(gè)線程負(fù)責(zé)處理在圖像中某個(gè)位置處的檢測(cè)窗口的根和部件的鏈接,同時(shí)負(fù)責(zé)在部件的錨點(diǎn)位置附近搜索部件的實(shí)際位置。從中可以看到,每個(gè)線程需要完成的計(jì)算量非常大,但是我們也嘗試了其他的線程分配方式,發(fā)現(xiàn)這種的線程分配方式是執(zhí)行時(shí)間最短的。
3.6包圍盒合并
本文檢測(cè)過(guò)程是對(duì)在圖像金字塔中所有尺度的所有位置進(jìn)行檢測(cè),這樣就會(huì)出現(xiàn)同一個(gè)目標(biāo)被多個(gè)框體包圍的情況,本文使用非最大值抑制算法消除多余框體,根據(jù)框體的重疊面積,若重疊面積大于某一閾值,就貪心地保留分?jǐn)?shù)較大的一個(gè)框體,實(shí)驗(yàn)表明,這種去除多余框體的效果非常好。
關(guān)于這一部分的并行化設(shè)計(jì),發(fā)現(xiàn)圖像金字塔的使用,不同層之間存在屬于同一目標(biāo)的窗體,而且需要將不同層的框體恢復(fù)到原圖像中,依據(jù)框體所在的層數(shù)和當(dāng)前檢測(cè)窗體的大小進(jìn)行恢復(fù),而且金字塔中大部分的位置是沒(méi)有人體的,如果采用并行化操作,肯定會(huì)大大增加計(jì)算量。所以本文將金字塔中的分?jǐn)?shù)大于一定閾值的窗口信息拷回CPU端進(jìn)行處理。本文將設(shè)計(jì)一個(gè)結(jié)構(gòu)體,結(jié)構(gòu)體中包含框體左上角坐標(biāo)、寬高、分?jǐn)?shù)、所處層數(shù)等信息,并且設(shè)置一個(gè)標(biāo)志位,根據(jù)所有尺度下的窗體的重疊面積,若重疊面積大于某一閾值,根據(jù)兩個(gè)窗體的分?jǐn)?shù)大小,將分?jǐn)?shù)較小的窗體的標(biāo)志位置為false。這種方法大大減少計(jì)算量,并且去除多余窗體的效果非常好。
四、實(shí)驗(yàn)結(jié)果及分析
本文測(cè)試檢測(cè)效果和加速效果時(shí),均是和OpenCV庫(kù)中的DPM算法進(jìn)行對(duì)比,同時(shí)本文也分析了顯卡的資源使用情況。測(cè)試設(shè)備使用Intel Core i54460 CPU,內(nèi)存4GB,顯卡采用Intel集成顯卡HD Graphics 4600。
4.1DPM算法的效果測(cè)試
測(cè)試圖像中,本文選取比較有代表性的場(chǎng)景進(jìn)行檢測(cè)。測(cè)試效果如圖1所示,在下面所有的基于OpenCV的檢測(cè)圖片中,每個(gè)檢測(cè)窗口上的數(shù)字代表了該檢測(cè)窗口的分?jǐn)?shù)。
第1組測(cè)試的場(chǎng)景是單個(gè)行人且背景較為簡(jiǎn)單的情況;第2組測(cè)試的場(chǎng)景是單個(gè)行人,背景復(fù)雜且人體被部分遮擋的情況;第3組測(cè)試的場(chǎng)景是人數(shù)較多且人體之間相互存在遮擋的情況;第4組測(cè)試的場(chǎng)景是背景較為復(fù)雜的實(shí)際路況的圖像,模擬車載攝像頭的工作環(huán)境。
由上面4組具有代表性的檢測(cè)圖片可以看出,本文基于GPU實(shí)現(xiàn)的DPM算法的并行化,在檢測(cè)效果上已經(jīng)和OpenCV庫(kù)接近一致,甚至要比OpenCV庫(kù)檢測(cè)效果更好。尤其是最后一張?jiān)谲囕d攝像頭的情況下,本文算法實(shí)現(xiàn)依然有比較好的檢測(cè)效果。
4.2DPM算法加速效果分析
在檢測(cè)效果和OpenCV保持一致甚至更優(yōu)的前提下,本文將重點(diǎn)測(cè)試一下基于GPU的DPM算法相比OpenCV中CPU級(jí)聯(lián)實(shí)現(xiàn)的加速效果。本文的測(cè)試環(huán)境依然是在Intel集成顯卡HD Graphics 4600上進(jìn)行測(cè)試。
由表1和圖2中的數(shù)據(jù),結(jié)合上一節(jié)中的檢測(cè)效果可以看到,在保持檢測(cè)精度和OpenCV一致的前提下,本文算法的執(zhí)行效率有數(shù)倍的提高,并且在高清圖像的處理中,檢測(cè)效率有了近7倍的提高。由圖2可以看出,圖像越高清,數(shù)據(jù)量越大,利用GPU進(jìn)行加速的效果越明顯。
4.3顯卡資源使用分析
對(duì)于集成顯卡HD Graphics 4600來(lái)說(shuō),流處理器數(shù)量為20,位寬64B,帶寬12.8GB/s,顯存類型DDR3,GPU默認(rèn)時(shí)鐘頻率350MHz,顯存默認(rèn)時(shí)鐘頻率800MHz。
通過(guò)表2中運(yùn)行時(shí)參數(shù)變化可以看到:GPU的核心頻率在運(yùn)行時(shí)由600MHz變?yōu)?100MHz;GPU Power表示顯卡功耗,由正常顯示時(shí)的0.2W變?yōu)檫\(yùn)行時(shí)的9.0W;GPU load表示GPU的占用量,正常顯示時(shí)是5%甚至更低,運(yùn)行DPM時(shí)是56%甚至更高到60%以上,還是有提高的空間。下面兩個(gè)分別為顯存的使用量,第一個(gè)為專用顯存使用量,可以看到幾乎沒(méi)有變化;第二個(gè)為動(dòng)態(tài)顯存使用量由242MB變?yōu)?46MB,大概要增加300MB左右的動(dòng)態(tài)顯存,這是因?yàn)閷?duì)于集成顯卡來(lái)說(shuō),顯存是在內(nèi)存上動(dòng)態(tài)分配的,所以在運(yùn)行的時(shí)候,DPM算法在運(yùn)行時(shí)需要較多的顯存空間,所以系統(tǒng)需要?jiǎng)討B(tài)地為集成顯卡分配顯存。
五、結(jié)語(yǔ)
可變形部件模型算法是目前最好的目標(biāo)檢測(cè)算法,本文通過(guò)對(duì)算法的并行化分析和實(shí)現(xiàn),完成算法的GPU移植,使算法的執(zhí)行效率顯著提高,在某些特定情況下,結(jié)合其他算法,能夠?qū)崿F(xiàn)對(duì)小圖像實(shí)時(shí)檢測(cè)的要求。在模式識(shí)別領(lǐng)域中,進(jìn)行目標(biāo)檢測(cè)很重要的一環(huán)是分類器的訓(xùn)練,在接下來(lái)的工作中,我們將嘗試將GPU用在深度學(xué)習(xí)方面,通過(guò)GPU來(lái)訓(xùn)練分類器,使分類器的訓(xùn)練效率能夠有明顯提高,同時(shí)訓(xùn)練出自己的模型,使DPM算法能夠在人臉檢測(cè)等更多領(lǐng)域中有最好的檢測(cè)效果。
參考文獻(xiàn):
[1]FELZENSZWALB P F, GIRSHICK R B, MCALLESTE D, et al. Object detection with discriminatively trained partbased models [J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2010, 32(9):1627-1645.
[2]GADESKI E, FARD H O, BORGNE H L. GPU deformable part model for object recognition[J]. Journal of RealTime Image Processing, 2014:1-13.
【基于圖形處理器的可變形部件模型算法的并行化】相關(guān)文章:
在DSP處理器上并行實(shí)現(xiàn)ATR算法03-18
基于質(zhì)量技術(shù)特征改善率的并行優(yōu)化模型分析03-19
基于大氣物理模型的快速視覺(jué)優(yōu)化去霧算法03-17
基于記憶多項(xiàng)式模型數(shù)字預(yù)失真算法的改進(jìn)03-07
基于遺傳算法的模型在交通線路選擇中的應(yīng)用03-07
基于NNVD的網(wǎng)絡(luò)化軟件多步控制算法研究03-11
基于場(chǎng)源離散化方法的體內(nèi)微型診療裝置定位模型及驗(yàn)證11-22
基于微處理器的FPGA配置方案03-07
基于DSP的信道譯碼算法優(yōu)化03-19