陳立潮,朝昕,潘理虎,曹建芳,2,張睿
(1.太原科技大學 計算機科學與技術學院,山西 太原 030024;2.忻州師范學院 計算機科學與技術系,山西 忻州 034000)
細粒度車型識別是智能交通領域的重要組成部分,旨在通過任意角度和光線環(huán)境下,識別出車輛型號、制造商、生產年份等精準有用的車輛信息。通常粗粒度車型識別提供的車輛信息不充足,識別出的大類別數據,無法做到對車輛的有效標識和追蹤,細粒度車型識別區(qū)別于一般車型識別,能夠對粗粒度的大類別車型進行精細的子類別識別,精確標識車輛,在交通視頻中有效地進行車輛監(jiān)控,不僅節(jié)省了人力資源,提高交通執(zhí)法效率,而且能夠快速分析套牌車輛和外觀改裝車輛,在車牌信息無法獲取時,細粒度的車型信息尤其重要,提高了有關車輛刑事案件的偵破效率,在智能交通、交通數據分析、安防等領域具有重要意義[1]。
針對細粒度車型識別問題,國內外學者已經做了大量研究,運用不同的方法提高細粒度車型識別準確率。主要有2 種方法:基于車輛部件的方法和基于深度學習的方法。
目前已經有許多基于車型部件的細粒度車型識別方法,Liao 等[2]分析了車輛部件在細粒度車型分類中的辨別能力,提出了一種新的將各部件的區(qū)分能力整合到分類框架中的模型。Krause 等[3]在局部特征外觀和位置的層面上,將兩種最先進的2D 目標建模表示提升到3D,實現對車型精細識別。Fang 等[4]從整個車輛圖像和檢測區(qū)域中提取全局特征和局部部件特征,基于整體線索和局部部件特征的隸屬層次變化,采用一對一的支持向量機分類器進行分類。車型部件方法的分類效果主要取決于對車型鑒別性部件的提取能力,上述方法的部件提取能力有限,成為了制約識別性能提升的主要瓶頸。
在細粒度車型識別領域,深度學習也得到廣泛的研究與應用。Shi 等[5]提出GLM(generalized large-margin)損失,并與Softmax 損失級聯訓練明顯地減少了類間相似性和類內方差,增強模型對車型的表征能力。Ke 等[6]提出一種密集關注網絡(dense attention network,DA-Net),通過其密集的連接和關注單元,使網絡對車型的分類能力集中在重要區(qū)域和特征,提高了模型的識別能力。Fu等[7]基于區(qū)域檢測和細粒度特征學習的關聯性,提出一種遞歸注意力卷積神經網絡(recurrent attention convolutional neural network,RA-CNN),在多尺度上以相互增強的方式遞歸學習區(qū)分區(qū)域注意力和基于區(qū)域的特征表示。馬力等[8]提出稀疏化B-CNN,通過訓練在特征通道中引入比例因子的B-CNN,并采用正則化按比例因子大小對其稀疏,將不重要特征通道按比例裁剪,消除網絡過擬合提高關鍵特征的顯著性。王陽等[9]提出雙線性殘差注意網絡,用殘差網絡替換B-CNN 的特征函數,并在殘差單元間添加通道注意力和空間注意力模塊,獲取更為豐富的注意力特征。Valev 等[10]系統(tǒng)比較和總結了現有深度學習方法在細粒度車型識別上的應用,在細粒度車型數據集Stanford Cars-196 上進行訓練測試,經典深度卷積網絡(deep convolutional neural networks,DCNN) 中DenseNet-161 獲得較好的識別精度,DenseNet 密集連接[11]是2017 年Huang 等提出的一種全新的卷積網絡連接模式,以密集連接的方式實現特征復用,使網絡學習到更具鑒別性的特征,并通過網絡特征復用最大程度上降低參數的冗余,降低了網絡隨深度增加出現的網絡退化等問題。相比基于部件的方法,基于深度學習的方法操作簡單,能夠直接對二維圖像進行處理,從大量訓練樣本中有效地學習到相應特征,避免了復雜的特征提取過程[12]。但細粒度車型分類集中在微小但重要的車型部件特征上,上述方法無法對部件特征進行有效關注。
根據以上問題,結合部件和深度學習的方法,提出一種基于部件關注DenseNet 的細粒度車型識別網絡。通過提出的處理層(Process Layer)對車型部件信息進行重復加強提取關注,獲取更多的部件信息,然后利用嵌入獨立組件的密集連接網絡進行特征復用,提取高維特征,獨立組件降低模型過擬合風險,有效提高模型的收斂極限。提出的PF-DenseNet 深度學習網絡,能夠有效獲取細粒度車型的鑒別性部件信息,利用部件特征進行分類。
細粒度車型識別網絡模型如圖1 所示,主體框架采用DenseNet 的密集卷積結構,并在框架前加入Process Layer,利用Process Layer 直接對輸入圖像進行下采樣處理,相對于一般DenseNet 對輸入圖像的處理,Process Layer 首先通過步長為1的卷積核對圖像車輛細節(jié)特征重復提取加強,獲取更加清晰的車型圖像特征,保留足夠多的車型部件特征細節(jié)信息,然后用最大池化進行下采樣,降低后續(xù)計算量。Process Layer 后主體框架采用密集連接網絡中的密集卷積(Dense Block)和過渡層(Transition Layer),對圖像特征進一步提取和復用,獲得更加抽象高維的特征,Transition Layer 引用在每一層Dense Block 后面,對圖像進一步下采樣,并在Dense Block 和Transition Layer 中嵌入IC 層,提高模型收斂極限。最后通過輸出層(Output Layer)和全連接層(fully connected layers,FC),對圖像進行分類,FC 通過softmax 激活函數對輸出作類別概率預測,模型訓練采用交叉熵損失函數進行參數更新優(yōu)化。部件關注DenseNet(partfocused DenseNet,PF-DenseNet)的具體結構參數和輸出大小如表1 PF-DenseNet 的具體網絡結構所示,層結構顯示其對應名稱的具體網絡結構,如Process Layer 的結構為7×7×96-BN-ReLu 加上MaxPool (2×2/s=2),7×7×96 表示一個核大小為7×7 通道數為96 的卷積核,然后進行一個批歸一化[13](batch normalization,BN)和ReLu[14]激活處理,最后經過一個核大小為2×2 步長為2 的最大池化,輸出(96,111,111)表示通道數為96、寬高尺寸為111×111 的輸出特征圖。表1 中有4個Dense Block_x:Dense Block_1、Dense Block_2、Dense Block_3 和Dense Block_4,分別由6、12、3 6 和2 4個基礎層結構塊構成,如Dense Block_1 由6個連續(xù)的基礎層結構:IC-ReLu-1×1×192 加上IC-ReLu-3×3×48 構成。

