宋巖貝,魏 維,何冰倩
(成都信息工程大學(xué) 計(jì)算機(jī)學(xué)院,四川 成都 610255)
隨著我國經(jīng)濟(jì)發(fā)展水平的不斷提高,汽車數(shù)量不斷增加,在給人民帶來極大便利的同時(shí)也為社會的管理治理提出了更高的要求。以智能停車場系統(tǒng)為例,該類系統(tǒng)拍攝的照片大都以車輛正面圖片為主,因此本文以車輛的正面圖片作為研究的出發(fā)點(diǎn)。目前基于視頻圖像的車型識別方法主要分為3個(gè)方向:①基于模型;②基于淺層特征;③基于深層特征。
基于模型的車型識別方法核心思想是對車輛的二維圖片進(jìn)行重新建模,然后使用模型進(jìn)行車型匹配,如3D模型[1,2]、線框模型、示意圖模型等。但由于這些模型只能反映出不同車型之間的形狀差異,因此大多只能用于粗粒度車型分類[3],如貨車、轎車、摩托車等。
對于細(xì)粒度車型識別[4,5],以SIFT[6]、SURF[7,8]等特征描述子為代表的淺層特征[9,10]和以卷積神經(jīng)網(wǎng)絡(luò)為基礎(chǔ)的深層特征是細(xì)粒度分類主要用到的兩種方法。淺層特征的缺點(diǎn)是其表示性不好,使得識別準(zhǔn)確率不高,而深層特征的提取往往需要借助額外的語義標(biāo)注才能取得較好的效果。因此本文提出了一種基于中層特征的細(xì)粒度車型識別算法,所提取的中層特征表示性好于淺層特征,同時(shí)又不需要高層特征所需的額外的標(biāo)注,能夠有效地提高細(xì)粒度車型識別的準(zhǔn)確率,非常適合計(jì)算資源較為緊張的情景。
本文采用基于Adaboost的車臉定位算法。Adaboost算法最早由Viola等運(yùn)用在人臉識別檢測[11]領(lǐng)域,并取得了很好的效果。近年來也有許多學(xué)者將其用于車臉定位。該算法的核心是訓(xùn)練多個(gè)弱分類器,然后將多個(gè)弱分類器組合成一個(gè)強(qiáng)分類器。
首先初始化訓(xùn)練樣本的權(quán)重,設(shè)總共有N個(gè)樣本,第i個(gè)樣本的權(quán)重Wi如式(1)
(1)
弱分類器hk定義如式(2)下,p表示閾值
(2)
某分類器在訓(xùn)練集上的誤差ek如式(3)所示
(3)
根據(jù)誤差計(jì)算該分類器的權(quán)重ak,式(4)
(4)
更新權(quán)重分布如式(5)所示,Zk為歸一化常數(shù)
(5)
最后按權(quán)重組合弱分類器,如式(6)所示。車臉定位的效果如圖1所示
(6)
圖1 車臉定位效果
圖像的特征按層次可分為低層特征,中層特征和高層特征[12]。低層特征像如SIFT,SURF等一些特征描述子。雖然這些算子在絕大多數(shù)的分類場景中可以取得很高的準(zhǔn)確率,但其也有明顯的不足。這些算子只能描述當(dāng)前這個(gè)像素點(diǎn)周圍很小范圍內(nèi)的變化情況,無法描述該區(qū)域在全局中的重要性情況,無法在車輛型號的精細(xì)劃分的任務(wù)中取得令人滿意的效果。而高層特征與低層的紋理、顏色等特征是沒有直接關(guān)系的,若要使用則需要對圖像進(jìn)行語義等相關(guān)特殊標(biāo)記,需要數(shù)據(jù)集的支持,由于我們所用的數(shù)據(jù)集為自己采集的各個(gè)品牌車輛的正面照,并不包含相關(guān)的標(biāo)記,所以這里我們將低層特征進(jìn)行了一些組合使其成為更具全局性的中層特征-patch。
圖2列舉了5類車型經(jīng)過本文算法提取到的patch組合,每組取了5個(gè)作為展示。
圖2 重要性patch
首先為每一幅經(jīng)過車臉定位的圖片建立其圖像下采樣金字塔,提取每個(gè)樣本的多尺度patch,這樣就形成了patch候選集。接下來的主要工作將是如何從候選集中選取有價(jià)值的patch。
要解決這個(gè)問題,首先要定義何為重要。對于車輛的前臉圖片而言,雖然車型不同,但有許多外觀特征是共有的,例如會有較大面積的純色色塊,這些特征會極大影響分類的準(zhǔn)確性,應(yīng)當(dāng)去除。相反,對于那些每個(gè)系列車型獨(dú)有的特征應(yīng)當(dāng)充分重視,所以我們尋找patch的原則有兩點(diǎn):①同類型中頻繁出現(xiàn);②不同類型中幾乎不出現(xiàn)。在實(shí)現(xiàn)過程中這兩點(diǎn)必須是同時(shí)滿足的。換言之,重要性patch的定義:①簇內(nèi)高頻性;②簇間差異性。
根據(jù)patch的定義,首先要滿足簇內(nèi)高頻性,最常用也是最直接的方法就是Kmeans聚類,將每一類樣本的所有patch放到一起單獨(dú)進(jìn)行聚類,找出K個(gè)具有代表性的patch簇,很容易就可以滿足patch高頻性的要求。對于簇間差異性的要求,我們的方法是使用分類解決,將上一步聚類聚成的K個(gè)簇使用支持向量機(jī)訓(xùn)練出K個(gè)特征檢測器。訓(xùn)練的正樣本為該簇的簇內(nèi)成員,負(fù)樣本為除本類樣本外的其它類樣本patch。假設(shè)目前的K個(gè)監(jiān)測器是最理想的K個(gè),那么就可以使用這K個(gè)檢測器提取本類最具代表性和鑒別意義的特征。
一次聚類后會有多個(gè)無效簇,因此需要對其進(jìn)行一定的篩選。由于進(jìn)行聚類的樣本是來自同類車型的樣本,所以理想狀況下每個(gè)簇內(nèi)的patch應(yīng)當(dāng)只來自本類的圖片且囊括本類型的所有樣本。因此可以從以下兩個(gè)方面對簇進(jìn)行優(yōu)化:①去除來自同一幅圖片的成員;②去除成員類別過于雜亂的簇。
patch的提取流程如圖3所示。本文使用簡單閾值法和交叉驗(yàn)證相結(jié)合的方法進(jìn)行patch篩選。首先把原始數(shù)據(jù)集分為D1、D2兩部分。在D1使用一次kmeans將所有patch聚成K個(gè)簇,對聚成的K個(gè)簇進(jìn)行個(gè)數(shù)檢測,去除個(gè)數(shù)小于4的簇,該方法可以去除60%的無效簇。然后將過濾后的簇使用SVM訓(xùn)練成檢測器。將D1中訓(xùn)練出的檢測器放到D2中運(yùn)行,在D2中生成新的簇成員。使用新的簇訓(xùn)練新的檢測器。再送入D1中運(yùn)行,如此迭代運(yùn)行直至收斂。每一次迭代需要更新該簇的鑒別分?jǐn)?shù),鑒別分?jǐn)?shù)的定義為
(7)
Nneg為該簇在其它類patch中的響應(yīng)次數(shù),Nall為該簇在所有樣本中的響應(yīng)次數(shù)。該分?jǐn)?shù)越高說明當(dāng)前簇的鑒別意義越大。最后根據(jù)每個(gè)簇的分?jǐn)?shù),對所有檢測器進(jìn)行排序,選擇每類中鑒別分?jǐn)?shù)高的N個(gè)檢測器作為特征。算法流程見表1。
圖3 patch提取過程
表1 算法詳解
現(xiàn)有比較典型的特征編碼方式有BOW詞包算法,SPM空間金字塔匹配等。詞包算法(Bag of words)[13]最初應(yīng)用于文本檢索領(lǐng)域,后被引入計(jì)算機(jī)視覺領(lǐng)域。其核心思想是在全局范圍內(nèi)找出K個(gè)具有代表性的視覺詞組成視覺詞典,然后分區(qū)域統(tǒng)計(jì)響應(yīng)直方圖,用1*K的一維向量表示一幅圖片。但是這種方法有很明顯的缺陷,對于整幅圖片來說,所有的位置信息都被丟棄了,所以在BOW的基礎(chǔ)上,S-Lazebnik等提出了一種新的方法空間金字塔匹配[14](spatial pyramid matching),這種方法將圖片分為大小不同的金字塔狀的塊,然后分別統(tǒng)計(jì)每個(gè)子塊的特征,最后再將所有子塊的特征拼接成一個(gè)一維向量。因此我們前面在patch篩選的時(shí)候結(jié)合了這兩種算法的思想,既考慮到代表性同樣兼顧位置信息。那么在學(xué)習(xí)到有效的patch之后,如何利用這些patch呢?
假設(shè)總共有C類車系,每類車系各有k的檢測器,設(shè)特征向量為:Vi(1,2,3,…,C*k),默認(rèn)值為0。每一列的數(shù)值對應(yīng)一個(gè)檢測器。向量Vi可以理解為某個(gè)樣本對于C*k個(gè)檢測器的響應(yīng)程度,若某個(gè)檢測器產(chǎn)生響應(yīng),則將向量Vi對應(yīng)位置上的值置為1,否則為0。這樣統(tǒng)計(jì)每個(gè)樣本的對C*k個(gè)檢測器的相應(yīng)程度,所有訓(xùn)練樣本的矩陣可表示為V=[V1,V2,…,VC*M]。最后使用Linear-SVM分類。
本文所用的數(shù)據(jù)集為從各大汽車論壇搜集到的各類品牌車型的正面照,主要涉及大眾和奧迪兩個(gè)品牌,其中,大眾包括桑塔納、捷達(dá)、速騰、polo、高爾夫、朗逸、寶來、帕薩特8種車型,奧迪包括A3、A4、A6這3種車型,如圖4所示。之所以只選擇這兩個(gè)品牌是因?yàn)閵W迪和大眾兩個(gè)品牌的家族化設(shè)計(jì)語言相比于其它品牌要強(qiáng)烈的多,兩個(gè)品牌旗下各個(gè)系列車型間的外觀差距也較其它車型之間小的多,更具代表性,可以更好檢測我們算法的有效性。數(shù)據(jù)集中共有11種車型共1100張圖片。每類車型取60%用于訓(xùn)練,40%進(jìn)行測試。
圖4 訓(xùn)練數(shù)據(jù)
車臉定位選取5000張僅含有不同品牌車臉的圖片作為正樣本,負(fù)樣本為5000張不包含汽車的任意自然圖片,將所有樣本歸一化為100*200。在windows環(huán)境下,CPU為i3-8100,內(nèi)存16 G,使用opencv自帶的訓(xùn)練器,使用Haar特征,訓(xùn)練17個(gè)周期。
將經(jīng)過車臉定位的圖片的大小統(tǒng)一設(shè)置為200*500*3,對于圖像的金字塔特征,設(shè)置patch的大小最小為80*80,最大不得超過圖像的大小,步長為8,提取每個(gè)patch的HOG特征。
在使用K-means進(jìn)行聚類時(shí)。遇到的第一個(gè)問題是中心個(gè)數(shù)的設(shè)置,所以本文首先測試不同個(gè)數(shù)的中心對系統(tǒng)系能的影響,選取了中心個(gè)數(shù)分別為20、70、120、170、220這5組進(jìn)行測試,實(shí)驗(yàn)效果如圖5所示,橫坐標(biāo)1-5分別代表5組不同個(gè)數(shù)的實(shí)例,由圖可知不同個(gè)數(shù)的中心和預(yù)測準(zhǔn)確性影響不大,原因是因?yàn)樘卣飨蛄渴怯蒀*k個(gè)檢測器拼接而成,檢測器的區(qū)分性才是影響準(zhǔn)確率的重要因素之一。而且隨著中心數(shù)量的增多,處理每張圖片的耗時(shí)從0.22 s增長到1.79 s,時(shí)間復(fù)雜度大幅增加。但對準(zhǔn)確率的變化影響不大,因此從時(shí)間效率的角度考慮,本文在實(shí)驗(yàn)中將中心個(gè)數(shù)設(shè)為20。
在提取圖像的金字塔特征時(shí),首先規(guī)定patch的大小,最小為60*60,最大為200*500。其次是金字塔的層數(shù),不同層數(shù)的金字塔下系統(tǒng)的準(zhǔn)確性和時(shí)間效率的表現(xiàn)如圖6所示。x軸表示的是金字塔的層數(shù)。在3層時(shí)準(zhǔn)確性達(dá)到95%,僅耗時(shí)0.4 s。在增加到6層后,準(zhǔn)確率提升了1%,編碼耗時(shí)增加到了0.6 s。在多于6層后準(zhǔn)確性不斷下滑,原因是特征維數(shù)隨金字塔層數(shù)的增加而不斷增加,導(dǎo)致了模型的過擬合。綜合考慮金字塔的層數(shù)設(shè)為6。
圖5 中心個(gè)數(shù)對系統(tǒng)效率影響
圖6 金字塔層數(shù)對系統(tǒng)效率影響
為了進(jìn)一步驗(yàn)證本文算法的有效性,引入了6組對比實(shí)驗(yàn),分別是:詞包算法(BOW)、空間金字塔匹配(SPM)、改進(jìn)的SPM算法、基于稀疏編碼的空間金字塔(ScSpm)、局部約束線性編碼(LLC)和CNN。
詳細(xì)的實(shí)驗(yàn)數(shù)據(jù)見表2,ScSpm算法主要是使用稀疏編碼替代K-means并引用Max pooling替代SPM的Ave-rage pooling。LLC則認(rèn)為局部性比稀疏性更重要。因此引入了局部約束的概念。
CNN模型使用的是Jie等提出的模型,由一個(gè)包含5個(gè)卷積層,3個(gè)池化層和3個(gè)全連接層的CN模型結(jié)合SVM進(jìn)行分類。為了滿足CNN模型大數(shù)據(jù)集的要求,對現(xiàn)有數(shù)據(jù)集進(jìn)行增強(qiáng),分別使用隨機(jī)對比度變化、隨機(jī)飽和度變化、隨機(jī)色域變化和增加高斯噪聲4種方法。將數(shù)據(jù)集擴(kuò)充為35 200張。
原始的BOW和SPM算法準(zhǔn)確率極低,改進(jìn)后的SPM在加大了車燈和散熱柵格區(qū)域的權(quán)重后表現(xiàn)有所提高。引入稀疏編碼[15,16]后,ScSpm的準(zhǔn)確率比改進(jìn)后的SPM算法提高了3%,與原始SPM相比提高了13%。與Jie等[17]提出的CNN模型相比,本文提出的算法在識別準(zhǔn)確率更高。
表2的實(shí)驗(yàn)數(shù)據(jù)主要是基于兩個(gè)品牌不同的子的系列車型進(jìn)行識別,除此之外,還進(jìn)行了不同品牌間車型識別的實(shí)驗(yàn)見表3??梢奐ie等的算法在對不同品牌間的車輛識別時(shí)有較高的準(zhǔn)確率,但在同一品牌子系列車型的識別準(zhǔn)確率比本文算法低了7%。
相比于前6種算法,本文算法的識別準(zhǔn)確率有巨大的提升,平均準(zhǔn)確率達(dá)到了95.65,同時(shí)本算法的時(shí)間復(fù)雜度并沒有過大,平均每個(gè)樣本的編碼時(shí)間為0.82 s,識別耗時(shí)0.0032 s。
表2 實(shí)驗(yàn)表1/%
表3 實(shí)驗(yàn)表2
本文以車輛的前臉圖片為出發(fā)點(diǎn),以智能停車場等作為應(yīng)用場景,主要針對同一品牌不同車系的車型分類進(jìn)行了研究,對于不同車系之間差距小、特征選擇難的問題,提出了一種基于中層特征的特征自動(dòng)篩選(KSI)算法,該算法能自適應(yīng)選取各類車系的最具標(biāo)識性的特征,在細(xì)粒度車型分類的任務(wù)中取得了高于主流深度學(xué)習(xí)方法的準(zhǔn)確率,尤其在智能停車場、智能交通監(jiān)控等計(jì)算資源不足的情況下,本文的方法更具可實(shí)施性。