朱善瑋,李玉惠
(昆明理工大學(xué) 信息工程與自動(dòng)化學(xué)院,云南 昆明 650500)
利用視頻圖像對(duì)車輛進(jìn)行識(shí)別是車型識(shí)別方向上被廣泛研究的一種方法,對(duì)車輛的正面圖像提取各種可以表達(dá)車輛信息的特征,通過這些特征可以有效的對(duì)車輛模型進(jìn)行識(shí)別分類,例如,文獻(xiàn)[1~3]就分別提取了車輛正面圖像的SURF特征、LBP特征和Gabor特征,利用這些特征進(jìn)行特征點(diǎn)的匹配計(jì)算或者進(jìn)行分類器的訓(xùn)練,以此來對(duì)車輛模型進(jìn)行識(shí)別分類。上述文獻(xiàn)中所用到的訓(xùn)練樣本均為整個(gè)車輛的正面圖像,即使使用圖像特征進(jìn)行計(jì)算,但較多的特征仍然會(huì)存在計(jì)算量過大的問題。通過觀察不同系列的車輛可知,不同品牌車輛的車標(biāo)不同,相同品牌下不同車系的柵格、車前燈也不相同,這些由車標(biāo)、柵格、車前燈構(gòu)成的車臉部分可以區(qū)分出不同系列的車輛模型,所以僅通過車輛的車臉部分的圖像就可以對(duì)車輛進(jìn)行識(shí)別分類,這在一定程度上可以減少特征的數(shù)量,從而減少計(jì)算量、降低計(jì)算復(fù)雜度。
車臉特征[4]的分布類似于人臉,對(duì)車臉區(qū)域的檢測(cè)定位類似于人類檢測(cè)。對(duì)于人臉檢測(cè)方面的研究有3類,分別為:基于幾何特征的方法[5]、基于膚色模型的方法[6]、基于統(tǒng)計(jì)理論的方法[7],人臉的幾何特征是指人臉部五官的特征及他們之間的位置關(guān)系,而人臉的膚色與背景顏色有很大的不同,可以用作區(qū)別人臉和非人臉,基于統(tǒng)計(jì)的方法則是找出人臉和非人臉樣本各自的統(tǒng)計(jì)特征,然后利用統(tǒng)計(jì)分析和機(jī)器學(xué)習(xí)的方法來進(jìn)行區(qū)分。對(duì)于車臉區(qū)域來說,車標(biāo)的位置變化多樣,相對(duì)位置關(guān)系不好確定,而車臉區(qū)域的顏色在很多情況下和車身顏色一致,所以采用統(tǒng)計(jì)理論的方法對(duì)車臉區(qū)域進(jìn)行檢測(cè)。應(yīng)用較多的基于統(tǒng)計(jì)理論的檢測(cè)方法有支持向量機(jī)[8]、人工神經(jīng)網(wǎng)絡(luò)[9-10]以及AdaBoost算法[11-13],本文采用可以快速計(jì)算的Haar-like特征[14-15],并選取應(yīng)用最為廣泛的AdaBoost算法,將之應(yīng)用到車臉區(qū)域檢測(cè)中。
基于Haar-like特征和AdaBoost的車臉檢測(cè)算法流程如圖1所示。
圖1 車臉檢測(cè)流程圖
從算法流程圖可知,車臉檢測(cè)的過程主要分為幾個(gè)部分,Haar-like特征的提取、弱分類器的選取以及使用AdaBoost算法級(jí)聯(lián)強(qiáng)分類器。
最早的Haar-like特征被Papageorgiou等應(yīng)用在人臉檢測(cè)中,它反映的是圖像的灰度值變化的情況,后來Viola和Jones在這個(gè)基礎(chǔ)上對(duì)Haar-like特征進(jìn)行了擴(kuò)展,使用了4種形式的特征,如圖2所示。
圖2 Haar-like特征示意圖
其中,特征(a)和(b)表示邊緣特征,特征(c)表示線性特征,特征(d)表示對(duì)角線特征,特征值為白色區(qū)域中的像素值之和減去黑色區(qū)域中的像素值之和。為了使Haar-like特征能夠快速計(jì)算,引入積分圖的方法,即遍歷一遍圖像的像素就可以求得所選區(qū)域中像素值之和,例如,可以得到圖3所示的區(qū)域D的像素值之和。
圖3 積分圖計(jì)算示意圖
圖中A、B、C、D4個(gè)區(qū)域的右下角的像素點(diǎn)分別為1、2、3、4,假設(shè)這4個(gè)像素點(diǎn)分別為(x,y)、(x+1,y)、(x,y+1)、(x+1,y+1),則定義像素點(diǎn)(x,y)的像素值之和為該像素點(diǎn)左上方的所有像素點(diǎn)之和,即
(1)
則區(qū)域D的像素值之后可以表示為
Sump=ii(x+1,y+1)-ii(x+1,y)-
ii(x,y+1)+ii(x,y)
(2)
同理,在常數(shù)時(shí)間內(nèi)可以分別求得區(qū)域A、B、C的像素值之和,而Haar-like特征就是小區(qū)域中的像素值之和相減,故可以在常數(shù)時(shí)間內(nèi)求得圖像的Haar-like特征,得到特征之后,下一步就是用這些特征選取弱分類器,進(jìn)而級(jí)聯(lián)得到強(qiáng)分類器。
自Valiant提出PAC學(xué)習(xí)模型的弱學(xué)習(xí)和強(qiáng)學(xué)習(xí)的概念,后來經(jīng)過Kearns和Valiant證明可以通過Boosting的方法將弱學(xué)習(xí)提升為強(qiáng)學(xué)習(xí),但因Boosting需要預(yù)先得到假設(shè)的錯(cuò)誤率下限,F(xiàn)reund和Schapire就提出了不需要假設(shè)錯(cuò)誤率下限的AdaBoost算法,它的目的就是通過特征選出多個(gè)弱分類器,然后把這些弱分類器按照重要程度的不同組合為強(qiáng)分類器。
adcresultb1[SampleCount-1]=adc[9]; //將ADCINB1數(shù)據(jù)存入數(shù)組adcresultb1[]中
Haar-like特征數(shù)目龐大,例如一個(gè)大小為80×40的正樣本圖像計(jì)算出來的Haar-like特征有7 767 622個(gè),如果全部用來作為正負(fù)樣本的判斷則計(jì)算量非常巨大,所以需要選取一部分最能夠區(qū)分正負(fù)樣本的特征,并用這些特征構(gòu)成弱分類器,特征的選擇及弱分類器構(gòu)成步驟如下:
步驟1計(jì)算所有訓(xùn)練樣本的Haar-like特征,并對(duì)每一維特征值進(jìn)行排序;
步驟2對(duì)每一維的特征值xi選取不同的閾值θ,利用公式
hs,i,θ=s·sign(xi-θ)
(3)
計(jì)算出分類誤差最小的閾值θ,作為這一維特征的最終閾值;
步驟3比較Haar-like各維特征的分類誤差,分類誤差最小的特征作為弱分類器的特征。
通過以上步驟選出一個(gè)特征xi和它對(duì)應(yīng)的閾值θ,最終構(gòu)建出一個(gè)弱分類器g(x)=s·sign(xi-θ),其中s為指示方向。
一個(gè)弱分類器的分類情況只比50%的概率要好一些,遠(yuǎn)不能達(dá)到高準(zhǔn)確率的分類要求,所以需要把多個(gè)弱分類器按照一定方法組合到一起提升分類器的性能,構(gòu)造強(qiáng)分類器的步驟如下:
步驟1為N個(gè)訓(xùn)練樣本賦予同樣的權(quán)重,每個(gè)樣本的權(quán)重為ut=1/N。
步驟2根據(jù)當(dāng)前樣本的權(quán)重得到弱分類器gt(xi),并根據(jù)公式
(4)
計(jì)算出當(dāng)前弱分類器的分類誤差率;
步驟3把分類正確的樣本降低權(quán)重,分類錯(cuò)誤的樣本增加權(quán)重,按照公式
(5)
其中,分類正確的樣本權(quán)重更新為ut+1=ut/γt,分類錯(cuò)誤的樣本權(quán)重更新為ut+1=ut·γt,并作為當(dāng)前的樣本權(quán)重;
步驟4按照αt=In(γt)計(jì)算出弱分類器的系數(shù),重復(fù)迭代步驟2~步驟4;
步驟5經(jīng)過T輪迭代選擇出T個(gè)弱分類器,按照各自的系數(shù)構(gòu)造出強(qiáng)分類器為
(6)
一般情況下,約200個(gè)弱分類器構(gòu)造的強(qiáng)分類器就有良好的分類效果,在同樣數(shù)目弱分類器的情況下,級(jí)聯(lián)多個(gè)強(qiáng)分類器的分類效果和一個(gè)強(qiáng)分類器的分類效果相同,但在速度上卻要更快,級(jí)聯(lián)分類器的模型如圖4所示。
圖4 級(jí)聯(lián)分類器模型示意圖
級(jí)聯(lián)分類器中的每個(gè)強(qiáng)分類器都包含若干個(gè)弱分類器,待檢測(cè)圖像經(jīng)過第一個(gè)強(qiáng)分類器若判定為負(fù)樣本則直接丟棄,若判定為正樣本則被送入第二個(gè)強(qiáng)分類器,以此類推直到最后一級(jí)的強(qiáng)分類器判斷結(jié)束,中間若有強(qiáng)分類器判定為負(fù)樣本則直接丟棄,相比較一個(gè)強(qiáng)分類器的情況,對(duì)于每一個(gè)待檢測(cè)圖像需要所有弱分類器都做出投票,大幅節(jié)省了時(shí)間。
實(shí)驗(yàn)環(huán)境為Intel i5-4210M CPU,2.60 GHz,8 GB內(nèi)存,Windows 8.1操作系統(tǒng),編程語言為Python,使用OpenCV作為Haar-like特征和AdaBoost算法的開發(fā)工具包。實(shí)驗(yàn)數(shù)據(jù)為高速公路卡口所拍攝車輛的圖像,共5 000個(gè)訓(xùn)練樣本,其中2 000個(gè)正樣本為所截取的車臉圖像,3 000個(gè)負(fù)樣本為道路背景及車身部位隨機(jī)選取的圖像,車臉圖像包括不同光照條件、不同角度拍攝和20%范圍內(nèi)的尺度變化,并預(yù)處理為灰度級(jí)為256的灰度圖像,圖像尺寸統(tǒng)一為80×40像素,部分車臉樣本圖像如圖5所示。
圖5 部分車臉樣本圖
本文所訓(xùn)練的級(jí)聯(lián)分類器包含20個(gè)強(qiáng)分類器,每個(gè)強(qiáng)分類器包含數(shù)量不等的弱分類器,共133個(gè)弱分類器,利用此分類器檢測(cè)圖像中的車臉,在最初檢測(cè)時(shí),把滑動(dòng)窗口設(shè)定為和訓(xùn)練樣本的大小一致,遍歷檢測(cè)圖像之后按1.2倍的比例放大滑動(dòng)窗口,直至大于檢測(cè)圖像的一半后停止,然后將重疊檢測(cè)到的區(qū)域進(jìn)行合并,如圖6所示矩形框中的部分為車臉圖像的檢測(cè)結(jié)果。
檢測(cè)效果如圖6所示,對(duì)于車臉不全的圖像不能檢測(cè)出來車臉部分,而一張圖像中有多輛車的情況,在車臉部分完整的情況下,均能檢測(cè)出來。實(shí)驗(yàn)數(shù)據(jù)為不同道路下所拍攝的不同車型的圖像,選取其中車臉部位完好的圖像進(jìn)行測(cè)試,包括大眾、奧迪、別克、雪弗萊、寶馬不同品牌的10個(gè)車系,共100幅1 600×1 264像素的圖像,測(cè)試結(jié)果如表1所示。
表1 不同車型的車臉檢測(cè)結(jié)果
圖6 車臉檢測(cè)效果圖
實(shí)驗(yàn)表明,本文所用的Haar-like特征和AdaBoost算法相結(jié)合的方法,可以對(duì)車輛圖像的車臉部位進(jìn)行檢測(cè)定位。
本文給出了利用Haar-like特征和AdaBoost算法對(duì)車臉部位進(jìn)行檢測(cè)定位的方法,每張圖像的平均檢測(cè)時(shí)間不到200 ms,能夠滿足實(shí)時(shí)性的要求,但由于道路交通中車輛的角度多樣,導(dǎo)致訓(xùn)練樣本的多樣性不足,并且在測(cè)試時(shí)對(duì)較暗的樣本沒有進(jìn)行光照處理,導(dǎo)致車臉部位有漏檢和錯(cuò)檢的情況,故而檢測(cè)準(zhǔn)確率不是很高,進(jìn)一步對(duì)樣本進(jìn)行擴(kuò)展、均衡化光照條件,或者選取其它更具有魯棒性的特征,可以增加檢測(cè)正確率。