圖1 細粒度車型識別網絡模型Fig.1 Fine-grained vehicle identification network model

表1 PF-DenseNet 具體網絡結構Table1 PF-DenseNet specific network structure
細粒度車型分類中,類別間的差異極其微小,相比粗粒度車型分類,更關注圖像中微小但十分重要的局部特征,PF-DenseNet 通過Process Layer 對車型特征重復提取加強,獲取了更加有效清晰的部件信息,使得網絡能夠基于車型部件像素信息進行類別預測。
Process Layer 的組成結構如表1 所示,Process Layer 主要由一個核大小為7×7,步長為1 的卷積層以及尺度為2×2,步長為2 的最大池化層組成,卷積層后面進行BN 和ReLu 激活處理。圖2 所示為卷積層操作,輸入特征圖通過卷積核,每次對特征圖上卷積核大小區(qū)域進行卷積操作輸出一個像素值,每次操作移動一步,使特征圖中心部位車輛的9/10 像素被重復卷積提取7 次,加強了對車型部件的特征提取。然后經過BN 和ReLu 層處理,BN 對數據歸一化加快網絡收斂,ReLu 激活函數增加網絡稀疏性。最后利用最大池化層進行下采樣,特征圖大小變?yōu)樵瓉淼?/2,降低后續(xù)網絡計算量。

