劉 艷,王樂樂
(長春大學 計算機科學技術學院,長春 130022)
交通標志分類是交通標志識別中繼交通標志檢測之后的一個子任務。交通標志識別是輔助駕駛系統以及自動駕駛中重要且具有挑戰性的問題。困難主要體現在真實的路況下,交通標志不一定都能非常清晰、垂直拍攝得到,可能會遇到汽車轉彎、障礙物遮擋、霧霾天氣、光線不足等情況造成采集到的交通標志圖像存在一定角度、局部圖案、畫面模糊、亮度不夠等情況,但是即使這樣,在智能交通中也希望能對這些質量不高的圖像快速地進行分類,及早準確地對交通作出指示和判斷。
隨著深度學習在大數據集上的表現大放異彩,很多學者也將深度學習用于交通標志分類與檢測。文獻[1]利用CNN網絡提取交通標志圖像的特征,該網絡包括3個卷積層、3個池化層和1個全連接層,使用極限學習機分類器對交通標志進行分類。文獻[2]提出使用結合鉸鏈損失函數的隨機梯度下降法訓練卷積神經網絡,該網絡由3個卷積層、3個最大池化層、2個全連接層等17層組成,在GTSRB數據集上的識別率達到99.65%。文獻[3]提出一個具有權重的多CNN的并行網絡結構,具體包括2~3個Inception層、2個卷積層和2個全連接層,充分利用Inception模塊通過不同大小的卷積核提取不同尺寸特征的特性,專門針對GTSRB數據集進行訓練得到分類模型,識別率較高,達到99.59%。文獻[4]和[5]使用Gabor小波(核或者濾波器)結合卷積神經網絡模型解決實時交通標志檢測和識別問題。目前已有模型雖然在特定數據集上的識別率都很高,但是泛化性和實時性有待提高。使用數據增廣得到更接近真實路況的數據,利用遷移學習解決深層次網絡訓練數據不充足的問題,通過實驗對比主流模型的性能,從中選取更適合交通標志分類的模型。
為了防止過擬合,深度學習需要數以萬計的樣本數據對網絡進行訓練。比利時交通標志數據集中的訓練集只有4 572張圖像。數據增廣可以在不改變樣本標簽的情況下,利用先驗知識增加樣本的數量,采用數據增廣(data augmentation)策略來增加訓練集中圖像的數量。
數據增廣常用的方法有旋轉(ratation)、縮放(zoom)、平移(shift)、剪切(shear)、尺度變換(reacale)和遮擋(erasing)等,這些數據增廣方法如果運用合理的話,在一定程度上能夠提高模型的分類性能。
運用Keras中內置的類ImageDataGenerator以及其成員函數flow()對交通標志圖像使用了旋轉角度(參數為30)、水平或垂直平移(參數為0.1)、剪切(參數為0.2)、亮度增強(參數為(0.5,0.9))、尺寸縮放(參數為[0.5, 1.1])、水平翻轉等操作來生成更多的圖像。生成的訓練數據更貼近真實情況,增大了數據量,防止模型過擬合。得到的增廣數據保存在磁盤中,為后續實驗做準備。數據增廣效果對比如圖1、圖2所示。

圖1 原始訓練集

圖2 數據增廣后的訓練集
增廣后的數據還是不足以從頭訓練一個深層網絡,遷移學習可以將源數據集學習到的知識(權重)應用于目標數據集,緩解目標數據集數據量不足的問題,所以采用遷移學習來解決交通標志分類問題。
Keras框架中內置了目前主流的模型,這些模型在ImageNet數據集上經過多GPU長時間訓練得到,具有較優的權重。ImageNet數據集和交通標志均為自然圖像,具有一定的相似性,可以通過凍結模型的某些層,微調其余層的方式來訓練新模型。對于比利時交通標志圖像分類模型采用兩種極端的方式訓練:
(1)凍結模型前面的所有層,只微調最后的全連接層。
(2)使用模型的權重作為初始值,微調模型的所有層(包括最后的全連接層)。
采用遷移學習的好處是不但節省了訓練時間以及硬件資源,而且容易得到較高的分類準確率。基于遷移學習的交通標志分類流程圖如圖3所示。

