程換新,郭占廣,程 力,劉文翰,張志浩
(1.青島科技大學(xué) 自動化與電子工程學(xué)院,山東 青島 266061;2.中國科學(xué)院新疆理化技術(shù)研究所,新疆 烏魯木齊 830001)
近年來,由于國內(nèi)汽車保有量持續(xù)增加,如何及時高效地管理道路交通成為交管部門的首要難題。與此同時,基于視頻圖像的車輛特征識別技術(shù)迅速發(fā)展,廣泛應(yīng)用于無人駕駛汽車、智能輔助駕駛系統(tǒng)等領(lǐng)域,逐漸成為圖像識別與模式識別領(lǐng)域新的研究熱點[1]。正確進(jìn)行車型精細(xì)識別是智慧交通走向成熟的重要技術(shù)環(huán)節(jié)。車型種類眾多,不同型號的車輛外觀差異較小,拍攝的車輛圖像大多處在復(fù)雜多變的環(huán)境中,障礙物遮擋、惡劣天氣等因素都會對檢測識別車型造成影響。因此車型精細(xì)識別技術(shù)需要具有較強(qiáng)的準(zhǔn)確率和魯棒性來滿足不同影響因素下的識別任務(wù)。為提升魯棒性和識別準(zhǔn)確度,國內(nèi)外專家學(xué)者做了大量的研究,Baek等人[2]通過使用HSV顏色空間的H和S分量的顏色直方圖來生成用于SVM分類和識別的二維直方圖。Kim等人[3]在HIS色彩空間中通過為每個顏色通道設(shè)置不同數(shù)量的統(tǒng)計間隔,改進(jìn)了Baek的研究成果,該方法不僅提高了精度,而且減少了模型處理時間。Farhad Mohammad與Kazemi[4]提出利用FFT進(jìn)行車輛特征的提取,Rahti[5]改進(jìn)了Kazemi的研究工作,最后通過使用Contourlet變換進(jìn)行車輛特征提取;Zafar[6]通過多種特征融合進(jìn)行特征匹配,最終實現(xiàn)車輛特征識別。此外,也有學(xué)者通過SIFT、HOG、LBP等[7-8]特征提取方法來實現(xiàn)車輛特征識別。
近年來車輛識別對細(xì)節(jié)的要求逐漸提高,如何準(zhǔn)確描述車輛細(xì)節(jié)特征已經(jīng)成為當(dāng)前車輛精細(xì)識別的研究熱點[9]。Lee和Gao[10]首先進(jìn)行圖像二值化,然后對處理后的圖像進(jìn)行ROI檢測。Felzenszwalb等人[11]通過對局部信息分析,建立一種可變成分模型,極大地提高了模型識別局部特征的能力。
隨著深度學(xué)習(xí)在機(jī)器視覺領(lǐng)域得到廣泛的關(guān)注和發(fā)展,通過深度學(xué)習(xí)進(jìn)行物體識別和檢測的方法已經(jīng)成為主流,卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)在特征提取、圖像分類方面都有著巨大的優(yōu)勢,是目前最常用的網(wǎng)絡(luò)[12-14],但仍有一些缺點和限制,例如卷積神經(jīng)網(wǎng)絡(luò)難以獲得空間和方向的相對關(guān)系,卷積神經(jīng)網(wǎng)絡(luò)在池化層容易丟失大量信息等[15]。為了解決這些問題,Hinton教授提出了膠囊神經(jīng)網(wǎng)絡(luò)[16](capsule network,CapsNet),其在MNIST數(shù)據(jù)集中表現(xiàn)出了良好的手寫數(shù)字識別率,獲得了比卷積神經(jīng)網(wǎng)絡(luò)更好的識別結(jié)果[17]。
因此,該文提出了基于膠囊神經(jīng)網(wǎng)絡(luò)進(jìn)行車型精細(xì)識別的算法,同時用更加接近實際情況的CompCars數(shù)據(jù)集評估所提算法,實驗結(jié)果表明該模型能夠更準(zhǔn)確地識別車型,具有良好的魯棒性,對智能交通自動駕駛技術(shù)具有重要的推動作用。
作為深度學(xué)習(xí)的代表算法,卷積神經(jīng)網(wǎng)絡(luò)在圖像識別方向上有良好的特征表象能力,卷積神經(jīng)網(wǎng)絡(luò)直接作用于彩色圖像上進(jìn)行特征提取。與常規(guī)的人工特征提取方法相比,卷積神經(jīng)網(wǎng)絡(luò)降低了訓(xùn)練參數(shù)的數(shù)量,通過池化技術(shù)有效降低了特征維度,改善了泛化性能。但是卷積神經(jīng)網(wǎng)絡(luò)仍然存在一些問題,卷積神經(jīng)網(wǎng)絡(luò)需要龐大的圖片集進(jìn)行訓(xùn)練,不能很好地應(yīng)對模糊性,卷積神經(jīng)網(wǎng)絡(luò)會在池化層丟失大量的信息,從而降低空間分辨率。為此,該文提出將膠囊神經(jīng)網(wǎng)絡(luò)應(yīng)用于車型精細(xì)識別方法中。
膠囊神經(jīng)網(wǎng)絡(luò)在2017年10月份的機(jī)器學(xué)習(xí)頂級會議“神經(jīng)信息處理系統(tǒng)大會(NIPS)”中由Hinton教授提出。膠囊神經(jīng)網(wǎng)絡(luò)是以卷積神經(jīng)網(wǎng)絡(luò)為基礎(chǔ)發(fā)展而來。膠囊神經(jīng)網(wǎng)絡(luò)與卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)上有所不同,膠囊神經(jīng)網(wǎng)絡(luò)在卷積層后面加入了兩個新層用來替代卷積神經(jīng)網(wǎng)絡(luò)中的采樣層。其網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示,第一層是卷積層,第二層為基礎(chǔ)膠囊層(PrimaryCaps),第三層為數(shù)字膠囊層(DigitCaps)。基礎(chǔ)膠囊層與卷積層十分相似,基礎(chǔ)膠囊層的作用是獲得最低級的多維實體特征,再將這些特征進(jìn)行組合。數(shù)字膠囊層的輸入矢量是基礎(chǔ)膠囊層的輸出矢量。在數(shù)字膠囊層內(nèi)部,每個輸出矢量都通過權(quán)重矩陣輸入控件映射到膠囊輸出空間中。