圖2 卷積操作示意Fig.2 Convolution operation diagram
如圖3 所示為不同DenseNet 對同一車型圖片輸入的不同特征提取效果圖,圖3(a)為PF-DenseNet中密集卷積前經過Process Layer 提取的特征圖,圖3(b)、3(c)分別為DenseNet201 和DenseNet161密集卷積前對圖像的特征提取圖。圖3(a) 通過Process Layer 對圖像同一區(qū)域的重復卷積提取,特征圖更加清晰,保存了更多的部件細節(jié),車標、車燈等鑒別性部件信息被有效的提取出來,使網絡模型最后能夠有效地根據車型部件像素進行分類。

圖3 特征提取圖Fig.3 Feature extraction diagram
密集連接基于跨層連接連通網絡中前后層使得信號可以在輸入層和輸出層之間高速流通的思想,將所有層都進行兩兩通道連接(Cat),使得網絡中的每一層都接收前面所有層的特征作為輸入,盡可能地提取到車型的細節(jié)信息,不僅大幅度減少了網絡的參數量,而且在一定程度上降低梯度消失的風險。神經科學家發(fā)現,神經系統(tǒng)的表征能力與系統(tǒng)中獨立神經元的數量呈正比,獨立神經元構成的獨立神經網絡具有更好的特征表達能力和更高的收斂極限,在CNN 中引入IC 層是獲得獨立神經網絡最快速有效的方式,通過在密集連接中嵌入IC 層構造獨立密集連接,獲得更好的收斂極限。
獨立密集連接的Dense Block 基本結構如圖4所示,在密集卷積前嵌入獨立組件IC:{BN-Dropout},獲得相對獨立的網絡模型,提高模型收斂極限,增加識別準確率[15]。

圖4 獨立密集連接網絡Fig.4 Independent dense connection network
IC 中,BN 通過降低內部協變量偏移,減少內部神經元分布的改變,加速網絡的收斂,BN 公式如式(1)~(4)所示:

首先通過式(1) 求均值μ,式(1) 中xi為第i個神經元的輸入,m表示神經元數目,然后通過式(2)得到方差 σ2。

然后式(3)將輸入進行標準化處理,使輸入服從均值為0,方差為1 的正態(tài)分布,最后通過式(4)對標準化后的值進行平移縮放處理,數據經過式(2)和式(3)的處理后,上一層網絡所學習到的特征分布被破壞,式(4) 引入可學習重構參數 γ和β,讓網絡在訓練時恢復出原始網絡所要學習的特征分布。
Dropout 以概率P線性減弱任何一對神經元之間的相關性,降低網絡每次訓練時的參數量,增強網絡稀疏性,構造相對獨立的神經元激活[16]。
將IC 嵌入到Dense Block 中以及Transition Layer 中,采用{IC-ReLu-Conv}的形式,能夠有效提取車型的高層次信息,提高模型收斂極限,獲得更好的識別準確率。
Stanford Cars-196[3]數據集是目前最常用的細粒度車型識別數據集,圖像數據包含196 類共16 185張汽車圖片,其中訓練集8 144 張,測試集8 041張。每張圖片的標簽有制造商、車輛型號和生產年份3個信息。
訓練前對數據集進行了預處理,將所有圖像裁剪為224×224 大小,訓練時對訓練集做了順時針20°的角度旋轉、水平翻轉的在線數據增強,原圖和增強后的圖像樣例分別如圖5 所示,擴充后的訓練集為20 360 張,通過數據增強提升模型的泛化能力,增強網絡的魯棒性。

