柳思健
(武漢理工大學(xué) 現(xiàn)代汽車零部件技術(shù)湖北省重點(diǎn)實(shí)驗(yàn)室 汽車零部件技術(shù)湖北省協(xié)同創(chuàng)新中心,武漢 430070)
目前,交通卡口對車輛的甄別方式主要是車牌識別,它具有速度快、精度高的特點(diǎn),但無法對偽造車牌、套牌等車輛進(jìn)行有效的認(rèn)證。車型識別作為智能交通領(lǐng)域的關(guān)鍵技術(shù),能夠與車牌識別產(chǎn)生良好的互補(bǔ),因而受到國內(nèi)外研究者的廣泛關(guān)注。車型識別具體分為2個(gè)部分,即車輛的目標(biāo)檢測和對檢測目標(biāo)的分類。
近年來,目標(biāo)檢測領(lǐng)域取得了迅速的發(fā)展。2014年R-CNN[1]理論在PASCAL VOC數(shù)據(jù)庫上提升了近20%的精度,開創(chuàng)了卷積神經(jīng)網(wǎng)絡(luò)[2]應(yīng)用于目標(biāo)檢測的先河。此后的Fast R-CNN[3]和Faster R-CNN[4]在檢測速度和精度上均有較大的提升。
圖像識別分類是卷積神經(jīng)網(wǎng)絡(luò)的成功應(yīng)用之一,而在車輛分類的任務(wù)上,則是預(yù)測出圖像中車輛所屬類別的置信度。借鑒深度學(xué)習(xí)在人臉識別中的成功應(yīng)用[5],其在車型識別分類方面也有了一些研究成果,如采用一種5層網(wǎng)絡(luò)進(jìn)行3種車型(小車、客車、貨車)的識別[6]。然而為了防止套牌現(xiàn)象的發(fā)生,僅對車輛外觀進(jìn)行粗略分類是遠(yuǎn)遠(yuǎn)不夠的,還需要更為細(xì)粒度的分類。在此,研究了以車牌定位來構(gòu)建推薦區(qū)域生成模塊,并行2個(gè)深度卷積網(wǎng)絡(luò)構(gòu)建車輛定位與細(xì)粒度分類算法。
對于檢測框架中推薦區(qū)域的生成,F(xiàn)ast R-CNN采用了Selective Search[7],但耗時(shí)較長,較難適用實(shí)時(shí)性較強(qiáng)的領(lǐng)域;Faster R-CNN采用全卷積的RPN網(wǎng)絡(luò)生成推薦區(qū)域,計(jì)算量大,對運(yùn)算設(shè)備的要求較高。與現(xiàn)有的方法相比較,文中所研究的車輛定位與細(xì)粒度分類的快速識別算法具有以下優(yōu)勢:
1)交通卡口中,圖像的拍攝以地感線圈的感應(yīng)為依據(jù),車輛圖像多為正面,包含車牌區(qū)域。車牌包含諸多利于檢測的先驗(yàn)知識:顏色、形態(tài)、縱橫比等,更加易于檢測,算法的速度得到提升。使用車牌定位車輛然后進(jìn)行檢測,也比Selective Search,RPN等方法更具目的性;
2)采用2個(gè)并行的卷積網(wǎng)絡(luò)可提升算法的性能。以Fast R-CNN和Faster R-CNN為例,網(wǎng)絡(luò)具有區(qū)域微調(diào)和物體分類2個(gè)輸出目標(biāo),在前向傳播時(shí),區(qū)域微調(diào)和分類信息是同時(shí)輸出的,即分類的時(shí)候并沒有使用微調(diào)后的選框。對于車輛分類而言,這將極大地降低識別后的精度。對此,文中采用檢測網(wǎng)絡(luò)與分類網(wǎng)絡(luò)分別完成定位、分類的任務(wù)。此外,還將并行2個(gè)卷積網(wǎng)絡(luò)的特征提取步驟,將空間金字塔池化策略引入分類網(wǎng)絡(luò),在兼容了選框調(diào)整的同時(shí),極大地提升了算法的速度。
所研究算法的整體架構(gòu)如圖1所示。
圖1 算法整體架構(gòu)Fig.1 Overall structure of algorithm
在車輛區(qū)域粗略定位階段會生成2個(gè)區(qū)域,分別為裁剪區(qū)域和推薦區(qū)域。裁剪區(qū)域包含了推薦區(qū)域,從原圖像上裁剪以后再送入2個(gè)卷積網(wǎng)絡(luò)。
文中采用開源庫EasyPR構(gòu)建車牌檢測模塊。EasyPR是一個(gè)在Github上開源的車牌識別項(xiàng)目,提供了基于邊緣信息、顏色定位、文字特征這3種車牌檢測方法。與EasyPR原算法不同的是,文中摒棄了其采用支持向量機(jī)算法進(jìn)行車牌判斷的步驟,僅僅采用文字特征定位和顏色區(qū)域定位并行的方法來進(jìn)行車牌的檢測。在此情況下,認(rèn)定的非車牌區(qū)域可能會增多,但相對而言,漏檢會有所減少,且速度會提升近2倍。檢測效果如圖2所示。
圖2 2個(gè)可能的車牌區(qū)域Fig.2 Two possible license plate areas
然后,采用非極大值抑制[8]算法對這些檢測出的區(qū)域進(jìn)行處理,去除冗余選項(xiàng)。對于篩選后的某個(gè)區(qū)域,以圖像的左上方為零點(diǎn),設(shè)中心點(diǎn)坐標(biāo)為C(x,y),其寬為w,高為h;分別定義4個(gè)方向上的縮放參數(shù),形成裁剪區(qū)域,如圖3所示。
圖3 裁剪區(qū)域示意Fig.3 Cutting area diagram
由于交通卡口拍攝的圖像可能包括大型貨車,因此需要將縮放參數(shù)盡可能地放大。經(jīng)過測試,取tw1=tw2=3,th1=16,th2=3,生成裁剪區(qū)域。 再在裁剪區(qū)域內(nèi),以坐標(biāo)(w,h),(2tw2·w-w,2th2·h-h)為左上角和右下角生成推薦區(qū)域,若產(chǎn)生越界,則取越界邊的邊線為推薦區(qū)域的邊線,如圖4所示。
圖4 裁剪區(qū)域和推薦區(qū)域Fig.4 Cutting area and recommended area
推薦的車輛區(qū)域并不十分精確。在此,采用Fast R-CNN中的邊框回歸 (bounding-box regression)的方法去學(xué)習(xí)一組對推薦區(qū)域微調(diào)的變換。
對于某個(gè)窗口框P(Px,Py,Pw,Ph),其中:(Px,Py)為該窗口中心區(qū)域的坐標(biāo);Pw,Ph分別為窗口的寬和高。 若要將P變換為窗口G(Gx,Gy,Gw,Gh),則需要一組變換d(dx,dy,dw,dh)來完成,即
假定窗口P是給定的,就可以通過變換d得到窗口G,即
故研究的目標(biāo)就是得到對應(yīng)于每一個(gè)窗口框的一組變換,在卷積神經(jīng)網(wǎng)絡(luò)中,目標(biāo)函數(shù)為
式中:φ(P)為窗口框的特征向量;w*為需要進(jìn)行學(xué)習(xí)的一組參數(shù);d*′(P)為得到的預(yù)測變換。學(xué)習(xí)目標(biāo)為使預(yù)測變換d*′(P)的與真實(shí)的變換d*(P)差距最小,得到損失函數(shù)為
在測試時(shí),可以直接采用推薦區(qū)域T得到變換,d*′(T)就可以依據(jù)式(5)~式(8)調(diào)整T,得到精細(xì)化后的選框T。
BIT-Vehicle DataSet[9]中,對于車輛有以下分支:Truck(貨車)、Bus(公共汽車)、Sedan(小型轎車)、Microbus(小型客車)、MiniVan(小型貨車)、SUV(運(yùn)動型多用途汽車)。文中采用對于車輛外形的分支,并另為網(wǎng)絡(luò)增添汽車品牌分類。
在卷積神經(jīng)網(wǎng)絡(luò)用于單個(gè)分類問題時(shí),常用的計(jì)算損失的方法是Softmax函數(shù)與交叉熵代價(jià)函數(shù)的結(jié)合。給定數(shù)量為N,類別為m類的訓(xùn)練樣本集,其數(shù)據(jù)為ri,標(biāo)注li∈{1,2,…,t,…,m},假設(shè)全連接層輸出的對第t個(gè)類別的輸出結(jié)果為ft(ri),那么樣本ri從屬于該類別的概率為
若樣本ri的真實(shí)標(biāo)注為li=t′,則需要使得p(li=t′)的值最大,即最小化-log(p(li=t′))的值。 對于樣本中所有數(shù)據(jù)均做以上處理,就可以得到優(yōu)化目標(biāo),即
而假設(shè)對于樣本ri,其具有2個(gè)標(biāo)注li和vi,回溯到車型分類問題上,汽車品牌與車輛外形這2類信息互相沒有影響,故可以認(rèn)為li和vi是不相關(guān)的。則總的優(yōu)化目標(biāo)為
式中:λ為2種損失函數(shù)之間的權(quán)重。
為避免網(wǎng)絡(luò)的參數(shù)過多,對于每一個(gè)損失層只單獨(dú)設(shè)立1個(gè)全連接層,如圖5所示。
圖5 多標(biāo)簽輸出的分類網(wǎng)絡(luò)Fig.5 Multi-label output classification network
微調(diào)后的選框區(qū)域尺度不一,無法與固定維度輸入的全連接層相匹配。假設(shè),全連接層的輸入維度為d,則要求池化層輸出的特征圖的寬w和高h(yuǎn)為
式中:c為特征圖的個(gè)數(shù)。針對于不同的區(qū)域,需要將其池化為固定維度。文中在分類網(wǎng)絡(luò)中采用可變尺度最大池化。 對于修正后的區(qū)域T(Tx,Ty,Tw,Th),將其映射到卷積網(wǎng)絡(luò)最后一個(gè)卷積層輸出的特征圖上,映射公式為
圖6 可變尺度池化Fig.6 Variable scale pooling
訓(xùn)練平臺的硬件為CPU為i7-6700k,GPU為NVIDIA GTX 980,采用深度學(xué)習(xí)框架 Caffe[10]進(jìn)行網(wǎng)絡(luò)訓(xùn)練。為了加速網(wǎng)絡(luò)的收斂,采用微調(diào)在Caffe Model Zoo上開源的參數(shù)文件(.caffemodel)的方法。由于區(qū)域回歸網(wǎng)絡(luò)中沒有改變網(wǎng)絡(luò)結(jié)構(gòu),只對輸出類別進(jìn)行了修改(車輛區(qū)域、背景區(qū)域),因此僅介紹分類網(wǎng)絡(luò)的訓(xùn)練。
由于在諸多車輛圖像公開數(shù)據(jù)庫中,如BITVehicle Dataset,Standford Car Dataset,均未包含汽車品牌與車輛外形的多標(biāo)簽數(shù)據(jù),因此文中自建了圖像數(shù)據(jù)庫ZnCar。ZnCar是車輛圖像的多標(biāo)簽數(shù)據(jù)庫,總共包括40種主流汽車品牌,5種車輛外形(Truck,Sedan,Microbus,MiniVan,SUV)在內(nèi)的共4928張車輛圖像,部分樣本如圖7所示。
圖7 ZnCar中的部分實(shí)例Fig.7 Some examples in ZnCar
采用ZnCar中的2464張圖片作為訓(xùn)練集,其他的作為測試集,采用AlexNet[11]結(jié)構(gòu)搭建分類網(wǎng)絡(luò)。對網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行的修改見表1。
表1 修改AlexNet網(wǎng)絡(luò)結(jié)構(gòu)Tab.1 Modify AlexNet network structure
分別微調(diào)AlexNet在ImageNet上訓(xùn)練的分類模型和在PASCAL VOC上訓(xùn)練的檢測模型。對于ROIPooling層與2個(gè)fc8層,適當(dāng)加大學(xué)習(xí)率,加速網(wǎng)絡(luò)收斂。訓(xùn)練結(jié)果如圖8所示。
圖8 在ZnCar上的訓(xùn)練結(jié)果Fig.8 Training results on ZnCar
如圖所示,淺色曲線為ImageNet分類模型的微調(diào);深色曲線為PASCAL VOC檢測模型的微調(diào);Type和Surface分別為車的品牌、車輛外形;Loss為損失曲線。分類模型的正確率最終達(dá)到92.17%和94.76%;檢測模型的正確率最終達(dá)到88.96%和94.69%??梢缘贸?,對于類別較多的精細(xì)化分類,檢測模型在淺層的參數(shù)相較于分類模型具有一定的差異,將區(qū)域精細(xì)與分類分離有利于正確率的提升。
文中搭建了算法的CPU版本和GPU版本。表2反映了算法處理單張圖像的平均時(shí)間。
表2 算法的運(yùn)行時(shí)間Tab.2 Algorithm running time
需要注意的是,區(qū)域回歸網(wǎng)絡(luò)的前向傳播和分類網(wǎng)絡(luò)傳播至ROIPooling層這2個(gè)步驟是并行的,在對選框數(shù)組進(jìn)行微調(diào)后才繼續(xù)讓分類網(wǎng)絡(luò)傳播。GPU版本的算法速度約為13 f/s,具備實(shí)時(shí)性;CPU版本的算法稍遜,為4 f/s。采用Selective Search和RPN網(wǎng)絡(luò)對1張圖片進(jìn)行候選區(qū)域的推薦,分別耗時(shí)CPU為0.9 s和GPU為0.21 s,時(shí)間遠(yuǎn)遠(yuǎn)大于車牌檢測和生成推薦區(qū)域步驟。
文中收集了492張交通卡口的實(shí)拍圖像,部分測試效果如圖 9。 如圖所示,圖 9(a)(b)(e)(f)中的外側(cè)線框表示裁剪區(qū)域,內(nèi)側(cè)線框表示推薦區(qū)域;圖 9(c)(d)(g)(h)中的線框代表微調(diào)后的選框。 汽車品牌的分類正確率達(dá)到85.6%,車輛外形的分類正確率為93.9%。造成汽車品牌分類偏低的原因主要有:①部分檢測車輛離攝像頭的距離較遠(yuǎn),造成分類錯(cuò)誤;②交通卡口的實(shí)拍圖像的收集難度較大,導(dǎo)致模型訓(xùn)練未采用該環(huán)境下的圖像,一定程度上降低了識別率。
圖9 交通卡口實(shí)拍圖像測試效果Fig.9 Traffic jams real shot image test results
提出了一種適用于交通卡口的快速車輛檢測和識別算法,通過車牌來產(chǎn)生推薦車輛區(qū)域,采用兩個(gè)并行的卷積網(wǎng)絡(luò)來微調(diào)選框,輸出汽車品牌和車輛外形。該算法相較于Fast R-CNN與Faster R-CNN具有一定的速度優(yōu)勢,在交通卡口實(shí)拍圖像上的測試結(jié)果證實(shí)了其有效性。由于訓(xùn)練數(shù)據(jù)集等原因,算法對于汽車品牌的分類正確率稍低,今后將在該問題上展開更為深入的研究工作。今后將在如何改進(jìn)分類策略方面繼續(xù)進(jìn)行研究。