柳思健
(武漢理工大學 現代汽車零部件技術湖北省重點實驗室 汽車零部件技術湖北省協同創新中心,武漢 430070)
目前,交通卡口對車輛的甄別方式主要是車牌識別,它具有速度快、精度高的特點,但無法對偽造車牌、套牌等車輛進行有效的認證。車型識別作為智能交通領域的關鍵技術,能夠與車牌識別產生良好的互補,因而受到國內外研究者的廣泛關注。車型識別具體分為2個部分,即車輛的目標檢測和對檢測目標的分類。
近年來,目標檢測領域取得了迅速的發展。2014年R-CNN[1]理論在PASCAL VOC數據庫上提升了近20%的精度,開創了卷積神經網絡[2]應用于目標檢測的先河。此后的Fast R-CNN[3]和Faster R-CNN[4]在檢測速度和精度上均有較大的提升。
圖像識別分類是卷積神經網絡的成功應用之一,而在車輛分類的任務上,則是預測出圖像中車輛所屬類別的置信度。借鑒深度學習在人臉識別中的成功應用[5],其在車型識別分類方面也有了一些研究成果,如采用一種5層網絡進行3種車型(小車、客車、貨車)的識別[6]。然而為了防止套牌現象的發生,僅對車輛外觀進行粗略分類是遠遠不夠的,還需要更為細粒度的分類。在此,研究了以車牌定位來構建推薦區域生成模塊,并行2個深度卷積網絡構建車輛定位與細粒度分類算法。
對于檢測框架中推薦區域的生成,Fast R-CNN采用了Selective Search[7],但耗時較長,較難適用實時性較強的領域;Faster R-CNN采用全卷積的RPN網絡生成推薦區域,計算量大,對運算設備的要求較高。與現有的方法相比較,文中所研究的車輛定位與細粒度分類的快速識別算法具有以下優勢:
1)交通卡口中,圖像的拍攝以地感線圈的感應為依據,車輛圖像多為正面,包含車牌區域。車牌包含諸多利于檢測的先驗知識:顏色、形態、縱橫比等,更加易于檢測,算法的速度得到提升。使用車牌定位車輛然后進行檢測,也比Selective Search,RPN等方法更具目的性;
2)采用2個并行的卷積網絡可提升算法的性能。以Fast R-CNN和Faster R-CNN為例,網絡具有區域微調和物體分類2個輸出目標,在前向傳播時,區域微調和分類信息是同時輸出的,即分類的時候并沒有使用微調后的選框。對于車輛分類而言,這將極大地降低識別后的精度。對此,文中采用檢測網絡與分類網絡分別完成定位、分類的任務。此外,還將并行2個卷積網絡的特征提取步驟,將空間金字塔池化策略引入分類網絡,在兼容了選框調整的同時,極大地提升了算法的速度。
所研究算法的整體架構如圖1所示。

圖1 算法整體架構Fig.1 Overall structure of algorithm
在車輛區域粗略定位階段會生成2個區域,分別為裁剪區域和推薦區域。裁剪區域包含了推薦區域,從原圖像上裁剪以后再送入2個卷積網絡。
文中采用開源庫EasyPR構建車牌檢測模塊。EasyPR是一個在Github上開源的車牌識別項目,提供了基于邊緣信息、顏色定位、文字特征這3種車牌檢測方法。與EasyPR原算法不同的是,文中摒棄了其采用支持向量機算法進行車牌判斷的步驟,僅僅采用文字特征定位和顏色區域定位并行的方法來進行車牌的檢測。在此情況下,認定的非車牌區域可能會增多,但相對而言,漏檢會有所減少,且速度會提升近2倍。檢測效果如圖2所示。

圖2 2個可能的車牌區域Fig.2 Two possible license plate areas
然后,采用非極大值抑制[8]算法對這些檢測出的區域進行處理,去除冗余選項。對于篩選后的某個區域,以圖像的左上方為零點,設中心點坐標為C(x,y),其寬為w,高為h;分別定義4個方向上的縮放參數,形成裁剪區域,如圖3所示。

圖3 裁剪區域示意Fig.3 Cutting area diagram
由于交通卡口拍攝的圖像可能包括大型貨車,因此需要將縮放參數盡可能地放大。經過測試,取tw1=tw2=3,th1=16,th2=3,生成裁剪區域。 再在裁剪區域內,以坐標(w,h),(2tw2·w-w,2th2·h-h)為左上角和右下角生成推薦區域,若產生越界,則取越界邊的邊線為推薦區域的邊線,如圖4所示。

圖4 裁剪區域和推薦區域Fig.4 Cutting area and recommended area
推薦的車輛區域并不十分精確。在此,采用Fast R-CNN中的邊框回歸 (bounding-box regression)的方法去學習一組對推薦區域微調的變換。
對于某個窗口框P(Px,Py,Pw,Ph),其中:(Px,Py)為該窗口中心區域的坐標;Pw,Ph分別為窗口的寬和高。 若要將P變換為窗口G(Gx,Gy,Gw,Gh),則需要一組變換d(dx,dy,dw,dh)來完成,即

假定窗口P是給定的,就可以通過變換d得到窗口G,即

故研究的目標就是得到對應于每一個窗口框的一組變換,在卷積神經網絡中,目標函數為

式中:φ(P)為窗口框的特征向量;w*為需要進行學習的一組參數;d*′(P)為得到的預測變換。學習目標為使預測變換d*′(P)的與真實的變換d*(P)差距最小,得到損失函數為