圖1 膠囊神經(jīng)網(wǎng)絡(luò)網(wǎng)絡(luò)結(jié)構(gòu)
作為膠囊神經(jīng)網(wǎng)絡(luò)的基本單元,膠囊(capsule)中包含多個神經(jīng)元,通過檢測和學(xué)習(xí)圖像中的一些特定區(qū)域,輸出一維向量,該向量代表圖像中特定實體的各種屬性。這些屬性包含眾多不同類型的實例化參數(shù),例如速度、形變、色相等。當(dāng)研究對象發(fā)生變化時,膠囊輸出矢量,長度不變,矢量方向發(fā)生變化,每個膠囊都是等變的。
膠囊神經(jīng)網(wǎng)絡(luò)采用擠壓(squashing)非線性函數(shù)作為激活函數(shù)來保證輸出的向量長度在0~1之間。表達(dá)式如式(1)所示:
(1)

(2)
(3)
其中,Cij為每一個底層膠囊與之相對應(yīng)的高層膠囊之間的權(quán)重,由采用的動態(tài)路由算法中的softmax函數(shù)決定,表達(dá)式如式(4)所示:
(4)
下面參考文獻(xiàn)[18]給出的算法一,是動態(tài)路由算法的具體計算過程,如圖2所示。其中bij為膠囊i與膠囊j相互耦合的先驗概率,bij只依賴于兩個膠囊的位置與類型。

