伍錫如,雪剛剛
(1. 桂林電子科技大學 電子工程與自動化學院,廣西 桂林 541004; 2. 桂林電子科技大學 廣西自動檢測重點實驗室,廣西 桂林 541004)
交通標志識別[1]是智能汽車的關(guān)鍵技術(shù)之一,受到國內(nèi)外學者和汽車廠商的廣泛關(guān)注。許多分類器已經(jīng)開始應(yīng)用于交通標志的識別,如支持向量機、貝葉斯分類器和隨機森林分類器等。這些分類器通常先利用特征描述方法,如加速魯棒特征(speeded up robust features, SURF)、尺度不變特征變換(scale-invariant feature transform,SIFT)、方向梯度直方圖(histogram of oriented gradient, HOG)以及局部二值模式(local binary patterns, LBP)等對訓練樣本進行局部特征提取,然后對這些特征進行訓練,實現(xiàn)對交通標志的識別。例如,Berkaya等[2]提取并整合交通標志圖像的LBP、Gabor和HOG等3類特征,利用SVM完成最后的識別。Hoferlin等[3]通過提取SIFT、SURF等特征,結(jié)合人工神經(jīng)網(wǎng)絡(luò)得到交通標志的識別結(jié)果。張卡等[4]基于中心投影特征,利用概率神經(jīng)網(wǎng)絡(luò)實現(xiàn)了對交通標志的識別。Lu等[5]采用基于稀疏表示的圖嵌入方法也獲得了較好的識別效果。宋文杰等[6]采用Hu不變矩和凸殼算法,利用水平和垂直方向直方圖特征對待識別區(qū)域進行放縮匹配,實現(xiàn)對交通標志的識別。上述特征描述方法通常由人工設(shè)計,主要依靠先驗知識,人工設(shè)計的好壞往往會對實際性能產(chǎn)生很大影響,識別精度和識別效率會有較大起伏,在實際應(yīng)用中存在著很大的挑戰(zhàn)。
2006年加拿大多倫多大學科學家Hinton提出了深度學習[7-8]的概念,它是一種可以通過多層表示來對數(shù)據(jù)之間的復雜關(guān)系進行建模的算法,通過構(gòu)建具有多個中間層的神經(jīng)網(wǎng)絡(luò)模型,將特征和分類器結(jié)合到一個框架中,通過組合低層特征形成更為抽象的高層特征,提升分類或識別的準確性。LECUN等[9]已證明深度學習模型相比傳統(tǒng)的BP神經(jīng)網(wǎng)絡(luò)、SVM等淺層網(wǎng)絡(luò)具有更強的特征表達和泛化能力,在圖像識別、音頻信號處理、復雜控制系統(tǒng)建模等領(lǐng)域表現(xiàn)出優(yōu)越的性能[10-12]。基于深度學習的特征提取方法在交通標志識別中也取得了很好的效果,例如,文獻[13]利用深度神經(jīng)網(wǎng)絡(luò)對交通標志進行識別,取得了較高的識別率;文獻[14]基于圖模型與卷積神經(jīng)網(wǎng)絡(luò)提出了一種針對限速標志的交通標志識別方法,也取得了較好的效果。采用深度學習的方法首先需要構(gòu)造出一個多層的神經(jīng)網(wǎng)絡(luò),再通過大量的樣本對網(wǎng)絡(luò)進行訓練,得到最終的網(wǎng)絡(luò)模型。樣本集的質(zhì)量和數(shù)量往往會對最終的識別模型造成較大的影響,Chawla等[15]已證明樣本質(zhì)量對于分類的重要性,訓練樣本過多,會導致訓練時間增加,而低質(zhì)量樣本會使訓練模型不能充分學習樣本特征,無法獲得有效的識別模型。
為減少低質(zhì)量樣本對訓練的影響,同時避免傳統(tǒng)特征描述方法在圖像識別領(lǐng)域存在的識別精度低和識別效率差等問題,本文提出了一種基于圖像聚類的交通快速CNN快速識別算法,利用圖像聚類和圖像預處理算法對原始樣本進行優(yōu)化,在此基礎(chǔ)上利用深度學習模擬人腦認知的多層結(jié)構(gòu),通過網(wǎng)絡(luò)提取和學習交通標志圖像特征,最終實現(xiàn)具有深層次的表達特征,實現(xiàn)對交通標志的快速識別。
CNN等深度學習方法通過提取數(shù)據(jù)的低層特征,得到抽象的高層特征,從而實現(xiàn)更為有效的特征表達,低層特征如待識別對象的紋理、邊緣信息等,高層特征如語義、結(jié)構(gòu)等信息。樣本質(zhì)量對于網(wǎng)絡(luò)的訓練、特征的提取有著重要的作用,會直接影響最終模型的好壞。
為了優(yōu)化樣本質(zhì)量,提高識別效果,本文所提出的交通標志識別算法(見圖1),主要從3個方面展開:1)采用圖像聚類算法,對原始數(shù)據(jù)進行優(yōu)化,篩選掉原始樣本中的低質(zhì)量數(shù)據(jù),在保證樣本數(shù)量的前提下,提高樣本整體質(zhì)量;2)通過多種圖像預處理方法,如比例裁剪、尺寸歸一化、灰度化等,對聚類后的樣本進行預處理,樣本集整體質(zhì)量得到進一步提升;3)以LeNet-5網(wǎng)絡(luò)[16]為基礎(chǔ),通過優(yōu)化網(wǎng)絡(luò)結(jié)構(gòu)參數(shù),構(gòu)造出一個9層CNN結(jié)構(gòu),并在Caffe平臺下利用德國GTSRB數(shù)據(jù)集設(shè)計完成了相關(guān)實驗,在瑞典BTSD數(shù)據(jù)集上進行遷移測試,證明了算法的有效性。

