李澔*
(北京建筑大學(xué)測繪與城市空間信息學(xué)院,北京 102616)
交通標(biāo)志通過文字或符號來傳遞限制、引導(dǎo)、指示或警告等信息。在日常生活中,交通標(biāo)識保障了道路中車輛和行人的生命安全,保證道路順暢,提醒駕駛員前方存在的安全隱患。隨著汽車數(shù)量增長,導(dǎo)致交通擁擠、交通事故不斷增加。在實際交通道路中,駕駛?cè)藛T可能由于自身問題,如疲勞駕駛、酒后駕駛等因素對實際路況做出錯誤判斷,還可能因為外界環(huán)境問題,如道路遮擋、環(huán)境能見度低等問題導(dǎo)致交通事故。許多政府和汽車廠商為了提高交通出行的安全性,同時降低交通事故的發(fā)生率,都在推廣智能交通系統(tǒng)。交通標(biāo)識快速識別是智能交通系統(tǒng)重要組成部分并且也是汽車自動駕駛的主要內(nèi)容。由于交通標(biāo)識通過文字,符號,圖形傳遞信息,在一定范圍內(nèi)具有準(zhǔn)確、特征鮮明、輪廓清晰明顯的特性,所以可以通過圖像特征提取和圖形識別技術(shù)對交通標(biāo)志進(jìn)行識別和分類[1,2]。
近幾年隨著機(jī)器學(xué)習(xí)、深度學(xué)習(xí)等技術(shù)的不斷發(fā)展,基于卷積神經(jīng)網(wǎng)絡(luò)的算法更加適合識別交通標(biāo)志,可以增加交通標(biāo)識的識別正確率。因此本文主要基于卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)的LeNet-5 算法[3]對其模型進(jìn)行改進(jìn),使之更適合對交通標(biāo)志的識別,并且通過比利時交通數(shù)據(jù)集進(jìn)行訓(xùn)練,最后得到一個可以識別交通標(biāo)志圖像的算法。
文中是基于LeNet-5 算法,并對其做出改進(jìn),該算法是一種非常高效的卷積神經(jīng)網(wǎng)絡(luò)用于識別手寫字體標(biāo)識[4,5]。LeNet-5 算法可以很好的提取高維圖像的信息特征,其網(wǎng)絡(luò)結(jié)構(gòu)包括1 個輸入層、2 個卷積層、2 個池化層、2 個全連接層,1 個輸出層,共有8 層。雖然LeNet-5模型層次簡單但是它包含深度學(xué)習(xí)中主要的基本模塊,并且其模型訓(xùn)練的數(shù)據(jù)都為灰度圖像,需要提取的特征也較少。但是,本文中所研究的交通標(biāo)志圖像,其圖像中的特征信心更加豐富,部分交通標(biāo)志相似程度較大,而其部分圖像中有局部被遮擋,因此需要對LeNet-5 模型做進(jìn)一步的改進(jìn),提高模型提取圖像特征的能力,由于其訓(xùn)練數(shù)據(jù)集數(shù)據(jù)量大,因此本文基于LeNet-5 算法進(jìn)行改進(jìn),增加其算法的識別精度和訓(xùn)練效率。
為提高Lenet-5 算法的識別精度和特征提取能力,在該算法中每層卷積中增加卷積核的數(shù)量,并且加入隨機(jī)抽樣算法和自適應(yīng)矩估計優(yōu)化算法[6],防止模型出現(xiàn)過擬合并且增加模型收斂速度,提高學(xué)習(xí)效率。
文中基于LeNet-5 改進(jìn)后的層次結(jié)構(gòu)如圖1 所示,整體上通過兩個卷積層,兩個池化層,兩個全連接層,一個輸入層和一個輸出層組成。數(shù)據(jù)集中的數(shù)據(jù)基本是RGB的彩色圖像,共有三個通道,所以基于LeNet-5 改進(jìn)參數(shù)設(shè)置,每一個卷積層,池化層,全鏈接層都有不同的參數(shù),算法中第一、二層卷積分別使用42、84 個5*5 大小的卷積核對輸入數(shù)據(jù)進(jìn)行卷積,采取邊緣填充策略確保信息完整,算法的池化層中通過2*2 大小的窗口進(jìn)行最大池化,降低數(shù)據(jù)的維數(shù),避免過擬合。本文方法在卷積層中增加了卷積核的個數(shù),以便識別出圖像中更多的特征信息,同時采用最大池化加快迭代速度。
圖1 本文改進(jìn)后的算法結(jié)構(gòu)
本文基于LeNet-5 模型改進(jìn)的算法具有一定的網(wǎng)絡(luò)模型深度,可以更好地提取圖像中的特征。但是,隨著網(wǎng)絡(luò)模型的深度增加,訓(xùn)練的參數(shù)增多,迭代次數(shù)不斷增加,在訓(xùn)練模型的時候非常容易出現(xiàn)過擬合的情況。在訓(xùn)練過程中,模型識別驗證數(shù)據(jù)集的精度會達(dá)到一個最大值,網(wǎng)絡(luò)模型的參數(shù)往往達(dá)到了局部最優(yōu),在這之后識別精度會出現(xiàn)下降,這時候就出現(xiàn)過擬合。
在分類問題中,如果模型太過簡單或是訓(xùn)練集數(shù)據(jù)量太少,這時會導(dǎo)致欠擬合出現(xiàn),使得模型識別圖像特征時不準(zhǔn)確,有較大誤差;如果模型較為復(fù)雜,層次較深,同時訓(xùn)練集的數(shù)據(jù)不夠充分,就會出現(xiàn)過擬合,在訓(xùn)練時對測試集和驗證集識別時會有較高的準(zhǔn)確率,但是識別新的數(shù)據(jù)圖像時識別準(zhǔn)確率較低。在正確擬合中,雖然在識別分類時會出現(xiàn)一些偏差,但是可以使模型有更大的泛化能力,即對未知數(shù)據(jù)的識別分類精度會更高。在深度學(xué)習(xí)中,我們都是通過訓(xùn)練集中的數(shù)據(jù)來學(xué)習(xí)模型,所以對未知數(shù)據(jù)的識別,即泛化能力,更加重要,而不是僅僅與訓(xùn)練集中的數(shù)據(jù)完全擬合。
本文改進(jìn)后的算法中選擇隨機(jī)抽樣法來解決過擬合問題。在改進(jìn)后的模型進(jìn)行訓(xùn)練時,通過隨機(jī)抽樣函數(shù)隨機(jī)剔除一部分神經(jīng)元,被扔掉的神經(jīng)元不在網(wǎng)絡(luò)中計算,也不更新權(quán)值,如圖2 所示。在模型最后對輸入的圖像進(jìn)行分類時,每一次都不會只依靠特定的神經(jīng)元進(jìn)行分類,從而防止過擬合。本文在模型的最后兩層全鏈接中均加入隨機(jī)抽樣函數(shù),每一層隨機(jī)剔除上一層中一半神經(jīng)元。
圖2 全連接層中隨機(jī)抽樣法示意圖
在卷積神經(jīng)網(wǎng)絡(luò)中為了減小損失函數(shù),通常使用優(yōu)化算法來改善訓(xùn)練策略。目前常用的優(yōu)化算法通常是梯度下降算法。梯度下降算法雖然計算復(fù)雜度低,只需計算目標(biāo)函數(shù)的一階雅可比,但是梯度下降法過于貪心不能保證收斂到全局最優(yōu)解,反而增加了迭代次數(shù)。針對上述問題,本文采用自適應(yīng)矩估計優(yōu)化算法。該算法訓(xùn)練時不同參數(shù)都會有相對應(yīng)的學(xué)習(xí)率,其本質(zhì)是利用梯度來更新模型中的參數(shù)。自適應(yīng)矩估計優(yōu)化算法與其他梯度下降的優(yōu)化算法相比,其學(xué)習(xí)效率更加有效,收斂速度的更快。
自適應(yīng)矩估計優(yōu)化算法會保存一個先前指數(shù)衰減的平方梯度νt,即二階矩估計,還會保存先前梯度的指數(shù)衰減均值mt,即一階矩估計,并計算的νt和mt偏差,其公式如下:
βt1表示一階矩估計的指數(shù)衰減因子,其默認(rèn)取值為0.9;βt2表示二階矩估計的指數(shù)衰減因子,其默認(rèn)取值為0.9;ò 表示一個無窮小量。
算法測試環(huán)境為Windows10 64 位系統(tǒng),CPU 為Intel Core i7-9700K,顯卡為Nvidia GeForce RTX 2060,內(nèi)存為32GB,深度學(xué)習(xí)框架為tensorflow1.9.0[7]。
實驗數(shù)據(jù)采用比利時交通數(shù)據(jù)集(BelgiumTSC)[8],其中包括62 類交通標(biāo)志。比利時交通數(shù)據(jù)集中分為訓(xùn)練數(shù)據(jù)集和測試數(shù)據(jù)集,訓(xùn)練集中有62 類交通標(biāo)志,共有4575 張交通標(biāo)志圖像,測試集中有53 類交通標(biāo)志,共有2516 張交通標(biāo)志圖像。
主要技術(shù)流程如圖3 所示,首先獲取數(shù)據(jù)集,下載比利時交通標(biāo)志數(shù)據(jù)集,并其進(jìn)行預(yù)處理;其次進(jìn)行環(huán)境搭建,配置GPU 驅(qū)動同時安裝tensorflow框架,并測試環(huán)境;然后根據(jù)本文第3 節(jié)內(nèi)容,對LeNet-5 算法進(jìn)行改進(jìn),加入隨機(jī)抽樣算法防止出現(xiàn)過擬合,并且使用自適應(yīng)矩估計優(yōu)化算法加快損失函數(shù)收斂;最后進(jìn)行實驗結(jié)果分析,分析算法的精確率和損失函數(shù),同時通過測試集對改進(jìn)后的算法進(jìn)行交通標(biāo)志識別測試。
圖3 整體技術(shù)流程
在訓(xùn)練中,輸入圖像時采用分批次輸入,每次輸入25 張交通標(biāo)志圖像。在訓(xùn)練模型的參數(shù)設(shè)置中,訓(xùn)練的迭代總次數(shù)為1500 次,在每一次的迭代中都會將訓(xùn)練集中的數(shù)據(jù)放入算法中訓(xùn)練模型。如圖4 所示,迭代次數(shù)在1 到270 之間隨著迭代次數(shù)的增加模型識別交通標(biāo)志的精確度迅速提高,隨著迭代次數(shù)增加,精確度不斷提升,在迭代次數(shù)在990 次之后漸漸變得平緩,最終識別精度確定在95.4%左右。
圖4 改進(jìn)后網(wǎng)絡(luò)分類精確度隨迭代次數(shù)變化圖
損失函數(shù)隨著迭代次數(shù)增加的變化趨勢,如圖5 所示。隨著迭代次數(shù)的增加,損失函數(shù)整體上不斷減小,最終趨于收斂。從圖5 中可以看到,迭代次數(shù)在0 到735 之間,損失函數(shù)下降速度較快,但是波動也很快,在迭代次數(shù)達(dá)到1215 次之后,下降的速度趨于平緩,最后收斂于3.16 左右。
圖5 改進(jìn)后網(wǎng)絡(luò)交叉熵?fù)p失函數(shù)隨迭代次數(shù)變化圖
BelgiumTSC 的測試集中共用53 類交通標(biāo)志的圖像,共有2516 張圖像,通過本文改進(jìn)后的網(wǎng)絡(luò)進(jìn)行識別,正確識別2293 張圖像,識別的總精度為91.14%。其中有十五類交通標(biāo)志識別率達(dá)到100%,其余類別的交通標(biāo)志正確識別率如圖6 所示,其中交通標(biāo)志類別為“2”的識別率最低,只有14.29%。
圖6 改進(jìn)后識別交通標(biāo)志的精度
在識別率達(dá)到100%的這十五類交通標(biāo)志中,有八類標(biāo)志的訓(xùn)練集中訓(xùn)練數(shù)據(jù)小于50 張,剩下七類交通標(biāo)志的訓(xùn)練集數(shù)量都非常充足。訓(xùn)練集中的數(shù)據(jù)對模型識別精度的影響非常大,在某兩類交通標(biāo)志相似度非常高時。模型很難提從訓(xùn)練數(shù)據(jù)少的交通數(shù)據(jù)集中提取特征。雖然模型的損失函數(shù)趨于收斂,但是某些相似度高的交通標(biāo)志無法正確識別,會導(dǎo)致?lián)p失函數(shù)過大,這需要相應(yīng)補(bǔ)充該類別的訓(xùn)練數(shù)據(jù)。
本文基于LeNet-5 算法改進(jìn)網(wǎng)絡(luò)具有很好的穩(wěn)定性,在訓(xùn)練時的識別精度較高,其收斂速度快,訓(xùn)練效率高。針對交通標(biāo)志的圖像特征,在算法中加入于隨機(jī)抽樣算法防止過擬合現(xiàn)象,使用自適應(yīng)矩估計算法優(yōu)化模型,使得改進(jìn)后的算法更適合于交通標(biāo)志的識別。通過訓(xùn)練后的模型對比利時交通數(shù)據(jù)集中的測試集進(jìn)行分類,分類后的總體效果帶到預(yù)期效果,其正確分類率達(dá)到91.14%,基于LeNet-5 改進(jìn)后網(wǎng)絡(luò)在對交通標(biāo)識識別方面具有良好的穩(wěn)定性和可靠性。在之后的研究中,將進(jìn)一步研究提高模型識別交通標(biāo)識的精度和速度,增強(qiáng)識別的穩(wěn)定性。