圖2 膠囊神經(jīng)網(wǎng)絡(luò)路由算法運算流程
膠囊神經(jīng)網(wǎng)絡(luò)的損失函數(shù)類似于支持向量機(jī)的損失函數(shù),如式(5)所示:
Lk=Tkmax(0,m+-‖vk‖)2+λ(1-Tk)max(0,‖vk‖-m-)2
(5)
其中,Tk為分類指示函數(shù)(k類存在為1,不存在為0);vk為網(wǎng)絡(luò)輸出數(shù)據(jù);m+為上界,懲罰假陽性,m-為下界,懲罰假陰性,該文選取經(jīng)驗值m+=0.9,m-=0.1;λ為比例系數(shù),調(diào)整兩者比重,默認(rèn)初始值為0.5。
該文提出一種基于膠囊神經(jīng)網(wǎng)絡(luò)的車型識別模型CapCar,該模型從車型圖片中提取出車型圖像數(shù)據(jù),對其進(jìn)行分類預(yù)測。CapCar模型的參數(shù)及其網(wǎng)絡(luò)結(jié)構(gòu)如表1和圖3所示,CapCar網(wǎng)絡(luò)模型共分為4個結(jié)構(gòu)層,其中包含兩個膠囊層和兩個卷積層,與原始CapsNet相比,CapCar模型通過更深更廣的網(wǎng)絡(luò)結(jié)構(gòu),可以更加精準(zhǔn)地進(jìn)行車輛結(jié)構(gòu)信息提取,有助于車型的分類識別。此外,CapCar模型中還包含一個重構(gòu)部分,該重構(gòu)部分包含3層全連接層,輸入為車型膠囊層的膠囊值,通過重構(gòu)輸入圖像增加模型的魯棒性。以下分別對每一層進(jìn)行詳細(xì)的介紹。
網(wǎng)絡(luò)的輸入為車型圖片數(shù)據(jù),該數(shù)據(jù)來自于CompCars數(shù)據(jù)集,圖像的尺寸為128×128像素。
CapCar模型的第一層和第二層均為卷積層,卷積核大小分別為9×9和3×3,通道數(shù)分別為128和256。第一個卷積層利用較大的卷積核來提取圖像中的整體特征,主要包括車型的輪廓、大小等特征。第二個卷積層的卷積核相對較小,主要用于提取車型的局部特征,包括車型的形狀、結(jié)構(gòu)等。在車型精細(xì)識別中,這些特征起著至關(guān)重要的作用。與原始的膠囊神經(jīng)網(wǎng)絡(luò)相比,該文提出的CapCar方法增加了更多的卷積層,目的是在車輛圖像中提取更抽象的高層形狀特征,同時通過使用兩個尺寸不同的卷積核用來提取圖片中不同尺度的車型特征,從而進(jìn)一步提高模型分類識別的準(zhǔn)確率。此外,在這些卷積層中,均使用Relu激活函數(shù)對卷積運算的輸出進(jìn)行非線性激活。
CapCar模型網(wǎng)絡(luò)的第三層、第四層均為膠囊層,其中第三層是主膠囊層(PrimaryCaps)以第二個卷積層輸出作為輸入,并通過大小為3×3的卷積核,分別對其卷積8次,獲得32路膠囊特征圖,其中各個膠囊的維度是8。膠囊里的每個神經(jīng)元分別代表各種實例參數(shù),膠囊的長度象征著對象存在的概率。因此,每個特征圖的大小均為25×25×8,并且特征圖中的所有膠囊權(quán)重共享。網(wǎng)絡(luò)的第四層為車型膠囊層(CarCaps),由281個膠囊組成,每個膠囊大小均為1×256,分別代表281種汽車類型。

圖3 CapCar網(wǎng)絡(luò)結(jié)構(gòu)示意圖

表1 CapCar網(wǎng)絡(luò)結(jié)構(gòu)及其參數(shù)
CapCar模型中主膠囊層與車型膠囊層之間全連接,各權(quán)值均由動態(tài)路由算法確定。CapCar模型的輸出為車型的分類識別打分,對每張車型圖片,網(wǎng)絡(luò)都會輸出281種車型的預(yù)測打分值,該分值由計算車型膠囊層中膠囊的長度得到,代表其分別屬于每種車型的概率,最終將概率最高的一類作為網(wǎng)絡(luò)的識別結(jié)果。
此外,CapCar模型網(wǎng)絡(luò)中還包括由3個全連接層組成的重構(gòu)部分,該重構(gòu)部分以車型膠囊層的輸出作為輸入,通過重構(gòu)車型圖片來進(jìn)一步優(yōu)化網(wǎng)絡(luò),其中三個全連接層分別包含了512、4 096和16 384個神經(jīng)元。
CapCar模型中的超參數(shù)如表2所示。在初始化階段,選擇Glorot均勻分布初始化方法進(jìn)行網(wǎng)絡(luò)參數(shù)的初始化,同時偏置設(shè)為0。在網(wǎng)絡(luò)訓(xùn)練的過程中,通過Adam優(yōu)化器進(jìn)行權(quán)重的學(xué)習(xí)和更新,其參數(shù)分別設(shè)置為0.9、0.999和10-8。除此之外,網(wǎng)絡(luò)訓(xùn)練時的學(xué)習(xí)率設(shè)置為0.000 1,共迭代10 000次,批處理參數(shù)為128,即每次訓(xùn)練時,同時對128張圖像進(jìn)行訓(xùn)練。

