劉斌,陳桂芬,董聰瀚
(長(zhǎng)春理工大學(xué) 電子信息工程學(xué)院,長(zhǎng)春 130022)
隨著計(jì)算機(jī)技術(shù)的快速發(fā)展和人工智能技術(shù)的進(jìn)步,智能交通建設(shè)和無人駕駛早已成為眾多學(xué)者研究的熱門方向[1,2],汽車車型識(shí)別在智能交通建設(shè)中具有重要地位,此外,汽車車型的準(zhǔn)確識(shí)別是視頻中汽車檢測(cè)的前提和基礎(chǔ)[3]。目前,從事汽車識(shí)別研究的學(xué)者較多,也取得了不錯(cuò)的成果,但是目前用于車輛識(shí)別的方法都需預(yù)先提取特征,如華東理工大的張雪芹等人[4]提取汽車的類Haar特征,然后利用AdaBoost算法構(gòu)建分類器,進(jìn)行識(shí)別汽車識(shí)別,為提高模型的識(shí)別率,張雪芹等人采用背景差分去除背景干擾;重慶交通大學(xué)的帥丹等人[5]將K-mediods算法用于非法運(yùn)營(yíng)車輛的識(shí)別,為提高識(shí)別率,帥丹等人基于距離貢獻(xiàn)率改進(jìn)算法,然后將提取出汽車的RFID數(shù)據(jù)預(yù)處理數(shù)據(jù),最后利用PCA降維算法處理得到車輛運(yùn)行特征數(shù)據(jù);大連理工大學(xué)的張明恒等人[6]通過矩形度、Hu矩和Afine矩提取圖像特征,然后改進(jìn)經(jīng)典的K-Means算法實(shí)現(xiàn)汽車識(shí)別;燕山大學(xué)的馬雷等人[7]選取車輛底部水平方向和左右兩側(cè)垂直方向特征,結(jié)合機(jī)器學(xué)習(xí)算法識(shí)別不同車輛,為降低光照條件的影響,根據(jù)加權(quán)理論依據(jù)光強(qiáng)分配不同特征不同權(quán)值等。
在模式識(shí)別領(lǐng)域,特征提取的合理與否直接決定著識(shí)別率的高低,然而合理特征提取需要大量的實(shí)驗(yàn)。卷積神經(jīng)網(wǎng)絡(luò)是上世紀(jì)被提出的一種監(jiān)督學(xué)習(xí)算法,一張三維的RGB圖像,特征的提取和分類在模型學(xué)習(xí)過程中可以同時(shí)進(jìn)行,且具有較高的識(shí)別率。在2012年Imagenet的數(shù)據(jù)集上,基于卷積神經(jīng)網(wǎng)絡(luò)的圖像識(shí)別模型的圖像識(shí)別錯(cuò)誤率為4.94%,在同樣的數(shù)據(jù)中,人眼辨識(shí)的錯(cuò)誤率大概為5.1%[8]。基于此,文中提出一種卷積神經(jīng)網(wǎng)絡(luò)模型的于汽車車型的快速識(shí)別方法,為加快模型的訓(xùn)練,在模型中加入批歸一化層。
卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)最早是在上世紀(jì)中后期被提出的一種神經(jīng)網(wǎng)絡(luò),進(jìn)入21世紀(jì)后,隨著計(jì)算機(jī)計(jì)算性能的極大提高,CNN也得到了快速發(fā)展,已經(jīng)成為深度學(xué)習(xí)領(lǐng)域最為重要的監(jiān)督學(xué)習(xí)算法之一。美國(guó)科學(xué)家Hubel等人對(duì)貓的大腦皮層的研究發(fā)現(xiàn),貓的腦皮層部分神經(jīng)元具有方向選擇與局部感知性能,且其獨(dú)特的網(wǎng)絡(luò)結(jié)構(gòu)使得反饋神經(jīng)元的網(wǎng)絡(luò)模型的復(fù)雜度得到極大的降低,基于此,提出權(quán)值共享和局部相連的卷積神經(jīng)網(wǎng)絡(luò)。卷積神經(jīng)網(wǎng)絡(luò)最大優(yōu)點(diǎn)就是一張?jiān)嫉膱D像(任意維度)不經(jīng)處理都可作為其網(wǎng)絡(luò)的輸入,且CNN通過權(quán)值共用、局部相連和下采樣極大的降低網(wǎng)絡(luò)的參數(shù),CNN在圖像識(shí)別中,具有很高的識(shí)別率,因此,不同領(lǐng)域的科學(xué)家都在研究CNN算法及其應(yīng)用。
一般而言,最基本的CNN算法包含兩層結(jié)構(gòu),一層用于特征獲取,即每個(gè)神經(jīng)節(jié)點(diǎn)與前面一層的局部感興趣域相連接,通過學(xué)習(xí)選擇性的提取感興趣域局部特征,當(dāng)某個(gè)局部特征被提取選用后,它與其它特征間的位置關(guān)系也隨之確定下來;另一層結(jié)構(gòu)便是特征映射,CNN結(jié)構(gòu)中每一個(gè)計(jì)算層都是有許多特征映射組成,每個(gè)特征映射都是有大量權(quán)值共享的神經(jīng)節(jié)點(diǎn)組成的面,在特征映射結(jié)構(gòu)中,CNN算法一般選用relu函數(shù)作為其激活函數(shù),使用relu函數(shù)作為其激活函數(shù)不僅可以讓特征映射保持位移不變性,而且還使得CNN結(jié)構(gòu)具有非線性。常用的卷積神經(jīng)網(wǎng)絡(luò)都會(huì)有卷積層、下采樣層和全連接層,為改善網(wǎng)絡(luò)的訓(xùn)練性能,文中在卷積神經(jīng)網(wǎng)絡(luò)中加入DropOut層或采用批歸一化層(Batch Normalization)。
在卷積層,上一層的特征圖(Feature map)被一個(gè)可學(xué)習(xí)的卷積核進(jìn)行卷積,然后通過一個(gè)激活函數(shù)(Activation function),就可以得到輸出特征圖。每個(gè)輸出特征圖可以組合卷積多個(gè)特征圖的值:
下采樣層的作用就是把輸入的特征圖采樣輸出,降低特征圖的數(shù)據(jù)量,采樣的實(shí)現(xiàn)方法如下:
式中,β為采樣層的權(quán)值,是用于采樣后的偏置系數(shù),down(·)為下采樣方式,一般采用max(·),它作用于輸入的特征圖,然后采用滑動(dòng)窗口的方式,將輸入的特征圖劃分為多個(gè)n×n圖像塊(一般不重疊),最后將每個(gè)圖像塊內(nèi)的像素點(diǎn)進(jìn)行取最大值、求和或求均值。
在全連接網(wǎng)絡(luò)中,將所有二維圖像的特征圖拼接為一維特征作為全連接網(wǎng)絡(luò)的輸入。全連接層l的輸出可通過對(duì)輸入加權(quán)求和并通過激活函數(shù)的響應(yīng)得到:
其中,wlxl-1+bl稱為全連接層l的凈激活,它由前一層輸出特征圖xl-1進(jìn)行加權(quán)和偏置后得到。wl是全連接網(wǎng)絡(luò)的權(quán)重系數(shù),bl是全連接層l的偏置項(xiàng)。
Dropout是深度學(xué)習(xí)領(lǐng)域的專家Hintion在近幾年提出的一種防止模型過擬合方法,Dropout的實(shí)質(zhì)就是在輸出層的前一層以概率P將神經(jīng)節(jié)點(diǎn)的輸出強(qiáng)行置零,以1-P的概率保留神經(jīng)節(jié)點(diǎn)的輸出,以保證模型的稀疏性,從而實(shí)現(xiàn)網(wǎng)絡(luò)的防過學(xué)習(xí)。關(guān)于Dropout,Hintion在論文中并沒有給出具體的數(shù)學(xué)解釋,只是解釋說網(wǎng)絡(luò)樣本的權(quán)值在進(jìn)行更新時(shí),讓神經(jīng)節(jié)點(diǎn)以相同的概率隨機(jī)起作用,于是就讓網(wǎng)絡(luò)中的2個(gè)神經(jīng)節(jié)點(diǎn)每次不都同時(shí)出現(xiàn),這樣權(quán)值的更新不再依賴于有固定關(guān)系隱含節(jié)點(diǎn)的共同作用,阻止了某些特征僅僅在其它特定特征下才有效果的情況。
批歸一化(Batch Normalization,BN),用于改善卷積神經(jīng)網(wǎng)絡(luò)性能的方法,是由兩位谷歌的研究員所提出,與CNN中的卷積層或池化層一樣,BN也是卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)中的一層,即在傳統(tǒng)的CNN的網(wǎng)絡(luò)中加入一層BN層,用于批數(shù)據(jù)的歸一化。網(wǎng)絡(luò)中加入Batch Normalization層可以選擇比較大的初始學(xué)習(xí)率,加快模型的訓(xùn)練速度,此外,BN具有提高網(wǎng)絡(luò)泛化能力的特性,降低網(wǎng)絡(luò)的過擬合風(fēng)險(xiǎn)。
隨著自動(dòng)駕駛和智能交通的發(fā)展,車輛類型的準(zhǔn)確識(shí)別變得越來越越重要,此外,車輛的準(zhǔn)確識(shí)別,也是視頻中車輛檢測(cè)的前提。卷積神經(jīng)網(wǎng)絡(luò)是深度學(xué)習(xí)領(lǐng)域最為重要的圖像識(shí)別算法,一張?jiān)嫉娜S或二維圖象可以直接作為算法的輸入,相比于傳統(tǒng)的圖像識(shí)別算法,CNN算法在圖像識(shí)別中不僅省去繁瑣的圖像處理和特征選取工作,而且還有較高的圖像識(shí)別率,文中將卷積神經(jīng)網(wǎng)絡(luò)應(yīng)用于車輛類型的準(zhǔn)確識(shí)別。
在車輛類型識(shí)別中,文中以載人車輛為研究對(duì)象,選取三種類型的載人車輛,分別為普通私家車、大客車和七座的車,每種類型的車采集240個(gè)樣本圖像,即共采集720張圖像。每種類型的車的圖像如圖1所示。
圖1 實(shí)驗(yàn)數(shù)據(jù)
圖1中,A、B和C圖為選取的三類車的原圖,D、E和F圖為其尺寸調(diào)成統(tǒng)一大小后的圖像。在圖像識(shí)別中,圖像的尺寸越大,其所包含的特征信息就越多,越有利于提高模型的識(shí)別率,但尺寸越大,CNN圖像識(shí)別模型的訓(xùn)練和識(shí)別時(shí)間就越多,為加快模型的訓(xùn)練,降低圖像識(shí)別的時(shí)間,文中選用的圖像的像素大小統(tǒng)一調(diào)整為48*48。
卷積神經(jīng)網(wǎng)絡(luò)最早較為成功的應(yīng)用是在上世紀(jì)末的手寫數(shù)字的識(shí)別,其模型結(jié)構(gòu)被稱為L(zhǎng)eNet模型,該模型采用4個(gè)卷積層,每個(gè)卷積層后均連接一層下采樣層。得益于計(jì)算機(jī)技術(shù)的快速發(fā)展,卷積神經(jīng)網(wǎng)絡(luò)的卷積層越來越深。2012的Alexnet模型,其卷積層有8個(gè),該模型以絕對(duì)的優(yōu)勢(shì)贏得了2012年的Imagenet大賽的冠軍。2014年的Imagenet大賽,亞軍VGG模型有19個(gè)卷積層,冠軍GoogleNet模型則采用了22個(gè)卷積層。研究表明,卷積神經(jīng)網(wǎng)絡(luò)的卷積層個(gè)數(shù)越多越有利于模型的識(shí)別率,但隨著網(wǎng)絡(luò)的加深,模型變得越來越難訓(xùn)練,且訓(xùn)練時(shí)間也呈指數(shù)增長(zhǎng)。
為準(zhǔn)確和快速的識(shí)別不同類型的汽車,文中設(shè)計(jì)的汽車類型識(shí)別模型采用6個(gè)卷積層,卷積層的卷積核大小均為3*3,步長(zhǎng)為1;選用3個(gè)池化層,采用最大赤化法,池化核大小為2*2,步長(zhǎng)為2;全連接層選用兩個(gè)。此外,為改善模型的訓(xùn)練性能,降低模型的過學(xué)習(xí)風(fēng)險(xiǎn),在每個(gè)池化層前均加入一層BN;文中的激活函數(shù)均采用relu。設(shè)計(jì)的卷積神經(jīng)網(wǎng)絡(luò)模型結(jié)構(gòu)具體如圖2所示。
文中設(shè)計(jì)的車型識(shí)別模型的每個(gè)卷積層后均連接一個(gè)激活函數(shù),所以圖2中就沒有詳細(xì)的寫出。圖2中的參數(shù)Channels為該層網(wǎng)絡(luò)每張圖片的通道數(shù),類似于BP神經(jīng)網(wǎng)絡(luò)中每層的神經(jīng)節(jié)點(diǎn)數(shù)。
目前,用于實(shí)現(xiàn)深度學(xué)習(xí)算法的主流框架有Tensorflow、Keras、Caffe和PyTorch等,谷歌公司開發(fā)的Tensorflow因編程靈活、實(shí)現(xiàn)相對(duì)較為容易而被廣泛使用。TensorFlow為張量從流圖的一端流動(dòng)到另一端計(jì)算過程,可被廣泛的用于語音識(shí)別或圖像識(shí)別等多項(xiàng)機(jī)器學(xué)習(xí)和深度學(xué)習(xí)領(lǐng)域,文中設(shè)計(jì)的卷積神經(jīng)網(wǎng)絡(luò)在汽車類型識(shí)別模型中實(shí)現(xiàn)的框架選用谷歌的Tensorflow。在車型識(shí)別中,文中以載人汽車為研究對(duì)象,選擇三種汽車車型,每種車型共收集圖像240張。由于卷積神經(jīng)網(wǎng)絡(luò)的輸入可以是一張三維的圖像,所以把收集汽車圖片調(diào)整統(tǒng)一大小后直接輸入模型。在實(shí)驗(yàn)中,從每類汽車圖片中隨機(jī)選取200張用于模型的訓(xùn)練,剩余圖像用于訓(xùn)練好的模型測(cè)試。模型訓(xùn)練時(shí),學(xué)習(xí)率為0.001,優(yōu)化函數(shù)則選用Tensorflow框架提供的AdamOptimizer()函數(shù)。
圖2 模型結(jié)構(gòu)
為使模型更有利于訓(xùn)練,將設(shè)計(jì)的識(shí)別模型選擇性的加入BN層,為驗(yàn)證加入模型種加入的BN層的合理性,文中將未加入BN層的模型用于識(shí)別汽車車型,把結(jié)果與之對(duì)比。加入BN層和未加入BN層的識(shí)別模型的訓(xùn)練時(shí)的誤差曲線如圖3所示。
圖3 模型訓(xùn)練誤差曲線
圖3中,“模型1”為卷積神經(jīng)網(wǎng)絡(luò)模型中加入BN層,“模型2”為未加入BN層的識(shí)別模型。圖中兩曲線的初始位置幾乎重合,兩模型的初始誤差相同;大約經(jīng)歷40次迭代,加入BN層的識(shí)別模型的訓(xùn)練誤差就已明顯低于未加入BN層的訓(xùn)練誤差;加入BN層模型的訓(xùn)練誤差大約經(jīng)歷500次迭代,其訓(xùn)練誤差就穩(wěn)定的小于0.05,而未加入BN層的模型的訓(xùn)練誤差穩(wěn)定的小于0.05大約需要1100次迭代;經(jīng)對(duì)比可知,加入BN層后,模型的收斂速度明顯被加快,此外加入BN層后模型的收斂相對(duì)更加穩(wěn)定。綜上可知,文中在設(shè)計(jì)的識(shí)別模型中選擇性的加入BN層是可行的,訓(xùn)練好的模型的汽車類型識(shí)別結(jié)果如表1所示。
表1 識(shí)別結(jié)果
表1中,模型1為加入BN層,模型2為沒有加入BN層的卷積神經(jīng)網(wǎng)絡(luò)。從表1中可知,加入BN層的模型和未加入BN層的模型在訓(xùn)練集均達(dá)到100%識(shí)別,在測(cè)試集中的識(shí)別率均未實(shí)現(xiàn)100%,但是模型中加入BN層在測(cè)試集中的識(shí)別率相對(duì)高一些。模型測(cè)試結(jié)果表明,文中設(shè)計(jì)的汽車車型識(shí)別模型有較高的識(shí)別率,最高可達(dá)98.87%。此外,文中在設(shè)計(jì)的識(shí)別模型中選擇性的加入BN層,降低了模型過學(xué)習(xí)風(fēng)險(xiǎn),提高了模型在測(cè)試集的識(shí)別率。
隨著人工智能的發(fā)展,智能交通的建設(shè)也在加緊步伐。汽車車型準(zhǔn)確識(shí)別在智能交通建設(shè)中具有重要意義,此外,車型準(zhǔn)確識(shí)別,也是視頻中汽車檢測(cè)的前提。文中建立了用于汽車車型識(shí)別的CNN模型,采用6個(gè)卷積層、3個(gè)池化層和2個(gè)全連接層,并選擇性的加入3層批歸一化層,對(duì)實(shí)現(xiàn)了汽車車型的識(shí)別率高達(dá)98.87%。通過實(shí)驗(yàn)對(duì)比,文中在設(shè)計(jì)的識(shí)別模型中加入3個(gè)BN層,能加快模型的訓(xùn)練速度,降低模型的過學(xué)習(xí)風(fēng)險(xiǎn),提高車型識(shí)別率。