張小雪 黃巍
(武漢工程大學計算機科學與工程學院,湖北 武漢 430205)
交通標志識別系統是搭載在行駛的車輛上用來識別前方道路中的交通標志目標,將識別到的信息反饋給駕駛員,幫助駕駛員及時做出判斷,輔助駕駛,避免因為駕駛員注意力不集中,忽略交通標志等帶來的問題,減少事故的發生。設計一個識別準確率高和識別速度快的交通標志識別模型是當下研究的熱點,識別的準確率高可以避免識別到錯誤的信息而引發交通安全事故。由于車輛是高速行駛,需要及時地將交通標志信息提供給駕駛員,所以識別速度要快。
交通標志識別方法主要分為傳統的識別方法和基于卷積神經網絡的方法[1],傳統的識別方法先提取手工設計的特征,然后訓練分類器對交通標志目標進行分類,例如:吳迪等人[2]提出基于HOGv-CLBP特征融合和ELM的交通標志識別方法,該方法使用HOG特征提取圖像的邊緣信息,使用LBP特征提取圖像的內部紋理信息,然后將提取到的兩種信息進行特征融合,最后使用ELM分類器對交通標志進行分類,在GTSRB數據集上進行測試,識別準確率為92.88%,識別每張圖片的時間為7.2ms。Andrzej Ruta等人[3]使用HOG特征提取圖像中交通標志的特征,然后使用SVM分類器進行交通標志訓練和分類,在GTSRB數據集上進行測試,識別準確率為95.68%,識別每張圖片的時間為176ms。傳統的交通標志識別方法需要手工設計特征,手工設計的特征對復雜場景的適應性不強,并且手工設計的特征需要大量的先驗知識,相比手工設計特征,在訓練過程中卷積神經網絡可以自主學習和調整來提取特征和識別[4],可以在識別任務中得到更高的準確率,具有更好的魯棒性?;诰矸e神經網絡的方法,例如:孔月瑤等人[5]使用非對稱雙通道卷積神經網絡來識別交通標志,在GTSRB數據集上的準確率達到97.89%,識別每張圖片的時間為14ms。伍錫如等人[6]結合Single-linkage和CNN來對交通標志進行識別,在GTSRB數據庫上的準確率為98.51%,識別每張圖片的時間為20ms。Girasan等人[7]將多個CNN并列在一起,構造多列深度CNN,在GTSRB數據庫上實現了很好的分類效果,準確率達到了99.46%,但是識別速度不滿足實際應用需求,識別每張圖片需要690ms。隨著交通標志識別的準確率越來越高,模型也越來越復雜,識別速度也越來越慢,為了既達到較高的識別準確率又達到較快的識別速度,本文設計一種簡單高效的識別模型用于交通標志識別。該模型使用了改進的Inception模塊以及多尺度特征融合方式增強網絡的特征提取能力,使用全局平均池化代替全連接層減小模型的參數量,簡化模型的結構,采用批量歸一化對數據進行歸一化處理,加速網絡的訓練。
自從卷積神經網絡廣泛應用于圖像分類領域,并取得了很多成果后,人們經常構造更深層的網絡去提高模型的準確率,比如VGG16網絡。但是隨著卷積神經網絡深度的加深,模型的性能可能退化,并且需要龐大的計算量,這會導致網絡識別速度下降。針對以上問題,Inception模塊被提出,它通過增加網絡的寬度來提高網絡的識別性能,Inception V1模塊如圖1所示。它對輸入特征圖做不同大小的卷積運算,然后拼接運算結果,使得網絡對尺度的適應性增強了,每層的信息變得更加豐富。一般數據集中目標對象的尺寸或多或少會存在差異,而在多個分支上采用不同大小的卷積核則可以很好地適應這種差異。在構建卷積神經網絡時,Inception模塊的多分支結構可以避免簡單地堆疊卷積層,引入更多的非線性,減小網絡過深帶來的過擬合風險。

圖1 Inception V1
為了進一步減少網絡的參數量,Inception V3模塊在Inception V1的基礎上被提出,如圖2所示。將卷積核分解成非對稱卷積,比如將3×3大小的卷積核分解成1×3和3×1的兩個非對稱的串聯卷積核,采用非對稱卷積核的參數量只為分解前的參數量的2/3倍,將節省大約33%的參數量,并且網絡的層數也加深了,增強了網絡學習特征的能力。