圖5 數據增強示例Fig.5 Sample data enhancement diagram
硬件環(huán)境:Intel(R)Xeon(R)Silver 4 110 CP 處理器,內核數32,GeForce GTX 1080Ti 10 GB 顯卡,單精度浮點數為11.34TFLOPS,雙精度浮點數為0.33TFLOPS。軟件環(huán)境:Ubuntu 16 操作系統(tǒng),Python3.6 程序設計語言,PyTorch 深度學習框架。
實驗網絡訓練使用隨機梯度下降(stochastic gradient descent,SGD)方法,在IamgeNet 預訓練權重上進行微調,每訓練一個周期測試一次準確率,批次大小為4,初始學習率(learning rate,Lr)為0.001,10個訓練周期測試準確率不再上升時,Lr 下降為原來的0.1,采用早停策略,50個訓練周期測試準確率沒有上升,訓練自動結束。模型評價指標為準確率(accuracy)、查全率(recall) 和F1。準確率公式如式(5)所示:

式中:T表示測試集中預測正確的樣本數;R表示測試集樣本總數。

式中:TP 表示第i類預測正確的樣本數;Ri表示第i類測試樣本總數;n為樣本類別數。查全率表示了樣本類別的平均準確率。

式中:precision 表示查準率;FPi表示預測為第i類的非i類樣本數。式(8)中F1是accuracy 和recall的調和平均。
2.3.1 獨立組件對實驗的影響
提出的PF-DenseNet 的密集卷積結構采用:{IC-ReLu-Conv},融合了獨立組件,為了驗證獨立組件對提出的基于部件關注DenseNet 在細粒度車型識別上的影響,對PF-DenseNet 控制單一變量IC,在同一訓練環(huán)境下,觀察PF-DenseNet 包含IC和不含IC 時,測試準確率隨訓練周期變化的情況。
如圖6 所示為獨立組件對模型的影響,初始階段,兩種模型的測試準確率變化基本相同,隨著訓練周期不斷增加,迭代10 次后包含IC 的模型具有更高的測試準確率,60 次迭代后,不含IC 的模型測試準確率基本穩(wěn)定不再上升,而包含IC 的模型依然緩慢上升,分析可知獨立組件嵌入文中模型后,能夠有效提高網絡的收斂極限,增加識別準確率。

圖6 獨立組件對PF-DenseNet 的影響Fig.6 Impact of individual components on the model
2.3.2 與普通密集連接網絡的對比
圖7 給出了車型3 種不同姿態(tài)下(側面、正面和背面)的3 種DenseNet 熱力圖,觀察不同密集連接網絡DenseNet201、DenseNet161 和PFDenseNet 的熱力圖,圖7(b)、7(c)分別為DenseNet201、DenseNet161 的熱力圖,通過訓練關注車型的整體特征,無法對鑒別性部件進行有效的關注,提出的基于部件關注的密集卷積網絡模型能夠關注車輛的車燈、車標等鑒別性部位,如圖7(d)所示,圖7(d)側面圖中,熱力圖深紅色區(qū)域主要集中在車燈和車標,說明車燈、車標區(qū)域像素對最后分類結果的貢獻最大,圖7(d)正面和背面熱力圖中,車燈部件特征對分類起到了最大作用。從圖7 比較可看出,提出的模型能夠基于這些關鍵性車型部件,對車輛進行分類,進而實現對細粒度車型的有效識別。

圖7 不同DenseNet 熱力圖Fig.7 Different DenseNet heat maps
圖8 為3 種DenseNet 網絡在Cars-196 上的訓練和測試準確率隨訓練周期變化的折線圖。
圖8(a)為3 種DenseNet 測試準確率變化圖,圖中顯示訓練周期在15 次以后PF-DenseNet 的測試準確率提升速度明顯高于DenseNet201 和DenseNet161,在訓練40 次以后3 種DenseNet 的測試準確率都趨于穩(wěn)定,PF-DenseNet 的最終測試準確率分別比DenseNet201 和DenseNet161 提高了1.2%、1%。在訓練過程中相較于原始DenseNet201 和DenseNet161 網絡,PF-DenseNet 的訓練準確率和測試準確率的差距更小,具有更好的擬合效果。