圖3 基于遷移學習的交通標志分類流程圖
實驗選取比利時交通標志數據集BelgiumTS for Classification(https://btsd.ethz.ch/shareddata/),訓練集train包含4 572張圖像,測試集test包含2 520張圖像。對訓練集中的圖像進行數據增廣,每張圖像增廣得到5張圖像,將增廣得到的圖像加入訓練集,則訓練集共包含26 437張圖像。對于增廣后的訓練集,按照80%和20%的比例,將其拆分成訓練集和驗證集,用于本小節交通標志的分類實驗,但未對測試集進行數據增廣。
實驗的操作系統為Windows 10,GPU為RTX 2080Ti(1塊),顯存11G,內存12G,CPU為i5-7代/4核,深度學習框架為Keras,開發環境為python 3.6.7。
實驗對Xception[6]、Inception-v3[7]、ResNet50[8]、VGG16[9]、VGG19[9]、DenseNet121[10]和DenseNet169[10]7種主流模型進行了遷移學習實驗,每種模型分別對兩種情況進行了微調:只微調模型的最后一層和微調模型的所有層。
模型Xception的參數inputshape的最小值為71,所以使用該模型進行訓練時,將圖像的尺寸調整為71×71像素,而模型Inception-v3的參數inputshape的最小值為139,所以在使用Inception-v3模型進行實驗時,將圖像的尺寸調整為139×139像素,訓練其他模型時,為了公平起見,將圖像的尺寸均調整為71×71像素。
模型訓練時結合驗證集的準確率val_acc曲線,當val_acc曲線持續下行時,調整學習率繼續訓練,采用學習率lr=[0.001, 0.000 5, 0.000 25, 0.000 125, ……],批處理的大小設置為32,根據經驗模型訓練40輪停止。各模型微調后的交通標志分類效果如表1所示。
從表1中可以看出,對于7種主流模型中的任何一種,微調模型所有層的效果均優于僅微調模型最后一層。對于只微調模型最后一層的情況,VGG16和VGG19表現較好,分類準確率能達到85%以上,這是因為VGG16和VGG19較其他模型層數較淺,分別為20層和23層,只微調模型的最后一層也會對總體產生較大影響。Xception、Inception-v3、DenseNet121以及DenseNet169能達到50%左右。ResNet50表現最差,這應該與殘差網絡的快捷連接結構有關。

表1 主流模型交通標志分類效果對比表
對于微調模型所有層的情況,7種主流模型都能達到96%以上的分類準確率,其中,Xception模型表現最佳,達到98.678%。Inception-v3模型和DenseNet121模型的分類準確率也都達到98%以上,但是這兩種模型分別為312層和428層,相比較Xception模型只有133層,這兩種模型占用內存較多、加載速度慢,所以Xception模型用于交通標志分類無論從參數數目、執行速度、對服務器配置的要求上都具有絕對優勢。Xception模型在訓練過程中損失值和準確率變化情況如圖4所示。

圖4 Xception模型進行交通標志分類的損失值和準確率
從圖4可以看出,Xception模型對于交通標志分類訓練能夠很好地收斂。該模型在訓練過程中,學習率經歷了4次衰減,分別是epcoh為16、23、33和38時,學習率從最初的0.001依次衰減為:0.000 5,0.000 25,0.000 125,0.000 062 5,每次衰減后驗證集的準確率均產生小幅上升,直至最后沒有上升空間為止。
使用數據增廣一方面產生了大量數據,解決了模型訓練數據量不足的問題,另一方面模擬了真實的情況,增強了模型的泛化能力。通過遷移學習實驗對比發現,目前主流模型中的Xception模型在交通標志圖像數據集的分類中表現優于其他模型,不僅分類準確率較高,而且模型層數相對較少,內存加載速度快,所以該模型在實時性方面具有一定優勢。針對交通標識數據集遷移學習時凍結其他層的情況以及其在不同設備上的實時表現,仍是下一步研究的重點。