王 海,蔡柏湘,蔡英鳳,劉 澤,孫 愷,陳 龍
(1. 江蘇大學(xué)汽車與交通工程學(xué)院,鎮(zhèn)江 212013;2. 江蘇大學(xué)汽車工程研究院,鎮(zhèn)江 212013;3. 上海禾賽科技股份有限公司,上海 201702)
準(zhǔn)確地估計路面附著系數(shù)一直是一個非常具有挑戰(zhàn)性且很有實際意義的研究課題。雨后低附著系數(shù)路面不僅影響車輛的動力性和制動性能,且會使汽車的操縱穩(wěn)定性變差[1]。及時準(zhǔn)確地辨識出路面附著系數(shù),為駕駛員或智能車輛的決策預(yù)留時間,可避免不必要的交通事故。
目前,路面附著系數(shù)的估計方法主要有3 類:第一類是傳統(tǒng)的基于車輛動力學(xué)參數(shù)建模的間接估計,如文獻(xiàn)[2]中基于所設(shè)計慣性試驗臺提出通過改變車輪與雙轉(zhuǎn)鼓間安置角等效不同路面峰值附著系數(shù)的算法;第二類是通過光學(xué)傳感器獲取路面數(shù)據(jù),根據(jù)傳感器數(shù)據(jù)與路面附著系數(shù)的關(guān)系進(jìn)行估計;第三類則是基于視覺傳感器借助深度學(xué)習(xí)手段的間接估計。
采用動力建模的方法雖然準(zhǔn)確可靠,但模型復(fù)雜,不能保證實時性;且該方法只能估計當(dāng)前與輪胎接觸的路面附著系數(shù),而不能估計車輛前方路面的附著系數(shù)?;诠鈱W(xué)傳感器的方法,容易受到光照變化、環(huán)境噪聲和路面陰影等因素的影響,魯棒性不佳。借助深度學(xué)習(xí)分類網(wǎng)絡(luò)的方法雖說能彌補(bǔ)上述兩種方法的缺陷,但只能估計路面整體的附著系數(shù),不能對積水和濕滑路面局部進(jìn)行附著系數(shù)估計,更得不到路面積水和濕滑區(qū)域的分布。
據(jù)此,本文中提出了基于圖像語義分割的積水和潮濕的路面狀態(tài)識別和路面附著系數(shù)估計的方法。該方法不僅可以預(yù)測未來路面局部附著系數(shù),且能得到路面積水和濕滑區(qū)域的分布,為無人駕駛車輛和機(jī)器人等智能系統(tǒng)的決策與路徑規(guī)劃提供很好的前提條件。
近年來,隨著圖像處理技術(shù)和模式識別技術(shù)的發(fā)展及其越來越廣泛的應(yīng)用,伴隨著以攝像頭為主的道路監(jiān)控設(shè)備的普及,催生了許多基于圖像技術(shù)的非接觸式路面狀態(tài)檢測和識別方法。在重要路段,如事故多發(fā)路段、十字路口路段、視野盲區(qū)路段安裝監(jiān)控攝像頭,實時采集道路圖像,并將其傳輸?shù)娇刂浦行?,即可進(jìn)行路面狀態(tài)識別。
機(jī)器學(xué)習(xí)的做法通常是從車載攝像頭或道路監(jiān)控錄像機(jī)獲取道路圖像;然后,經(jīng)過一系列圖像預(yù)處理操作,如降噪、增強(qiáng)、膨脹、腐蝕、二值化等之后,提取圖像的顏色、紋理、亮度等基本特征;最后,采用支持向量機(jī)、k 近鄰、貝葉斯分類器和傳統(tǒng)神經(jīng)網(wǎng)絡(luò)等機(jī)器學(xué)習(xí)技術(shù)進(jìn)行圖像的分類。
日本學(xué)者Kuno 等[3]研究了一種基于車載CCD攝像機(jī)的瀝青路面干濕狀況實時檢測方法,該方法參照亮度信號的低亮度水平,利用平均絕對偏差來檢測路面光澤度,再根據(jù)檢測到的路表面光澤度,確定路面積水狀況。經(jīng)驗證,該方法在車輛高速行駛的情況下也能檢測出路面的積水狀況,但由于夜間幾乎沒有均勻的照明,在夜間的檢測正確率很低。
Yang等[4]研究了一種基于小波函數(shù)和支持向量機(jī)(SVM)分類器的路面狀態(tài)檢測方法。路面狀況分為干燥、潮濕、積雪、結(jié)冰等狀態(tài)。通過車載數(shù)碼相機(jī)獲取圖像,利用小波變換提取圖像特征,然后采用支持向量機(jī)(SVM)訓(xùn)練分類器進(jìn)行分類。最終對干燥、潮濕、積雪和結(jié)冰路面的分類精度分別達(dá)91.4%、85.1%、86.7%和88.3%。
Jonsson 等[5]使用裝有一套光學(xué)波長濾光片的紅外攝像機(jī)獲取每個像素的亮度作為特征,這些圖像主要用于開發(fā)多變量數(shù)據(jù)模型,也用于對每個像素中的路況進(jìn)行分類,由此產(chǎn)生的成像系統(tǒng)能可靠地區(qū)分路面上干燥、潮濕、結(jié)冰或積雪覆蓋的路段。該系統(tǒng)是對現(xiàn)有單點路況分類系統(tǒng)的巨大改進(jìn)。
2012 年,Hinton 課題組提出的AlexNet 網(wǎng)絡(luò)[6]一舉奪得ImageNet 圖像識別比賽冠軍,深度學(xué)習(xí)開始被應(yīng)用在圖像領(lǐng)域并快速發(fā)展。隨后,深度學(xué)習(xí)技術(shù)在圖像分類、識別和檢測等領(lǐng)域都取得了很大的成就;一些研究者將深度學(xué)習(xí)應(yīng)用于路面狀態(tài)的識別。
德國不倫瑞克理工大學(xué)的研究人員從文獻(xiàn)[7]中的Kitti 和RobotCar 數(shù)據(jù)集中截取了6 種路面圖像,分別是干燥、潮濕、積雪等。他們訓(xùn)練并比較兩種不同的模型—InceptionV3和ResNet50。然后增加了長時和短時記憶單元,進(jìn)一步提高分類精度[8]。
Pan 等[9]也利用了類似的方法,使用預(yù)先訓(xùn)練好的深度分類模型—VGG16 對不同積雪程度的路面進(jìn)行分類。該方法充分利用了預(yù)訓(xùn)練模型的權(quán)重,只對預(yù)訓(xùn)練模型進(jìn)行微調(diào),在自制的數(shù)據(jù)集上分類準(zhǔn)確率可達(dá)90.7%。
綜上所述,目前對于路面水、雪、冰等狀態(tài)的識別主要分為傳統(tǒng)機(jī)器學(xué)習(xí)和深度學(xué)習(xí)兩大類。大多數(shù)傳統(tǒng)方法都是手動選擇和提取特征,如紋理、顏色、亮度或其他特征。然后,將它們組合起來,形成一個特征庫。最后,利用機(jī)器學(xué)習(xí)算法建立分類模型。隨著深度學(xué)習(xí)的發(fā)展,一些研究人員利用預(yù)先訓(xùn)練好的深度神經(jīng)網(wǎng)絡(luò)直接對路面圖像進(jìn)行分類,取得了與傳統(tǒng)機(jī)器學(xué)習(xí)算法相當(dāng)?shù)男ЧH欢?,往往不是整個路面都是積水、結(jié)冰或積雪狀態(tài),想要獲取它們在路面上的分布情況,簡單的分類已經(jīng)不能滿足實際應(yīng)用的要求。因此,對路面狀況的識別應(yīng)細(xì)化為對圖像中每個像素的密集預(yù)測,并給出類別信息,這就是語義分割技術(shù)。圖1 為語義分割示意圖,輸入圖像經(jīng)過連續(xù)的卷積操作和池化操作,降低分辨率的同時增加特征圖像通道數(shù)以獲取低層次和高層次的圖像特征,在上采樣階段將下采樣獲取的特征地圖的分辨率恢復(fù)至輸入圖像分辨率大小,最后對特征地圖的每一個像素進(jìn)行分類得到輸出的分割圖像。
圖1 語義分割示意圖
圖像的語義分割是深度學(xué)習(xí)在圖像領(lǐng)域的一大應(yīng)用,其目的是在像素級對圖像進(jìn)行分析,將圖像中的每個像素分配給一個對象類。
在深度學(xué)習(xí)取代機(jī)器視覺之前,人們使用像素級的決策樹分類,如紋理基元森林(texton forest)和基于隨機(jī)森林(random forest)的分類器等方法進(jìn)行語義分割。早期的算法通常基于閾值、邊緣或區(qū)域的先驗知識,這些先驗知識本質(zhì)上依賴于圖像本身的低級視覺信息。由于這些方法沒有訓(xùn)練階段且計算復(fù)雜度通常較低,在沒有輔助信息的情況下,精度很難滿足要求且魯棒性較低。
深度學(xué)習(xí)的興起,使采用深度神經(jīng)網(wǎng)絡(luò)解決語義切分問題成為一種趨勢。其根本原因在于深層網(wǎng)絡(luò)具有很強(qiáng)的非線性模擬能力,而傳統(tǒng)算法依靠先驗提取的特征可以被網(wǎng)絡(luò)取代,甚至可以得到更豐富的特征。近年來,卷積神經(jīng)網(wǎng)絡(luò)(CNNs)大力推動和發(fā)展了多種分割模型,如全卷積神經(jīng)網(wǎng)絡(luò)(FCNs)[10]、UNet[11]、UNet++[12]、PSPNet[13]以 及 一 系 列DeepLab版本[14-16]。語義分割網(wǎng)絡(luò)的開山之作,全卷積神經(jīng)網(wǎng)絡(luò)是在分類網(wǎng)絡(luò)的基礎(chǔ)上提出的,用全卷積層代替分類網(wǎng)絡(luò)最后的全連接層,這允許其為任何大小的圖像生成分割圖。幾乎所有后續(xù)的語義分割技術(shù)都采用了這個范例。典型的識別網(wǎng)絡(luò)及其更深層的后繼者表面上接受固定大小的輸入并產(chǎn)生非空間輸出。這些網(wǎng)絡(luò)的完全相連層有固定的尺寸,并丟棄了空間坐標(biāo)。因此,在語義分割任務(wù)中,完全連接的層被卷積層替換。除了完全連接的層之外,使用CNN 進(jìn)行分割的主要問題之一是池化層。池化層增加了接受域,并且能夠聚合上下文,同時丟棄要保留的位置信息。分割任務(wù)須將分類標(biāo)簽與原始圖像對齊,因此需要重新引入位置信息,前人的研究中主要有兩種不同類別的體系結(jié)構(gòu)來解決這個問題。第一類是編碼器和解碼器(encoder?decoder)體系結(jié)構(gòu)。編碼器通過卷積層逐步降低圖像分辨率,解碼器通過反卷積逐漸恢復(fù)圖像細(xì)節(jié)和空間維度。在第二類的體系結(jié)構(gòu)中使用的是文獻(xiàn)[17]中所稱的膨脹卷積,也叫擴(kuò)張卷積。擴(kuò)張卷積允許在不降低空間維度的情況下指數(shù)地增加感受野。
本文中采用了一種新的殘差網(wǎng)絡(luò)結(jié)構(gòu)—Res?UNet++,其結(jié)構(gòu)示意圖如圖2(e)所示,大體結(jié)構(gòu)由不同深度的編碼器-解碼器組成,在提取圖像特征的編碼器也就是網(wǎng)絡(luò)的Backbone 部分加入殘差結(jié)構(gòu)[18],可以更容易地提取圖像的抽象特征和局部細(xì)節(jié)。圖2(a)~圖2(d)為不同深度的編碼器-解碼器結(jié)構(gòu)。嵌套了不同深度的編碼器-解碼器結(jié)構(gòu)的R?UNet++,其優(yōu)點在于,淺層結(jié)構(gòu)可以提取圖像的一些簡單的特征,比如邊界和顏色,而深層結(jié)構(gòu)因為感受野大了,而且經(jīng)過多次卷積操作后,能提取到更抽象的圖像特征,使分割更精確。
圖2 Res-UNet++網(wǎng)絡(luò)結(jié)構(gòu)圖
編碼器的作用是獲取圖像上下文信息,提取圖像特征,其結(jié)構(gòu)類似于經(jīng)典的分類網(wǎng)絡(luò)VGG[19]。兩個3×3 的小卷積被重復(fù)堆疊。在每次卷積后,使用Relu激活函數(shù)來增加非線性模擬能力。在兩次卷積操作后,將2×2的最大池化層作為完整的下采樣操作來執(zhí)行,擴(kuò)大感受野的同時將圖像分辨率減半。在每一次下采樣中,為了提取更多樣化的特征,特征通道的數(shù)量增加了一倍。連續(xù)的幾次3×3 卷積可以加深網(wǎng)絡(luò),獲取圖像更深層次、更抽象的特征,增強(qiáng)表達(dá)能力,同時,減少了模型參數(shù)的數(shù)目,加快了訓(xùn)練速度。在編碼器中,經(jīng)過4次下采樣操作后將圖像特征分辨率降低到輸入圖像的1/16,以充分提取局部細(xì)節(jié)。
解碼器的作用是將經(jīng)過編碼后的特征圖像通過上采樣將其分辨率恢復(fù)到和輸入圖像一樣的大小,然后對每一個像素點分類。解碼過程的上采樣操作次數(shù)等于編碼器中的下采樣操作的次數(shù)。每一次上采樣后,特征地圖的通道數(shù)量減半,分辨率加倍。在解碼過程中,轉(zhuǎn)置卷積用于上采樣,同時每一層上采樣的輸出包含編碼器相同分辨率的下采樣輸出,這是一種快捷連接。它將編碼器提取的低層特征與從解碼器提取的高層特征進(jìn)行融合,形成更豐富、更全面的特征表達(dá)。
殘差單元的主要設(shè)計思想有兩個:快捷連接和恒等映射。殘差結(jié)構(gòu)如圖3所示。圖中,X代表特征輸入,通過右邊的快捷連接恒等映射到輸出,weight layer代表卷積權(quán)重層,relu表示激活函數(shù),F(xiàn)(X)為用X經(jīng)過卷積權(quán)重層所學(xué)習(xí)到的特征表示的殘差。假設(shè)H(X)表示輸入X最終學(xué)習(xí)到的特征,現(xiàn)在希望其可以學(xué)習(xí)到殘差,這樣原始需要學(xué)習(xí)的特征就變成了F(X)=H(X)-X。之所以這樣是因為殘差學(xué)習(xí)相比原始特征直接學(xué)習(xí)更容易。當(dāng)殘差F(X)為0 時,此時卷積權(quán)重層僅僅做了恒等映射,這樣至少網(wǎng)絡(luò)的性能不會下降,而實際上殘差F(X)不會為0,這也就使得卷積權(quán)重層可以在輸入特征的基礎(chǔ)上學(xué)習(xí)到新的特征。
圖3 殘差結(jié)構(gòu)示意圖
基于視頻或圖像的非接觸式路面狀態(tài)識別算法以雨天積水和濕滑路面特征為識別對象。各國科研人員使用的數(shù)據(jù)集通常是通過交通部門的道路監(jiān)控視頻和非特種車輛的車載攝像頭獲取的,然后根據(jù)研究需要自行標(biāo)注。目前,還沒有公開統(tǒng)一的路面狀態(tài)識別專用的數(shù)據(jù)集。
考慮到在真實場景下采集數(shù)據(jù)的時間成本和受限于實驗室硬件資源等原因,利用仿真軟件CARLA0.9.9 版本采集本文中使用的數(shù)據(jù)集。CARLA0.9.9 版本的軟件中有5 個不同的城鎮(zhèn)地圖,包含了城市街道和高速公路場景,能很好地模擬現(xiàn)實中不同場景下的路面情況。為了保證數(shù)據(jù)的多樣性,采集了不同場景、不同光照的路面積水和濕滑照片共1 350張,分成訓(xùn)練集、驗證集和測試集,其照片數(shù)量的比例為6∶2∶2。不同場景、不同光照下的路面圖像示例如圖4 所示,其中(a)為黃昏時分高速公路的路面圖像,(b)為白天高速公路的路面圖像,(c)為夜間城鎮(zhèn)街道的路面圖像,(d)為白天城鎮(zhèn)街道的路面圖像。
圖4 不同場景和光照下的路面圖像示例
利用labelme 標(biāo)注軟件為采集的路面圖像按照cityscapes[20]數(shù)據(jù)集格式進(jìn)行標(biāo)注。把路面積水和濕滑路面標(biāo)注為背景、干燥路面、積水區(qū)域和濕潤區(qū)域4 個類別,其中背景為除了路面區(qū)域以外的所有物體,包括建筑、樹木、天空等,干燥路面則為車輛通行整個區(qū)域的干燥部分,積水區(qū)域為雨水覆蓋路面瀝青表面能形成水膜的區(qū)域,而濕潤區(qū)域則是路面濕度介于干燥和積水的區(qū)域。標(biāo)簽和對應(yīng)的顏色如表1 所示,其中淺藍(lán)色為背景標(biāo)簽,紅色為濕潤區(qū)域標(biāo)簽,紫色為干燥路面標(biāo)簽,墨綠色為積水區(qū)域標(biāo)簽。與路面圖像示例圖4對應(yīng)的標(biāo)簽如圖5所示。
表1 路面狀態(tài)和對應(yīng)顏色表
圖5 路面圖像示例圖4對應(yīng)的標(biāo)簽圖
語義分割模型在訓(xùn)練過程中涉及到大量復(fù)雜的矩陣運算和浮點運算,需要通過不斷嘗試,逐步迭代在數(shù)千個樣本中尋找最優(yōu)解。因此,對實驗環(huán)境提出了很高的要求。本文中訓(xùn)練語義分割模型使用的實驗平臺的硬件配置為64 GB 內(nèi)存的GeForce GTX 1080Ti 的GPU 和i7?9700k 的CPU。軟件配置基于64 位操作系統(tǒng)的Ubuntu18.04。采用當(dāng)前主流深度學(xué)習(xí)框架pytorch 和python 語言構(gòu)建網(wǎng)絡(luò)模型,使用并行計算架構(gòu)CUDA 和GPU 加速庫CUDNN 進(jìn)行高性能并行計算。
對訓(xùn)練集中所有樣本中不同類別標(biāo)簽所占的面積進(jìn)行計算和累計,各類標(biāo)簽面積所占比例如圖6所示。由圖可以看出,背景標(biāo)簽和干燥路面標(biāo)簽占比相對較高,而更加關(guān)注的積水區(qū)域和濕滑區(qū)域占比相對較低。
圖6 訓(xùn)練集樣本中各標(biāo)簽面積占比
考慮到訓(xùn)練數(shù)據(jù)存在標(biāo)簽樣本不均衡的情況,選擇Focal Loss[21]作為訓(xùn)練的損失函數(shù)。Focal Loss最初是在目標(biāo)檢測領(lǐng)域提出來的,其計算公式為
式中:N為標(biāo)簽類別數(shù)目,本文中為4;α和γ都為常數(shù),可根據(jù)實際情況自己設(shè)定,本文中分別設(shè)定為0.2 和2;yi為標(biāo)簽所代表的值,正樣本其值為1,負(fù)樣本其值為0;pi為神經(jīng)網(wǎng)絡(luò)預(yù)測值。
通過修改標(biāo)準(zhǔn)的交叉熵?fù)p失函數(shù),降低易分類樣本的權(quán)重,增加難分類樣本的權(quán)重,讓模型在訓(xùn)練過程中快速關(guān)注困難樣本,也就是相對較少的樣本,來解決類別樣本不均衡的問題。
模型訓(xùn)練的過程就是梯度下降尋求最優(yōu)解的過程,為使梯度下降法取得較好的性能,須把訓(xùn)練時的學(xué)習(xí)率設(shè)定在合適范圍。太高的學(xué)習(xí)率會導(dǎo)致學(xué)習(xí)不穩(wěn)定,太低的值又可能導(dǎo)致訓(xùn)練時間的無謂延長自適應(yīng)學(xué)習(xí)率根據(jù)訓(xùn)練時迭代的次數(shù)自己改變學(xué)習(xí)率的值,在保證穩(wěn)定訓(xùn)練的前提下,達(dá)到了合理的訓(xùn)練速度,縮短了訓(xùn)練時間?;趫D像的語義分割模型訓(xùn)練的過程就是不斷學(xué)習(xí)圖像特征的過程,隨著訓(xùn)練的深入,學(xué)習(xí)的特征也越來越抽象,學(xué)習(xí)的難度越來越大,所以學(xué)習(xí)率應(yīng)隨著訓(xùn)練的深入而調(diào)低,從而保證模型穩(wěn)定而快速地學(xué)習(xí)到圖像的低層次和高層次語義信息。為此,選用按指數(shù)衰減的學(xué)習(xí)率,其計算公式為
式中:lrd為衰減的學(xué)習(xí)率;lri為初始設(shè)定的學(xué)習(xí)率;Rd為衰減系數(shù),即衰減率;Ni為迭代輪數(shù);Sd為衰減速度。
設(shè)定訓(xùn)練時每次迭代訓(xùn)練輸入的圖像數(shù)為8,同時對輸入的圖像進(jìn)行隨機(jī)尺度變換、隨機(jī)角度旋轉(zhuǎn)和圖像翻轉(zhuǎn)等手段進(jìn)行數(shù)據(jù)增強(qiáng)。初始學(xué)習(xí)率lri設(shè)定為0.001,衰減系數(shù)Rd設(shè)定為0.95,迭代輪數(shù)Ni為5 400,衰減速度設(shè)為50。采取語義分割最常用的平均交并比(MIoU)和類別的交并比(IoU)作為評價指標(biāo),其中交并比(IoU)示意圖如圖7 所示,IoU 的分子代表圖像的交集,分母代表圖形的并集,MIoU 代表多個類別交并比的平均值。圖像的交集,即圖像重合的部分。它越大表示語義分割輸出圖片和標(biāo)簽圖片的重合程度越高,說明語義分割的精度越高。
最終,訓(xùn)練好的模型在測試集上4 個類別的平均交并比為90.07%,背景、路面、積水區(qū)域和濕滑區(qū)域的IoU 如表2 所示,與其他方法的對比如表3所示。
圖7 交并比(IoU)示意圖
表2 各類別的分割結(jié)果
表3 本文方法與其他方法精度對比
由表可見:本文提出的方法和分類神經(jīng)網(wǎng)絡(luò)相比,在保證分割精度相差無幾的情況,能夠得到路面積水和濕滑區(qū)域的分布情況;與傳統(tǒng)分類方法如支持向量機(jī)(SVM)、K?means 算法相比,在提高精度的同時還能改善魯棒性。
圖8 為不同場景和光照下的測試結(jié)果圖。可以看出,白天高速公路、黃昏高速公路、夜間城鎮(zhèn)街道和白天城鎮(zhèn)街道的路面圖像,除了少量的邊緣部分和遠(yuǎn)處的小塊區(qū)域不能分割出來,其余的幾乎都能按照對應(yīng)的標(biāo)簽類別完全正確地分割出來,為道路局部附著系數(shù)的估計提供了重要前提條件。
圖8 分割結(jié)果圖
本文中采用的基于深層語義分割網(wǎng)絡(luò)的路面積水與濕滑區(qū)域識別算法,在自制的數(shù)據(jù)集上取得了良好的效果。語義分割常用的分割指標(biāo)類別平均交并比(MIoU)能達(dá)到90.07%,幾乎可以完全正確地分割出不同場景、不同光照下的路面積水區(qū)域、濕滑區(qū)域和干燥區(qū)域。為解決雨天路面狀況識別問題提供了一種新的思路。