圖 1 交通標志識別算法框架Fig. 1 Traffic sign recognition algorithm framework
聚類算法[17]是機器學習中常用的一種算法,一般采用無監(jiān)督學習的方式進行,它可以根據(jù)樣本間的關(guān)系,優(yōu)化樣本質(zhì)量,降低訓練樣本的規(guī)模,減少低質(zhì)量樣本數(shù)據(jù)對訓練的影響,提高最終的模型效果。在以深度學習為主的各種圖片識別任務(wù)中,數(shù)據(jù)集的質(zhì)量和數(shù)量會對訓練結(jié)果造成較大的影響,直接影響最終模型的好壞。為了提高CNN訓練效果,文中采用了圖像聚類算法,通過聚類可以獲知數(shù)據(jù)集的分布特性及分布狀況,將數(shù)據(jù)中的相似數(shù)據(jù)和異常數(shù)據(jù)區(qū)分開來,從而了解數(shù)據(jù)集的內(nèi)在分布結(jié)構(gòu),簡化并提高樣本集的整體質(zhì)量。
相較于劃分聚類、密度聚類以及網(wǎng)格聚類等常用的聚類方法,層次聚類算法計算簡單快捷,對距離等度量標準的選擇敏感性較低,可靠性更高,且不需要事先確定類的數(shù)目,更易發(fā)現(xiàn)類間的層次關(guān)系。根據(jù)類間距離計算方式的不同,層次聚類算法可分為Complete-linkage、Single-linkage、Average-linkage 3種,其中Single-linkage聚類算法以樣本之間的最小距離,作為相似度的度量,計算簡單,在數(shù)據(jù)量較多的情況下可以有效降低時間復雜度。因此,本文采用Single-linkage聚類算法[18]對原始數(shù)據(jù)進行聚類處理,篩選掉原始數(shù)據(jù)中部分低質(zhì)量數(shù)據(jù),從而對樣本整體質(zhì)量進行優(yōu)化,保證CNN訓練效果。Single-linkage聚類算法采用Agglomerative機制,即每次把兩個舊類合并為一個新類,最終把所有樣本數(shù)據(jù)合并為一類為止。
Single-linkage算法的實現(xiàn)過程描述如下:
1)將數(shù)據(jù)集D中的每個數(shù)據(jù)分別看成一類,共得到N類,每類僅包含一個數(shù)據(jù),每兩類之間的距離就是它們所包含的數(shù)據(jù)之間的距離;
2)計算出距離最近的兩個類,將它們合并為一類,總類數(shù)變成N-1;
3)計算新的類與所有舊類之間的距離;
4)重復步驟2)和步驟3),直到所有數(shù)據(jù)合并為一類為止。
本文采用歐氏距離來度量原始樣本間的相似性,用R、G、B 3個顏色通道作為每幅圖像的特征向量,對應(yīng)的歐式距離可以表示為

