章羽,羅素云,陳楊鐘
(1.201620 上海市 上海工程技術大學 機械與汽車工程學院;2.201616 上海市 大工科技(上海)有限公司)
隨著社會的發展,道路上車輛的增加,僅靠人工監管交通系統已無法滿足需要,智能交通需要得到進一步發展。車輛類型的識別是智能交通系統中的重要一環,其目標是識別圖像中包含的車輛類型,它在道路違章抓拍、無人駕駛以及輔助駕駛等許多方面都有重要應用。
深度學習通過對大量數據集進行學習,獲取特定的特征,進而形成一個高效的模型,實現對特定事物的特定功能。2012 年以來,深度學習技術取得了巨大突破,其精度和效率都遠遠超過傳統機器學習人為設計特征提取層的方式,因此本研究采用深度學習相關技術進行車輛類型的識別。本研究屬于圖像分類任務,實時性要求不高,故而選擇較深較復雜的深度學習模型VGG11 進行改進。經典模型除了VGG11 外還有AlexNet[1],它們都可以進行圖像分類,但它們的網絡深度一旦加深,都極容易過擬合,且這些模型的訓練精度都有進一步提升的空間。
本文提出了一種基于改進VGG11 的車輛類型識別算法。基于注意力機制SE 模塊對VGG11[2]模型進行改進,并采用遷移學習的方式,將經過ImageNet[3]預訓練后的VGG11 模型遷移到車輛類型識別模型上,以提升模型的精度并減少學習時間。
SE 模塊全名為Squeeze-and-Excitation block,主要由4部分組成:轉換操作(Ftr)、擠壓操作(Fsq)、激勵操作(Fex)和比例操作(Fscale)。基于注意力機制的SE 模塊原理圖如圖1 所示,SE 模塊具體實現圖如圖2 所示。

圖1 SE 模塊原理圖Fig.1 Schematic diagram of SE module

圖2 SE 模塊具體實現圖Fig.2 Specific implementation diagram of SE module
轉換操作是一個標準的卷積操作,對應圖1中的Ftr操作,輸入輸出的定義如式(1)所示。Ftr得到的結果U 就是圖1 中的左邊第2 個三維矩陣,或者叫做C個大小為H×W 的特征圖。

擠壓操作對應圖1 中的Fsq操作,這一步所對應的公式是式(2),它是一個全局平均池化公式。

擠壓操作就是在得到轉換操作的結果U之后,采用全局平均池化操作對每個特征圖進行壓縮,使其C個特征圖最后變成1×1×C的實數數列。圖2中Global pooling 區域就是擠壓操作。
SE 模塊通過激勵操作(如圖2 大方框區域)全面捕獲通道依賴性,對應式(3)。

擠壓操作的結果是z,這里先用權重W1乘以z。這是一個全連接層操作,W1的維度是(C/r)×C,r是一個縮放參數,文中取16。又因為z的維度是1×1×C,所以W1z的結果就是(1×1×C)/r。再經過一個ReLU 函數,輸出的維度不變。再和W2相乘,和W2相乘也是一個全連接層的過程,W2的維度是(C×C)/r,因此輸出的維度就是1×1×C。最后,經過sigmoid 函數,得到s,這個s是用來刻畫U 中C個特征圖的權重的。前面的擠壓操作都只是在某個通道的特征圖里的操作,而這2 個全連接層的作用就是融合各通道的特征圖信息。
比例操作對應圖1 中的Fscale,即在得到s之后,再對原來的U 進行操作,對應于式(4)。式(4)中Uc表示U 中第c個通道的二維矩陣,Sc是上一步的輸出S中的一個數值,因此式(4)相當于把Uc矩陣中的每個值都乘以Sc,即讓對應通道的特征圖與對應Sc相乘,從而得到一個具有對于不同通道具有不同關注度的特征圖。

式中:Fscale(uc,Sc)——uc∈RW×H和標量Sc之間的對應通道乘積。
深度卷積神經網絡相較于傳統圖像處理方法有很多優點,它僅僅依靠簡單可重復結構的堆疊,就可以實現傳統方法無法達到的精度。
VGG Net 是由牛津大學的視覺幾何組(Visual Geometry Group)研發的深度卷積神經網絡,該視覺幾何組發布了一系列以VGG 開頭的卷積網絡模型。其中,VGG11 模型結構如圖3 所示。

