王 磊,關(guān) 英,孟志敏,郝永平,徐九龍
(沈陽理工大學(xué) 兵器科學(xué)與技術(shù)研究中心, 沈陽 110159)
坦克是現(xiàn)代地面大集群作戰(zhàn)的主要武器,主要用于摧毀野戰(zhàn)工事,快速殲滅有生力量[1]。隨著坦克在陸地戰(zhàn)場上的綜合實戰(zhàn)能力不斷增強(qiáng),反坦克作戰(zhàn)逐漸成為了各國陸軍的重要能力[2]。反坦克打擊的首要任務(wù)就是對典型的坦克目標(biāo)進(jìn)行精準(zhǔn)識別。隨著探測技術(shù)的飛速發(fā)展,傳統(tǒng)的可見光探測已不能滿足現(xiàn)代化戰(zhàn)場的要求,因此,紅外探測技術(shù)應(yīng)運而生[3]。常見的目標(biāo)識別算法大多采用PC機(jī)實現(xiàn),但是由于其功耗與散熱的問題也使其很難實現(xiàn)小型化、集成化[4]。隨著半導(dǎo)體技術(shù)與數(shù)字計算機(jī)技術(shù)的飛速發(fā)展,嵌入式系統(tǒng)越來越常見。Oishi采用HOG特征和SVM分類算法在Kintex-7 FPGA上設(shè)計了一種目標(biāo)識別系統(tǒng)[5]。Viola和Jones提出了AdaBoost目標(biāo)識別的級聯(lián)算法,該算法在保持準(zhǔn)確率的同時顯著的提高運算速度[6]。
針對本文所涉及的目標(biāo)識別領(lǐng)域,單一平臺往往難以很好地滿足要求,更多的是基于組合平臺來完成這一任務(wù)[5]。采用低成本、具有紅外成像的嵌入式系統(tǒng)開發(fā)具有廣泛的應(yīng)用?;贏RM+FPGA架構(gòu)的ZYNQ SoC平臺,完美地結(jié)合了FPGA平臺靈活的硬件結(jié)構(gòu)與強(qiáng)大的并行計算能力以及ARM平臺在嵌入式操作系統(tǒng)上的優(yōu)勢[7-8]。在此類平臺下實時性算法的開發(fā)與實現(xiàn)是研究的熱點[4]。
本文采用HOG特征結(jié)合AdaBoost分類算法進(jìn)行坦克目標(biāo)識別,根據(jù)FPGA平臺的計算特性,對HOG特征提取算法進(jìn)行優(yōu)化設(shè)計,通過軟硬協(xié)同設(shè)計的方法搭建嵌入式系統(tǒng),定制了小型化樣機(jī),在不同平臺開展了相關(guān)實驗,驗證所提出方法的可行性。
由于紅外成像相比于可見光成像分辨率不高,難以體現(xiàn)出目標(biāo)的紋理細(xì)節(jié),因此在特征提取的過程中,目標(biāo)的外形、輪廓特征顯得尤為重要。針對坦克這類有形目標(biāo),其梯度強(qiáng)度和梯度方向能夠很好的描述一個目標(biāo)的形狀與輪廓[10]。采用梯度方向直方圖特征(Histogram Of Oriented Gradient,HOG)能夠很好地描述目標(biāo)的形狀特征。便于快速識別,計算流程如圖1所示。
HOG特征的具體計算過程如下:
1) Gamma校正。Gamma校正是對輸入圖像的灰度值進(jìn)行指數(shù)變換,從而對圖像的亮度偏差進(jìn)行校正[14]。在紅外圖像中,由于不同場景下的溫度條件不同,因而需要通過對圖像進(jìn)行Gamma校正歸一化來消除亮度偏差對特征提取的影響。式(1)為Gamma校正公式:
I(x,y)=I(x,y)γ
(1)
式(1)中:I(x,y)表示圖像中像素點的灰度值;γ為校正值。
2) 梯度計算。圖像梯度的計算如式(2)、式(3):
Gx(x,y)=I(x+1,y)-I(x-1,y)
(2)
Gy(x,y)=I(x,y+1)-I(x,y-1)
(3)
其中,x、y分別是圖像像素點的坐標(biāo);I(x,y+1)、I(x,y-1)、I(x+1,y)、I(x-1,y)分別為當(dāng)前像素上、下、左、右相鄰像素點的值;Gx(x,y)、Gy(x,y)分別為像素點(x,y)的水平方向梯度和垂直方向梯度。
圖1 HOG特征提取流程框圖
得到兩個方向的梯度后,利用這2個梯度值計算每個像素點的梯度幅值G(x,y)和梯度方向θ(x,y)如式(4)、式(5)
(4)
(5)
3) 基于梯度方向的加權(quán)投影統(tǒng)計。將梯度方向平均分為W個區(qū)間(bin),用binw表示第w個梯度區(qū)間,根據(jù)cell中的每個像素的梯度方向?qū)⑻荻确涤成涞綄?yīng)的bin中,每個cell單元根據(jù)梯度的方向?qū)⑻荻确低队爸翆?yīng)區(qū)間的bin中并進(jìn)行累加,最終得到表述cell單元梯度幅值和梯度方向分布的梯度方向特征向量h。h是一個W維的向量,見式(6):
(6)
式(6)中,w=0,1,2,…,W-1。
4) block塊的劃分與特征向量歸一化。由于圖像中存在噪聲,導(dǎo)致HOG特征在計算過程中梯度幅值不穩(wěn)定,因此需要對梯度幅值進(jìn)行歸一化[15],具體方法是將cell單元組合成block塊,在塊內(nèi)進(jìn)行歸一化操作。若某block塊的HOG特征向量為H,通常采用的L1-norm歸一化函數(shù)來完成歸一化操作,式(7)為L1-norm歸一化函數(shù):
(7)
式(7)中,ε為一個極小值,這樣可以避免分母為0,對最終結(jié)果并不產(chǎn)生影響。
5) 組合HOG特征向量。將每個block的HOG特征向量組成最終的HOG特征向量。實際系統(tǒng)中HOG特征提取器的參數(shù)如表1所示。
表1 HOG特征提取器參數(shù)
AdaBoost的核心思想是不斷訓(xùn)練弱分類器,并根據(jù)每次迭代后的誤差率來調(diào)整權(quán)重值,提高被錯誤分類的樣本的權(quán)重,降低被正確分類的樣本的權(quán)重,使每一次迭代過程中被錯誤分類的樣本可以在后一輪的訓(xùn)練過程中被弱分類器更加重視[12-14]。通過調(diào)整每輪迭代的權(quán)值,最終可以得到分類效果顯著提升的強(qiáng)分類器。AdaBoost算法的具體訓(xùn)練過程如下:
1) 給定訓(xùn)練樣本數(shù)據(jù)集T:
T={(x1,y1),(x2,y2),…,(xN,yN)}
其中,xi∈χ=Rn,yi∈γ={+1,-1},i=1,2,…,N,χ為實例空間;γ為標(biāo)記集合;xi為第i個特征向量; (xi,yi)為樣本點;yi為實例的類標(biāo)記,當(dāng)yi=+1時,xi為正樣本,當(dāng)yi=-1時,xi為負(fù)樣本。
2) 初始化訓(xùn)練數(shù)據(jù)的權(quán)重,每個訓(xùn)練數(shù)據(jù)的權(quán)重都指定為1/N:
D1=(ω11,…,ω1i,…,ω1N)
3) 對m=1,2,…,M,將各個帶權(quán)重的訓(xùn)練數(shù)據(jù)進(jìn)行分類學(xué)習(xí),得到基本分類器Gm(x):
Gm(x)∶χ→{+1, -1}
(4)
4) 計算Gm(x)在訓(xùn)練數(shù)據(jù)集上的分類誤差率em,即被Gm(x)錯誤分類的樣本的權(quán)值總和:
其中:
(5)
5) 計算Gm(x)在強(qiáng)分類器中的系數(shù):
6) 繼續(xù)迭代,更新訓(xùn)練數(shù)據(jù)集的樣本權(quán)值分布:
Dm+1=(ωm+1,1,…,ωm+1,i,…,ωm+1,N)
其中,i=1,2,…,N;Zm為規(guī)范化因子,可按下式計算得到:
(7)
對弱分類器進(jìn)行線性組合,得到強(qiáng)分類器:
AdaBoost算法訓(xùn)練流程如圖2所示。
圖2 AdaBoost算法訓(xùn)練流程框圖
考慮到算法在嵌入式平臺的實現(xiàn)問題,前述的cell單元統(tǒng)計直方圖的計算過程中,arctan運算需要計算兩個梯度幅值的比值,此類運算不適合在FPGA進(jìn)行處理。因此需要對cell單元的梯度方向直方圖生成過程進(jìn)行優(yōu)化設(shè)計。
在cell單元中,梯度角度值θ被劃分成了8個區(qū)間,進(jìn)行加權(quán)統(tǒng)計時只考慮某一梯度方向所屬的角度區(qū)間bn。bn和θ的關(guān)系見式(8)。
(8)
將計算梯度角度值的計算式(5)代入上式(8),可得式(9):
(9)
其中,Gx、Gy分別表示x,y方向上的梯度值,由于bn的取值區(qū)間為[0,7],由式(9),可得式(10)。
(10)
其中,mod表示取余數(shù)計算,b的值按式(11)計算得到:
(11)
式(10)中的GxGy≥0與GxGy<0用于區(qū)分Gx與Gy符號位的異同,算法在FPGA實現(xiàn)中,只需要通過符號位的比較即可實現(xiàn);根據(jù)式(11)中的各個判斷條件,該優(yōu)化方案中完成一次符號位比較、四次常量乘法、四次比較、一次減法運算和一次求模運算;即只需通過常量乘法和比較運算即可實現(xiàn),運算更加簡單、邏輯資源消耗更少,便于在嵌入式系統(tǒng)平臺移植實現(xiàn)。
算法中歸一化的計算過程需要進(jìn)行多次除法運算,而二進(jìn)制數(shù)每次的移位操作相當(dāng)于一次除2的除法運算。而這種移位的操作在FPGA上易通過寄存器實現(xiàn),且每次移位只需要一個時鐘周期即可完成[10]。算法采用移位操作近似替代除法運算的方法,將歸一化分母H||+ε近似為2k形式的數(shù)值,這樣歸一化的計算過程就可以通過移位k次實現(xiàn)。假設(shè)2n-1 Hnorm≈ (12) 由式(12)可知,表達(dá)式中分母都是以2k的形式表示,歸一化運算可以通過多次簡單的移位操作就能得到復(fù)雜的除法運算的近似結(jié)果。文中分別對將H||+ε近似為2k的形式以及采用式(12)分段近似方法進(jìn)行了誤差分析,結(jié)果如圖3所示。 圖3 歸一化近似計算方法的誤差分析曲線 為驗證所提優(yōu)化算法的有效性,搭建了嵌入式測試系統(tǒng)。開發(fā)了FPGA/ARM原理樣機(jī),其中ARM硬核的主頻率為767 MHz,F(xiàn)PGA主頻率為250 MHz,配備了HDMI、USB等輸入輸出接口用于可見光與紅外圖像采集與處理結(jié)果顯示。同時,為便于比較,采用Zynq SoC的AX7020開發(fā)板為參考系統(tǒng),實驗系統(tǒng)平臺如圖4所示。 圖4 嵌入式紅外圖像坦克目標(biāo)識別系統(tǒng)平臺 樣機(jī)中嵌入式系統(tǒng)通過軟硬件協(xié)同設(shè)計方法進(jìn)行資源優(yōu)化與合理配置,根據(jù)各模塊的不同特性,將各個模塊合理地分配在ARM與FPGA端。采用所提算法在嵌入式系統(tǒng)中進(jìn)行了實驗驗證,系統(tǒng)的總體架構(gòu)如圖5所示。 圖5 嵌入式系統(tǒng)總體架構(gòu)示意圖 為獲取高清圖像數(shù)據(jù),系統(tǒng)中同時采用Fluke Tix640型紅外熱像儀(圖6)分別對不同地點的不同坦克目標(biāo)進(jìn)行數(shù)據(jù)采集,獲取了樣本數(shù)據(jù)。 圖6 實驗用紅外熱像儀 分別選取正負(fù)樣本各4 000張作為訓(xùn)練集。部分樣本的示例見圖7,圖中前3行為正樣本,后3行為負(fù)樣本,分別代表真目標(biāo)和偽目標(biāo)。 另外各選取100張包含坦克目標(biāo)的紅外圖像與100張不含坦克目標(biāo)的紅外圖像作為測試樣本,紅外圖像大小為640×480像素。分別在PC機(jī),Zynq平臺下的單一ARM核,以及基于ARM+FPGA架構(gòu)的樣機(jī)上開展坦克目標(biāo)識別的對比實驗,部分識別結(jié)果如圖8所示。 圖8(a)、圖8(b)、圖8(c)分別為在PC平臺下、單一ARM平臺、ARM+FPGA平臺下的識別結(jié)果。算法分別在定制樣機(jī)與AX7020開發(fā)板進(jìn)行了相應(yīng)驗證。由圖8可知,上述3種方法均能夠?qū)崿F(xiàn)對紅外圖像中坦克目標(biāo)的識別,但識別性能指標(biāo)不同,表2給出了精度P、召回率R以及平均耗時t三項性能指標(biāo)的差異。 圖7 正負(fù)樣本示例 圖8 坦克目標(biāo)識別結(jié)果 表2 各項性能指標(biāo) 由對比可見,PC平臺的精度最高,耗時也較大;單一ARM 平臺精度和耗時略有不足;ARM+FPGA平臺下,改進(jìn)后的算法在保證一定識別率的基礎(chǔ)上,大幅地提高了運算速度,運算速度相對于單一ARM硬核的方法提高了3倍以上,具備了工程應(yīng)用的條件。實驗過程中,檢測一張640×480像素的圖像只需要52 ms,幀率達(dá)到20 fps,可以滿足系統(tǒng)實時性的要求。 針對戰(zhàn)場環(huán)境下紅外圖像坦克目標(biāo)在嵌入式系統(tǒng)中的快速識別,提出了一種改進(jìn)的HOG特征提取結(jié)合 AdaBoost 分類算法的紅外圖像目標(biāo)識別實現(xiàn)方法。針對ARM+FPGA嵌入式平臺,算法根據(jù)FPGA的計算特性對HOG特征進(jìn)行提取和優(yōu)化。搭建了實驗系統(tǒng),通過采集坦克目標(biāo)的紅外樣本數(shù)據(jù),對所提算法進(jìn)行驗證,相比于傳統(tǒng)的目標(biāo)識別算法,所提算法在樣機(jī)的ARM+FPGA嵌入式平臺上,識別率70%以上,運算速度相對于單一ARM硬核的方法提高了3倍以上,平均耗時52 ms(640×480),幀率達(dá)到20 fps,可以滿足系統(tǒng)精度和實時性要求。3 系統(tǒng)搭建與實驗驗證
4 結(jié)論