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