王佳, 黃德啟, 郭鑫, 楊路明
(新疆大學電氣工程學院, 烏魯木齊 830047)
隨著機動車保有量的增加,交通事故的發(fā)生率也在持續(xù)上升。其中一個很重要的因素是惡劣的天氣造就了不同的路面狀態(tài)(如干燥、潮濕、積雪、結(jié)冰等),使得路面與輪胎之間的附著系數(shù)發(fā)生突變,大大降低了路面的抗滑性能[1],造成了大量的交通事故。不同的路面狀態(tài)對應(yīng)不同的峰值附著系數(shù),而峰值附著系數(shù)是估算汽車制動距離的關(guān)鍵參數(shù)[2]。因此,識別路面狀態(tài)對于輔助駕駛員安全駕駛是至關(guān)重要的。此外,目前研究的自動駕駛技術(shù)需要分析道路場景,識別當前的路面狀態(tài)信息,更好的分類模型可以有效提高自動駕駛的安全水平。目前,國內(nèi)外對于路面狀態(tài)的識別方法主要有硬件傳感技術(shù)、基于機器視覺的圖像處理技術(shù)以及機器學習的方法。Sara Rosendahl等[3]針對多種不同的路況,采用近紅外攝像系統(tǒng)進行路面狀態(tài)識別的研究,先使用鹵素燈和三種不同波長的照明模式照射地面,然后對三種不同波長信號進行分析,從而實現(xiàn)路面狀態(tài)的分類。Gui等[4]提出了一種基于雙傳感器的道路狀況探測器,該探測器是基于諧振技術(shù)的光學傳感器和壓電傳感器的組合。通過有限元分析研究壓電傳感器的幅頻響應(yīng)特性,建立了光功率計算模型,評估不同條件下光學傳感器的輸出電壓,以此來分析路面狀況。Cheng等[5]提出了一種改進的激活函數(shù),這種改進的激活函數(shù)使得分類模型具有更好的泛化能力和分類性能。Zhao等[6]根據(jù)原始圖像大小,對圖像進行分割,提取9維顏色特征向量和4維紋理特征向量,構(gòu)建路面狀態(tài)特征數(shù)據(jù)庫。以支持向量機為基礎(chǔ)分類器,并采用多種方法優(yōu)化分類模型,對于不同場景下的路面狀態(tài)識別取得了不錯的效果。Almazan等[7]結(jié)合空間先驗知識,利用消失點和地平線分割路面,取得了更好的路面狀態(tài)分類性能。
在上述文獻的路面狀態(tài)識別方法中,基于硬件傳感技術(shù)的識別方法在前期安裝系統(tǒng)以及后期維護的成本都比較大,而且在不同的環(huán)境條件下硬件傳感器的性能會受到干擾?;趥鹘y(tǒng)機器視覺的圖像處理技術(shù)比較復雜,泛化性能不高。與傳統(tǒng)的路面狀態(tài)識別技術(shù)相比,基于深度學習的路面狀態(tài)識別成本低,時效性能好,泛化性能高。
針對路面狀態(tài)識別存在的問題,現(xiàn)提出一種改進Inception-ResNet-v2的路面狀態(tài)識別方法。通過在Inception-ResNet-v2網(wǎng)絡(luò)中引入注意力機制以及特征融合策略提高模型的特征提取能力,采用全卷積結(jié)構(gòu)優(yōu)化網(wǎng)絡(luò)模型,并基于學習率更新等策略,提高模型的分類準確率,從而實現(xiàn)路面狀態(tài)圖像的精準識別。
Inception網(wǎng)絡(luò)起始于Google 2014年提出的GoogLeNet[8],并推出了多個Inception結(jié)構(gòu)的改良版。最開始的Inception-v1主要采用不同尺度的卷積核進行特征提取,并采用1×1的卷積降低特征數(shù)量。由于在訓練模型的過程中,前面一層參數(shù)的變化會導致后面每一層的輸入分布不斷發(fā)生變化,因此Inception-v2引入了BN[9]層,將每一層的輸出都規(guī)范化。Inception-v3[10]在Inception-v2的基礎(chǔ)上提出了“因子化”,提出這一理念的主要原因是為了減少模型的參數(shù)量。Inception-v4[11]對原來的版本進行了梳理,Stem模塊使用了不對稱卷積和池化層的并行結(jié)構(gòu),可以保證在信息損失足夠小的情況下,降低計算量。Inception-ResNet網(wǎng)絡(luò)是在Inception模塊中引入了ResNet的殘差結(jié)構(gòu),共有兩個版本,分為Inception-Resnet-v1網(wǎng)絡(luò)和Inception-ResNet-v2網(wǎng)絡(luò)。Inception-ResNet-v1網(wǎng)絡(luò)是在Inception-v3中加入殘差思想得到的,而Inception-ResNet-v2網(wǎng)絡(luò)是把殘差思想融入Inception-v4網(wǎng)絡(luò)得到的。Inception-ResNet-v2是由Stem、Inception-ResNet-A、Inception-ResNet-B、Inception-ResNet-C、Reduction-A和Reduction-B幾種模塊堆疊而成。Inception-Resnet-v2通過對上一層的輸入使用多個不同尺寸的卷積核進行操作,一方面增加了網(wǎng)絡(luò)的寬度,另一方面增加了網(wǎng)絡(luò)對尺度的適應(yīng)性,其結(jié)構(gòu)如圖1所示。
Input為輸入層;Average Pooling為平均池化層;Dropout為隨機失活層; Softmax表示用Softmax分類器分類圖1 Inception-ResNet-v2網(wǎng)絡(luò)結(jié)構(gòu)Fig.1 Network structure of Inception-ResNet-v2
注意力機制的本質(zhì)是一種通過模型自主學習出一組權(quán)重系數(shù),并以動態(tài)加權(quán)的方式來強調(diào)感興趣的區(qū)域,抑制不相關(guān)背景區(qū)域的機制。由于路面狀態(tài)圖像含噪聲比較多,且易受到光照等因素的影響。干燥路面圖像中陰影比較多的時候,容易錯分成潮濕路面。初降雪路面、積雪路面和壓實雪路面的分類,涉及細粒度圖像分類,這就需要網(wǎng)絡(luò)提取更加有用的信息,強調(diào)關(guān)鍵信息,從而做出更加精準的判斷。提出在模型的高層融入SENet(squeeze-and-excitation networks)[12]注意力機制,如圖2所示。先進行Squeeze操作,對輸入大小為C×H×W(C為通道數(shù),H和W為圖像的高和寬)的路面狀態(tài)特征圖通過全局平均池化壓縮成尺寸大小為1×1×C的特征圖。然后進行Excitation操作,為了限制模型復雜度以及輔助泛化,這一步操作使用兩個全連接層(fully connected layer, FC),對輸入維度先降維再升維,最后通過Sigmoid函數(shù)把權(quán)重歸一化,將所得權(quán)重逐通道加權(quán)到原來的輸入特征圖上,得到輸出。
Ftr為傳統(tǒng)的卷積結(jié)構(gòu);X和U為Ftr的輸入和輸出;C、H、W為圖像的通道數(shù)、高、寬;Fsq為Squeeze操作;Fex為Excitation操 作;Fscale為對特征圖進行重標定;X′為最終輸出圖2 SENet模型結(jié)構(gòu)Fig.2 Model structure of SENet
由于模型高層提取到的路面特征信息特異性比較高,故將SENet模型嵌入到Inception-ResNet-v2網(wǎng)絡(luò)的高層,也就是Inception-ResNet-C模塊之中,Inception-ResNet-C模塊總共有三個分支,第一個分支未經(jīng)過處理直接輸出;第二個分支經(jīng)過一次卷積核大小為1×1,輸出通道為192的卷積處理;第三個分支先后經(jīng)過卷積核大小為1×1,輸出通道分別為192、224、256的三次卷積處理,然后把第二和第三分支的結(jié)果堆疊后進行一次卷積核大小為1×1的卷積操作,再通過一個SENet模塊,最后把所得輸出與第一分支相加,從而得到新的模塊SE-Inception-ResNet-C,結(jié)構(gòu)如圖3所示。
Conv表示卷積操作,括號內(nèi)的參數(shù)表示卷積的輸出通道數(shù)圖3 SE-Inception-ResNet-C模塊Fig.3 Module of SE-Inception-ResNet-C
全卷積網(wǎng)絡(luò)[13]是用卷積層來代替卷積神經(jīng)網(wǎng)絡(luò)中的全連接層。全卷積網(wǎng)絡(luò)最初是用于圖像分割任務(wù),之后慢慢在計算機視覺領(lǐng)域的各種問題上都得到應(yīng)用。
全連接層和卷積層下一層的輸入都是由上一層的輸出與參數(shù)矩陣相乘得到的,所以它們之間是可以互相轉(zhuǎn)換的。全連接層使用的是圖像的全局信息,它的權(quán)重是固定不變的,其中的每一個節(jié)點都與上一層中的所有節(jié)點相連,且對于模型的輸入圖像尺寸是固定的。卷積層提取的是局部特征,不需要固定輸入圖片的尺寸,因為它是在局部區(qū)域進行窗口滑動提取特征信息的。因此,將全連接層換成卷積層之后,不但可以保持圖像的空間結(jié)構(gòu),而且能夠使網(wǎng)絡(luò)接收任意尺度的圖像。
在路面狀態(tài)識別中,當光照不均勻或是光照比較強烈時會給路面狀態(tài)識別增加一定的難度,比如干燥和潮濕路面在光照的影響之下,這兩種路面狀態(tài)的相似度是很高的。除此之外,隨著模型深度的加深,特征提取過程中可能會忽略一些重要特征信息,使得模型的分類效果變差。因此,將Inception-ResNet-v2算法中的第5個Inception-ResNet-A模塊、第10個Inception-ResNet-B模塊和第5個SE-Inception-ResNet-C模塊的輸出特征圖先經(jīng)過全局平均池化,然后將三個階段的特征進行特征融合,得到更加豐富的特征,增強了模型的泛化性能。
首先,在Inception-ResNet-v2網(wǎng)絡(luò)的基礎(chǔ)上,引入注意力機制和全卷積結(jié)構(gòu)的思想,加入SENet結(jié)構(gòu),并用卷積層代替全連接層,優(yōu)化網(wǎng)絡(luò)模型,并將模型的低層、中間層和高層的特征進行融合,提高模型的特征提取能力,改進模型如圖4所示。
Input為輸入層;Global Average Pooling為全局平均池化層; concat表示拼接操作;Softmax表示采用Softmax分類器分類圖4 改進的模型結(jié)構(gòu)Fig.4 Improved model structure
本文算法具體流程如下。
(1)輸入圖像尺寸為3×299×299,通過一個Stem模塊,用不對稱卷積和池化操作的并行結(jié)構(gòu)提取特征信息,得到一個大小為35×35×320的特征圖。
(2)把流程(1)得到的特征圖作為Inception-ResNet-A模塊的輸入,通過5個Inception-ResNet-A模塊的堆疊,再通過Reduction-A縮放塊,得到大小為17×17×1 088的特征圖。
(3)將流程(2)得到的特征圖作為Inception-ResNet-B模塊的輸入,把10個Inception-ResNet-B模塊的堆疊起來,然后通過一個Reduction-B縮放塊,得到大小為8×8×2 080的特征圖。
(4)把流程(3)中得到的特征圖作為SE-Inception-ResNet-C模塊的輸入,通過5個SE-Inception-Resnet-C模塊的堆疊,得到大小為8×8×2 080的特征圖。
(5)分別將經(jīng)過第5個Inception-ResNet-A模塊、第10個Inception-ResNet-B模塊和第5個SE-Inception-ResNet-C模塊得到的特征圖進行全局平均池化,把全局平均池化得到的張量輸出通過concat進行融合。
(6)將融合后的特征張量輸入Softmax進行分類。
本文算法是在Win10系統(tǒng)下,利用Python語言,PyTorch深度學習框架完成,硬件環(huán)境為CPU Intel Core i5-9300H,內(nèi)存16 GB,顯卡Nvidia GeForce GTX 1660Ti。
主要對于干燥、潮濕、初降雪、積雪、壓實雪和結(jié)冰6種路面狀態(tài)圖像進行識別。通過采集設(shè)備采集校園內(nèi)不同天氣狀況下的路面狀態(tài)圖像,采集到的圖片分辨率為3 264×2 448。由于圖片分辨率太大并不適合作為模型的輸入樣本,故對原始圖像進行壓縮,壓縮后圖片的分辨率為400×400。對于數(shù)據(jù)量少的路面狀態(tài)圖像(如結(jié)冰路面)使用數(shù)據(jù)增強技術(shù),通過翻轉(zhuǎn)變化、改變亮度、尺度變換和添加椒鹽噪聲的方法擴充數(shù)據(jù)集。數(shù)據(jù)集中每種路面狀態(tài)圖片各1 000張,6種類別共計6 000張圖片。在實驗中,采用8∶1∶1的比例劃分數(shù)據(jù)集,80%的路面狀態(tài)圖像作為訓練集,10%的路面狀態(tài)圖像作為驗證集,10%的路面狀態(tài)圖像作為測試集,圖片樣例如圖5所示。
圖5 數(shù)據(jù)集樣例Fig.5 Sample of dataset
為了使改進后的Inception-ResNet-v2模型達到更好的訓練效果,采用以下的訓練策略,如表1所示。
表1 訓練策略Table 1 Strategies training
2.3.1 優(yōu)化器
優(yōu)化器的選擇是構(gòu)建、測試部署模型過程中關(guān)鍵的一環(huán),深度學習中幾乎所有流行的優(yōu)化器都是基于梯度下降。目前常見的優(yōu)化器包括隨機梯度下降法SGD(stochastic gradient descent)、Adam(adaptive moment estimation)、Adagrad、RMSProp等。由于不合適的優(yōu)化器會對訓練任務(wù)造成極大的負面影響,且在同一訓練任務(wù)中的表現(xiàn)是不同的。通過試驗,發(fā)現(xiàn)訓練任務(wù)使用Adam優(yōu)化器時,會出現(xiàn)訓練波動大、目標函數(shù)難以收斂的狀況[14],Adam算法在某些情況下可能會不收斂。當采用隨機梯度下降法時,明顯可見波動小,故采用SGD算法。SGD算法以小批次數(shù)據(jù)為單位,計算一個批次的梯度,然后反向傳播優(yōu)化,有效承擔了GPU等計算硬件的壓力。但是SGD有個比較大的弊端,容易陷入局部最優(yōu)解。為了有效解決陷入局部最優(yōu)的問題,引入動量因子,即更新梯度時一定程度上保留之前更新的方向,同時利用當前批次的梯度進行微調(diào),得到最終的梯度,增加了優(yōu)化的穩(wěn)定性,降低了陷入局部最優(yōu)難以跳出的風險。
2.3.2 損失函數(shù)
路面狀態(tài)識別問題是一個多分類問題,交叉熵損失函數(shù)是在分類問題中常用的一種損失函數(shù),交叉熵能夠衡量同一隨機變量中的兩個不同概率分布的差異程度,在機器學習中表現(xiàn)為真實概率分布與預測概率分布之間的差異。模型過擬合和過度自信是兩個很常見的問題,為了解決這兩個問題,在交叉熵損失函數(shù)中加入標簽平滑。標簽平滑[15]是一種改變目標變量的正則化技術(shù),使得模型的預測結(jié)果不再僅為一個確定值。它在處理類別多、類別標簽錯分以及類別不平衡問題上具有突出的效果。所以將標簽平滑融入交叉熵損失函數(shù),得到標簽平滑交叉熵損失函數(shù),從而提高分類的準確率,該損失函數(shù)loss為
(1)
2.3.3 學習率調(diào)節(jié)
學習率(learning rate)是深度學習中非常重要的一個超參數(shù),要使目標函數(shù)盡快收斂,調(diào)節(jié)學習率是至關(guān)重要的一步。如果學習率設(shè)置過大,可能會使損失函數(shù)跳過全局最優(yōu)點,過小則會使損失函數(shù)的變化速度很慢,增加模型的收斂復雜度,合理地設(shè)置學習率才能使得目標函數(shù)更快收斂。由于路面狀態(tài)圖像較為復雜,當采用余弦退火策略調(diào)節(jié)學習率時,發(fā)現(xiàn)訓練過程中會出現(xiàn)長時間的震蕩現(xiàn)象,故采用指數(shù)衰減策略來控制學習率,在減緩震蕩現(xiàn)象的同時,使得目標函數(shù)更快收斂,其學習率更新公式為
lr′=lr×grammaepoch
(2)
式(2)中:gramma為學習率調(diào)整倍數(shù)的底數(shù);指數(shù)為epoch;lr為學習率初始值。
為了驗證本文改進的Inception-ResNet-v2算法的優(yōu)越性,將其與VGG16、ResNet18以及原始的Inception-ResNet-v2算法做對比實驗。通過試驗,本文將初始學習率設(shè)為0.01,訓練批次設(shè)為8,共迭代200次,優(yōu)化器動量因子設(shè)為0.9,標簽平滑系數(shù)設(shè)為0.1。
本文研究的是一個多分類問題,對于多分類問題的評價指標[16]主要有宏平均(Macro)、微平均(Micro)、權(quán)重平均(Weight)三種算法。其中Micro和Weight主要是針對樣本類別不均衡的情況下使用的,而研究所使用的樣本類別都是均衡的,故采用Macro算法作為評價指標。Macro算法在計算精確率(Precision)和召回率(Recall)這兩個指標時,先計算每個類別的精確率與召回率,然后取平均值。計算公式為
(3)
(4)
(5)
(6)
(7)
式中:TP為真正例;FP為假正例;FN為假反例;L為類別數(shù);MacroF1為精確率和召回率的調(diào)和平均值;i為類別標簽。
精確率和召回率分別體現(xiàn)了模型對于正、負樣本的區(qū)分能力,其數(shù)值越大,區(qū)分能力越強。MacroF1體現(xiàn)了模型的穩(wěn)健性,其值越高,模型越穩(wěn)健。通過實驗,將本文所提算法與其他算法作對比,對比結(jié)果如表2所示。
由表2可知,改進后的Inception-ResNet-v2網(wǎng)絡(luò)的訓練精度和驗證精度明顯優(yōu)于其他算法,本文算法的分類準確率比其他三種算法分別提高了5.0%、3.8%、3.2%。為了進一步驗證本文所提算法的優(yōu)越性,使用測試集進行模型預測,將訓練得到的最優(yōu)模型保存下來,將測試集(600張圖片)分別導入已經(jīng)訓練好的幾種模型進行測試,然后將測試結(jié)果通過Macro算法公式分別計算精確率、召回率和MacroF1三個指標,對比評估幾種模型的性能,對比結(jié)果如表3所示。
表2 訓練結(jié)果對比Table 2 Comparison of training results
表3 模型評價指標Table 3 Evaluation index of models
從表3的數(shù)據(jù)明顯可以看出,本文算法的MacroF1最高,模型最為穩(wěn)健,對于正負樣本的區(qū)分能力最強,其他三種對比模型的模型性能相差不大,其中ResNet18的整體性能略高于另外兩種模型。
采用消融實驗來驗證注意力機制、特征融合策略以及全卷積三種優(yōu)化策略的有效性,共做了5組對比實驗,實驗結(jié)果如表4所示。
表4 消融實驗結(jié)果對比Table 4 Comparison of ablation experiment results
如表4所示,實驗1為不含這3種策略的Inception-ResNet-v2原模型,實驗2是僅有注意力機制的模型,實驗3是僅有特征融合策略的模型,實驗4是僅含全卷積策略的模型,實驗5為加入這3種策略的模型。其中,注意力機制對于模型的提升最為明顯,識別精度在原模型基礎(chǔ)上提升了2.2%,實驗3和實驗4的識別精度較實驗1分別提升了1.0%和0.8%。各個實驗的驗證過程迭代曲線如圖6所示。
圖6 消融實驗迭代曲線Fig.6 Iterative curve of ablation experiment
由圖6可知,實驗5的準確率提升速度和損失值下降速度明顯比其他4個實驗快,訓練過程中的準確率和損失值波動小,收斂速度快,后期沒有振蕩現(xiàn)象的出現(xiàn),而其他4個實驗后期都有輕微的振蕩。實驗2的效果雖然沒有實驗5的好,但是明顯優(yōu)于其他3個實驗,實驗3和實驗4的準確率和損失值前期波動都比較大,后期慢慢收斂。實驗1的準確率和損失值相比于其他4個實驗波動較為明顯,收斂速度最為緩慢。
為了驗證本文算法的可靠性,采集實際場景中的路面狀態(tài)圖像,傳入本文算法中進行分類識別,識別結(jié)果如圖7所示,括號中的數(shù)值表示屬于這一類別的概率??梢钥闯觯趯嶋H應(yīng)用場景中,本文算法仍然能夠準確識別出這6種路面狀態(tài)類型。因此,改進的Inception-ResNet-v2算法具有高精度、泛化能力強的優(yōu)點。
圖7 本文算法測試結(jié)果圖Fig.7 Model test results in this paper
(1)針對城市交通路面狀態(tài)的識別問題,以Inception-ResNet-v2算法為基礎(chǔ),引入SENet注意力機制構(gòu)建新的模塊SE-Inception-ResNet-C,并采用特征融合機制,增強了模型的特征提取能力。通過將網(wǎng)絡(luò)中的全連接層換為卷積層,有效加快了目標函數(shù)的收斂速度,一定程度上緩解了曲線的震蕩現(xiàn)象。實驗結(jié)果表明:本文算法對于路面狀態(tài)圖像的分類準確率達到了99.4%,比原算法提高了3.2%的準確率。
(2)本文算法具有較好的應(yīng)用前景,可將其嵌入高級駕駛輔助系統(tǒng),識別路面狀態(tài)并估算出汽車的制動距離,提醒駕駛員小心駕駛,有效提高了行車的安全性,減少了交通事故的發(fā)生。