張功國,吳 建,易 億,王梓權(quán),孫海霞
(重慶郵電大學(xué) 通信與信息工程學(xué)院,重慶 400065)
近年來隨著汽車數(shù)量的增加,安全駕駛成為人們關(guān)心的問題,于是智能交通輔助駕駛系統(tǒng)應(yīng)運而生。同時,自動駕駛汽車也逐漸受到各大公司的青睞,例如,百度在無人駕駛上做了很多的研究和貢獻(xiàn)。在未來,自動駕駛將是一個研究熱點。無論是智能交通輔助駕駛系統(tǒng)還是自動駕駛技術(shù),交通標(biāo)志識別都是其重要組成部分之一,受到了國內(nèi)外研究人員的廣泛關(guān)注。
早期交通標(biāo)志識別方法主要依賴于圖像形態(tài)學(xué),分割和提取各種圖像特征。文獻(xiàn)[1]利用色段和形狀檢測技術(shù)創(chuàng)建了一種道路標(biāo)志識別方法,該方法在50個道路標(biāo)志識別上取得了很好的效果,但實時道路標(biāo)志的顏色和形狀會有較大變化,該方法受顏色和形狀變化影響較大。文獻(xiàn)[2]首先提取交通標(biāo)志圖像尺度不變特征變換(scale-invariant feature transform,SIFT)特征,然后對所識別的交通標(biāo)志與標(biāo)準(zhǔn)交通標(biāo)志進(jìn)行相似度計算,從而識別交通標(biāo)志。H Mahi等[3]提出了基于Zernike矩不變量和支持向量機(jī)的分類方法,該方法雖然對縮放和旋轉(zhuǎn)后的交通標(biāo)志有很好的識別效果,但光線變化會嚴(yán)重影響系統(tǒng)的分類效果。不少研究人員利用圖像的方向梯度直方圖(histogram of oriented gradient,HOG)特征對圖像進(jìn)行分類。Pei等[4]提出了一種新的有監(jiān)督的低秩矩陣恢復(fù)模型,引入了一個有監(jiān)督的懲罰項。然而在對圖片做預(yù)處理操作時,每幅圖像提取方向梯度(HOG)特征直方圖的時間達(dá)到0.01 s,不能滿足實時交通標(biāo)志識別的要求。文獻(xiàn)[5]采用K-d樹與帶有距離變換和HOG特征的隨機(jī)森林方法對交通標(biāo)志進(jìn)行識別。同時,HOG特征結(jié)合SVM分類器早已被廣泛應(yīng)用于圖像識別中,文獻(xiàn)[6]采用具有HOG特征的SVM分類器用于交通標(biāo)志識別。徐巖等[7]利用降維后的HOG特征進(jìn)行極限學(xué)習(xí)機(jī)模型訓(xùn)練,然后利用經(jīng)過訓(xùn)練的極限學(xué)習(xí)機(jī)模型識別交通標(biāo)志圖像。文獻(xiàn)[8]在對交通標(biāo)志的特征提取時采用集成的深玻爾茲曼機(jī)和典型相關(guān)分析相結(jié)合的算法進(jìn)行,與基于HOG和LBP特征提取的算法相比具有更高的識別率。
盡管交通標(biāo)志的識別已有多年的研究經(jīng)驗,但真實世界中的交通標(biāo)志識別情況復(fù)雜,交通標(biāo)志圖像的質(zhì)量會受到很多因素的影響,比如光照條件、復(fù)雜的背景環(huán)境、交通標(biāo)志部分被遮擋、交通標(biāo)志位置的偏移、行車速度等等,這些不定因素給實時的交通標(biāo)志識別帶來了很大的困難。
卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)是近年研究的一大熱點,并在圖像識別領(lǐng)域取得了顯著的成績[9-13]。Lecun Y等[9]提出了LeNet-5模型,采用卷積層和下采樣層交替連接對輸入圖像進(jìn)行前向傳導(dǎo),在MNIST手寫數(shù)字識別上取得了很好的效果,測試的正確率在97.5%~98.2%之間。Krizhevsky等[10]提出了深度卷積神經(jīng)網(wǎng)絡(luò)AlexNet結(jié)構(gòu),使用ReLU激活函數(shù),并利用GPU進(jìn)行訓(xùn)練,在2012年的ImageNet圖像分類競賽中取得了冠軍。
鑒于CNN在圖像識別領(lǐng)域取得的良好效果,本文提出一種基于集成卷積神經(jīng)網(wǎng)絡(luò)的交通標(biāo)志識別的方法。集成網(wǎng)絡(luò)的基分類器采用卷積神經(jīng)網(wǎng)絡(luò),為提高基分類器的分類性能,對卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行了優(yōu)化處理。具體包括使用ReLU激活函數(shù)來代替?zhèn)鹘y(tǒng)的激活函數(shù);使用批量歸一化方法來加快網(wǎng)絡(luò)訓(xùn)練速度;利用SVM代替softmax分類器。
CNN是一種深度前饋人工神經(jīng)網(wǎng)絡(luò),由于其局部感知和權(quán)值共享的特點,使其在圖像識別領(lǐng)域得到了廣泛應(yīng)用。人們對外界事物的觀察都是從局部到全局,而圖像的局部像素聯(lián)系緊密,相關(guān)性較高。CNN只需要對局部進(jìn)行感知,然后在更高層將局部信息綜合起來就得到了全局信息,這就是局部感知。圖像的一部分統(tǒng)計特性與其他部分是類似的,因此,CNN通過在圖像的某個部分學(xué)習(xí)到的特征應(yīng)用到圖像的其他部分,這就是權(quán)值共享。CNN利用局部感知和權(quán)值共享的思想極大地減少了訓(xùn)練網(wǎng)絡(luò)所需參數(shù)的個數(shù),加快網(wǎng)絡(luò)訓(xùn)練速度。同時,CNN包括2個重要組成部分,卷積層和池化層。
卷積層是卷積網(wǎng)絡(luò)的核心組成部分,完成大部分繁重計算的工作。卷積層的參數(shù)由一組可學(xué)習(xí)的過濾器組成,在正向傳播過程中,我們沿著輸入圖片的寬度和高度滑動每一個過濾器,并計算過濾器的條目和任意位置的輸入之間的點積。當(dāng)網(wǎng)絡(luò)在輸入圖片的寬度和高度上滑動濾波器時,網(wǎng)絡(luò)將生成一個二維激活圖,展示出每個空間位置濾波器的響應(yīng),再經(jīng)過激活函數(shù)得到新的特征圖像,詳細(xì)運算過程表示為
(1)
池化操作是在盡量不破壞數(shù)據(jù)的內(nèi)在聯(lián)系的情況下對卷積后的特征圖進(jìn)行抽樣操作,以降低網(wǎng)絡(luò)計算復(fù)雜度,提高對位移、縮放等變換的魯棒性,對原圖像特征進(jìn)行保留,同時在一定程度上防止過擬合。常見的池化計算有最大池化和平均池化,本文采用最大池化進(jìn)行運算,詳細(xì)運算過程為
(2)
激活函數(shù)對網(wǎng)絡(luò)的收斂速度有很大影響,效果好的激活函數(shù)可以使網(wǎng)絡(luò)的收斂速度得到提高。同時激活函數(shù)使得卷積神經(jīng)網(wǎng)絡(luò)有了非線性映射能力,在傳統(tǒng)神經(jīng)網(wǎng)絡(luò)中最常用的2個激活函數(shù)分別為Sigmoid和Tanh,其表達(dá)式分別為(3)式與(4)式,它們都屬于飽和非線性函數(shù)。本文選擇ReLU函數(shù)作為卷積神經(jīng)網(wǎng)絡(luò)的激活函數(shù)以減少網(wǎng)絡(luò)訓(xùn)練時間,函數(shù)表達(dá)式為(5)式。對于梯度下降(gradient descent,GD)訓(xùn)練時間而言,線性修正函數(shù)ReLU作為激活函數(shù)可以使卷積神經(jīng)網(wǎng)絡(luò)更快速地收斂[11]。
Sigmoid函數(shù)表達(dá)式為
(3)
Tanh函數(shù)表達(dá)式為
(4)
ReLU函數(shù)表達(dá)式為
f(x)=max(0,x)
(5)
CNN-SVM交通標(biāo)志識別系統(tǒng)的主要部分是依靠CNN對交通標(biāo)志圖像的特征提取,而訓(xùn)練深度卷積神經(jīng)網(wǎng)絡(luò)是一個相當(dāng)復(fù)雜的過程。卷積神經(jīng)網(wǎng)絡(luò)是一種前饋神經(jīng)網(wǎng)絡(luò),網(wǎng)絡(luò)中每一層都會受到它上一層的影響,這就導(dǎo)致了卷積層前面幾層發(fā)生微小的變化,后面幾層就會把這個微小的變化進(jìn)行放大。卷積神經(jīng)網(wǎng)絡(luò)在訓(xùn)練的過程中,每一層的訓(xùn)練數(shù)據(jù)分布會不斷的發(fā)生變化,而每一層的學(xué)習(xí)率也不同,為滿足損失函數(shù)有效下降,通常選擇最小的學(xué)習(xí)率來保證整個卷積神經(jīng)網(wǎng)絡(luò)的有效訓(xùn)練,這樣就減慢了網(wǎng)絡(luò)訓(xùn)練速度,同時使訓(xùn)練網(wǎng)絡(luò)變得困難。針對這種問題,Sergey Ioffe等[14]提出批量歸一化方法,BN算法對每一層的線性和非線性計算的中間數(shù)據(jù)歸一化為均值為0,方差為1,使處理后的數(shù)據(jù)穩(wěn)定,這樣可以以較大的學(xué)習(xí)率去訓(xùn)練整個網(wǎng)絡(luò),讓網(wǎng)絡(luò)快速收斂,從而訓(xùn)練速度得到提高。BN算法對某一層網(wǎng)絡(luò)的數(shù)據(jù)做歸一化處理為
(6)
批量歸一化公式(6)對網(wǎng)絡(luò)某一層數(shù)據(jù)做歸一化處理時,會影響到這一層所學(xué)習(xí)到的特征。為此BN算法又加入了2個參數(shù)γ和β,使得
(7)
(8)
卷積神經(jīng)網(wǎng)絡(luò)的卷積層和池化層具有較好特征提取的能力。因此,本文將CNN作為交通標(biāo)志圖像的特征提取器,以實現(xiàn)對交通標(biāo)志的分類處理。Softmax分類器會計算出所有類別的概率,并且不斷計算讓概率分布更趨向于標(biāo)準(zhǔn)結(jié)果,這樣會花費大量的計算時間。SVM是基于結(jié)構(gòu)風(fēng)險最小化理論在特征空間中構(gòu)建最優(yōu)分類超平面,使得學(xué)習(xí)達(dá)到全局最優(yōu),可達(dá)到良好的分類效果。而SVM分類器只計算各個類別的得分,當(dāng)各類得分滿足了分類器的要求,知道了正確分類結(jié)果后就不再計算,從而能大幅提高訓(xùn)練速度。所以,本文用SVM分類器代替Softmax分類器,極大地縮短了網(wǎng)絡(luò)的訓(xùn)練時間,能快速收斂到最優(yōu)值。
CNN-SVM交通標(biāo)志識別算法主要有2個步驟:①利用CNN網(wǎng)絡(luò)提取交通標(biāo)志的圖像特征,并將其輸入到SVM中;②利用SVM進(jìn)行交通標(biāo)志分類。圖1為CNN-SVM的基本算法框架。
圖1 CNN-SVM的算法框架Fig.1 Framework of the proposed CNN-SVM
本次實驗所使用的計算機(jī)配置為Intel(R) Core(TM) i5-6500 CPU,3.2 GHz主頻,8 GByte內(nèi)存,使用GTX1060顯卡內(nèi)存6 GByte來加速訓(xùn)練,實驗平臺為Windows7(64 bit)操作系統(tǒng),開發(fā)平臺為Keras,后端為theano。
本文使用的數(shù)據(jù)集是德國交通標(biāo)志識別數(shù)據(jù)庫[15],GTSRB數(shù)據(jù)庫中的交通標(biāo)志圖像全部從德國自然場景中采集得到,能夠真實反映出實時的交通標(biāo)志,共有43類交通標(biāo)志,合計51 839幅圖像,被分為訓(xùn)練集和測試集2部分,其中訓(xùn)練集有39 209幅圖像,測試集有12 630幅圖像。圖2顯示數(shù)據(jù)集中43類交通標(biāo)志集合。圖3顯示訓(xùn)練集中43類交通標(biāo)志的分布情況。圖4顯示測試集中43類交通標(biāo)志的分布情況。其中,每幅圖像內(nèi)只包含一個交通標(biāo)志,每幅圖像都是從實時車載上取得的交通標(biāo)志,所有的交通標(biāo)志圖像尺寸在15×15像素到222×193像素之間。數(shù)據(jù)集中包含了大量不利條件下的交通標(biāo)志圖像,比如低分辨率、圖像中部分標(biāo)志被遮擋、不同光照強(qiáng)度、運動模糊、視角傾斜等,能較全面的反映現(xiàn)實駕車情況,增加識別系統(tǒng)的魯棒性。
圖2 GTSRB的交通標(biāo)志種類Fig.2 Traffic signs classes of the GTSRB
圖3 GTSRB訓(xùn)練集中交通標(biāo)志種類的分布Fig.3 Class distribution across training GTSRB dataset
圖4 GTSRB測試集中交通標(biāo)志種類的分布Fig.4 Class distribution across test GTSRB dataset
為滿足本次集成卷積神經(jīng)網(wǎng)絡(luò)的需求,需要對GTSRB數(shù)據(jù)集做預(yù)處理,具體步驟如下。
1)每幅交通標(biāo)志圖像都有10%的冗余邊,為減少背景信息的干擾和冗余信息,對圖片進(jìn)行裁剪,使交通標(biāo)志充滿整個圖像。
2)對數(shù)據(jù)集進(jìn)行擴(kuò)展:
①對圖像做鏡像處理;
②將圖像旋轉(zhuǎn)-8°和 8°;
③將圖像向左、右各平移4個像素;
3)將圖片分別轉(zhuǎn)換成像素大小為48×48和32×32這2種大小格式。
集成學(xué)習(xí)算法是在實踐中總結(jié)出來的具有良好效果的算法。集成學(xué)習(xí)是指對多個分類器通過某種方式進(jìn)行集成,使得分類性能得到提高??偟膩碚f,標(biāo)準(zhǔn)的集成卷積神經(jīng)網(wǎng)絡(luò)的識別率要比被集成的單個卷積神經(jīng)網(wǎng)絡(luò)高。
本文選用Bagging集成算法[16],它是在訓(xùn)練集中進(jìn)行隨機(jī)抽樣,每次抽取樣本后都要放回到訓(xùn)練數(shù)據(jù)集中,抽取后的單個數(shù)據(jù)集大小和原訓(xùn)練數(shù)據(jù)集大小相同,內(nèi)容上有一定差異。選擇CNN-SVM交通標(biāo)志識別器作為基分類器模型,本次集成卷積神經(jīng)網(wǎng)絡(luò)選用6個不同結(jié)構(gòu)的CNN-SVM交通標(biāo)志識別器進(jìn)行集成,采用簡單投票的方法對基分類器的分類結(jié)果進(jìn)行融合,其大致結(jié)構(gòu)如圖5。
圖5 集成卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.5 Structure of ensemble convolutional neural network
CNN的卷積層數(shù)對CNN-SVM的性能有很大的影響,對卷積神經(jīng)網(wǎng)絡(luò)而言,卷積層數(shù)的增加會使得網(wǎng)絡(luò)對圖像特征的提取更加充分,同時也會導(dǎo)致網(wǎng)絡(luò)過擬合。卷積層數(shù)過低導(dǎo)致圖像特征提取不充分,影響系統(tǒng)識別率。為了選擇合適的卷積層數(shù),本文采用控制變量法,每一層卷積核個數(shù)設(shè)置為108個,采用隨機(jī)初始化,然后逐層增加卷積層數(shù)來對比不同卷積層數(shù)對CNN-SVM識別率的影響。實驗數(shù)據(jù)采用德國交通標(biāo)志數(shù)據(jù)庫,實驗結(jié)果如表1。從表1中可以看出,采用本文的CNN-SVM系統(tǒng),以德國交通標(biāo)志數(shù)據(jù)集為研究對象,當(dāng)卷積層數(shù)為3時識別率最高,因此,本系統(tǒng)卷積層采用3層最合適。
表1 卷積層數(shù)與正確率的關(guān)系
合理的構(gòu)建基分類器才能體現(xiàn)集成算法的優(yōu)越性,在保證基分類器分類正確率的同時,也要保證不同基分類器的分類能力的差異性。本文使用的所有CNN-SVM交通標(biāo)志識別器的卷積層數(shù)為3層,主要區(qū)別在于各層卷積核的大小和特征圖的個數(shù)。其中,基分類器CNN-SVM_1,CNN-SVM_2,CNN-SVM_3的輸入交通標(biāo)志圖片的像素大小為32×32,基分類器CNN-SVM_4,CNN-SVM_5,CNN-SVM_6的輸入交通標(biāo)志圖片的像素大小為48×48。本文通過對各個基分類器的卷積核大小以及特征圖個數(shù)的合理設(shè)置,讓各個基分類器來學(xué)習(xí)交通標(biāo)志圖像的不同特征,從而保證基分類器的差異性?;诸惼鰿NN-SVM_1,CNN-SVM_2,CNN-SVM_3的卷積層的詳細(xì)參數(shù)如表2,基分類器CNN-SVM_4,CNN-SVM_5,CNN-SVM_6的卷積層的詳細(xì)參數(shù)如表3。本文使用3層卷積層的CNN-SVM,采用卷積層和池化層交替的結(jié)構(gòu)。其中,卷積核的步長均為1,池化層均采用最大池化,池化窗口大小為2×2,步長為2。
表2 CNN-SVM_1,CNN-SVM_2,CNN-SVM_3卷積層詳細(xì)參數(shù)
表3 CNN-SVM_4,CNN-SVM_5,CNN-SVM_6卷積層詳細(xì)參數(shù)Tab.3 Detailed parameters of CNN-SVM_4,CNN-SVM_5,CNN-SVM_6 convolution layer
本文所使用6個卷積神經(jīng)網(wǎng)絡(luò)的卷積層的權(quán)值都使用均值為0,方差為0.01的高斯分布函數(shù)進(jìn)行隨機(jī)初始化,所有偏置初始化為0。本次訓(xùn)練采用批量隨機(jī)梯度下降法,mini-batch大小為128。
1)本文改進(jìn)的卷積神經(jīng)網(wǎng)絡(luò)CNN-SVM與傳統(tǒng)卷積神經(jīng)網(wǎng)絡(luò)的性能對比。
取CNN-SVM_1作為改進(jìn)后的卷積神經(jīng)網(wǎng)絡(luò)的代表,然后構(gòu)造出一個卷積層結(jié)構(gòu)大小和CNN-SVM_1相同的卷積神經(jīng)網(wǎng)絡(luò)CNN,其網(wǎng)絡(luò)結(jié)構(gòu)是3層卷積層和3層池化層交替連接,一個全連接層和一個分類層,分類層使用softmax分類器,以sigmoid函數(shù)作為激活函數(shù)。以本文經(jīng)過預(yù)處理的GTSRB數(shù)據(jù)庫,圖片像素大小為32×32作為本實驗的訓(xùn)練和測試數(shù)據(jù)集,實驗結(jié)果如表4和表5。從表4可以看出,沒有經(jīng)過改進(jìn)的CNN,雖然卷積結(jié)構(gòu)相同,但識別率僅為88.67%,而經(jīng)過改進(jìn)的卷積神經(jīng)網(wǎng)絡(luò)CNN-SVM_1識別率可達(dá)97.12%。同時從表5可以看出,CNN-SVM_1的訓(xùn)練時間為363.12 min,而具有相同卷積結(jié)構(gòu)的CNN的訓(xùn)練時間為486.91 min。CNN-SVM_1的單幅圖片測試時間為0.21 ms,具有相同卷積結(jié)構(gòu)的CNN的單幅圖片測試時間為0.23 ms。雖然CNN-SVM_1在單幅圖片測試時間上沒有顯著性的提高,但訓(xùn)練時間減少了25.42%。
表4 CNN-SVM_1與相同卷積結(jié)構(gòu)的CNN識別率對比Tab.4 Comparison of recognition rates between CNN-SVM_1 and CNN of the same convolution structure %
表5 CNN-SVM_1與相同卷積結(jié)構(gòu)的CNN訓(xùn)練和測試時間對比Tab.5 Comparison of training and test time between CNN-SVM_1 and CNN of the same convolution structure
2)集成卷積神經(jīng)網(wǎng)絡(luò)的交通標(biāo)志識別的性能評估。
利用bagging算法處理訓(xùn)練集原則對經(jīng)過預(yù)處理的訓(xùn)練集進(jìn)行處理,抽選出6組大小和預(yù)處理后的訓(xùn)練集相同但內(nèi)容有一定差異性的訓(xùn)練集。其中,從交通標(biāo)志圖像尺寸為32×32像素和48×48像素中各抽取3組訓(xùn)練集,這樣一共有6組訓(xùn)練集分別供CNN-SVM_1,CNN-SVM_2,CNN-SVM_3,CNN-SVM_4,CNN-SVM_5,CNN-SVM_6進(jìn)行訓(xùn)練。用訓(xùn)練好的集成卷積神經(jīng)網(wǎng)絡(luò)來對測試集進(jìn)行測試,其識別率可達(dá)98.29%。并與現(xiàn)有SVM,LDA on HOG1,Random Forests,Committee of CNNs方法進(jìn)行對比,其中SVM通過使用非線性映射算法將低維輸入空間線性不可分的樣本轉(zhuǎn)化為高維特征空間使其線性可分,從而使得高維特征空間采用線性算法對樣本的非線性特征進(jìn)行線性分析;LDA on HOG1利用交通標(biāo)志圖像的HOG特征,采用Fisher線性判別來對圖像進(jìn)行識別;Random Forests是包含多個決策樹的分類器,并且其輸出的類別是由個別樹輸出的類別的眾數(shù)而定;Committee of CNNs則是以有監(jiān)督的學(xué)習(xí)方式,將多列DNN組合成一個較為復(fù)雜的系統(tǒng)。各算法識別率結(jié)果如表6所示。本文算法識別率優(yōu)于SVM,LDA on HOG1,Random Forests方法,接近于人類識別能力,而本文單幅交通標(biāo)志圖像的測試時間為1.32 ms,識別速度遠(yuǎn)高于人類識別速度。而Committee of CNNs算法識別率達(dá)到99.46%[17],但網(wǎng)絡(luò)比較復(fù)雜導(dǎo)致訓(xùn)練時間過長,需要4塊GPU訓(xùn)練37 h。因此,本文算法在保證識別時間較短的同時取得了較高的識別率。
表6 各算法識別率對比Tab.6 Comparison of recognition rates of different algorithms %
本文以真實場景中拍攝的德國交通標(biāo)志數(shù)據(jù)集(GTSRB)為研究對象,提出了一種基于集成卷積神經(jīng)網(wǎng)絡(luò)的算法對交通標(biāo)志圖像進(jìn)行識別。算法的特點是:首先對傳統(tǒng)卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行改進(jìn),提出了一種CNN-SVM的分類器,實驗結(jié)果表明該分類器不僅縮短了網(wǎng)絡(luò)訓(xùn)練時間,還提高了網(wǎng)絡(luò)對交通標(biāo)志圖像的識別率;然后以CNN-SVM作為基分類器來構(gòu)建集成卷積神經(jīng)網(wǎng)絡(luò),最后的識別率達(dá)到98.29%,接近人類識別能力,且單幅交通標(biāo)志圖像的測試時間為1.32 ms,能夠滿足實際應(yīng)用要求。后續(xù)工作目標(biāo)是能夠在真實環(huán)境中迅速檢測到交通標(biāo)志,結(jié)合本文的交通標(biāo)志識別算法,設(shè)計出一個能應(yīng)用在實時交通環(huán)境中的交通標(biāo)志檢測與識別系統(tǒng)。