圖8 不同DenseNet 準確率變化圖Fig.8 Diagrams of DenseNet accuracy variation
2.3.3 不同方法對比
PF-DenseNet 和在本實驗數據集Cars-196 上的其他方法進行比較,如表2 所示,Zhao 等[17]提出一個多樣化的視覺注意力網絡(diversified visual attention networks,DVAN)來解決細粒度車型分類的問題,在學習定位區(qū)分區(qū)域時大大減少了對強監(jiān)督信息的依賴,追求注意力的多樣性,最大限度地收集有區(qū)別的信息,但精度只有87.1%,遠低于本文方法。馬力等提出Sparse B-CNN[8],通過在每個特征通道引入比例因子,按比例因子的大小判別特征通道的重要性并進行剪枝,減弱過擬合提高特征的顯著性,準確率為91.0%,由于網絡訓練中需要進行剪枝,操作較為復雜。Fu 等[7]采用3 種尺度作為輸入,以相互增強的方式遞歸學習車型區(qū)域注意力和區(qū)域的特征表示,準確率為92.5%,比本文方法低2.5%。Li 等[18]提出了一種迭代矩陣平方根歸一化方法用于全局協方差共用網絡的快速端到端訓練,并運用在ResNet101上,獲得了93.3%的精度,但該方法大大增加了網絡參數,訓練時間也過長。文獻[19]提出互通道損失(mutual channel loss,MC-Loss),由鑒別分量和多樣性分量兩個特定信道的分量組成,訓練每個特征通道反映針對特定類的不同局部區(qū)分區(qū)域,以B-CNN 為基礎框架,獲得了94.4%的準確率,準確率較高,但在分量中引入了需要額外尋優(yōu)的超參數,模型訓練較繁瑣。PF-DenseNet 通過對車型區(qū)域特征反復提取,獲得足夠多的部件信息,使模型能夠基于部件信息分類,再通過獨立密集卷積得到抽象特征,提高收斂極限,獲得了95.0%的準確率。表2 還顯示了PF-DenseNet 與其他經典DCNN 在Cars-196 上查全率和F1對比,PFDenseNet 較于Inception-ResNet-v2、ResNet152、DenseNet201 和DenseNet161 查全率分別提升了3.7%、2.4%、1.1% 和1%,F1分別提升了3.7%、2.3%、1%和0.9%。

表2 不同方法在Cars-196 數據集上的準確率對比 Table 2 Comparisons of accuracy of different methods in Cars-196 data set %
圖9 所示為PF-DenseNet 與其他DCNN 準確率和參數量的對比,PF-DenseNet 的參數量遠小于ResNet152 和Inception-ResNet-v2,DenseNet161和DenseNet201 的參數量略小于PF-DenseNet,但精度遠小于PF-DenseNet,Inception-ResNet-v2、ResNet152、DenseNet201 和DenseNet161 準確率分別為91.3%、92.6%、93.8%和94.0%,分別比本文方法降低3.7%、2.4%、1.2%和1%,綜合準確率、查全率、F1和參數量來看,文中方法獲得了較好的效果。

圖9 PF-DenseNet 與其他DCNN 準確率和參數數量對比Fig.9 Comparison of PF-PenseNet and other DCNN accuracy and number of parameters
為了實現細粒度車型識別,提高細粒度車型識別準確率,提出一種基于部件關注的DenseNet 細粒度車型識別網絡模型,通過Process Layer 對車型部件特征反復提取加強,獲取更多的部件細節(jié)信息,然后通過融合獨立組件的密集卷積網絡,進一步提取高維特征,嵌入獨立組件提高模型收斂極限。該模型能夠對細粒度車型的車燈、車標等鑒別性部件進行有效關注,根據車型部件像素信息進行分類,在Stanford Cars-196 公開數據集上獲得了目前最優(yōu)的識別準確率、查全率和F1,驗證了本文模型在細粒度車型識別上的有效性。但文中方法著重關注車型細節(jié)信息,忽視了全局特征對車型分類的作用,因此下一步工作是在關注車型鑒別性部件的基礎上結合車型全局特征,進一步提高模型的識別準確率。