晏世武, 羅金良, 嚴 慶
(南華大學 機械工程學院, 湖南 衡陽 421001)
車型分類[1]主要研究車輛的結構化信息,能夠根據車型、車身顏色、車身標志性文字或字母等特征對車輛進行分類,是智能交通系統中的重要功能。但車型分類易受到光照、天氣、拍攝角度等因素的影響,面臨著很大的挑戰,長期以來即已成為了國內外學者研究的熱點。
自從AlexNet[2]贏得了2012的ILSVRC(Large Visual Recognition Challenge)競賽以來,CNN[3-5]現已廣泛用于視覺圖像的分類任務中,并取得了較傳統人工選取特征基礎上的更加準確分類效果。目前研究中,CNN網絡層次在不斷增加,參數規模也越來越大,這就極大地增加了人工成本,并且參數規模過大還將影響該模型在實踐中的可行性。因此,為了使用較少的數據和快速訓練更深的模型,學者們開始使用遷移學習來搭建分類器,然而,遷移學習卻會降低特定分類任務準確率,而重新訓練深層次的網絡模型的所有參數則需要高性能計算機的技術支持。基于此,為了訓練出高精度的結構簡單的車型分類模型,本文擬從CNN的基本概念出發,設計研發最符合車型分類的結構簡單的分類器。有針對性地,本文的研究工作可簡述如下。
(1)為了測試收集數據是否可以用于訓練,使用遷移模型,再用ImageNet[6]數據集訓練好的深層次的模型進行訓練,觀察測試集的準確率。
(2)為了解決數據樣本過少的問題,對原始數據進行數據增強研究。
(3)構建了網絡的卷積層、BN層、池化層和全連接層,通過調整卷積層數和全連接層神經元個數來構造出針對本文車型數據集最好的網絡結構。
(4)使用增強的數據去訓練設計的網絡結構,并檢測數據的準確率。
本次研究中,采用遷移學習來檢測經典圖像分類模型在本文數據集上的仿真性能,并設計構建卷積網絡結構進行訓練,旨在達到使用較淺層次的網絡結構也能獲得較深網絡層次的結果性能的目的。
為了使得較淺層次的車型分類CNN模型的精度也能媲美深層次的CNN遷移模型的車型分類精度,本文從CNN的概念出發,重新設計CNN車型分類模型。將指定圖像作為CNN模型的輸入,依次經過卷積層、BN[7]、Relu、max_pool、dropout[8]、Fc,綜上處理后輸出經過Softmax激活進行概率空間映射,最終輸出每種車型的置信度,概率越大說明該輸入的圖像數據屬于對應車型的可能性越大。本文則以4層卷積層為例,研發得出的基本CNN結構如圖1所示。
本文原始數據來自于ImageNet大型數據庫中11種車型數據圖像,由于ImageNet數據收集的年份較早,導致一些車型圖像模糊,跡近無法辨認,本文剔除一些無法用于訓練的車型圖像,又考慮到CNN需要高清的圖片作為訓練的依據,因此本文從網絡上下載近原始數據五分之一的高清圖片加入到網絡模型的訓練和測試中。各種車型數量見表1。由表1可知,總共有7 194張圖片。
根據CNN對數據數量的要求,本文搜集的圖像數量是不夠的,因此就要用到數據增強技術。數據增強是一種能夠對原始圖像進行翻轉、旋轉、縮放、裁剪、平移等圖像操作使圖像數量增多的技術??紤]車輛在道路上行駛的實際狀態,本文采用平移、小角度旋轉、水平翻轉三種操作來進行數據增強,操作示例如圖2所示。使用數據增強技術后圖片的數目即從7 194張增加到37 864張,本文選取每一類的前11張圖片進行展示,如圖3所示。
在CNN模型中,通常將原始數據劃分為訓練集和測試集。其中,訓練集用于模型的訓練,測試集用于模型性能的檢測。對于百萬級別的數據量,CNN采用99:1的方式劃分訓練集和測試集,而對于萬級別的數據量,采用4:1的方式劃分,即每一類的80%的圖片作為訓練集訓練模型,每一類的20%的圖片作為測試集檢測模型的性能。


表1 各種車輛的圖片數量


本文車型分類模型是在Google的Tensorflow平臺上搭建的。Tensorflow是一個可廣泛用于機器學習和深度學習,并且基于數據流編程的數學符號系統,在該平臺上能夠快速搭建CNN模型。CNN需要Nvidia顯卡來加速訓練,本文實驗中的計算機采用Windows 10 Enterprise 64位系統,其硬件配置見表2。

