韓建鵬,王春生,鞏梨
(730070 甘肅省 蘭州市 蘭州交通大學(xué) 交通運(yùn)輸學(xué)院)
在人工智能和大數(shù)據(jù)的背景下,道路周圍的環(huán)境對車輛的行駛安全問題越來越受到研究人員的關(guān)注。交通標(biāo)志識別作為高級駕駛輔助系統(tǒng)(Advanced Driving Assistance System,ADAS)中不可缺少的技術(shù),可以為駕駛員在駕駛車輛過程中提供安全保障。現(xiàn)代交通在為人們帶來出行便捷的同時(shí),交通事故也造成很大損失。車輛在道路上行駛,道路周圍的環(huán)境信息非常豐富,包括許多重要的交通標(biāo)志信息。根據(jù)交通標(biāo)志信息駕駛員能在道路上做出正確的駕駛行為,避免發(fā)生交通事故。交通標(biāo)志識別系統(tǒng)已經(jīng)在許多方面得到應(yīng)用,例如駕駛員輔助駕駛系統(tǒng)可以檢測并識別當(dāng)前行駛道路上的交通標(biāo)志,然后反饋給駕駛員有關(guān)道路一些必要信息。但是周圍的交通標(biāo)志會(huì)受到車輛的運(yùn)動(dòng)狀態(tài)、光照以及樹葉遮擋等環(huán)境因素的影響,從而出現(xiàn)不能快速準(zhǔn)確識別交通標(biāo)志的問題。在當(dāng)今信息化程度很高的社會(huì),智能交通系統(tǒng)領(lǐng)域需要更深層次的研究和探索,以適應(yīng)快速發(fā)展的現(xiàn)代交通,因此如何能夠使車輛在道路交通中快速準(zhǔn)確地幫助駕駛員識別交通標(biāo)志成為了智能交通領(lǐng)域所研究的熱點(diǎn)問題之一。
ALGHMGHAM D A[1]等采用深度卷積神經(jīng)網(wǎng)絡(luò)開發(fā)了一套自主交通和道路標(biāo)志(Autonomous traffic road sign,ATRS)檢測和識別系統(tǒng),并利用沙特阿拉伯道路中的交通標(biāo)志數(shù)據(jù)集進(jìn)行實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果達(dá)到了不錯(cuò)的準(zhǔn)確率;ZHU Y[2]等考慮到交通環(huán)境的復(fù)雜性,提出一種利用全卷積網(wǎng)絡(luò)和深度卷積神經(jīng)網(wǎng)絡(luò)相結(jié)合的思想,能夠使整個(gè)檢測系統(tǒng)快速準(zhǔn)確,并用瑞典交通標(biāo)志數(shù)據(jù)集進(jìn)行實(shí)驗(yàn),獲得了很好的實(shí)驗(yàn)結(jié)果;伍曉暉[3]等在交通標(biāo)志識別的研究中對交通標(biāo)志的檢測和識別原理、步驟以及特點(diǎn)進(jìn)行了綜合描述,并和傳統(tǒng)的特征檢測和識別方法對比后,采用深度學(xué)習(xí)方法解決了光照變化和遮擋等因素對交通標(biāo)志識別的影響;張萬征[4]等提出了一種改進(jìn)的LeNet-5 卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neuron Networks,CNN)結(jié)構(gòu)對交通標(biāo)志圖像進(jìn)行訓(xùn)練識別,并在實(shí)際環(huán)境中對隨機(jī)的交通標(biāo)志進(jìn)行實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果也達(dá)到了對交通標(biāo)志識別的穩(wěn)定性和實(shí)時(shí)性;薛搏[5]等對交通標(biāo)志識別過程中的特征提取方法進(jìn)行了研究,并對多種特征提取方法進(jìn)行了定量比較和分析;張文熾[6]等提出了一種基于卷積神經(jīng)網(wǎng)絡(luò)特征融合的交通標(biāo)示識別方法,并和單一的一些經(jīng)典圖像識別網(wǎng)絡(luò)進(jìn)行比較,得到了較好的實(shí)驗(yàn)結(jié)果;伍錫如[7]等提出一種基于圖像聚類的交通標(biāo)志卷積神經(jīng)網(wǎng)絡(luò)快速識別算法,并構(gòu)造了9 層深度的卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。將待識別的圖像輸入到建立的模型中,驗(yàn)證訓(xùn)練后的模型的識別率和準(zhǔn)確性。
本文在訓(xùn)練模型的過程中為了較好提升識別準(zhǔn)確率,對訓(xùn)練的網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行優(yōu)化,加深網(wǎng)絡(luò)深度以及對網(wǎng)絡(luò)中的激活函數(shù)進(jìn)行了改進(jìn)。對于卷積核的大小、學(xué)習(xí)率以及為防止過擬合對Dropout 參數(shù)進(jìn)行了設(shè)定,并驗(yàn)證算法的識別準(zhǔn)確率。
卷積神經(jīng)網(wǎng)絡(luò)通過反向傳播算法訓(xùn)練卷積神經(jīng)網(wǎng)絡(luò)中的權(quán)重,實(shí)現(xiàn)深度學(xué)習(xí)。卷積神經(jīng)網(wǎng)絡(luò)不僅具有傳統(tǒng)神經(jīng)網(wǎng)絡(luò)的較好容錯(cuò)性、自適應(yīng)性和較強(qiáng)自學(xué)習(xí)能力等優(yōu)點(diǎn)。還具有自動(dòng)提取特征、權(quán)值共享以及輸入圖像與網(wǎng)絡(luò)結(jié)構(gòu)結(jié)合良好等優(yōu)勢。卷積神經(jīng)網(wǎng)絡(luò)的卷積層中,每個(gè)神經(jīng)元會(huì)和輸入圖像的局部區(qū)域進(jìn)行連接,也被稱為局部感知區(qū)域。而且卷積神經(jīng)網(wǎng)絡(luò)共享權(quán)值和空間域上的降采樣,相對于位移、縮放和扭曲,具有穩(wěn)定不變的特性[8]。權(quán)值共享網(wǎng)絡(luò)結(jié)構(gòu)能夠降低網(wǎng)絡(luò)模型的復(fù)雜度,從而降低權(quán)值的個(gè)數(shù)。權(quán)值共享網(wǎng)絡(luò)使得圖像可以直接作為網(wǎng)絡(luò)的輸入,自動(dòng)識別圖像特征,以提高圖像識別的精度和效率。卷積神經(jīng)網(wǎng)絡(luò)在訓(xùn)練時(shí)包含前向傳播和反向傳播2 種傳播機(jī)制。其中前向傳播是將樣本中的數(shù)據(jù)經(jīng)過卷積神經(jīng)網(wǎng)絡(luò)模型的每一層逐步傳送到下一個(gè)輸出層,得到對應(yīng)的輸出值[9],其表達(dá)式為
而反向傳播有很多機(jī)制,選取方法和損失函數(shù)的計(jì)算方式一一對應(yīng)。損失函數(shù)的計(jì)算常采用均方誤差損失函數(shù)、交叉熵價(jià)函數(shù)等,在采用梯度下降法進(jìn)行學(xué)習(xí)時(shí),會(huì)出現(xiàn)模型一開始訓(xùn)練時(shí)學(xué)習(xí)速率非常慢的情況,而交叉熵代價(jià)函數(shù)在模型效果差時(shí)學(xué)習(xí)速度比較快,在模型效果好時(shí)學(xué)習(xí)速度變慢[9],其表達(dá)式為
式中:y ——輸入值;n ——樣本的總數(shù);a ——神經(jīng)元的輸出值。
反向傳播采用鏈?zhǔn)椒▌t求損失函數(shù)對每層權(quán)重的偏導(dǎo)數(shù),其中權(quán)重更新公式為
式中:Wnew,bnew——更新后的權(quán)重值和偏置值;Wold,bold——更新前的權(quán)重值和偏置值;α——學(xué)習(xí)率;——對應(yīng)層的權(quán)重梯度值和偏置梯度值[10]。
在優(yōu)化器的選擇方面,ADAM 優(yōu)化器相比梯度下降優(yōu)化器能夠自動(dòng)調(diào)整各個(gè)參數(shù)的學(xué)習(xí)率,達(dá)到快速收斂的目的。而且ADAM 優(yōu)化器在經(jīng)過偏置校正后,每一次的學(xué)習(xí)率都有一個(gè)確定的范圍,使得參數(shù)的變化比較穩(wěn)定。
本文采用的是公開的德國交通標(biāo)志數(shù)據(jù)集GTSRB,該數(shù)據(jù)集共有43 類交通標(biāo)志,包含5 萬多張各類常見的交通標(biāo)志圖像,而且這些圖像的采集過程涉及到不同的光照強(qiáng)度、不同的拍攝角度、不同的天氣情況以及被遮擋情況。交通標(biāo)志數(shù)據(jù)集部分圖像如圖1 所示。
圖1 不同因素下的各類交通標(biāo)志圖像Fig.1 Various traffic sign images under different factors
為了能夠清楚地了解數(shù)據(jù)集中各類交通標(biāo)志的數(shù)量,本文將數(shù)據(jù)集進(jìn)行處理,繪制了交通標(biāo)志數(shù)量分布圖。43 類交通標(biāo)志數(shù)量分布如圖2 所示。從圖2 可以看出有些交通標(biāo)志之間的數(shù)量相差較大,由于各類交通標(biāo)志數(shù)量從200 到2 000 不等,在模型的訓(xùn)練中會(huì)因?yàn)槟愁惤煌?biāo)志數(shù)量過少導(dǎo)致模型的訓(xùn)練效果不理想。為了能夠更好地訓(xùn)練模型,將訓(xùn)練集中的交通標(biāo)志圖像進(jìn)行隨機(jī)打亂輸入到構(gòu)建的模型中進(jìn)行訓(xùn)練。
圖2 數(shù)據(jù)集中43 種交通標(biāo)志的分類數(shù)量Fig.2 The number of classifications of 43 traffic signs in dataset
考慮到不同國家的交通標(biāo)志的顏色存在差異性,并且數(shù)據(jù)集中采集的交通標(biāo)志是彩色的,由于在處理只有一個(gè)通道的灰度圖像時(shí),比三通道的彩色圖像提取時(shí)的特征值要少,而且交通標(biāo)志的顏色不是區(qū)分不同交通標(biāo)志的重要信息,因此將交通標(biāo)志圖像進(jìn)行灰度化處理能夠降低模型訓(xùn)練的復(fù)雜度和減少模型的計(jì)算量,能夠達(dá)到降低模型的復(fù)雜度的目的。使圖像灰度化的方法有很多,本文選擇加權(quán)平均法進(jìn)行處理,即將彩色圖像中的每個(gè)像素點(diǎn)的RGB 的亮度值分別乘以不同的系數(shù),最終成為灰度圖中對應(yīng)的灰度值,處理后的灰度圖如圖3 所示。
圖3 交通標(biāo)志灰度化圖像Fig.3 Grayscale image of traffic signs
當(dāng)所有圖像的輸入信號都為正值時(shí),與第一隱含層神經(jīng)元相連的權(quán)值只能同時(shí)增加或減小,從而導(dǎo)致學(xué)習(xí)速度很慢。為了加快網(wǎng)絡(luò)學(xué)習(xí)速度,可以對輸入信號進(jìn)行歸一化,使得所有樣本的輸入信號其均值接近于0 或與其均方差相比很小[11]。具體實(shí)現(xiàn)方式是,通過用數(shù)據(jù)集平均值減去每個(gè)圖像的像素值并除以其標(biāo)準(zhǔn)偏差來確定圖像數(shù)據(jù)集分布的中心。提高模型在處理圖像時(shí)的一致性。生成的圖像如圖4 所示。
圖4 交通標(biāo)志歸一化圖像Fig.4 Normalized image of traffic signs
傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò)中,最后一級卷積池化層將特征圖像輸入到之后的全連接層中,在全連接層局和圖片的高階特征,卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)中的多個(gè)池化層級聯(lián)能夠使每個(gè)神經(jīng)元都覆蓋到圖像的視域,卷積神經(jīng)網(wǎng)絡(luò)中提取的圖像特征在一定意義上高度概括不同交通標(biāo)志的特點(diǎn),在池化采樣會(huì)降低圖像的特征維度,會(huì)減少參數(shù)的數(shù)量,在避免過擬合的同時(shí),又保證特征的位置不會(huì)發(fā)生改變,提高識別的準(zhǔn)確率。
本文所構(gòu)造的網(wǎng)絡(luò)在考慮了傳統(tǒng)卷積神經(jīng)網(wǎng)絡(luò)中的不足后,加入了更多的卷積層和池化層,實(shí)現(xiàn)提取更多的圖像特征以及提高識別率。為了防止過擬合,加入了Dropout 層[12]以及使用了eLU這一激活函數(shù),解決了卷積過程中的梯度消失問題。提出的卷積神經(jīng)網(wǎng)絡(luò)模型由5 個(gè)卷積層,3 個(gè)池化層,2 個(gè)Dropout 層,2 個(gè)全連接層以及1 個(gè)Flatten 層構(gòu)成。其中Flatten 層把多維的輸入一維化,是從卷積層到全連接層的過渡層。而且Flatten不影響batch 的大小。最將圖像分類為43 類。構(gòu)建的卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)如圖5 所示。
圖5 搭建的卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.5 Constructed convolutional neural network structure diagram
傳統(tǒng)卷積神經(jīng)網(wǎng)絡(luò)采用的激活函數(shù)是Sigmoid函數(shù)或Tanh 函數(shù),Tanh 函數(shù)的表達(dá)式為
Tanh 函數(shù)因?yàn)槠浜瘮?shù)的特性,在輸入極大值或者極小值時(shí),激活函數(shù)的導(dǎo)數(shù)也會(huì)很小,從而會(huì)產(chǎn)生梯度彌散效應(yīng)。為了解決這一問題,本文采用非線性激活函數(shù)eLU,其表達(dá)式為
式中:x——卷積后的輸入信號值;α——系數(shù)。
本文采用Windows10 操作系統(tǒng)作為實(shí)驗(yàn)環(huán)境,CPU 為1.60 GHz 的8 核Intel(R) Core(TM) i5-10210U,內(nèi)存為8 GB,無GPU 加速,軟件使用集成開發(fā)環(huán)境Anaconda3 開發(fā)環(huán)境,Python3 作為編程語言,基于TensorFlow 框架搭建卷積神經(jīng)網(wǎng)絡(luò)。TensorFlow 由谷歌人工智能團(tuán)隊(duì)開發(fā)和維護(hù),是一個(gè)基于數(shù)據(jù)流編程的符號數(shù)學(xué)系統(tǒng),被廣泛應(yīng)用于各類機(jī)器學(xué)習(xí)算法的編程實(shí)現(xiàn)。TensorFlow 具有構(gòu)架靈活性和可移植性。
實(shí)驗(yàn)數(shù)據(jù)采用德國數(shù)據(jù)集(GTSRB)作為訓(xùn)練集、測試集和驗(yàn)證集,數(shù)據(jù)集共包含43 類不同類型的交通標(biāo)志。訓(xùn)練集包含34 799 個(gè)樣本,測試集包含12 630 個(gè)樣本,驗(yàn)證集包含4 410 個(gè)樣本。
對數(shù)據(jù)集進(jìn)行數(shù)據(jù)轉(zhuǎn)換、預(yù)處理等操作。之后建立訓(xùn)練模型,并不斷進(jìn)行超參數(shù)的調(diào)節(jié)以及評估模型的好壞,直到訓(xùn)練的模型達(dá)到預(yù)期的效果,最后在測試集上進(jìn)行測試模型的訓(xùn)練效果。具體流程如圖6 所示。
圖6 實(shí)驗(yàn)流程圖Fig.6 Experimental flowchart
搭建的卷積神經(jīng)網(wǎng)絡(luò)模型中的學(xué)習(xí)率在多次調(diào)節(jié)后設(shè)置為0.000 5,batch-size 為400。前期在訓(xùn)練過程中出現(xiàn)了模型過擬合的情況,因此針對Dropout 層的參數(shù)設(shè)置為0.5。訓(xùn)練的次數(shù)epoch 為200 次。每訓(xùn)練一次對模型進(jìn)行一次驗(yàn)證正確率的測試,并將最后的模型訓(xùn)練集準(zhǔn)確率和驗(yàn)證集準(zhǔn)確率,以及訓(xùn)練集損失值和驗(yàn)證集損失值繪制成圖表,如圖7 所示。從圖7 可以看出模型在訓(xùn)練過程中快速收斂。隨著傳入的批次增多,準(zhǔn)確率逐漸在增高,逐漸地趨近于1;損失值在逐漸降低,逐漸地趨于0。訓(xùn)練到30 代之后曲線呈現(xiàn)平穩(wěn)狀態(tài),說明模型已經(jīng)達(dá)到了較好的訓(xùn)練狀態(tài)。
圖7 模型訓(xùn)練后的準(zhǔn)確率和損失值變化曲線圖Fig.7 Change curve of accuracy and loss value after model training
選取不同的學(xué)習(xí)率,不同的激活函數(shù),并加入了Flatten 層。另外,增加網(wǎng)絡(luò)的層數(shù)以提高對圖像特征的提取等對模型進(jìn)行改進(jìn)。對改進(jìn)后的模型進(jìn)行訓(xùn)練并將測試集輸入模型中進(jìn)行驗(yàn)證,將模型訓(xùn)練集準(zhǔn)確率和驗(yàn)證集準(zhǔn)確率,以及訓(xùn)練集損失值和驗(yàn)證集損失值繪制成圖表,如圖8 所示。對比圖7 中訓(xùn)練集和驗(yàn)證集的準(zhǔn)確率的擬合效果,改進(jìn)后的模型訓(xùn)練集和驗(yàn)證集的準(zhǔn)確率具有更好的擬合效果。
圖8 改進(jìn)模型訓(xùn)練后的準(zhǔn)確率和損失值變化曲線圖Fig.8 Change graph of accuracy and loss value after improved model training
另外,通過實(shí)驗(yàn)對比,傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練花費(fèi)的時(shí)間是836.67 min,而在加入了Flatten層后,改進(jìn)的卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練所花費(fèi)的時(shí)間是762.34 min,可以看出在網(wǎng)絡(luò)結(jié)構(gòu)中加入Flatten 層后訓(xùn)練時(shí)間變短,原因在于Flatten 層對卷積后的輸出數(shù)據(jù)進(jìn)行了扁平化操作,使輸出的多維數(shù)據(jù)處理成一維數(shù)據(jù),因此不必像以前那樣遷就維度規(guī)模,可以使網(wǎng)絡(luò)訓(xùn)練加快收斂,達(dá)到最優(yōu)的訓(xùn)練時(shí)間也就變短。
不同學(xué)習(xí)率的設(shè)定條件下對模型的訓(xùn)練會(huì)有一定的影響,如果學(xué)習(xí)率的設(shè)置過大,會(huì)導(dǎo)致每次改變得太多,錯(cuò)過最佳的位置;如果學(xué)習(xí)率的設(shè)置過小,又會(huì)導(dǎo)致模型在訓(xùn)練過程中收斂會(huì)變得很慢,運(yùn)行的效率不高。本文在考慮傳統(tǒng)神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)率設(shè)定的標(biāo)準(zhǔn)后選取了0.001 0 和0.000 5 兩組學(xué)習(xí)率進(jìn)行實(shí)驗(yàn)。表1 是2 種不同學(xué)習(xí)率下運(yùn)行的結(jié)果,包含了準(zhǔn)確率和損失值。
表1 不同學(xué)習(xí)率識別的準(zhǔn)確率和損失值Tab.1 Accuracy and loss value of different learning rate recognition
通過結(jié)果來看,表現(xiàn)比較好的學(xué)習(xí)率為0.000 5,準(zhǔn)確率在98%以上,損失值也在0.1 以下,因此本文選擇0.000 5 作為模型的學(xué)習(xí)率進(jìn)行訓(xùn)練模型。
Ciresan 提出的Committee of CNNs 算法有很高的識別率,但是該網(wǎng)絡(luò)需要用4 塊GPU 訓(xùn)練37 h,并且訓(xùn)練前需進(jìn)行大量的預(yù)處理操作,考慮到訓(xùn)練時(shí)間的長短會(huì)影響到識別率,因此本文與一些經(jīng)典算法的識別率進(jìn)行對比。各算法的識別率對比如表2 所示。
表2 各算法識別率對比Tab.2 Comparison of recognition rates of various algorithms
在研究交通標(biāo)志識別過程中,雖然有不錯(cuò)的研究成果,但是在識別過程中總會(huì)遇到交通標(biāo)志處于室外,受到光照強(qiáng)度、雨雪天氣等復(fù)雜環(huán)境因素的影響,有些交通標(biāo)志會(huì)被遮擋或者發(fā)生形變導(dǎo)致難以辨認(rèn)。結(jié)果表明,本文建立的卷積神經(jīng)網(wǎng)絡(luò)模型對于光線較強(qiáng)、雨雪天氣和被遮擋部分條件下的交通標(biāo)志識別的準(zhǔn)確率都較高,一般都能達(dá)到96%以上。
本文基于Tensorflow 深度學(xué)習(xí)框架對交通標(biāo)志的識別進(jìn)行了研究。構(gòu)建的卷積神經(jīng)網(wǎng)絡(luò)中將多層卷積核的大小進(jìn)行混合卷積能夠提取,圖像中更多的特征。對于激活函數(shù)的選取,考慮到一些激活函數(shù)會(huì)隨著網(wǎng)絡(luò)的訓(xùn)練次數(shù)增加而出現(xiàn)梯度逐漸消失的情況,因此最終選取了eLU 激活函數(shù)作為本文網(wǎng)絡(luò)模型的激活函數(shù)。而且對數(shù)據(jù)集也進(jìn)行了灰度化、歸一化和圖像增強(qiáng)等預(yù)處理操作,其目的是能夠進(jìn)一步提升模型對交通標(biāo)志的識別準(zhǔn)確率。實(shí)驗(yàn)結(jié)果表明搭建的卷積神經(jīng)網(wǎng)絡(luò)模型能夠進(jìn)一步提升準(zhǔn)確率,可以為智能交通領(lǐng)域提供一定的參考。本文在研究過程中采用的數(shù)據(jù)集為德國數(shù)據(jù)集,和中國道路交通中的交通標(biāo)志存在一定的差異性,而且數(shù)據(jù)集內(nèi)交通標(biāo)志的數(shù)量有限,不能很好地對其他數(shù)據(jù)集進(jìn)行訓(xùn)練和測試,在后續(xù)的研究中通過更多的數(shù)據(jù)集來訓(xùn)練構(gòu)建的網(wǎng)絡(luò),并以此來提升算法的準(zhǔn)確率。