戰(zhàn)蔭偉,朱百萬,楊 卓
(廣東工業(yè)大學(xué) 計算機學(xué)院,廣東 廣州 510006)
隨著現(xiàn)代社會生活水平的不斷提高,汽車數(shù)量高速增長,交通監(jiān)管面臨巨大挑戰(zhàn)[1]。車輛顏色與型號識別已經(jīng)成為智能交通領(lǐng)域重要的研究內(nèi)容,為路況分析、擁擠檢測、交通事故責(zé)任判定等方面提供有 力的技術(shù)支持,同時也可以將車輛顏色和型號識別技術(shù)應(yīng)用在停車場收費領(lǐng)域。
由于受到光照、攝像機拍攝角度、圖像畸變等因素的影響,從而導(dǎo)致基于機器學(xué)習(xí)的車輛顏色和型號識別方法的識別準(zhǔn)確率低。因此,本文提出基于卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)的車輛顏色和型號識別方法,首先使用Darknet網(wǎng)絡(luò)中的YOLOv3(You Only LookOnce Version 3)[2]算法對車臉區(qū)域進行檢測和定位,然后利用改進的VGGNet[3]網(wǎng)絡(luò)模型提取車臉的特征,最后利用Softmax分類器訓(xùn)練特征實現(xiàn)對車輛顏色和型號的分類識別。
2006年以卷積神經(jīng)網(wǎng)絡(luò)為主體的深度學(xué)習(xí)模型的提出在圖像識別任務(wù)上取得了重大突破[4]。卷積神經(jīng)網(wǎng)絡(luò)包括:輸入層、卷積層、池化層、全連接層和Softmax層。輸入層是整個神經(jīng)網(wǎng)絡(luò)的數(shù)據(jù)輸入;卷積層是卷積神經(jīng)網(wǎng)絡(luò)中的核心部分,它將神經(jīng)網(wǎng)絡(luò)中的每一個小塊進行更加深入的分析從而得到抽象程度更高的特征;池化層夾在連續(xù)的卷積層中間,用于壓縮數(shù)據(jù)和減少參數(shù)的數(shù)量,有效控制過擬合,根據(jù)計算方式不同,分為最大池化層、局部平均池化層和全局平均池化層;全連接層在整個卷積神經(jīng)網(wǎng)絡(luò)中起到“分類器”的作用;Softmax層是將分類結(jié)果進行歸一化。經(jīng)典的卷積神經(jīng)網(wǎng)絡(luò)模型有:AlexNet[5]、ResNet[6]、IceptionNet[7]、 MobileNet[8]和VGGNet等。
由于卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練的模型對圖像縮放、平移、旋轉(zhuǎn)等畸變具有不變性,且有很強的泛化性,能很好地解決基于機器學(xué)習(xí)的車輛顏色與型號識別方法識別準(zhǔn)確率低的問題。本文提出的卷積神經(jīng)網(wǎng)絡(luò)模型還能夠同時識別車輛顏色與型號,對該網(wǎng)絡(luò)模型稍加調(diào)整,還可以支持車輛更多屬性的同時識別。
目標(biāo)檢測是在圖片中對可變數(shù)量的目標(biāo)進行查找和分類。目標(biāo)檢測的任務(wù)是要分割“我們不關(guān)心”的背景從而獲取“我們所關(guān)心”的前景目標(biāo)[9]。由于視角、遮擋、姿態(tài)等因素引起目標(biāo)發(fā)生形變,導(dǎo)致目標(biāo)檢測成為一個具有挑戰(zhàn)性的任務(wù)[10]。車輛檢測是目標(biāo)檢測在智能交通系統(tǒng)中的重要應(yīng)用之一,受到國內(nèi)外研究者的廣泛關(guān)注。車輛可以通過典型的外觀特征進行檢測,諸如顏色、車臉等。目前常用的車輛檢測方法分為2類:傳統(tǒng)方法和基于深度學(xué)習(xí)的方法。文獻[11]采用方向梯度直方圖(Histogram of Oriented Gradient,HOG)方法提取圖像中的車輛類型特征,再利用支持向量機(Support Vector Machine,SVM)對這些特征進行分類,從而實現(xiàn)車輛檢測。文獻[12]提出基于可變閾值的三角模式識別方法用于車輛檢測,取到良好的檢測效果。文獻[13]使用背景差分法實現(xiàn)車輛檢測,解決背景的復(fù)雜性問題,提高對多車道上運動車輛檢測的正確率。國內(nèi)對車輛檢測的研究也不斷跟進與發(fā)展:文獻[14]提取車臉HOG特征,用投影定位和形態(tài)學(xué)粗定位相結(jié)合的方法提取視頻中車臉區(qū)域;文獻[15]提出可變形部件模型(Deformable Part Model,DPM)用于車輛檢測,很好地解決光照因素對檢測結(jié)果的影響,同時在模糊可視性方面占有較大的優(yōu)勢,具有極高的檢測正確率。傳統(tǒng)的車輛檢測方法雖然具有較高的檢測正確率,但是這些方法都存在幾個問題,概括如下:手動設(shè)計的特征不魯棒會導(dǎo)致分類錯誤率高;通過滑動窗口方式提取目標(biāo)框,并對目標(biāo)框進行分類判定,這個過程繁瑣且耗時。
2012年,隨著卷積神經(jīng)網(wǎng)絡(luò)的興起,使用卷積神經(jīng)網(wǎng)絡(luò)進行車輛檢測開始成為研究熱點。文獻[16]結(jié)合Faster-RCNN、VGG16和ResNet-152進行車輛檢測,雖然取得較好的車輛檢測準(zhǔn)確率,但是檢測速度慢,無法滿足車輛檢測實時性要求。本文選擇使用Darknet網(wǎng)絡(luò)中YOLOv3算法實現(xiàn)對車臉的檢測,并對YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)進行優(yōu)化,實現(xiàn)對車臉快速、準(zhǔn)確的檢測。
文獻[17]提出稀疏SIFT特征的車型識別方法,但是SIFT實時性不強,對邊緣光滑目標(biāo)的特征點提取能力較弱,從而影響車型識別準(zhǔn)確率。文獻[18]提出通過提取車輛圖像的車臉特征,訓(xùn)練SVM網(wǎng)絡(luò)模型來進行套牌車型識別,但是遮擋、環(huán)境等干擾因素的影響導(dǎo)致車型識別準(zhǔn)確率大幅降低。文獻[19]針對交通執(zhí)法攝像系統(tǒng)中車輛顏色識別問題,提出了一種基于多分類器組合的車輛顏色識別方法,但該方法不僅操作步驟復(fù)雜,而且耗時較長。文獻[20]提出基于多顏色空間卷積神經(jīng)網(wǎng)絡(luò)的車輛顏色分類,但是針對車輛顏色單一屬性的識別算法。
本文提出基于卷積神經(jīng)網(wǎng)絡(luò)的車輛顏色與型號識別方法,不僅解決了傳統(tǒng)的機器學(xué)習(xí)的識別方法識別準(zhǔn)確率低問題,而且支持車輛顏色和型號2種屬性的同時識別。
本文提出的車輛顏色與型號識別算法包括2個步驟:首先是從監(jiān)控視頻中實時檢測出車臉區(qū)域,然后對車臉區(qū)域進行車輛顏色與型號識別。
YOLO算法最初是由REDMON等[21]在2016年提出的一種基于回歸的目標(biāo)識別方法,到2018年已經(jīng)發(fā)布YOLOv3。YOLOv3是速度與精度最均衡的目標(biāo)檢測網(wǎng)絡(luò),它在YOLOv2的基礎(chǔ)上進行一些適應(yīng)性的改進,包括多尺度識別、多標(biāo)簽分類等,并使用基于ResNet網(wǎng)絡(luò)改進的DarkNet-53網(wǎng)絡(luò)作為特征提取器,使YOLO系列方法不擅長識別小物體的缺陷得到了改善[22]。YOLOv3依舊保持YOLOv2的快速檢測的優(yōu)點,并且檢測準(zhǔn)確率也得到很大的提高。
由于基于視頻的車輛檢測對檢測準(zhǔn)確率和實時性都有較高要求,雖然大多數(shù)車輛檢測方式能夠保證檢測準(zhǔn)確率,但是車輛檢測速度遠遠達不到視頻檢測的要求。因為YOLOv3算法具有較快的檢測速度和高準(zhǔn)確率,所以本文使用YOLOv3算法實現(xiàn)基于視頻的車輛檢測功能。
訓(xùn)練YOLOv3網(wǎng)絡(luò)模型時,BN層能夠加速網(wǎng)絡(luò)收斂,有效地控制過擬合,一般放在卷積層之后。BN層將數(shù)據(jù)歸一化后,有效解決梯度消失與梯度爆炸問題。雖然BN(Batch Normalization)層在網(wǎng)絡(luò)訓(xùn)練時有著積極作用,但在網(wǎng)絡(luò)前向推斷時增加一些層的運算,從而影響了模型的性能。因此,需要將BN層的參數(shù)合并到卷積層,來提升模型前向推斷的速度。合并前BN層計算公式如式(1)所示。
其中, xi為圖像數(shù)據(jù), wi為權(quán)重,γ 為縮放因子,μ 為均值, δ2為方差,加上0.000 001是為了防止出現(xiàn)分母為零的情況, β為偏置。其中卷積計算公式如式(2)所示。
為了擺脫BN層,需要將公式(1)進行調(diào)整。調(diào)整后公式見式(3)。
調(diào)整后新的權(quán)重參數(shù)變?yōu)?/p>
調(diào)整后新的偏置變?yōu)?/p>
所以調(diào)整后公式也可以表示為
經(jīng)過上述調(diào)整后就能刪除BN層,但是要使用新的權(quán)重參數(shù)和偏置。
最后,經(jīng)過測試證明,使用Faster-RCNN算法對車臉進行檢測,車臉檢測準(zhǔn)確率雖然達到95%,但是每秒識別的幀數(shù)只有4幀,無法達到基于視頻的車輛檢測實時性的要求。使用優(yōu)化后YOLOv3算法車輛檢測準(zhǔn)確率為97%,每秒識別的幀數(shù)為28幀,滿足基于視頻的車輛檢測的所有要求。
VGGNet是牛津大學(xué)計算機視覺組合和Google DeepMind公司研究人員一起研發(fā)的深度卷積神經(jīng)網(wǎng)絡(luò)。VGGNet網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。
圖 1 VGGNet網(wǎng)絡(luò)結(jié)構(gòu)Fig.1 VGGNet network structure
VGGNet網(wǎng)絡(luò)模型具有以下特點:(1) 小卷積核。將卷積核全部替換為3×3。(2) 小池化核。將池化層替換為2×2。(3) 層數(shù)更深特征圖更寬。VGGNet是卷積神經(jīng)網(wǎng)絡(luò)模型AlexNet的擴展。
本文是在VGGNet-16網(wǎng)絡(luò)模型的基礎(chǔ)上進行改進,改進后的網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。
為了減少全連接層參數(shù)量和計算量,將VGGNet-16網(wǎng)絡(luò)模型中倒數(shù)第2個和第3個全連接層神經(jīng)元數(shù)量4 096改為2 048,以倒數(shù)第2個全連接層為例:修改之前的上層神經(jīng)元數(shù)為4 096,下層神經(jīng)元數(shù)為4 096,全連接層可以視為一種特殊的卷積層,上層為1×1×4 096,下層為1×1×4 096,使用的1×1的卷積核進行卷積操作,計算量為1×1×4 096×1×1×4 096=16 777 216,參數(shù)量為1×1×4 096×4 096=16 777 216;修改之后的上層神經(jīng)元數(shù)為2 048,下層神經(jīng)元數(shù)為2 048,計算量為1×1×2 048×1×1×2 048=4 194 304,參數(shù)量為1×1×2 048×2 048=4 194 304,計算量和參數(shù)量都減少3/4,這也加快了神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練的速度。
為了能夠同時識別車輛顏色與型號,將最后一個全連接層替換為多分支的全連接層。
圖 2 改進的VGGNet網(wǎng)絡(luò)結(jié)構(gòu)Fig.2 Improved VGGNet network structure
本文選用的數(shù)據(jù)集名稱為PKU-VD[23],該數(shù)據(jù)集包含了2個大型車輛數(shù)據(jù)集(VD1和VD2)。其中VD1是從高分辨率交通攝像頭獲得的,VD2中的圖像則是從監(jiān)視視頻中獲取的。為了保護隱私,所有車牌號碼都已被黑色覆蓋遮擋。所有車輛圖像均從前視圖進行拍攝。本文選用了數(shù)據(jù)集中154 248張車輛圖片,分別手動標(biāo)注車輛顏色和車型,共有18 946輛車,訓(xùn)練集有138 670張車輛圖片,測試集有15 578張車輛圖片,兩者比例約為9∶1。所用數(shù)據(jù)集中含有9種車輛顏色和1 112款車型。
本次實驗所需要硬件設(shè)備是圖像處理服務(wù)器、它的硬件信息:Intel(R) Core(TM) i7-8700 CPU @3.20 GHz,GeForce GTX 1060 6G,SAMSUNG M393A2K DDR4 2666Mhz 16G。圖像處理服務(wù)器安裝的系統(tǒng)是Ubuntu16.04版本64位操作系統(tǒng),本次實驗使用的程序是Vehicle Color And Model Recognize,使用的深度學(xué)習(xí)平臺為Pytorch[24]。
本次訓(xùn)練網(wǎng)絡(luò)的初始化參數(shù)是:學(xué)習(xí)率為0.001,權(quán)值衰減值為0.000 000 1,動量為0.9。
在深度學(xué)習(xí)中,識別準(zhǔn)確率是用來評判分類的結(jié)果好壞,損失函數(shù)值是用來衡量數(shù)據(jù)擬合程度,它們都是衡量模型好壞的重要指標(biāo)。
基于改進的VGGNet網(wǎng)絡(luò)進行迭代訓(xùn)練28次,車輛顏色與型號識別準(zhǔn)確率的變化情況如圖3所示。
圖 3 網(wǎng)絡(luò)模型訓(xùn)練過程中準(zhǔn)確率變化情況Fig.3 The change of accuracy in network model training
損失函數(shù)值衡量數(shù)據(jù)的擬合程度。一般情況下,損失函數(shù)值越小,說明網(wǎng)絡(luò)模型的魯棒性就越好。在網(wǎng)絡(luò)訓(xùn)練過程中損失函數(shù)值變化情況如圖4所示。
圖 4 網(wǎng)絡(luò)訓(xùn)練過程中損失函數(shù)值變化情況Fig.4 The change of loss function value during network training
如圖4所示,在網(wǎng)絡(luò)訓(xùn)練過程中損失函數(shù)值未出現(xiàn)抖動,當(dāng)?shù)螖?shù)超過27次時,損失函數(shù)值幾乎接近于零,說明該模型魯棒性較好。
本文提及文獻[18]是使用基于機器學(xué)習(xí)的識別方法對車型進行識別,按照文獻[18]介紹的方法首先訓(xùn)練好網(wǎng)絡(luò)模型,其次對測試集15578張車輛圖片進行車型預(yù)測,然后計算預(yù)測結(jié)果準(zhǔn)確率。計算結(jié)果為82.19%,這與本文設(shè)計的識別方法對比情況如表1所示。
表 1 車型識別準(zhǔn)確率對比情況Table 1 Comparison of vehicle model recognition accuracy results
如表1所示,基于改進VGGNet網(wǎng)絡(luò)的車型識別準(zhǔn)確率明顯高于文獻[18]的識別方法。
文獻[19]使用基于機器學(xué)習(xí)的識別方法對車輛顏色進行識別,首先對138 670張車輛圖片進行車臉檢測與定位,提取車臉區(qū)域的顏色直方圖作為特征向量,將特征向量值和其對應(yīng)的車輛顏色存入訓(xùn)練樣本數(shù)據(jù)庫,調(diào)用OpenCV自帶的訓(xùn)練函CvSVM:train對訓(xùn)練樣本數(shù)據(jù)庫進行訓(xùn)練,訓(xùn)練完成后保存好網(wǎng)絡(luò)模型;其次對15 578張車輛圖片進行進行車臉檢測和定位,提取車臉區(qū)域的顏色直方圖作為特征向量,然后用訓(xùn)練好的網(wǎng)絡(luò)模型來預(yù)測車輛顏色。測試完成后,對車輛顏色識別準(zhǔn)確率進行計算,計算結(jié)果為85.32%,這與本文設(shè)計的識別方法對比情況如表2所示。
表 2 車輛顏色識別準(zhǔn)確率對比情況Table 2 Comparison of vehicle color recognition accuracy results
如表2所示,基于改進VGGNet網(wǎng)絡(luò)的車輛顏色識別準(zhǔn)確率明顯高于文獻[19]的識別方法。
本文將上述研究的技術(shù)應(yīng)用在智能停車場收費系統(tǒng)中。將訓(xùn)練好的網(wǎng)絡(luò)模型保存在網(wǎng)絡(luò)模型文件中,車臉檢測網(wǎng)絡(luò)模型文件為vf_yolov3.weight,車輛顏色和型號識別的網(wǎng)絡(luò)模型文件為epoch_all_10.pth。
圖像處理服務(wù)子系統(tǒng)是使用Python語言開發(fā)的,它是部署在圖像處理服務(wù)器,首先圖像處理服務(wù)子系統(tǒng)啟動時加載車臉檢測網(wǎng)絡(luò)模型文件、車輛顏色和型號識別網(wǎng)絡(luò)模型文件,該子系統(tǒng)在運行過程中對車道視頻出現(xiàn)的車臉進行實時檢測,并將車臉檢測結(jié)果實時推送給停車場車道管理子系統(tǒng);其次車輛經(jīng)過車道觸發(fā)地感時,停車場車道管理子系統(tǒng)發(fā)送車輛識別請求,圖像處理服務(wù)子系統(tǒng)接收車輛識別請求后,對車輛顏色與型號進行識別,并將識別結(jié)果返回給停車場車道管理子系統(tǒng);然后停車場車道管理子系統(tǒng)將車輛顏色與型號識別結(jié)果顯示在程序界面上。智能停車場收費系統(tǒng)中車臉檢測、車輛顏色識別、車型識別的功能如圖5所示。
圖 5 車輛顏色與型號識別效果Fig.5 The effect of vehicle color and model identification
針對目前基于機器學(xué)習(xí)的車輛顏色和型號識別方法的識別準(zhǔn)確率低問題,提出基于卷積神經(jīng)網(wǎng)絡(luò)的車輛顏色和型號識別方法,首先使用改進的YOLOv3算法對車輛圖片的車臉區(qū)域進行又快又準(zhǔn)的檢測,然后使用改進的VGGNet算法同時識別車輛顏色和型號。最后將車輛顏色與型號識別技術(shù)應(yīng)用在智能停車場收費系統(tǒng)中,實現(xiàn)智能停車場收費系統(tǒng)車臉實時檢測、車輛顏色識別、車型識別等功能。車輛顏色和型號是很重要的車輛屬性,它為車輛身份識別提供重要的補充信息,提高車輛身份識別的可靠性。