圖3 VGG11 結構圖Fig.3 VGG11 structure diagram
本文所用模型是VGG11 的優化版本。本文在VGG11 模型的Feature 層增加了自適應池化層,在自適應池化層[3]和Classifier 層中間增加了基于注意力機制的SE 模塊。該模塊基于人的注意力機制來對上層的輸出特征圖進行處理,通過神經網絡的自動學習功能,讓神經網絡對輸入的不同通道的特征圖進行差異化處理,讓有效的特征圖的權重增大,讓無效或作用小的特征圖的權重減小,從而使神經網絡能更好地對數據集進行學習,獲得更加豐富的特征信息。同時,采用SE 模塊還解決了VGG11只從平面維度處理圖片信息,而忽視了通道維度[4]信息處理的重要性這一問題。而SE 模塊正是從通道維度入手,通過改變不同通道的特征圖的比例因子,從而實現了對通道維度的重要特征圖的重點關注,也即是人的注意力機制。
本文模型由5 部分組成,分別是feature 層(提取特征層)、自適應池化層、SE 模塊層、特征拉伸層和classifier 層。處理流程是先將預處理好的數據集輸入feature 層,這時會得到512 通道的18×13 大小的特征圖,這個尺寸的特征圖不適合進行后續處理。因此,在后面接上一個自適應池化層,將特征圖處理為7×7 大小。自適應池化層后接的是SE 模塊,SE 模塊后接的是拉伸操作,最后是classifier 層。其中,classifier 層由3 個全連接層組成,前2 個全連接層后面都接激活函數ReLU[5]和Dropout 層[6],最后一個全連接層的輸出為車型類別數(本文為47)。損失函數選擇的是交叉熵損失函數[8],如式(5):

式中:H——訓練損失;P——類別概率;e——訓練樣本;θ——參數權重;q——改進VGG 模型預測的各類概率,公式為:

式中:x——激勵函數[7]的輸入;j——被計算車型的序號。
利用模型遷移[8]的方式,將VGG 通過ImageNet 訓練所得的預訓練模型移植到本文改進VGG11 模型中,得到車型識別模型SE-VGG11。
SE-VGG11 模型結構如圖4 所示,Feature 層如圖5 所示,Classifier 層如圖6 所示。

圖4 SE-VGG11 結構圖Fig.4 SE-VGG11 structure diagram

圖5 Feature 層Fig.5 Feature layer

圖6 Classifier 層Fig.6 Classifier layer
本次實驗使用的是斯坦福大學AI 實驗室的車輛類型數據集。這個車輛類型數據集包括從196 類車型中收集到的16 185 張圖片。本文選取其中47類車型作為研究對象,共選擇了2 839 張圖片作為實驗數據集,其中2 272 張為訓練圖片,567 張作為檢驗數據集。部分車輛樣本如圖7 所示。

圖7 數據集圖片Fig.7 Data set picture
遷移學習[9]是指將某個領域或任務上學習到的知識或模式應用到不同但相關的領域或問題中去的方法。本文模型采用前人通過ImageNet 訓練獲得的優秀的訓練權重來進行學習。
深度學習和遷移學習的結合往往有2 種方式,一種是Pre-training+Fine-tuning,也即采用優秀的訓練權重初始化模型,但訓練時,只有模型的最后一層的權重是變化的,其他層的權重將其凍結;另一種是Pre-training,也就是采用優秀的訓練權重初始化模型,但訓練時,不凍結任何層,讓所有層都對數據進行特征的學習和分類。
本文考慮到原VGG11 本身對特征的提取已經非常高效,同時出于節約時間的考慮,決定采用第一種方式,即Pre-training+Fine-tuning。本文模型結構參數如表1 所示。

表1 SE-VGG11 模型參數Tab.1 SE-VGG11 model parameters
表1 中的總stride=32 是指每個Maxpool 層的stride 都是2,所有卷積層的stride 都等于1。自適應是指將任意尺寸的特征都轉化為7×7,Classifier層沒有stride。通過Softmax 層輸出的個數為47,其大小對應于選擇的47 種不同車輛型號。
為了驗證改進VGG 模型的有效性,對車輛類型數據集進行訓練和驗證,并與Alexnet 和VGG11模型進行對比。模型識別準確率由對車輛圖片的正確識別率計算得到,識別率計算式為

式中:Zt——待識別車輛圖片的個數;Za——正確識別的車類圖片的個數;Rrec——算法識別率。
預先設置學習率為0.01,number=47,epochs=100 和batchsize=4 的條件下訓練AlexNet、VGG11 和本文提出的改進的VGG11,同時對訓練模型進行驗證,檢驗模型的性能。AlexNet 的訓練和驗證精度、損失如圖8、圖9 所示,VGG11 的訓練和驗證精度、損失如圖10、圖11 所示,本文所提出的SE-VGG11 的訓練和驗證精度、損失如圖12、圖13 所示。