式中,x、y、z為圖中p、q的R、G、B分量。
通過對數(shù)據(jù)集中的樣本進行聚類處理,可以有效篩選出低質(zhì)量的樣本數(shù)據(jù),圖2是以GTSRB數(shù)據(jù)集中限速標志20和60進行聚類處理后得到的部分低質(zhì)量樣本數(shù)據(jù)和高質(zhì)量樣本數(shù)據(jù)。

圖 2 交通標志聚類效果Fig. 2 Effect of clustering traffic signs
從圖2中可以看出,通過對原始樣本進行聚類處理,可以有效地篩選出低質(zhì)量樣本,提高數(shù)據(jù)集的整體質(zhì)量。為了更為直觀的觀察聚類效果,以交通標志20為例,從GTSRB中隨機選出20張樣本圖片,繪制出其樹狀圖如圖3所示,從圖中可以看出,通過聚類,低質(zhì)量和高質(zhì)量的樣本數(shù)據(jù)得以區(qū)分,有效保證CNN模型訓練中樣本集的整體質(zhì)量。
通過對訓練數(shù)據(jù)進行圖像聚類處理,在優(yōu)化數(shù)據(jù)質(zhì)量的同時保證了訓練樣本的數(shù)量,為算法的進一步展開奠定了基礎(chǔ),保證了CNN的訓練效果。
GTSRB數(shù)據(jù)集中的樣本圖像尺寸大小存在較大差異,樣本數(shù)據(jù)中除了標志區(qū)域外還包含了周圍10%的環(huán)境區(qū)域。為了進一步改善數(shù)據(jù)集中的圖像質(zhì)量,提高CNN訓練速度和識別效果,對聚類得到的訓練樣本進行了一系列的預處理操作。
1)比例裁剪
通過對數(shù)據(jù)集進行比例裁剪,獲得感興趣區(qū)域,即交通標志的最小包圍框,去除交通標志周圍10%左右的無關(guān)區(qū)域,減少環(huán)境等背景信息對交通標志識別的影響,提高了識別速度。
2)尺寸歸一化
GTSRB原始數(shù)據(jù)集中交通標志圖像的大小分布不均,從15×15到250×250都有分布,統(tǒng)計發(fā)現(xiàn)圖像尺寸長寬分布的中位數(shù)是41×40。綜合考慮運算量和圖像細節(jié),對交通標志樣本數(shù)據(jù)歸一化尺寸大小為48×48。
3)灰度化
形狀或圖形特征是交通標志識別的關(guān)鍵因素,彩色圖像灰度化后可以有效降低計算量,減少光照等因素對數(shù)據(jù)的干擾,提高CNN訓練速度以及識別效果。彩色圖像常用的灰度化方法有均值法和加權(quán)平均法,為了更好的保留交通標志的細節(jié)信息,本文采用加權(quán)法對圖像進行灰度化處理,式(2)為所用到的灰度化公式,其中R、G、B分別為彩色圖像中的紅、綠、藍3個顏色分量,Gray表示計算出的灰度值大小。

對原始樣本數(shù)據(jù)聚類后的數(shù)據(jù)集按上述方法做預處理后,樣本質(zhì)量和樣本特征得到進一步提升,圖像預處理操作有效提高了CNN訓練速度和識別速度。