在測試時,可以直接采用推薦區域T得到變換,d*′(T)就可以依據式(5)~式(8)調整T,得到精細化后的選框T。
BIT-Vehicle DataSet[9]中,對于車輛有以下分支:Truck(貨車)、Bus(公共汽車)、Sedan(小型轎車)、Microbus(小型客車)、MiniVan(小型貨車)、SUV(運動型多用途汽車)。文中采用對于車輛外形的分支,并另為網絡增添汽車品牌分類。
在卷積神經網絡用于單個分類問題時,常用的計算損失的方法是Softmax函數與交叉熵代價函數的結合。給定數量為N,類別為m類的訓練樣本集,其數據為ri,標注li∈{1,2,…,t,…,m},假設全連接層輸出的對第t個類別的輸出結果為ft(ri),那么樣本ri從屬于該類別的概率為

若樣本ri的真實標注為li=t′,則需要使得p(li=t′)的值最大,即最小化-log(p(li=t′))的值。 對于樣本中所有數據均做以上處理,就可以得到優化目標,即

而假設對于樣本ri,其具有2個標注li和vi,回溯到車型分類問題上,汽車品牌與車輛外形這2類信息互相沒有影響,故可以認為li和vi是不相關的。則總的優化目標為

式中:λ為2種損失函數之間的權重。
為避免網絡的參數過多,對于每一個損失層只單獨設立1個全連接層,如圖5所示。

圖5 多標簽輸出的分類網絡Fig.5 Multi-label output classification network
微調后的選框區域尺度不一,無法與固定維度輸入的全連接層相匹配。假設,全連接層的輸入維度為d,則要求池化層輸出的特征圖的寬w和高h為

式中:c為特征圖的個數。針對于不同的區域,需要將其池化為固定維度。文中在分類網絡中采用可變尺度最大池化。 對于修正后的區域T(Tx,Ty,Tw,Th),將其映射到卷積網絡最后一個卷積層輸出的特征圖上,映射公式為


圖6 可變尺度池化Fig.6 Variable scale pooling
訓練平臺的硬件為CPU為i7-6700k,GPU為NVIDIA GTX 980,采用深度學習框架 Caffe[10]進行網絡訓練。為了加速網絡的收斂,采用微調在Caffe Model Zoo上開源的參數文件(.caffemodel)的方法。由于區域回歸網絡中沒有改變網絡結構,只對輸出類別進行了修改(車輛區域、背景區域),因此僅介紹分類網絡的訓練。
由于在諸多車輛圖像公開數據庫中,如BITVehicle Dataset,Standford Car Dataset,均未包含汽車品牌與車輛外形的多標簽數據,因此文中自建了圖像數據庫ZnCar。ZnCar是車輛圖像的多標簽數據庫,總共包括40種主流汽車品牌,5種車輛外形(Truck,Sedan,Microbus,MiniVan,SUV)在內的共4928張車輛圖像,部分樣本如圖7所示。

圖7 ZnCar中的部分實例Fig.7 Some examples in ZnCar
采用ZnCar中的2464張圖片作為訓練集,其他的作為測試集,采用AlexNet[11]結構搭建分類網絡。對網絡結構進行的修改見表1。

表1 修改AlexNet網絡結構Tab.1 Modify AlexNet network structure
分別微調AlexNet在ImageNet上訓練的分類模型和在PASCAL VOC上訓練的檢測模型。對于ROIPooling層與2個fc8層,適當加大學習率,加速網絡收斂。訓練結果如圖8所示。

圖8 在ZnCar上的訓練結果Fig.8 Training results on ZnCar
如圖所示,淺色曲線為ImageNet分類模型的微調;深色曲線為PASCAL VOC檢測模型的微調;Type和Surface分別為車的品牌、車輛外形;Loss為損失曲線。分類模型的正確率最終達到92.17%和94.76%;檢測模型的正確率最終達到88.96%和94.69%??梢缘贸觯瑢τ陬悇e較多的精細化分類,檢測模型在淺層的參數相較于分類模型具有一定的差異,將區域精細與分類分離有利于正確率的提升。
文中搭建了算法的CPU版本和GPU版本。表2反映了算法處理單張圖像的平均時間。

表2 算法的運行時間Tab.2 Algorithm running time
需要注意的是,區域回歸網絡的前向傳播和分類網絡傳播至ROIPooling層這2個步驟是并行的,在對選框數組進行微調后才繼續讓分類網絡傳播。GPU版本的算法速度約為13 f/s,具備實時性;CPU版本的算法稍遜,為4 f/s。采用Selective Search和RPN網絡對1張圖片進行候選區域的推薦,分別耗時CPU為0.9 s和GPU為0.21 s,時間遠遠大于車牌檢測和生成推薦區域步驟。
文中收集了492張交通卡口的實拍圖像,部分測試效果如圖 9。 如圖所示,圖 9(a)(b)(e)(f)中的外側線框表示裁剪區域,內側線框表示推薦區域;圖 9(c)(d)(g)(h)中的線框代表微調后的選框。 汽車品牌的分類正確率達到85.6%,車輛外形的分類正確率為93.9%。造成汽車品牌分類偏低的原因主要有:①部分檢測車輛離攝像頭的距離較遠,造成分類錯誤;②交通卡口的實拍圖像的收集難度較大,導致模型訓練未采用該環境下的圖像,一定程度上降低了識別率。


圖9 交通卡口實拍圖像測試效果Fig.9 Traffic jams real shot image test results
提出了一種適用于交通卡口的快速車輛檢測和識別算法,通過車牌來產生推薦車輛區域,采用兩個并行的卷積網絡來微調選框,輸出汽車品牌和車輛外形。該算法相較于Fast R-CNN與Faster R-CNN具有一定的速度優勢,在交通卡口實拍圖像上的測試結果證實了其有效性。由于訓練數據集等原因,算法對于汽車品牌的分類正確率稍低,今后將在該問題上展開更為深入的研究工作。今后將在如何改進分類策略方面繼續進行研究。