朱永佳, 張 靜
(上海師范大學(xué) 信息與機(jī)電工程學(xué)院,上海 200234)
目前,智能的交通標(biāo)志識別方法主要有兩大類.一種是基于典型特征描述的方法,如方向梯度直方圖(HOG)[1]、尺度不變特征變換(SIFT)[2]、局部二值模式(LBP)[3]等,此類方法對訓(xùn)練樣本進(jìn)行特征提取,然后再對這些特征進(jìn)行訓(xùn)練分類.常用的分類器有:支持向量機(jī)(SVM)[4]、隨機(jī)森林分類器[5]、極限學(xué)習(xí)機(jī)[6].此類方法基于人工設(shè)計(jì),提取的特征存在局限性.
另一種是基于深度學(xué)習(xí)的卷積神經(jīng)網(wǎng)絡(luò)(CNN)[7]方法.此類方法在訓(xùn)練時(shí)自動提取最有效的特征,直接使用圖像的原始像素作為輸入,從而減輕了大量重復(fù)、繁瑣的數(shù)據(jù)預(yù)處理工作.
本文作者在Lenet-5網(wǎng)絡(luò)模型的基礎(chǔ)上,針對網(wǎng)絡(luò)模型梯度彌散而引起的識別率低的問題,研究了改進(jìn)CNN網(wǎng)絡(luò)結(jié)構(gòu)的方法.
CNN是一種深層的神經(jīng)網(wǎng)絡(luò),由多個(gè)卷積層、池化層交替組成,每層包含多個(gè)相互獨(dú)立的神經(jīng)元,它的一個(gè)典型結(jié)構(gòu)如圖1所示[8].在CNN結(jié)構(gòu)中,第一層輸入的是交通標(biāo)志圖像,然后進(jìn)入第一卷積層C1,其中有6個(gè)卷積核尺寸均為5×5像素,形成6個(gè)特征圖,特征圖大小是28像素,然后再經(jīng)過池化層S2,使用的最大采樣核大小為2×2像素,得到6個(gè)特征圖,特征圖大小為14像素,隨后進(jìn)入第二卷積層C3使用16個(gè)卷積核,卷積核大小為5×5像素,產(chǎn)生16個(gè)特征圖,特征圖大小為10像素,再經(jīng)過池化,降采樣核大小為2×2像素,產(chǎn)生16個(gè)特征圖,每個(gè)特征圖大小是10像素,把16個(gè)特征圖與C5卷積層的120個(gè)卷積核構(gòu)成全連接層F6,F6擁有84個(gè)隱含節(jié)點(diǎn),由歐式徑向基函數(shù)單元組成最后一層,輸出最后的分類結(jié)果.
圖1 CNN結(jié)構(gòu)圖
1.2.1 正向傳播過程
在正向傳播過程中,輸入的原始圖像經(jīng)過卷積層和池化層以后,得到若干特征子圖并轉(zhuǎn)化為一維特征向量,最后再用網(wǎng)絡(luò)的全連接層將特征向量結(jié)合,進(jìn)行輸出識別.
在卷積層中,上一層的特征圖被一個(gè)可學(xué)習(xí)的卷積核進(jìn)行卷積,卷積的結(jié)果經(jīng)過一個(gè)激活函數(shù)處理后,形成本層的特征圖.
(1)
f(x)=max(0,x).
(2)
當(dāng)輸入信號x≤0時(shí),輸出都是0;當(dāng)輸入信號x>0時(shí),輸出等于輸入.
在池化層中,通過一個(gè)非重疊的m×m區(qū)域?qū)ι弦粚虞敵龅奶卣髯訄D進(jìn)行降采樣.如果輸入的特征圖為N個(gè),則經(jīng)過池化層后特征圖的個(gè)數(shù)不變,但是特征圖的大小會變?yōu)镹/2.
圖像經(jīng)過卷積層和池化層的特征提取和采樣以后,要利用一個(gè)全連接層將這些特征轉(zhuǎn)換為一個(gè)一維的特征向量,然后再通過Softmax分類器進(jìn)行識別.網(wǎng)絡(luò)輸出層的每一個(gè)神經(jīng)元輸出值對應(yīng)于輸入圖像各類交通標(biāo)志圖像的概率大小:
(3)
對于交通標(biāo)志這種多分類情況,CNN將輸出一個(gè)n維向量Hθ(y),其中每一維表示的是輸入樣本所屬類別的概率估計(jì)值.
(4)
1.2.2 反向傳播過程
對于有M輸出類別和N個(gè)訓(xùn)練樣本的多分類問題,誤差函數(shù)為
(5)
(6)
(7)
在反向傳播過程中,根據(jù)隨機(jī)梯度下降法調(diào)整權(quán)值和閾值,
(8)
Wij(k+1)=Wij(k)+ΔWij(k),
(9)
(10)
bj(k+1)=bj(k)+Δbj(k).
(11)
其中,ΔWij,Δbj分別表示權(quán)值和偏置的調(diào)整值,Wij,bj分別表示權(quán)值和偏置調(diào)整后的值,k表示迭代次數(shù),α表示學(xué)習(xí)率,η為動量因子.
正向傳播過程得到網(wǎng)絡(luò)的實(shí)際輸出,通過監(jiān)督,求出實(shí)際輸出與目標(biāo)輸出之間的誤差.在反向的傳播過程中,結(jié)合式(8)~式(11)調(diào)整網(wǎng)絡(luò)的權(quán)值和偏置,使誤差達(dá)到最小.正向傳播和反向傳播兩個(gè)過程反復(fù)交替執(zhí)行,使網(wǎng)絡(luò)逐漸趨于收斂.
為了更好地提取圖像的低層特征和有效地傳遞梯度,對CNN的模型作以下改進(jìn):
1) 將卷積層與池化層交替組合修改為:輸入層、卷積層、卷積層、池化層、卷積層、卷積層、池化層、全連接層、全連接層、輸出層;
2) 將激活函數(shù)由Sigmoid改為ReLU[7],有效地傳遞梯度;
3) 在全連接層之后加入Dropout 操作,以防止網(wǎng)絡(luò)訓(xùn)練過擬合.
改進(jìn)的網(wǎng)絡(luò)結(jié)構(gòu)見表1所示.
表1 改進(jìn)后的CNN結(jié)構(gòu)
實(shí)驗(yàn)采用德國交通標(biāo)志數(shù)據(jù)集(GTSRB)[9],該數(shù)據(jù)集包含6大類標(biāo)志:限速標(biāo)志、指示標(biāo)志、警告標(biāo)志、禁令標(biāo)志、解除禁令標(biāo)志、其他標(biāo)志.整個(gè)交通標(biāo)志數(shù)據(jù)集共有51839張自然環(huán)境中采集的交通標(biāo)志,其中訓(xùn)練集有39209張,測試集有12630張.數(shù)據(jù)集包括大量分辨率低、遮擋、破損、傾斜、光線不足、涂鴉、惡劣天氣、模糊、晴天等情況下自然場景的圖片.
采用tensorflow深度學(xué)習(xí)框架進(jìn)行結(jié)構(gòu)的搭建和模型的訓(xùn)練.軟件環(huán)境包括:深度學(xué)習(xí)框架Tensorflow 1.1.0、集成開發(fā)環(huán)境Pycharm 2016.2.3、第三方函數(shù)庫Anaconda3-2.4.1以及操作系統(tǒng) Windows7 64位.硬件環(huán)境為:CPU為Intel(R) Core(TM)i3-2120,內(nèi)存為4G.
首先對模型修改的部分進(jìn)行控制單一變量,在不修改網(wǎng)絡(luò)結(jié)構(gòu),只改變激活函數(shù)并采用Dropout機(jī)制的情況下執(zhí)行實(shí)驗(yàn),結(jié)果如圖2所示.模型測試準(zhǔn)確度達(dá)到76%.
在使用Sigmoid作為激活函數(shù)的情況下,實(shí)驗(yàn)結(jié)果如圖3所示.訓(xùn)練模型的測試準(zhǔn)確度達(dá)到80%.將激活函數(shù)改為ReLu后,模型訓(xùn)練結(jié)果如圖4所示,識別準(zhǔn)確度達(dá)到96%.
圖2 卷積層-池化層交替組合的網(wǎng)絡(luò)模型識別率
圖3 Sigmoid激活函數(shù)下的識別率
圖4 改進(jìn)的網(wǎng)絡(luò)模型識別率
實(shí)驗(yàn)結(jié)果表明卷積層、卷積層、池化層組合交替的網(wǎng)絡(luò)模型較好.對比結(jié)果發(fā)現(xiàn),當(dāng)神經(jīng)網(wǎng)絡(luò)層數(shù)較多時(shí),Sigmoid函數(shù)在反向傳播中梯度值會逐漸變小,根據(jù)訓(xùn)練數(shù)據(jù)的反饋來更新神經(jīng)網(wǎng)絡(luò)的參數(shù)將會非常緩慢,從而出現(xiàn)梯度彌散的問題.而ReLU可以很好地傳遞梯度,經(jīng)過多層的反向傳播,梯度依舊不會大幅縮小,從而有效地避免了訓(xùn)練模型的梯度彌散現(xiàn)象.
針對CNN在交通標(biāo)志識別過程中出現(xiàn)的梯度彌散現(xiàn)象,導(dǎo)致識別精度較低問題,提出了基于改進(jìn)CNN的交通標(biāo)志識別方法.在傳統(tǒng)CNN模型的基礎(chǔ)上,改變卷積核大小和卷積層層數(shù),同時(shí)在全連接層加入Droput機(jī)制,從而提高識別精度.實(shí)驗(yàn)證明該方法的識別精度能夠達(dá)到96%.下一步工作將繼續(xù)加強(qiáng)對網(wǎng)絡(luò)結(jié)構(gòu)的研究,進(jìn)一步提升性能.