李金樽,羅 山
(攀枝花學院交通與汽車工程學院,四川 攀枝花 617000)
交通標志識別在無人駕駛技術(shù)中起到重要的作用,是無人駕駛的“眼睛”。目前,國內(nèi)外關(guān)于交通標志的檢測與識別方法主要可分為三大類:基于顏色特征的檢測方法[1];基于形狀特征的檢測方法;以及顏色和形狀信息融合的檢測方法?;陬伾畔⒌臋z測方法一般是基于某種顏色空間進行單分量或者多分量閾值分割的方法提取標志感興趣區(qū)域(ROI);基于形狀信息的檢測方法一般采用邊緣檢測[2]、Hough變換[3]、對稱性[4]等方法根據(jù)標志輪廓特征檢測標志ROI區(qū)域。王博等[5]提出一種改進的CNN交通標志識別算法,該算法將數(shù)據(jù)集進行數(shù)據(jù)擴增,歸一化等預(yù)處理,并使用TPE算法進行超參數(shù)優(yōu)化,取得了不錯的識別效果。郭志濤等[6]提出基于深度學習的交通標志識別算法,構(gòu)建了一種過程更加快速、高效的交通標志識別模型TSR_Lenet。針對現(xiàn)有識別算法的不足,本文采用基于深度學習的交通標志識別算法,對卷積神經(jīng)網(wǎng)絡(luò)模型結(jié)構(gòu)進行改進,提高了識別率和縮短了訓練周期。
作為深度學習的代表算法,卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNN)是為識別二維形狀或二維圖片而特殊設(shè)計的一種多層感知器,每層由多個二維平面組成,而每個平面由多個獨立神經(jīng)元組成。采用有監(jiān)督的方式訓練網(wǎng)絡(luò),網(wǎng)絡(luò)的結(jié)構(gòu)主要有稀疏連接和權(quán)值共享兩個特點。受到人類視覺神經(jīng)系統(tǒng)的啟發(fā),卷積神經(jīng)網(wǎng)絡(luò)廣泛用于圖片分類、檢索、目標定位監(jiān)測、目標分割、人臉識別、骨骼識別乃至最新的用途是否佩戴口罩也可檢測。
典型的CNN包括三種基本結(jié)構(gòu)層:卷積層、池化層和連接層。
CNN中的最重要的組成部分是卷積層,它由多個卷積核重疊組成,這里的卷積核充當“眼睛”的作用,提取目標邊緣輪廓也即是通過對輸入的數(shù)字信號進行卷積操作后才輸出特征值。
池化層在卷積神經(jīng)網(wǎng)絡(luò)中充當減少參數(shù)數(shù)量的作用,池化層可以操作使外界物體呈現(xiàn)的圖片特征減少,計算過程中由于參數(shù)減少,從而達到正常實驗的目的。同時,池化操作可以保持圖像平移不變形從而具有一定的保障性,此時已脫離了簡單的機器學習范疇。池化常用的方式有:最大池化(Max Pooling)、平均池化(Mean Pooling)。
在完成卷積層和池化層的操作之后需要接入連接層,在交通標識圖片訓練中,用少量數(shù)據(jù)輸入網(wǎng)絡(luò),通過信號前的傳播方法計算相應(yīng)的實際交通標識類型,反向階段在網(wǎng)絡(luò)的實際輸出和異常輸出之間存在誤差,對誤差函數(shù)的偏壓計算,根據(jù)誤差最快的減速方向,可調(diào)節(jié)權(quán)值和偏置,在前向傳播過程中經(jīng)過神經(jīng)網(wǎng)的卷積運算和池化運算,交通標識圖片可獲得必要的特征圖。然后將特征圖轉(zhuǎn)換為一維特征向量,最后通過網(wǎng)絡(luò)的全連接層結(jié)合將一維向量進行識別。
激活函數(shù)可增加整個網(wǎng)絡(luò)的非線性映射作用,采用ReLU函數(shù),表達式為:
f(x)=max(0,x).
(1)
表達式說明輸入信號x<0時,輸出都是0;輸入信號x>0的情況下,輸出等于輸入。
本文的交通標志識別的卷積神經(jīng)網(wǎng)絡(luò)訓練過程為:首先加載交通標志數(shù)據(jù)集并獲取數(shù)據(jù)集的特征及標簽數(shù)據(jù)(如數(shù)據(jù)集大小、格式等);然后用Python庫中matplotlib函數(shù)繪制交通標志圖片并用直方圖來展示圖像訓練集各個類別的分布情況隨后讓數(shù)據(jù)重采樣,進行數(shù)據(jù)預(yù)處理,對所有數(shù)據(jù)進行打亂,封裝建立圖像數(shù)據(jù)生成器;最后搭建卷積神經(jīng)網(wǎng)絡(luò)模型,確定合適的卷積層、池化層、連接層等的大小,并建立模型評價可視化標準,最后運行程序得出結(jié)果。以此構(gòu)建的交通標志識別模型如圖1所示。
圖1 交通標志識別模型
本文網(wǎng)絡(luò)模型中卷積層、池化層與連接層縮寫為Conv、MaxPooling與Dense,并且加入了Flatten層與Dropout層。Dropout層的功能為解決神經(jīng)元之間過度擬合,從而實現(xiàn)數(shù)據(jù)更好的在神經(jīng)網(wǎng)絡(luò)中傳輸。Flatten層用來將數(shù)據(jù)“壓平”即把多維的輸入一維化,常用在從卷積層到全連接層的過渡。如想要疊加神經(jīng)網(wǎng)絡(luò)模型中的層數(shù),就可以通過不斷的設(shè)計卷積核的尺寸、數(shù)量,提取更多的特征,最后識別不同類別的物體,通過MaxPooling層后把這些數(shù)據(jù)“拍平”,送到Flatten層,然后把Flatten層的輸出放到Dense里,最后采用分類器對其進行分類。
采用兩種卷積網(wǎng)絡(luò)結(jié)構(gòu)對典型的德國交通標志數(shù)據(jù)集[7]進行識別實驗。在Tensorflow框架上搭建卷積網(wǎng)絡(luò)模型,網(wǎng)絡(luò)結(jié)構(gòu)1為2層Conv2D+1層MaxPooling2D+1層Drop(0.25)+1層Flatten+1層Dense+1層Dropout(0.5)+1層Dense。第1層卷積:32個3×3的卷積核,激活函數(shù)使用ReLU;第2層卷積:64個3×3的卷積核,激活函數(shù)使用ReLU;最大池化層的池化窗口大小為2×2,最后使用Softmax激活函數(shù)做多分類,輸出各類別的概率。表1為建立的網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)。
表1 網(wǎng)絡(luò)結(jié)構(gòu)1參數(shù)
將卷積網(wǎng)絡(luò)結(jié)構(gòu)改為3層Conv2D+1層MaxPooling2D+1層Flatten+2層Dense,得到網(wǎng)絡(luò)結(jié)構(gòu)2。對兩種網(wǎng)絡(luò)分別訓練120次的網(wǎng)絡(luò)模型性能曲線及識別結(jié)果分別如圖2、表2所示。
圖2 兩種網(wǎng)絡(luò)結(jié)構(gòu)的損失率與精度值
表2 兩種網(wǎng)絡(luò)結(jié)構(gòu)的實驗結(jié)果
圖2中,Model Accuracy圖代表模型識別精度,Model Loss圖代表模型在識別過程中的損失值大小,其中橫坐標代表訓練次數(shù),縱坐標分別代表精度率與損失值的大小。從仿真實驗結(jié)果可知,對網(wǎng)絡(luò)1進行訓練,隨著訓練次數(shù)增加,模型準確率在20次以后上升較為平穩(wěn),且損失函數(shù)也在20次以后逐漸趨于0,訓練120次的精度值達到95.31%,損失率為0.2226,性能指標比網(wǎng)絡(luò)2好,性能更優(yōu)越。且網(wǎng)絡(luò)2訓練的時間比網(wǎng)絡(luò)1的時間長,是因為網(wǎng)絡(luò)1比網(wǎng)絡(luò)2多了dropout層以丟棄多余的數(shù)據(jù)。從識別結(jié)果來看,網(wǎng)絡(luò)1的正確識別率比網(wǎng)絡(luò)2高。
針對目前交通標志識別算法的不足,采用深度學習方法實現(xiàn)交通標志識別。建立卷積神經(jīng)網(wǎng)絡(luò)識別模型,分別對兩種不同結(jié)構(gòu)的網(wǎng)絡(luò)進行訓練與測試,給出性能評價指標,網(wǎng)絡(luò)1增加了dropout層,性能得到改善,均比傳統(tǒng)機器學習算法有更強的性能。因此增加dropout層改變網(wǎng)絡(luò)結(jié)構(gòu)能改善網(wǎng)絡(luò)性能及識別效果,為交通標志識別技術(shù)的應(yīng)用提供一定的參考。