圖2 Inception V3
本文在設計識別模型時會借鑒Inception V1和Inception V3的思想,使用不同尺寸的卷積核對輸入特征圖提取特征,然后拼接所有的運算結果,使得網絡的適應性更強以及每層的特征信息更豐富。因為設計的識別模型的層數相對較少,所以本文設計的Inception模塊不會采用1×1大小的卷積核對通道數進行壓縮來使模型的參數量減小,但是會通過非對稱卷積減小模型的參數量。本文在構建卷積神經網絡識別模型時使用的Inception模塊如圖3所示。

圖3 改進后的Inception模塊
在卷積神經網絡中使用多尺度特征融合可以增強特征的表達能力,提高網絡模型的識別性能。當在卷積神經網絡中不使用多尺度特征融合時,高層網絡提取到的特征對目標細節的表達能力不強,這會導致識別精度不高。通過多尺度特征融合方式,卷積神經網絡可以結合底層特征和高層特征的多方面特征信息,使得融合后的高層特征圖里既有位置等細節信息又有語義等高級信息,使得網絡表達特征的能力增強,可以提高網絡的識別精度。圖4是卷積神經網絡中的多尺度特征融合示意圖。

圖4 多尺度特征融合
本文在設計識別模型時會使用多尺度特征融合,為了避免識別目標經過多次下采樣后導致特征丟失,通過下采樣拼接融合底層特征與高層特征,使得高層特征對目標的表達能力增強,提高模型的識別精度。
在卷積神經網絡中往往會使用多個全連接層,如果輸入圖像的尺寸很大,即使經過多個卷積層和池化層后,在與全連接層進行連接時也會使得全連接層有過多的參數,網絡不容易訓練,也會出現過擬合現象。為了解決這些問題,可以使用全局平均池化代替全連接層,它的運算過程如圖5所示,設置池化核的長和寬與輸入特征圖相等,然后對特征圖的所有像素點求平均值后輸出,這樣會使得輸入特征圖被降采樣到1×1×C,從而達到減小模型參數量的目的。

圖5 全局平均池化
本文設計識別模型時會使用全局平均池化代替卷積神經網絡中的全連接層,簡化模型的結構,減少網絡的參數量。
卷積神經網絡訓練時會通過反向傳播更新每一層網絡的參數,這將導致每一層網絡的數據分布會一直發生變化,這會降低網絡的訓練速度。針對該現象,本文采用批量歸一化對識別模型進行優化處理。批量歸一化(Batch Normalization,BN)方法可以統一分散的數據,在卷積神經網絡中激活函數之前使用批量歸一化方法可以規整每一層的計算結果到統一區間,避免數據發散,使得網絡能夠快速收斂,網絡訓練過程更加穩定,避免出現梯度消失或者梯度爆炸的問題。BN算法在每層輸入時加上批量歸一化層,使其每一層均值為0,標準差為1,保證數據穩定分布。BN算法步驟如下:
(1)輸入:一個批量的樣本:B={x1,x2,…xm}
(2)輸出:yi=BNγ,β()xi,具體步驟:
a)計算批量B的均值:μB=
d)進行縮放和平移:yi=
本章在設計識別模型時使用BN算法,將BN層添加在每一個激活函數之前,加快模型的收斂速度。
本文借鑒Inception模塊,多尺度特征融合,全局平均池化的思想,設計了如圖6所示的識別模型。并且在識別模型中采用BN算法來加速訓練,使用relu激活函數。

圖6 識別模型的整體結構
識別模型一共有9層,包括4個卷積層、3個最大池化層、1個全局平均池化層以及1個全連接層(使用softmax進行分類),具體說明如下:
(1)第一層和第七層:卷積層,卷積核大小為3×3,卷積核的個數分別為64、256;
(2)第二、四、六層:最大池化層,池化核的大小為2×2,步長為2,對輸入特征圖進行下采樣;
(3)第三層和第五層:改進后的Inception模塊,它由四部分組成,第一部分是卷積層,卷積核大小為1×1;第二部分是非對稱卷積,卷積核大小分別為1×3、3×1;第三部分是非對稱卷積,卷積核大小分別為1×5、5×1;第四部分先是平均池化層,池化核大小為3×3,然后是卷積層,卷積核大小為1×1。第三層和第五層輸出的特征圖數目分別為128、256;
(4)第八層是全局平均池化層,代替全連接層減少模型的參數量;
(5)第九層是全連接層,使用softmax激活函數進行分類;
(6)特征融合:使用平均池化對第四層最大池化層輸出的特征圖進行下采樣,然后使用特征拼接的方式將其與第六層最大池化層輸出的特征圖進行特征融合,增強網絡表達特征的能力。
德國交通標志識別數據集(GTSRB)廣泛應用于交通標志識別研究中,它包含43類交通標志,數據集中一共有51839張圖片,其中有39309張訓練集圖片和12630張測試集圖片。
本次實驗在服務器上訓練,服務器采用的操作系統為Ubuntu系統,版本為16.04,服務器上有4個型號為NVIDIA 1080Ti的GPU。識別模型算法由Keras深度學習框架和TensorFlow開源庫實現,編程語言為python3.8。模型的訓練參數設置如表1所示。

