晏世武, 羅金良, 嚴(yán) 慶
(南華大學(xué) 機(jī)械工程學(xué)院, 湖南 衡陽 421001)
車型分類[1]主要研究車輛的結(jié)構(gòu)化信息,能夠根據(jù)車型、車身顏色、車身標(biāo)志性文字或字母等特征對車輛進(jìn)行分類,是智能交通系統(tǒng)中的重要功能。但車型分類易受到光照、天氣、拍攝角度等因素的影響,面臨著很大的挑戰(zhàn),長期以來即已成為了國內(nèi)外學(xué)者研究的熱點。
自從AlexNet[2]贏得了2012的ILSVRC(Large Visual Recognition Challenge)競賽以來,CNN[3-5]現(xiàn)已廣泛用于視覺圖像的分類任務(wù)中,并取得了較傳統(tǒng)人工選取特征基礎(chǔ)上的更加準(zhǔn)確分類效果。目前研究中,CNN網(wǎng)絡(luò)層次在不斷增加,參數(shù)規(guī)模也越來越大,這就極大地增加了人工成本,并且參數(shù)規(guī)模過大還將影響該模型在實踐中的可行性。因此,為了使用較少的數(shù)據(jù)和快速訓(xùn)練更深的模型,學(xué)者們開始使用遷移學(xué)習(xí)來搭建分類器,然而,遷移學(xué)習(xí)卻會降低特定分類任務(wù)準(zhǔn)確率,而重新訓(xùn)練深層次的網(wǎng)絡(luò)模型的所有參數(shù)則需要高性能計算機(jī)的技術(shù)支持?;诖?,為了訓(xùn)練出高精度的結(jié)構(gòu)簡單的車型分類模型,本文擬從CNN的基本概念出發(fā),設(shè)計研發(fā)最符合車型分類的結(jié)構(gòu)簡單的分類器。有針對性地,本文的研究工作可簡述如下。
(1)為了測試收集數(shù)據(jù)是否可以用于訓(xùn)練,使用遷移模型,再用ImageNet[6]數(shù)據(jù)集訓(xùn)練好的深層次的模型進(jìn)行訓(xùn)練,觀察測試集的準(zhǔn)確率。
(2)為了解決數(shù)據(jù)樣本過少的問題,對原始數(shù)據(jù)進(jìn)行數(shù)據(jù)增強(qiáng)研究。
(3)構(gòu)建了網(wǎng)絡(luò)的卷積層、BN層、池化層和全連接層,通過調(diào)整卷積層數(shù)和全連接層神經(jīng)元個數(shù)來構(gòu)造出針對本文車型數(shù)據(jù)集最好的網(wǎng)絡(luò)結(jié)構(gòu)。
(4)使用增強(qiáng)的數(shù)據(jù)去訓(xùn)練設(shè)計的網(wǎng)絡(luò)結(jié)構(gòu),并檢測數(shù)據(jù)的準(zhǔn)確率。
本次研究中,采用遷移學(xué)習(xí)來檢測經(jīng)典圖像分類模型在本文數(shù)據(jù)集上的仿真性能,并設(shè)計構(gòu)建卷積網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行訓(xùn)練,旨在達(dá)到使用較淺層次的網(wǎng)絡(luò)結(jié)構(gòu)也能獲得較深網(wǎng)絡(luò)層次的結(jié)果性能的目的。
為了使得較淺層次的車型分類CNN模型的精度也能媲美深層次的CNN遷移模型的車型分類精度,本文從CNN的概念出發(fā),重新設(shè)計CNN車型分類模型。將指定圖像作為CNN模型的輸入,依次經(jīng)過卷積層、BN[7]、Relu、max_pool、dropout[8]、Fc,綜上處理后輸出經(jīng)過Softmax激活進(jìn)行概率空間映射,最終輸出每種車型的置信度,概率越大說明該輸入的圖像數(shù)據(jù)屬于對應(yīng)車型的可能性越大。本文則以4層卷積層為例,研發(fā)得出的基本CNN結(jié)構(gòu)如圖1所示。
本文原始數(shù)據(jù)來自于ImageNet大型數(shù)據(jù)庫中11種車型數(shù)據(jù)圖像,由于ImageNet數(shù)據(jù)收集的年份較早,導(dǎo)致一些車型圖像模糊,跡近無法辨認(rèn),本文剔除一些無法用于訓(xùn)練的車型圖像,又考慮到CNN需要高清的圖片作為訓(xùn)練的依據(jù),因此本文從網(wǎng)絡(luò)上下載近原始數(shù)據(jù)五分之一的高清圖片加入到網(wǎng)絡(luò)模型的訓(xùn)練和測試中。各種車型數(shù)量見表1。由表1可知,總共有7 194張圖片。
根據(jù)CNN對數(shù)據(jù)數(shù)量的要求,本文搜集的圖像數(shù)量是不夠的,因此就要用到數(shù)據(jù)增強(qiáng)技術(shù)。數(shù)據(jù)增強(qiáng)是一種能夠?qū)υ紙D像進(jìn)行翻轉(zhuǎn)、旋轉(zhuǎn)、縮放、裁剪、平移等圖像操作使圖像數(shù)量增多的技術(shù)??紤]車輛在道路上行駛的實際狀態(tài),本文采用平移、小角度旋轉(zhuǎn)、水平翻轉(zhuǎn)三種操作來進(jìn)行數(shù)據(jù)增強(qiáng),操作示例如圖2所示。使用數(shù)據(jù)增強(qiáng)技術(shù)后圖片的數(shù)目即從7 194張增加到37 864張,本文選取每一類的前11張圖片進(jìn)行展示,如圖3所示。
在CNN模型中,通常將原始數(shù)據(jù)劃分為訓(xùn)練集和測試集。其中,訓(xùn)練集用于模型的訓(xùn)練,測試集用于模型性能的檢測。對于百萬級別的數(shù)據(jù)量,CNN采用99:1的方式劃分訓(xùn)練集和測試集,而對于萬級別的數(shù)據(jù)量,采用4:1的方式劃分,即每一類的80%的圖片作為訓(xùn)練集訓(xùn)練模型,每一類的20%的圖片作為測試集檢測模型的性能。
表1 各種車輛的圖片數(shù)量
本文車型分類模型是在Google的Tensorflow平臺上搭建的。Tensorflow是一個可廣泛用于機(jī)器學(xué)習(xí)和深度學(xué)習(xí),并且基于數(shù)據(jù)流編程的數(shù)學(xué)符號系統(tǒng),在該平臺上能夠快速搭建CNN模型。CNN需要Nvidia顯卡來加速訓(xùn)練,本文實驗中的計算機(jī)采用Windows 10 Enterprise 64位系統(tǒng),其硬件配置見表2。
表2 實驗用計算機(jī)配置參數(shù)
為快速訓(xùn)練模型,研究中使用遷移模型來訓(xùn)練原始數(shù)據(jù)。遷移學(xué)習(xí)通過固定已經(jīng)學(xué)習(xí)好的參數(shù)和改變想要學(xué)習(xí)的網(wǎng)絡(luò)層,快速訓(xùn)練出針對特定任務(wù)的網(wǎng)絡(luò)模型。本文中的遷移學(xué)習(xí)共同參數(shù)見表3。本文選用3個較深層次的CNN模型,分別是VGG16、InceptionV3和ResNet50。這3個網(wǎng)絡(luò)在測試集上的準(zhǔn)確率見表4。
表3 遷移學(xué)習(xí)共同參數(shù)
表4 3種遷移模型下測試集的準(zhǔn)確率
由表4分析可知,在3種網(wǎng)絡(luò)上訓(xùn)練一萬次,訓(xùn)練集上的損失值已經(jīng)很小并趨于穩(wěn)定,訓(xùn)練集的準(zhǔn)確率非常高,而在測試集上的表現(xiàn)差強(qiáng)人意,說明模型已經(jīng)出現(xiàn)了過擬合。在3個模型中,性能表現(xiàn)最好的是InceptionV3,這與其網(wǎng)絡(luò)模型的卷積核大小有關(guān),InceptionV3采用3種不同的卷積核,能夠得到傳入網(wǎng)絡(luò)結(jié)構(gòu)圖片不同大小的感受野,在最后的卷積層中也拼接了不同尺度的特征;而對于車型中的警車、救火車和出租車來說,其分類關(guān)鍵點在于對車頂閃亮標(biāo)志的識別和車身上文字與字母的不同,警車與出租車的不同在于車頂上有紅藍(lán)閃爍燈,出租車頂上的是“TAXI”閃爍字樣;警車與救護(hù)車的不同在于車身上有“POLICE”的標(biāo)識,而救護(hù)車車身上有“AMBULANCE”標(biāo)識,類似這種細(xì)粒度的圖像識別采用不同大小的卷積核能取得更好的結(jié)果。
遷移學(xué)習(xí)能夠快速訓(xùn)練出針對特定任務(wù)的模型結(jié)構(gòu),但是在測試集的準(zhǔn)確率上還不能達(dá)到工程實踐的要求。為滿足高準(zhǔn)確率的網(wǎng)絡(luò)模型,需要對特定任務(wù)重新訓(xùn)練所有層的參數(shù),然而較深層次的卷積模型結(jié)構(gòu)需要非常大的數(shù)據(jù)量和高性能顯卡來加速訓(xùn)練,并且不能很好地應(yīng)用于實踐。為此,本文從CNN的基本概念出發(fā),設(shè)計較淺不同層數(shù)的模型結(jié)構(gòu)來訓(xùn)練模型,并且對原始數(shù)據(jù)進(jìn)行增強(qiáng)以達(dá)到CNN訓(xùn)練的大數(shù)據(jù)量的要求,不同層數(shù)的模型結(jié)構(gòu)的共同參數(shù)詳見表5。
表5 不同卷積層數(shù)的共同參數(shù)
不同卷積層層數(shù)模型都采用(3,3)大小的卷積核來進(jìn)行卷積,其測試效果見表6。
表6 不同卷積層數(shù)下數(shù)據(jù)集的準(zhǔn)確率
本實驗分別采用卷積層數(shù)為3、4和5的網(wǎng)絡(luò)模型來訓(xùn)練增強(qiáng)的數(shù)據(jù),其網(wǎng)絡(luò)模型都出現(xiàn)過擬合現(xiàn)象,表現(xiàn)較好的是卷積層數(shù)為4的網(wǎng)絡(luò)模型。為了說明對于本文車型數(shù)據(jù)來說,卷積核大小為3×3的卷積層不斷堆砌易造成模型的過擬合,本文又進(jìn)行了AlexNet和VGG16的實驗,實驗結(jié)果見表7。
表7 AlexNet和VGG16訓(xùn)練模型精度
AlexNet和VGG16都是經(jīng)典的CNN結(jié)構(gòu),其中AlexNet卷積深度為5,VGG16的卷積深度為13,然而這兩種模型的精度較卷積層數(shù)為4的模型低,這是由于模型過擬合造成的,因此對于本文數(shù)據(jù)來說,卷積層數(shù)為4的模型較為合適。
為進(jìn)一步降低過擬合現(xiàn)象,需要減少卷積層數(shù)為4中的全連接層的神經(jīng)元個數(shù)重新訓(xùn)練模型來增強(qiáng)模型的魯棒性,其測試效果見表8。當(dāng)全連接層的神經(jīng)元個數(shù)為256時,在神經(jīng)元個數(shù)為1 024的模型上其精度增加了約0.7%,說明調(diào)整神經(jīng)元個數(shù)可以減輕模型的過擬合問題。
表8 不同神經(jīng)元個數(shù)下測試數(shù)據(jù)的準(zhǔn)確率
(1)從深度學(xué)習(xí)的角度出發(fā),快速探究了CNN在車型分類中的應(yīng)用,使用遷移學(xué)習(xí)對本文的車型原始數(shù)據(jù)集進(jìn)行簡單的訓(xùn)練并測試,在使用InceptionV3、ResNet50和VGG16三種模型進(jìn)行訓(xùn)練和測試時,發(fā)現(xiàn)InceptionV3模型結(jié)構(gòu)對車型分類的結(jié)果表現(xiàn)最好,其測試集的準(zhǔn)確率達(dá)到85.91%。
(2) 從CNN基本概念出發(fā),探究卷積層數(shù)對車型分類精度的影響,通過分析經(jīng)典的CNN的模型結(jié)構(gòu),設(shè)計了本文的基本卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。本文的CNN結(jié)構(gòu)由卷積層、BN層、最大池化層、Dropout層、全連接層和softmax層所組成,使用帶有約束權(quán)重的L2 作為損失函數(shù),并使用Adam優(yōu)化算法對模型參數(shù)進(jìn)行更新。測試結(jié)果表明對于本文的車型數(shù)據(jù)集,卷積層數(shù)為4且全連接層的神經(jīng)元個數(shù)為256的模型結(jié)構(gòu)的精度表現(xiàn)得較好,最終的平均精度為85.15%,能達(dá)到使用InceptionV3遷移學(xué)習(xí)訓(xùn)練的效果,即較淺網(wǎng)絡(luò)結(jié)構(gòu)在特定數(shù)據(jù)集能與較深結(jié)構(gòu)相媲美。