圖 3 交通標志20聚類后得到的樹狀圖Fig. 3 The dendrogram of traffic sign 20 after clustering
CNN是深度學習中的一種算法,通常為多層的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),其結(jié)構(gòu)模型如圖4所示,共分為3個部分:輸入層、隱含層以及輸出層。輸入層通常是輸入的二值或彩色圖像;隱含層是CNN的關(guān)鍵部分,主要包含卷積層和池化層,每個卷積層由一個濾波器層、一個非線性層、一個空間采樣層組成,通常CNN結(jié)構(gòu)越復雜,卷積層和池化層就越多;全連接層通常為一個淺層的分類器,如SVM、SoftMax。交通標志圖像輸入到CNN后,通過卷積和池化運算對圖像進行特征提取,最后通過全連接層完成對交通標志的分類。
卷積運算可以由式(3)表示:

對交通標志圖像進行卷積操作以后,就可以利用所提取的特征來訓練分類器,但對于圖像數(shù)據(jù)來說,網(wǎng)絡(luò)訓練的數(shù)據(jù)量很大,且由于交通標志圖像包含的特征較多,可能會產(chǎn)生過擬合現(xiàn)象。為了避免這樣的問題,本文采用池化操作,池化操作可以有效地降低數(shù)據(jù)的維度,避免過擬合現(xiàn)象的發(fā)生。
在訓練過程中,對于單個交通標志樣本(x,y),其損失函數(shù)可以表示為

式中:J是均方差;

圖 4 CNN結(jié)構(gòu)模型Fig. 4 The architecture of CNN
文中采用了反向傳播算法,它可以計算出訓練過程中的偏導數(shù),用于對網(wǎng)絡(luò)權(quán)值的更新,其過程可以表示為:
1)計算前向傳播,即圖片特征從輸入層向前傳播,經(jīng)過隱含層,通過輸出層得到網(wǎng)絡(luò)輸出的過程,對于l層i單元和l-1層k個單元,其過程如下:

2)計算殘差,殘差是某單元對輸出值產(chǎn)生多少影響的體現(xiàn),可以根據(jù)式(7)計算出輸出層l中單個單元i的殘差,其中⊙表示向量乘積運算符:

方法如下:

4)計算各層的偏導數(shù):

計算出偏導數(shù)后,就可以對網(wǎng)絡(luò)權(quán)值做進一步的更新,文中選用了隨機梯度下降算法(SGD)來對網(wǎng)絡(luò)參數(shù)進行更新,基于SGD的參數(shù)更新過程如下所示:
輸入n個訓練樣本,初始參數(shù)θ,學習速率α;
輸出動量參數(shù)β,初始速度v。
while沒有收斂或達到訓練次數(shù)do
end while
將經(jīng)過圖像聚類和預處理操作得到的交通標志樣本集輸入到CNN中進行訓練,采用前向傳播和反向傳播算法不斷更新網(wǎng)絡(luò)權(quán)值,當達到收斂條件或指定的訓練次數(shù)時,可以得到網(wǎng)絡(luò)模型。把實際采集的交通標志送入訓練好的網(wǎng)絡(luò)模型中,經(jīng)過特征提取可自動得到分類結(jié)果。
本實驗在Ubuntu 14.04 (64 bit)操作系統(tǒng)搭建的Caffe平臺下進行,處理器為Intel? CoreTMi3-2100 CPU @ 3.10 GHz×4,內(nèi)存為8 GB、1 TB 機械硬盤,同時使用NVIDIA GTX1050來實現(xiàn)GPU加速訓練。
實驗選用GTSRB數(shù)據(jù)集作為原始數(shù)據(jù),該數(shù)據(jù)集包含43類不同類型的交通標志,共有51 839張RGB類型的交通標志圖片,其中訓練圖片39 209張,測試圖片12 630張。
GTSRB原始數(shù)據(jù)中存在很多分辨率低、運動模糊、局部遮擋、尺寸不一、光照強度不同的低質(zhì)量數(shù)據(jù)。通過圖像聚類處理,共篩選出8 000多個低質(zhì)量的訓練樣本,約占訓練訓練樣本的20%。經(jīng)過圖像預處理操作,最終得到31 000張灰度圖像作為訓練樣本,為了保證訓練模型的有效性,對測試集中的12 630張交通標志圖像不做處理。
實驗中以LeNet-5網(wǎng)絡(luò)為基礎(chǔ),通過優(yōu)化CNN結(jié)構(gòu),調(diào)整網(wǎng)絡(luò)參數(shù),構(gòu)造了一個深度為9的CNN結(jié)構(gòu)(見表1)。