表1 模型訓練參數設置
識別模型在GTSRB數據集上訓練時的準確率和損失變化曲線如圖7所示。由圖7可知,在訓練的前幾輪中模型的損失不斷下降,準確率逐步提升,隨著訓練輪數的增加,模型的準確率趨近于1,模型的損失趨向于0。

圖7 準確率和損失變化曲線
將訓練好的模型對GTSRB數據集中的12630張測試集圖片進行測試,得到模型的識別準確率為99.6%,識別完所有的測試圖片需要2.8s,識別每張圖片所需的時間大約為0.22ms。實驗結果表明,本文設計的識別模型的識別準確率高,識別速度快。
為了驗證識別模型的結構優勢,進行自對比實驗。即在原識別模型的基礎上分別去掉改進的Inception模塊、多尺度特征融合結構、全局平均池化以及BN層形成新的對比模型,在GTSRB數據集上保持訓練參數不變并且在同樣的實驗環境下進行實驗,實驗結果如表2所示。
從實驗結果可知,識別模型在去掉Inception模塊時,識別準確率下降了1.43%,去掉Inception模塊會使得識別模型的深度和寬度都減少,此時模型提取目標特征的能力下降,識別準確率會降低。識別模型在去掉多尺度特征融合后,識別準確率下降了0.53%,不使用多尺度特征融合時,識別目標經過多次下采樣后會丟失特征,使得高層特征對目標細節信息的表達能力不強,識別準確率會有所下降。BN層主要用來將每一層網絡的數據分布規整到統一區間,加快網絡的收斂速度,去掉BN層后對網絡識別準確率的影響不大,識別準確率只下降了0.35%。識別模型在去掉全局平均池化層后,識別準確率下降了0.28%,使用全局平均池化層主要是為了減小模型的參數量,因此去掉該層后模型的識別準確率下降最少。
由表2可知改進的Inception模塊、多尺度特征融合、全局平均池化以及BN層均能不同程度地提升識別模型的準確率,其中改進的Inception模塊對模型的準確率的提升貢獻最大。
為了驗證識別模型的識別分類性能,在GTSRB數據集上與其他交通標志識別方法進行識別準確率和識別時間的比較,各個模型的識別準確率和識別時間的對比如表3所示。
由表3可知其他的交通標志識別算法雖然使用一些方法對模型進行了優化并且取得了一些進展,但是不能保持識別準確率高和識別速度快的平衡,比如,文獻[7]模型的識別準確率高,但是識別速度慢,文獻[8]模型的識別速度快,但是識別準確率不高。本文設計的算法可以很好地兼顧識別準確率高和識別速度快的要求,在識別準確率和識別速度方面都達到了最優。

表3 GTSRB數據集上不同算法的識別性能比較
交通標志識別是交通標志識別系統的重要組成部分。為了提高交通標志的識別準確率和識別速度,提出了基于卷積神經網絡的交通標志識別算法,設計了一個識別率高、識別速度快的識別模型。使用了改進的Inception模塊、多尺度特征融合以及全局平均池化來構建識別模型,采用BN算法進行數據歸一化處理,加速模型訓練。與其他交通標志識別算法的對比實驗驗證了本文設計的識別模型的優越性,它識別交通標志的準確率高、速度快,是一個高效的卷積神經網絡識別模型。自對比實驗驗證了識別模型的結構優勢,其中改進的Inception模塊對于模型準確率的提升貢獻最大,而改進的Inception模塊是以增加網絡的寬度來提升網絡的性能的,在后續的研究中將嘗試增加網絡的深度來提升網絡的識別性能,在識別模型中嘗試使用Residual模塊、CSPNet模塊來增加網絡的深度,進一步提升模型的識別效果。