章羽,羅素云,陳楊鐘
(1.201620 上海市 上海工程技術(shù)大學(xué) 機(jī)械與汽車工程學(xué)院;2.201616 上海市 大工科技(上海)有限公司)
隨著社會的發(fā)展,道路上車輛的增加,僅靠人工監(jiān)管交通系統(tǒng)已無法滿足需要,智能交通需要得到進(jìn)一步發(fā)展。車輛類型的識別是智能交通系統(tǒng)中的重要一環(huán),其目標(biāo)是識別圖像中包含的車輛類型,它在道路違章抓拍、無人駕駛以及輔助駕駛等許多方面都有重要應(yīng)用。
深度學(xué)習(xí)通過對大量數(shù)據(jù)集進(jìn)行學(xué)習(xí),獲取特定的特征,進(jìn)而形成一個高效的模型,實現(xiàn)對特定事物的特定功能。2012 年以來,深度學(xué)習(xí)技術(shù)取得了巨大突破,其精度和效率都遠(yuǎn)遠(yuǎn)超過傳統(tǒng)機(jī)器學(xué)習(xí)人為設(shè)計特征提取層的方式,因此本研究采用深度學(xué)習(xí)相關(guān)技術(shù)進(jìn)行車輛類型的識別。本研究屬于圖像分類任務(wù),實時性要求不高,故而選擇較深較復(fù)雜的深度學(xué)習(xí)模型VGG11 進(jìn)行改進(jìn)。經(jīng)典模型除了VGG11 外還有AlexNet[1],它們都可以進(jìn)行圖像分類,但它們的網(wǎng)絡(luò)深度一旦加深,都極容易過擬合,且這些模型的訓(xùn)練精度都有進(jìn)一步提升的空間。
本文提出了一種基于改進(jìn)VGG11 的車輛類型識別算法?;谧⒁饬C(jī)制SE 模塊對VGG11[2]模型進(jìn)行改進(jìn),并采用遷移學(xué)習(xí)的方式,將經(jīng)過ImageNet[3]預(yù)訓(xùn)練后的VGG11 模型遷移到車輛類型識別模型上,以提升模型的精度并減少學(xué)習(xí)時間。
SE 模塊全名為Squeeze-and-Excitation block,主要由4部分組成:轉(zhuǎn)換操作(Ftr)、擠壓操作(Fsq)、激勵操作(Fex)和比例操作(Fscale)?;谧⒁饬C(jī)制的SE 模塊原理圖如圖1 所示,SE 模塊具體實現(xiàn)圖如圖2 所示。
圖1 SE 模塊原理圖Fig.1 Schematic diagram of SE module
圖2 SE 模塊具體實現(xiàn)圖Fig.2 Specific implementation diagram of SE module
轉(zhuǎn)換操作是一個標(biāo)準(zhǔn)的卷積操作,對應(yīng)圖1中的Ftr操作,輸入輸出的定義如式(1)所示。Ftr得到的結(jié)果U 就是圖1 中的左邊第2 個三維矩陣,或者叫做C個大小為H×W 的特征圖。
擠壓操作對應(yīng)圖1 中的Fsq操作,這一步所對應(yīng)的公式是式(2),它是一個全局平均池化公式。
擠壓操作就是在得到轉(zhuǎn)換操作的結(jié)果U之后,采用全局平均池化操作對每個特征圖進(jìn)行壓縮,使其C個特征圖最后變成1×1×C的實數(shù)數(shù)列。圖2中Global pooling 區(qū)域就是擠壓操作。
SE 模塊通過激勵操作(如圖2 大方框區(qū)域)全面捕獲通道依賴性,對應(yīng)式(3)。
擠壓操作的結(jié)果是z,這里先用權(quán)重W1乘以z。這是一個全連接層操作,W1的維度是(C/r)×C,r是一個縮放參數(shù),文中取16。又因為z的維度是1×1×C,所以W1z的結(jié)果就是(1×1×C)/r。再經(jīng)過一個ReLU 函數(shù),輸出的維度不變。再和W2相乘,和W2相乘也是一個全連接層的過程,W2的維度是(C×C)/r,因此輸出的維度就是1×1×C。最后,經(jīng)過sigmoid 函數(shù),得到s,這個s是用來刻畫U 中C個特征圖的權(quán)重的。前面的擠壓操作都只是在某個通道的特征圖里的操作,而這2 個全連接層的作用就是融合各通道的特征圖信息。
比例操作對應(yīng)圖1 中的Fscale,即在得到s之后,再對原來的U 進(jìn)行操作,對應(yīng)于式(4)。式(4)中Uc表示U 中第c個通道的二維矩陣,Sc是上一步的輸出S中的一個數(shù)值,因此式(4)相當(dāng)于把Uc矩陣中的每個值都乘以Sc,即讓對應(yīng)通道的特征圖與對應(yīng)Sc相乘,從而得到一個具有對于不同通道具有不同關(guān)注度的特征圖。
式中:Fscale(uc,Sc)——uc∈RW×H和標(biāo)量Sc之間的對應(yīng)通道乘積。
深度卷積神經(jīng)網(wǎng)絡(luò)相較于傳統(tǒng)圖像處理方法有很多優(yōu)點,它僅僅依靠簡單可重復(fù)結(jié)構(gòu)的堆疊,就可以實現(xiàn)傳統(tǒng)方法無法達(dá)到的精度。
VGG Net 是由牛津大學(xué)的視覺幾何組(Visual Geometry Group)研發(fā)的深度卷積神經(jīng)網(wǎng)絡(luò),該視覺幾何組發(fā)布了一系列以VGG 開頭的卷積網(wǎng)絡(luò)模型。其中,VGG11 模型結(jié)構(gòu)如圖3 所示。
圖3 VGG11 結(jié)構(gòu)圖Fig.3 VGG11 structure diagram
本文所用模型是VGG11 的優(yōu)化版本。本文在VGG11 模型的Feature 層增加了自適應(yīng)池化層,在自適應(yīng)池化層[3]和Classifier 層中間增加了基于注意力機(jī)制的SE 模塊。該模塊基于人的注意力機(jī)制來對上層的輸出特征圖進(jìn)行處理,通過神經(jīng)網(wǎng)絡(luò)的自動學(xué)習(xí)功能,讓神經(jīng)網(wǎng)絡(luò)對輸入的不同通道的特征圖進(jìn)行差異化處理,讓有效的特征圖的權(quán)重增大,讓無效或作用小的特征圖的權(quán)重減小,從而使神經(jīng)網(wǎng)絡(luò)能更好地對數(shù)據(jù)集進(jìn)行學(xué)習(xí),獲得更加豐富的特征信息。同時,采用SE 模塊還解決了VGG11只從平面維度處理圖片信息,而忽視了通道維度[4]信息處理的重要性這一問題。而SE 模塊正是從通道維度入手,通過改變不同通道的特征圖的比例因子,從而實現(xiàn)了對通道維度的重要特征圖的重點關(guān)注,也即是人的注意力機(jī)制。
本文模型由5 部分組成,分別是feature 層(提取特征層)、自適應(yīng)池化層、SE 模塊層、特征拉伸層和classifier 層。處理流程是先將預(yù)處理好的數(shù)據(jù)集輸入feature 層,這時會得到512 通道的18×13 大小的特征圖,這個尺寸的特征圖不適合進(jìn)行后續(xù)處理。因此,在后面接上一個自適應(yīng)池化層,將特征圖處理為7×7 大小。自適應(yīng)池化層后接的是SE 模塊,SE 模塊后接的是拉伸操作,最后是classifier 層。其中,classifier 層由3 個全連接層組成,前2 個全連接層后面都接激活函數(shù)ReLU[5]和Dropout 層[6],最后一個全連接層的輸出為車型類別數(shù)(本文為47)。損失函數(shù)選擇的是交叉熵?fù)p失函數(shù)[8],如式(5):
式中:H——訓(xùn)練損失;P——類別概率;e——訓(xùn)練樣本;θ——參數(shù)權(quán)重;q——改進(jìn)VGG 模型預(yù)測的各類概率,公式為:
式中:x——激勵函數(shù)[7]的輸入;j——被計算車型的序號。
利用模型遷移[8]的方式,將VGG 通過ImageNet 訓(xùn)練所得的預(yù)訓(xùn)練模型移植到本文改進(jìn)VGG11 模型中,得到車型識別模型SE-VGG11。
SE-VGG11 模型結(jié)構(gòu)如圖4 所示,F(xiàn)eature 層如圖5 所示,Classifier 層如圖6 所示。
圖4 SE-VGG11 結(jié)構(gòu)圖Fig.4 SE-VGG11 structure diagram
圖5 Feature 層Fig.5 Feature layer
圖6 Classifier 層Fig.6 Classifier layer
本次實驗使用的是斯坦福大學(xué)AI 實驗室的車輛類型數(shù)據(jù)集。這個車輛類型數(shù)據(jù)集包括從196 類車型中收集到的16 185 張圖片。本文選取其中47類車型作為研究對象,共選擇了2 839 張圖片作為實驗數(shù)據(jù)集,其中2 272 張為訓(xùn)練圖片,567 張作為檢驗數(shù)據(jù)集。部分車輛樣本如圖7 所示。
圖7 數(shù)據(jù)集圖片F(xiàn)ig.7 Data set picture
遷移學(xué)習(xí)[9]是指將某個領(lǐng)域或任務(wù)上學(xué)習(xí)到的知識或模式應(yīng)用到不同但相關(guān)的領(lǐng)域或問題中去的方法。本文模型采用前人通過ImageNet 訓(xùn)練獲得的優(yōu)秀的訓(xùn)練權(quán)重來進(jìn)行學(xué)習(xí)。
深度學(xué)習(xí)和遷移學(xué)習(xí)的結(jié)合往往有2 種方式,一種是Pre-training+Fine-tuning,也即采用優(yōu)秀的訓(xùn)練權(quán)重初始化模型,但訓(xùn)練時,只有模型的最后一層的權(quán)重是變化的,其他層的權(quán)重將其凍結(jié);另一種是Pre-training,也就是采用優(yōu)秀的訓(xùn)練權(quán)重初始化模型,但訓(xùn)練時,不凍結(jié)任何層,讓所有層都對數(shù)據(jù)進(jìn)行特征的學(xué)習(xí)和分類。
本文考慮到原VGG11 本身對特征的提取已經(jīng)非常高效,同時出于節(jié)約時間的考慮,決定采用第一種方式,即Pre-training+Fine-tuning。本文模型結(jié)構(gòu)參數(shù)如表1 所示。
表1 SE-VGG11 模型參數(shù)Tab.1 SE-VGG11 model parameters
表1 中的總stride=32 是指每個Maxpool 層的stride 都是2,所有卷積層的stride 都等于1。自適應(yīng)是指將任意尺寸的特征都轉(zhuǎn)化為7×7,Classifier層沒有stride。通過Softmax 層輸出的個數(shù)為47,其大小對應(yīng)于選擇的47 種不同車輛型號。
為了驗證改進(jìn)VGG 模型的有效性,對車輛類型數(shù)據(jù)集進(jìn)行訓(xùn)練和驗證,并與Alexnet 和VGG11模型進(jìn)行對比。模型識別準(zhǔn)確率由對車輛圖片的正確識別率計算得到,識別率計算式為
式中:Zt——待識別車輛圖片的個數(shù);Za——正確識別的車類圖片的個數(shù);Rrec——算法識別率。
預(yù)先設(shè)置學(xué)習(xí)率為0.01,number=47,epochs=100 和batchsize=4 的條件下訓(xùn)練AlexNet、VGG11 和本文提出的改進(jìn)的VGG11,同時對訓(xùn)練模型進(jìn)行驗證,檢驗?zāi)P偷男阅堋lexNet 的訓(xùn)練和驗證精度、損失如圖8、圖9 所示,VGG11 的訓(xùn)練和驗證精度、損失如圖10、圖11 所示,本文所提出的SE-VGG11 的訓(xùn)練和驗證精度、損失如圖12、圖13 所示。
圖8 AlexNet 訓(xùn)練和驗證精度Fig.8 AlexNet training and verification accuracy
圖9 AlexNet 訓(xùn)練和驗證損失Fig.9 AlexNet training and verification loss
圖10 VGG11 訓(xùn)練和驗證精度Fig.10 VGG11 training and verification accuracy
圖11 VGG11 訓(xùn)練和驗證損失Fig.11 VGG11 training and verification loss
圖12 SE-VGG11 訓(xùn)練和驗證精度Fig.12 SE-VGG11 training and verification accuracy
圖13 SE-VGG11 訓(xùn)練和驗證損失Fig.13 SE-VGG11 training and verification loss
為了遵循控制變量的原則,文中的所有模型都采用Pre-training+Fine-tuning 這一遷移學(xué)習(xí)方式。其中,AlexNet 和VGG11 模型都只訓(xùn)練Classifier層。本文所提出的SE-VGG11 模型只訓(xùn)練SE 模塊和Classifier 層,用SE 模塊和Classifier 層來進(jìn)行車輛分類,這樣就保證了實驗結(jié)果真實地反映了基于注意力機(jī)制的SE 模塊的作用。
觀察圖8 發(fā)現(xiàn),AlexNet 模型的驗證精度和訓(xùn)練精度都是緩慢上升的,其中驗證精度在將近80個epoch 時才達(dá)到90%以上的精度,80 個epoch 后,其驗證精度上升得更加緩慢,逐漸變得平滑而趨于穩(wěn)定,也說明模型達(dá)到了一個相對穩(wěn)定的狀態(tài),驗證精度達(dá)到了92%,可以說這本身就是一個比較優(yōu)秀的水平了,也證明了該模型本身就是一個很優(yōu)秀的模型;觀察圖9 發(fā)現(xiàn),AlexNet 模型的驗證和訓(xùn)練loss 也是緩慢下降,逐漸逼近趨于平滑的,這與圖7 中的驗證精度和訓(xùn)練精度相互印證,說明訓(xùn)練過程非常穩(wěn)定,沒有發(fā)生過擬合和數(shù)據(jù)不穩(wěn)定的現(xiàn)象。
觀察圖10 可以看到,VGG 模型的訓(xùn)練精度和驗證精度也是緩慢上升的,它與AlexNet 模型的訓(xùn)練和驗證圖像非常相似,圖線的變化趨勢也基本上相同,也在將近80 個epoch 時達(dá)到了90%以上的精度;圖11 中,訓(xùn)練loss 和驗證loss 的下降也是非常平滑的,與AlexNet 模型的訓(xùn)練和驗證loss 的下降也是十分類似的,這說明VGG 模型的訓(xùn)練過程也是非常穩(wěn)定的,沒有過擬合的發(fā)生。
觀察圖12 可以發(fā)現(xiàn),本文所提出的SEVGG11 模型在訓(xùn)練到30 個epoch 時,驗證精度達(dá)到了95%的精度,然后訓(xùn)練精度和驗證精度開始非常緩慢提升,最終達(dá)到將近96%的驗證精度。不論是模型的訓(xùn)練速度還是模型的最終訓(xùn)練精度,本文所提出的SE-VGG11 模型都優(yōu)于前面兩個模型;觀察圖13 發(fā)現(xiàn),得到的結(jié)果與圖12 是一樣的,SE-VGG11 模型的loss 的減少也是非常迅速的,在大約40 個epoch 時,loss 的值降到0.2。隨著訓(xùn)練的進(jìn)行,loss 的值越來越小,最終趨于穩(wěn)定。從圖12 和圖13 可以看出,SE-VGG11 是一個非常優(yōu)秀的模型,它本身對于車輛數(shù)據(jù)集的學(xué)習(xí)是非??焖俣行У?,學(xué)習(xí)過程中的波動非常平滑,說明沒有發(fā)生過擬合,說明該模型的適用性非常強(qiáng)。
本文所選取的驗證集是從47 種車輛類型中選取567 張圖片組成的,用AlexNet、VGG11 和SEVGG11 分別對這567 張圖片進(jìn)行識別,得到的各模型的識別率結(jié)果如表2 所示。
表2 不同模型下的車輛類型圖片識別率Tab.2 Image recognition rate of vehicle types under different models
由表2 可以看出,本文所提出的SE-VGG11模型相較于其他模型是取得了較大進(jìn)步的,說明了本文提出的基于注意力機(jī)制SE 模塊的VGG11 模型改進(jìn)的有效性。
本文提出一種基于注意力機(jī)制的VGG11 模型來進(jìn)行車輛類型識別,改進(jìn)的模型在VGG11 模型的Classifier 層之前,增加SE 模塊,使得改進(jìn)模型能針對性地提高有效特征圖的權(quán)重。同時,由于SE 模塊是從通道維度對特征進(jìn)行提取,使得改進(jìn)模型的泛化性得到較大提高。在控制變量的條件下,將本文提出的SE-VGG11 模型的識別效果與AlexNet 和VGG11 兩種模型的識別效果進(jìn)行了對比,實驗結(jié)果表明:對于車輛類型識別,本文所提出的SE-VGG11 模型在訓(xùn)練速度和檢測精度上都優(yōu)于其他模型。