表 1 CNN結(jié)構(gòu)參數(shù)Table 1 CNN structure parameter
在前兩個卷積層采用了5×5的卷積核,第3個卷積層采用了3×3卷積核,而池化層統(tǒng)一采用2×2大小,全連接層的輸出改為120,同時優(yōu)化并改變了每層的輸出特征數(shù)量,實驗中經(jīng)過多次調(diào)參,最終設(shè)置學習率大小為0.01。通過上述優(yōu)化可以有效減少網(wǎng)絡(luò)訓練計算量,提高CNN訓練速度和最終的識別效率。
為測試文中CNN結(jié)構(gòu)對交通標志圖像的多尺度特征表示,以限速標志20為例,將其輸入到CNN中后,通過可視化方法,得到其在各個卷積層和池化層的特征圖譜如圖5所示。從圖中可以看出,經(jīng)過一系列的卷積和池化操作后,特征圖中限速標志20的邊緣信息變得越來越清晰,圖像立體感得到有效的提升,整體特征大幅度增強。通過圖像聚類和圖像預處理操作,訓練使用的交通標志數(shù)據(jù)集整體質(zhì)量得到優(yōu)化,圖像特征變得更為明顯,有利于CNN充分提取圖像特征。CNN采用質(zhì)量較好數(shù)據(jù)進行訓練,可以更充分地提取和學習數(shù)據(jù)特征,從而獲得更好的訓練模型,提高最終的識別精度和識別速度。
網(wǎng)絡(luò)訓練完成后,繪制出交通標志訓練過程中的誤差和精度曲線如圖6所示,圖7是訓練誤差隨時間的變化曲線。從圖中可以看出,開始訓練后,當?shù)螖?shù)達到1 000次,訓練時間為200 s時,訓練整體誤差迅速下降到0.5以下,同時測試精度達到93%以上;當?shù)螖?shù)達到60 000次時,測試精度可以達到98.5%,整體損失下降到0.1左右。以上結(jié)果表明,通過對交通標志數(shù)據(jù)集的優(yōu)化,CNN訓練收斂迅速,可以有效節(jié)省訓練時間,訓練精度可以在短時間內(nèi)提高到較高水平,同時均方誤差下降到較低水平,這說明本算法具有較好的實時性以及較高的識別率。
為了進一步檢測本文算法的實際性能,同時驗證文中圖像聚類和圖像預處理方法對CNN訓練的積極影響,對比了GTSRB數(shù)據(jù)集在圖像聚類以及預處理前后的識別率,實驗結(jié)果如表2所示。
由實驗1和2可以看出,在不進行圖像預處理和圖像聚類的情況下,交通標志的識別率為94.9%,經(jīng)過圖像預處理操作后,識別率可以達到96.8%,提高了0.9%;對比實驗1和4則可以發(fā)現(xiàn),經(jīng)過圖像聚類對原始數(shù)據(jù)集質(zhì)量優(yōu)化后,交通標志的識別率可以達到97.6%,比未經(jīng)過任何處理的情況下,識別精度提高了1.7%;實驗3表明,當同時采用圖像聚類和圖像預處理的情況下,交通標志的識別率可以達到98.5%。
表2實驗表明,采用圖像聚類的方法,可以有效優(yōu)化樣本集的整體質(zhì)量,進而提高交通標志的識別效果,在經(jīng)過圖像預處理操作后,樣本集質(zhì)量得到進一步提升,交通標志的識別率得到提高。
表3給出了幾種具有代表性的交通標志識別方法的對比結(jié)果,從表中可以看出,本文方法的識別率高于文獻[2]中的特征描述方法以及文獻[19]中的隨機森林方法。分析原因,主要是因為相對于上述方法,文中數(shù)據(jù)經(jīng)過有效地樣本優(yōu)化和預處理,整體質(zhì)量得到較大提升,所采用的深度學習方法可以充分學習交通標志圖像的高維特征,實現(xiàn)更有效的特征表達,得到更好的識別模型。
將文獻[20]中同樣采用深度學習的交通標志識別方法與本文方法進行對比,發(fā)現(xiàn)文獻[20]中的方法略高于本文算法,但文獻[20]中選用彩色圖像作為訓練數(shù)據(jù),通過尺寸變化、角度旋轉(zhuǎn)等方式對數(shù)據(jù)進行了大量的擴充,訓練樣本接近130 000個,樣本龐大且未做有效優(yōu)化,所采用的CNN結(jié)構(gòu)參數(shù)復雜,輸入和輸出特征較多,因此,盡管其精度高于本文算法,但其訓練過程中的計算量非常大,對硬件要求較高,操作復雜,且非常耗時。而本文算法首先通過圖像聚類獲取高質(zhì)量訓練數(shù)據(jù);然后對樣本進行多種預處理操作,采用31 209張灰度圖像作為訓練數(shù)據(jù),僅為文獻[20]方法數(shù)據(jù)量的四分之一;在訓練網(wǎng)絡(luò)上,通過優(yōu)化網(wǎng)絡(luò)結(jié)構(gòu),減少網(wǎng)絡(luò)輸出,構(gòu)造了深度為9的CNN結(jié)構(gòu),并通過多次訓練選擇了合適的網(wǎng)絡(luò)參數(shù),有效地節(jié)省了訓練時間,提高了訓練效果,在較低的硬件條件下得到了較好的識別精度。