圖8 AlexNet 訓練和驗證精度Fig.8 AlexNet training and verification accuracy

圖9 AlexNet 訓練和驗證損失Fig.9 AlexNet training and verification loss

圖10 VGG11 訓練和驗證精度Fig.10 VGG11 training and verification accuracy

圖11 VGG11 訓練和驗證損失Fig.11 VGG11 training and verification loss

圖12 SE-VGG11 訓練和驗證精度Fig.12 SE-VGG11 training and verification accuracy

圖13 SE-VGG11 訓練和驗證損失Fig.13 SE-VGG11 training and verification loss
為了遵循控制變量的原則,文中的所有模型都采用Pre-training+Fine-tuning 這一遷移學習方式。其中,AlexNet 和VGG11 模型都只訓練Classifier層。本文所提出的SE-VGG11 模型只訓練SE 模塊和Classifier 層,用SE 模塊和Classifier 層來進行車輛分類,這樣就保證了實驗結果真實地反映了基于注意力機制的SE 模塊的作用。
觀察圖8 發現,AlexNet 模型的驗證精度和訓練精度都是緩慢上升的,其中驗證精度在將近80個epoch 時才達到90%以上的精度,80 個epoch 后,其驗證精度上升得更加緩慢,逐漸變得平滑而趨于穩定,也說明模型達到了一個相對穩定的狀態,驗證精度達到了92%,可以說這本身就是一個比較優秀的水平了,也證明了該模型本身就是一個很優秀的模型;觀察圖9 發現,AlexNet 模型的驗證和訓練loss 也是緩慢下降,逐漸逼近趨于平滑的,這與圖7 中的驗證精度和訓練精度相互印證,說明訓練過程非常穩定,沒有發生過擬合和數據不穩定的現象。
觀察圖10 可以看到,VGG 模型的訓練精度和驗證精度也是緩慢上升的,它與AlexNet 模型的訓練和驗證圖像非常相似,圖線的變化趨勢也基本上相同,也在將近80 個epoch 時達到了90%以上的精度;圖11 中,訓練loss 和驗證loss 的下降也是非常平滑的,與AlexNet 模型的訓練和驗證loss 的下降也是十分類似的,這說明VGG 模型的訓練過程也是非常穩定的,沒有過擬合的發生。
觀察圖12 可以發現,本文所提出的SEVGG11 模型在訓練到30 個epoch 時,驗證精度達到了95%的精度,然后訓練精度和驗證精度開始非常緩慢提升,最終達到將近96%的驗證精度。不論是模型的訓練速度還是模型的最終訓練精度,本文所提出的SE-VGG11 模型都優于前面兩個模型;觀察圖13 發現,得到的結果與圖12 是一樣的,SE-VGG11 模型的loss 的減少也是非常迅速的,在大約40 個epoch 時,loss 的值降到0.2。隨著訓練的進行,loss 的值越來越小,最終趨于穩定。從圖12 和圖13 可以看出,SE-VGG11 是一個非常優秀的模型,它本身對于車輛數據集的學習是非常快速而有效的,學習過程中的波動非常平滑,說明沒有發生過擬合,說明該模型的適用性非常強。
本文所選取的驗證集是從47 種車輛類型中選取567 張圖片組成的,用AlexNet、VGG11 和SEVGG11 分別對這567 張圖片進行識別,得到的各模型的識別率結果如表2 所示。

表2 不同模型下的車輛類型圖片識別率Tab.2 Image recognition rate of vehicle types under different models
由表2 可以看出,本文所提出的SE-VGG11模型相較于其他模型是取得了較大進步的,說明了本文提出的基于注意力機制SE 模塊的VGG11 模型改進的有效性。
本文提出一種基于注意力機制的VGG11 模型來進行車輛類型識別,改進的模型在VGG11 模型的Classifier 層之前,增加SE 模塊,使得改進模型能針對性地提高有效特征圖的權重。同時,由于SE 模塊是從通道維度對特征進行提取,使得改進模型的泛化性得到較大提高。在控制變量的條件下,將本文提出的SE-VGG11 模型的識別效果與AlexNet 和VGG11 兩種模型的識別效果進行了對比,實驗結果表明:對于車輛類型識別,本文所提出的SE-VGG11 模型在訓練速度和檢測精度上都優于其他模型。