表2 CapCar網(wǎng)絡(luò)超參數(shù)匯總
由于神經(jīng)網(wǎng)絡(luò)訓(xùn)練量比較大,故選擇高性能GPU來進(jìn)行運算提速。實驗所用計算機(jī)處理器為AMD Ryzen 7-1700,顯卡為GTX 1080 TITAN,內(nèi)存為16 GB。操作系統(tǒng)為Windows10 64位,神經(jīng)網(wǎng)絡(luò)部分使用開源的Keras模塊搭建,軟件編程環(huán)境為python3.0。
目前CompCars數(shù)據(jù)集最大且最適用于進(jìn)行車型精細(xì)識別研究,CompCars數(shù)據(jù)集如圖4所示。CompCars數(shù)據(jù)集分為兩部分,一部分是完全來源于網(wǎng)絡(luò)的網(wǎng)絡(luò)圖片,一部分是完全來源于卡口監(jiān)控拍攝的監(jiān)控圖片。其中,網(wǎng)絡(luò)圖片共包含163個汽車品牌下的1 716種汽車模型,共136 726張整車圖片,監(jiān)控圖像共包含覆蓋了夜晚、霧天和雨天等復(fù)雜環(huán)境下共281個型號的44 481張車輛圖片。實驗將CompCars數(shù)據(jù)集分為測試數(shù)據(jù)和訓(xùn)練數(shù)據(jù)兩部分,兩者比例為3∶7。

圖4 CompCars數(shù)據(jù)集
進(jìn)行網(wǎng)絡(luò)訓(xùn)練前,首先進(jìn)行圖像的灰度化處理,提高模型訓(xùn)練速度。實驗通過加權(quán)平均值法進(jìn)行圖像的灰度化處理,表達(dá)式如式(6)所示:
I(x,y)=aR(x,y)+bG(x,y)+cB(x,y)
(6)
其中,R(x,y)、G(x,y)、B(x,y)分別表示圖像的三種顏色分量值,a、b、c為對應(yīng)分量的系數(shù),I(x,y)為灰度圖像的輸出值。
CompCars數(shù)據(jù)集圖片尺寸不統(tǒng)一。但是在CapCar模型中,網(wǎng)絡(luò)輸入節(jié)點個數(shù)是固定的,為滿足網(wǎng)絡(luò)圖像的輸入要求,需要將圖片統(tǒng)一尺寸。本次實驗采用裁剪和填充的方法調(diào)整圖像尺寸來滿足網(wǎng)絡(luò)輸入要求,該方法不改變圖片的像素信息。
表3給出了該文提出的膠囊神經(jīng)網(wǎng)絡(luò)模型(CapCar)與其他模型在基準(zhǔn)數(shù)據(jù)集CompCars下的識別準(zhǔn)確率對比。由于在該數(shù)據(jù)集中每種車型的圖片數(shù)量差異較大,其中類別數(shù)量最多的圖片高達(dá)565張,而類別最少的圖片數(shù)量僅為14張。因此,為減少車型類別圖片數(shù)目不平衡對識別結(jié)果產(chǎn)生影響,采用以下兩種方法進(jìn)行實驗結(jié)果準(zhǔn)確性評估,兩種方法的具體公式為:
(7)
(8)
其中,ti表示每個類中正確預(yù)測的樣本數(shù),ni表示每個類中的樣本數(shù),N表示類的數(shù)量。

表3 文中算法與其他算法比較
表3中,第1~3行是通過經(jīng)典卷積神經(jīng)網(wǎng)絡(luò)對數(shù)據(jù)集CompCars進(jìn)行分類的結(jié)果,其中GoogLeNet的識別結(jié)果最好,其Acc1達(dá)到了98.5%,Acc2達(dá)到了97.9%。第4行是文獻(xiàn)[19]提出的車輛模型識別方法,該方法利用從后視圖像汽車標(biāo)志的幾何形狀進(jìn)行識別,與其他方法相比,該方法的識別精度較低;第5行MS-CNN模型對281種車輛類型進(jìn)行細(xì)粒度分類得到了較高的準(zhǔn)確率,其中Acc1與Acc2分別達(dá)到了98.83%和98.43%。文中提出的CapCar模型與MS-CNN方法相比,Acc1更高,Acc2基本持平,說明該方法在準(zhǔn)確率方面優(yōu)于MS-CNN模型。
通過調(diào)整和優(yōu)化膠囊神經(jīng)網(wǎng)絡(luò)的網(wǎng)絡(luò)結(jié)構(gòu),構(gòu)建出一種基于膠囊神經(jīng)網(wǎng)絡(luò)的車型精確識別模型CapCar。通過CompCars基準(zhǔn)數(shù)據(jù)集的實驗結(jié)果表明,CapCar模型能夠使用更少的參數(shù)量更加有效地提取車型圖像特征,表明了CapCar模型在車型精確識別中的有效性與實用性。