圖 5 交通標志20的特征圖Fig. 5 The feature maps of Traffic 20

圖 6 訓練誤差和測試精度曲線Fig. 6 Training error and test accuracy curves

圖 7 訓練誤差隨時間變化曲線Fig. 7 Variation curve of training error over time

表 2 圖像聚類和圖像預處理后識別率對比Table 2 Comparison of recognition rate after image clustering and image preprocessing

表 3 本文算法與其他算法識別結(jié)果對比Table 3 Recognition rate variances of different methods
為了測試本文算法的實際表現(xiàn),從比利時BTSD數(shù)據(jù)集中隨機選取的600張真實環(huán)境下的交通標志圖片進行遷移測試,在新樣本下,單張圖片的平均識別時間可以保持在0.2 s左右,識別率高達95%,表明訓練模型具有良好的魯棒性和泛化能力,可以滿足交通標志識別的實時性和準確性要求。
本文基于圖像聚類,利用深度學習提出了一種交通標志快速識別算法。在一定程度上解決了傳統(tǒng)特征描述方法,在交通標志識別領(lǐng)域魯棒性和識別精度差等問題。本文將圖像聚類算法應(yīng)用于交通標志數(shù)據(jù)集的優(yōu)化,有效地提高了數(shù)據(jù)整體質(zhì)量,保證了深度學習訓練效果,此方法可泛化到其他圖像識別問題。利用公開數(shù)據(jù)集GTSRB和BTSD,在Caffe平臺下,通過仿真實驗和對比分析,證明了算法的有效性,可為智能駕駛提供一定的理論依據(jù)和技術(shù)支持。本文只完成了對交通標志圖像的分類,并沒有對交通標志進行檢測,下一步的工作是研究如何實現(xiàn)自然環(huán)境下小目標交通標志的檢測,并在此基礎(chǔ)上真正實現(xiàn)對交通標志的自動識別。