表2 實驗用計算機配置參數
為快速訓練模型,研究中使用遷移模型來訓練原始數據。遷移學習通過固定已經學習好的參數和改變想要學習的網絡層,快速訓練出針對特定任務的網絡模型。本文中的遷移學習共同參數見表3。本文選用3個較深層次的CNN模型,分別是VGG16、InceptionV3和ResNet50。這3個網絡在測試集上的準確率見表4。

表3 遷移學習共同參數

表4 3種遷移模型下測試集的準確率
由表4分析可知,在3種網絡上訓練一萬次,訓練集上的損失值已經很小并趨于穩定,訓練集的準確率非常高,而在測試集上的表現差強人意,說明模型已經出現了過擬合。在3個模型中,性能表現最好的是InceptionV3,這與其網絡模型的卷積核大小有關,InceptionV3采用3種不同的卷積核,能夠得到傳入網絡結構圖片不同大小的感受野,在最后的卷積層中也拼接了不同尺度的特征;而對于車型中的警車、救火車和出租車來說,其分類關鍵點在于對車頂閃亮標志的識別和車身上文字與字母的不同,警車與出租車的不同在于車頂上有紅藍閃爍燈,出租車頂上的是“TAXI”閃爍字樣;警車與救護車的不同在于車身上有“POLICE”的標識,而救護車車身上有“AMBULANCE”標識,類似這種細粒度的圖像識別采用不同大小的卷積核能取得更好的結果。
遷移學習能夠快速訓練出針對特定任務的模型結構,但是在測試集的準確率上還不能達到工程實踐的要求。為滿足高準確率的網絡模型,需要對特定任務重新訓練所有層的參數,然而較深層次的卷積模型結構需要非常大的數據量和高性能顯卡來加速訓練,并且不能很好地應用于實踐。為此,本文從CNN的基本概念出發,設計較淺不同層數的模型結構來訓練模型,并且對原始數據進行增強以達到CNN訓練的大數據量的要求,不同層數的模型結構的共同參數詳見表5。

表5 不同卷積層數的共同參數
不同卷積層層數模型都采用(3,3)大小的卷積核來進行卷積,其測試效果見表6。

表6 不同卷積層數下數據集的準確率
本實驗分別采用卷積層數為3、4和5的網絡模型來訓練增強的數據,其網絡模型都出現過擬合現象,表現較好的是卷積層數為4的網絡模型。為了說明對于本文車型數據來說,卷積核大小為3×3的卷積層不斷堆砌易造成模型的過擬合,本文又進行了AlexNet和VGG16的實驗,實驗結果見表7。

表7 AlexNet和VGG16訓練模型精度
AlexNet和VGG16都是經典的CNN結構,其中AlexNet卷積深度為5,VGG16的卷積深度為13,然而這兩種模型的精度較卷積層數為4的模型低,這是由于模型過擬合造成的,因此對于本文數據來說,卷積層數為4的模型較為合適。
為進一步降低過擬合現象,需要減少卷積層數為4中的全連接層的神經元個數重新訓練模型來增強模型的魯棒性,其測試效果見表8。當全連接層的神經元個數為256時,在神經元個數為1 024的模型上其精度增加了約0.7%,說明調整神經元個數可以減輕模型的過擬合問題。

表8 不同神經元個數下測試數據的準確率
(1)從深度學習的角度出發,快速探究了CNN在車型分類中的應用,使用遷移學習對本文的車型原始數據集進行簡單的訓練并測試,在使用InceptionV3、ResNet50和VGG16三種模型進行訓練和測試時,發現InceptionV3模型結構對車型分類的結果表現最好,其測試集的準確率達到85.91%。
(2) 從CNN基本概念出發,探究卷積層數對車型分類精度的影響,通過分析經典的CNN的模型結構,設計了本文的基本卷積神經網絡結構。本文的CNN結構由卷積層、BN層、最大池化層、Dropout層、全連接層和softmax層所組成,使用帶有約束權重的L2 作為損失函數,并使用Adam優化算法對模型參數進行更新。測試結果表明對于本文的車型數據集,卷積層數為4且全連接層的神經元個數為256的模型結構的精度表現得較好,最終的平均精度為85.15%,能達到使用InceptionV3遷移學習訓練的效果,即較淺網絡結構在特定數據集能與較深結構相媲美。