江 漫,張 乾,朱 瑜,張宇航
(貴州民族大學(xué)數(shù)據(jù)科學(xué)與信息工程學(xué)院,貴州 貴陽(yáng) 550025)
隨著智能交通的發(fā)展,近年來,智能輔助駕駛技術(shù)已成為研究熱點(diǎn),而車道線檢測(cè)是智能輔助駕駛的一項(xiàng)基本任務(wù)。目前基于計(jì)算機(jī)視覺的車道線檢測(cè)技術(shù)已經(jīng)廣泛應(yīng)用于自適應(yīng)巡航控制系統(tǒng)、盲點(diǎn)監(jiān)控系統(tǒng)、車道偏離預(yù)警系統(tǒng)等智能輔助駕駛系統(tǒng)[1]。準(zhǔn)確識(shí)別車道線的位置能為車輛安全行駛提供重要信息,因此,研究車道線檢測(cè)具有重要的現(xiàn)實(shí)價(jià)值。
在實(shí)際場(chǎng)景中,受天氣環(huán)境、光照條件變化、道路復(fù)雜性、車道線磨損程度、路面陰影、來往車輛對(duì)車道線的遮擋等影響,車道線檢測(cè)面臨著諸多的挑戰(zhàn)。此外,由于車道線形狀細(xì)長(zhǎng),占圖像面積較小,也給檢測(cè)帶來了一定的困難。
隨著深度學(xué)習(xí)的發(fā)展,近年來,通過對(duì)大規(guī)模真實(shí)數(shù)據(jù)進(jìn)行標(biāo)注和訓(xùn)練,車道線檢測(cè)取得了重大進(jìn)展[2-6]。與傳統(tǒng)的基于車道線的顏色、邊緣等特征信息的方法[7-9]相比,深度學(xué)習(xí)網(wǎng)絡(luò)大大提高了車道線檢測(cè)的性能。
然而,現(xiàn)有的大多數(shù)深度學(xué)習(xí)方法都是對(duì)圖像級(jí)數(shù)據(jù)進(jìn)行車道線檢測(cè),忽略了視頻幀前后的順序信息。視頻中的連續(xù)幀可以利用時(shí)間連貫性來解決圖像模糊、遮擋、車道線磨損等問題,基于此,MMA-Net[10]將車道線檢測(cè)從圖像級(jí)擴(kuò)展到了視頻級(jí),采集了一個(gè)新的視頻車道線檢測(cè)數(shù)據(jù)集VIL-100,并提出了一個(gè)多層記憶聚合網(wǎng)絡(luò)(MMA-Net)進(jìn)行視頻實(shí)例車道線分割,該方法在VIL-100數(shù)據(jù)集上的性能優(yōu)于目前最先進(jìn)的車道線檢測(cè)方法,故本文將其作為基礎(chǔ)網(wǎng)絡(luò),提出改進(jìn)的MMA-Net算法。
從如何定義車道檢測(cè)任務(wù)的角度,可以將基于深度學(xué)習(xí)的車道線檢測(cè)方法分為四類:①基于分類的方法,其通常結(jié)合先驗(yàn)信息來確定車道線位置,如DeepLane[2]通過在網(wǎng)絡(luò)中加入一些與位置相關(guān)的先驗(yàn)知識(shí),克服了圖像分類無法直接獲得車道線位置的缺點(diǎn),利用深度神經(jīng)網(wǎng)絡(luò)直接估計(jì)車道線位置。基于分類的車道線檢測(cè)方法網(wǎng)絡(luò)結(jié)構(gòu)較簡(jiǎn)單,但應(yīng)用場(chǎng)景有限,且后處理的計(jì)算復(fù)雜度較高。②基于目標(biāo)檢測(cè)的方法,其利用坐標(biāo)回歸檢測(cè)車道線的邊界框位置,如VPGNet[11]使用改進(jìn)的消失點(diǎn)定位方法,提出了一個(gè)端到端的多任務(wù)網(wǎng)絡(luò),能夠在多雨和低照明的惡劣天氣條件下識(shí)別車道線,但需要進(jìn)行點(diǎn)采樣、聚類和車道線回歸等復(fù)雜的后處理操作;文獻(xiàn)[12]提出了一種基于時(shí)空深度學(xué)習(xí)的車道線檢測(cè)方法,利用時(shí)間和空間約束縮小搜索區(qū)域范圍,能夠準(zhǔn)確檢測(cè)車道線邊界,但其數(shù)據(jù)流和網(wǎng)絡(luò)結(jié)架構(gòu)復(fù)雜,且當(dāng)初始假設(shè)不滿足時(shí),預(yù)處理不能提供有效的結(jié)果。③基于建模的方法,其采用數(shù)學(xué)模型對(duì)車道線進(jìn)行建模,通過求解模型參數(shù)擬合車道線。文獻(xiàn)[13]采用分段直線模型來擬合彎道車道線,利用啟發(fā)式搜索算法在感興趣區(qū)域(ROI)中搜索車道邊界線,將檢測(cè)到的車道線擬合為連續(xù)平滑的曲線,可以很好地逼近彎道,但該方法只適用于小曲率車道線,對(duì)大曲率車道線的檢測(cè)效果不夠精確。文獻(xiàn)[14]采用雙曲線模型擬合車道線,使兩條雙曲線收斂于同一點(diǎn),有效地克服了直線和拋物線模型在直道與彎道連接處不連續(xù)的問題,但其在惡劣天氣或存在其它車輛干擾的情況下檢測(cè)效果較差。每種數(shù)學(xué)模型各有其優(yōu)缺點(diǎn),通常無法只通過一種模型就完美地?cái)M合出車道線。④基于圖像分割的方法,其將車道線和背景像素標(biāo)記為不同的類,檢測(cè)結(jié)果采用像素級(jí)分類的形式,與傳統(tǒng)方法相比檢測(cè)效果較理想,且通過端到端的學(xué)習(xí)魯棒性更好。文獻(xiàn)[3]提出一種改進(jìn)分割網(wǎng)絡(luò)(segmentation network,SegNet)算法,采用卷積與池化提取車道線特征,利用連通域約束實(shí)現(xiàn)了對(duì)二值化圖像車道線的準(zhǔn)確分割,但其結(jié)構(gòu)復(fù)雜,實(shí)時(shí)性較差。LaneNet[4]是一種基于實(shí)例分割的車道線檢測(cè)方法,有兩個(gè)解碼器,一個(gè)用于分割,一個(gè)用于嵌入,LaneNet可以在訓(xùn)練階段而非后處理階段對(duì)每條車道線進(jìn)行聚類。CNN-LSTM[15]是一種將CNN和RNN相結(jié)合的混合深度網(wǎng)絡(luò)結(jié)構(gòu),在編碼器和解碼器之間增加了兩層LSTM,融合了時(shí)域信息,該方法在車輛遮擋、陰影、惡劣的天氣條件下也能取得較好的性能,但將CNN和LSTM結(jié)合需要較大的計(jì)算量。
本文相關(guān)的MMA-Net[10]算法屬于基于圖像分割的方法,其采用4層CNN作為編碼器提取車道線的局部和全局記憶特征,并利用局部全局記憶聚合模塊(Local and Global Memory Aggregation Module,LGMA)對(duì)多層的局部和全局記憶特征進(jìn)行聚合,來增強(qiáng)目標(biāo)幀的特征,最后通過解碼器預(yù)測(cè)車道線實(shí)例分割結(jié)果。針對(duì)MMA-Net算法存在的準(zhǔn)確率低和漏檢率高的問題,本文對(duì)MMA-Net算法進(jìn)行改進(jìn):
1)由于CNN只能提取空間特征,沒有考慮到長(zhǎng)時(shí)記憶特征,將MMA-Net的編碼器由CNN替換為GRU,以獲取長(zhǎng)時(shí)記憶信息。
2)將MMA-Net原本的對(duì)稱結(jié)構(gòu)改為編碼多解碼少的非對(duì)稱網(wǎng)絡(luò)結(jié)構(gòu),將編碼器層數(shù)從4層增加到6層,以提取車道線的深層特征,更好地獲取其細(xì)長(zhǎng)形狀結(jié)構(gòu)。
3)采用兩階段訓(xùn)練方法,用4層循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)作為特征提取主干進(jìn)行預(yù)訓(xùn)練,獲取視頻幀序列的記憶信息。
在視頻級(jí)數(shù)據(jù)集VIL-100上進(jìn)行驗(yàn)證,并與11個(gè)先進(jìn)的車道線檢測(cè)方法進(jìn)行了比較,結(jié)果表明,改進(jìn)MMA-Net算法以最高的檢測(cè)精度和和最快的檢測(cè)速度顯著勝于其它方法。
改進(jìn)MMA-Net的網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。首先,將視頻序列中的有序歷史幀作為局部記憶,將打亂順序后的歷史幀作為全局記憶,采用6層GRU網(wǎng)絡(luò)作為編碼器提取局部和全局記憶特征,然后利用 LGMA模塊中的注意力機(jī)制對(duì)多層的局部和全局記憶特征進(jìn)行聚合,最后采用3個(gè)Refine模塊[16]作為解碼器來預(yù)測(cè)目標(biāo)幀的車道線實(shí)例分割結(jié)果。
由于卷積神經(jīng)網(wǎng)絡(luò)(CNN)只能提取空間特征,而門控循環(huán)單元(GRU)具有記憶功能,能夠提取時(shí)間特征,考慮到視頻歷史幀的車道線記憶信息對(duì)于檢測(cè)當(dāng)前幀的車道線位置具有一定作用,將MMA-Net中的CNN替換為GRU,其利用更新門和重置門選擇性地遺忘過去不重要的信息并記憶重要的信息。
較于原始MMA-Net的CNN編碼器,改進(jìn)的GRU編碼器具有更強(qiáng)的長(zhǎng)距離(long-range)特征捕獲能力,可以獲取視頻幀序列的長(zhǎng)時(shí)記憶信息,增強(qiáng)每個(gè)目標(biāo)視頻幀的低級(jí)和高級(jí)特征,更好地用于視頻實(shí)例車道線檢測(cè)。而且,GRU網(wǎng)絡(luò)在保留長(zhǎng)時(shí)序列信息的同時(shí)還減少了梯度消失問題,有效地提高了模型的檢測(cè)精度,同時(shí)減少了網(wǎng)絡(luò)運(yùn)行時(shí)間。
MMA-Net的網(wǎng)絡(luò)結(jié)構(gòu)主要由編碼器和解碼器組成,編碼器采用4層CNN網(wǎng)絡(luò)對(duì)輸入圖像進(jìn)行下采樣,提取車道線特征,而解碼器由3層Refine網(wǎng)絡(luò)和1層卷積層還原圖像大小,得到車道線分割結(jié)果。改進(jìn)的MMA-Net將原本的對(duì)稱結(jié)構(gòu)改為編碼多解碼少的非對(duì)稱網(wǎng)絡(luò)結(jié)構(gòu),為提取車道線的深層特征,將編碼器層數(shù)從4層增加到6層,增大感受野的同時(shí),可以獲得不同尺度的圖像特征,這樣更好地獲取了車道線的細(xì)長(zhǎng)形狀,極大地提高了網(wǎng)絡(luò)的檢測(cè)精度。
如圖1所示,為檢測(cè)目標(biāo)幀的車道線,將目標(biāo)幀按順序排列的前5幀圖像{Ot-5,Ot-4,Ot-3,Ot-2,Ot-1}作為局部記憶,在打亂順序后的歷史幀中抽取5幀{St-5,St-4,St-3,St-2,St-1}作為全局記憶,輸入編碼器。然后,將每個(gè)視頻幀傳遞給一個(gè)由6層GRU組成的編碼器,獲得局部記憶特征{Lt-5,Lt-4,Lt-3,Lt-2,Lt-1}和全局記憶特征{Gt-5,Gt-4,Gt-3,Gt-2,Gt-1}。
目前大部分記憶網(wǎng)絡(luò)都是對(duì)有序的視頻幀進(jìn)行特征提取,提取的特征很大程度上依賴于時(shí)間信息,而LGMA模塊利用從5幀打亂順序的視頻幀中提取的全局記憶特征{Gt-5,Gt-4,Gt-3,Gt-2,Gt-1}來去除時(shí)間信息,增強(qiáng)車道線檢測(cè)的全局語(yǔ)義信息。而且,由于不同視頻幀對(duì)車道線檢測(cè)的貢獻(xiàn)程度不同,故LGMA模塊利用注意機(jī)制來為每個(gè)局部記憶特征和全局記憶特征分配不同的權(quán)重,以幫助當(dāng)前幀識(shí)別背景像素。
(1)
(2)
其中fatt(·)表示注意力運(yùn)算,這里使用點(diǎn)乘運(yùn)算。
網(wǎng)絡(luò)的解碼器利用MR模塊的輸出特征來預(yù)測(cè)目標(biāo)視頻幀的車道線檢測(cè)結(jié)果。首先,通過一個(gè)卷積層和一個(gè)殘差塊(residual block)[17]將MR模塊的輸出特征壓縮為256通道;然后,使用3個(gè)細(xì)化塊(refinement block)[16]逐步融合編碼器提取的特征;最后,通過一個(gè)卷積層和一個(gè)softmax層生成目標(biāo)視頻幀的車道線實(shí)例分割結(jié)果。
實(shí)驗(yàn)使用公開車道線檢測(cè)視頻數(shù)據(jù)集VIL-100,共10000幀圖片,含100個(gè)視頻,每個(gè)視頻有100幀。包含10種道路場(chǎng)景:正常、擁擠、彎道、磨損道路、陰影、道路標(biāo)線、眩光、霧霾、夜晚、十字路口,大小為640×368~1920×1080像素。將數(shù)據(jù)集按8:2的比例劃分為訓(xùn)練集和測(cè)試集,訓(xùn)練集和測(cè)試集都包含這10種場(chǎng)景,以保證不同的方法在該數(shù)據(jù)集上可以進(jìn)行公平比較。部分?jǐn)?shù)據(jù)示例如圖2所示。
圖2 數(shù)據(jù)集示例
實(shí)驗(yàn)環(huán)境配置為:Windows10×64操作系統(tǒng),Intel(R) Core(TM) i9-10900K CPU @ 3.70GHz 3.70 GHz處理器,NVIDIA GeForce RTX 3080 Ti顯卡,64GB內(nèi)存,實(shí)驗(yàn)采用Python 3.8編程語(yǔ)言,深度學(xué)習(xí)框架為PyTorch。
算法評(píng)價(jià)指標(biāo)采用準(zhǔn)確率(Accuracy),誤檢率(False positives,FP)和漏檢率(False negatives,FN)。一般來說,Accuracy越高,FP和FN越小,車道線檢測(cè)效果越好。準(zhǔn)確率的計(jì)算方式如下
(3)
其中,表示預(yù)測(cè)正確的車道線數(shù)量,表示總的車道線數(shù)量。誤檢率和漏檢率的計(jì)算公式:
(4)
(5)
其中,Fpred表示預(yù)測(cè)錯(cuò)誤的車道線數(shù)量,Npred表示預(yù)測(cè)的車道線總數(shù)量,Mpred為沒有預(yù)測(cè)到但真實(shí)存在的車道線數(shù)量,Ngt為標(biāo)簽中的車道線總數(shù)量[18]。
在預(yù)訓(xùn)練階段,使用4層RNN作為編碼器初始化特征提取主干(backbone),RNN的記憶功能有助于獲取連續(xù)視頻幀序列中車道線的長(zhǎng)時(shí)記憶信息,更準(zhǔn)確地預(yù)測(cè)車道線位置。原始MMA-Net的CNN編碼器只能用于靜態(tài)輸出,而RNN可以用于描述時(shí)間上連續(xù)狀態(tài)的輸出,其獲取的歷史幀車道線記憶信息可輔助檢測(cè)當(dāng)前幀的車道線位置。
在正式訓(xùn)練階段,利用預(yù)訓(xùn)練階段得到的最優(yōu)權(quán)重進(jìn)行訓(xùn)練,使用6層GRU作為編碼器,用隨機(jī)梯度下降(SGD)優(yōu)化器對(duì)網(wǎng)絡(luò)進(jìn)行優(yōu)化,輸入圖像大小為240×427像素,學(xué)習(xí)率為10-3,學(xué)習(xí)動(dòng)量為0.9,權(quán)重衰減為10-6,批量大小為1,迭代輪次(epoch)為60次。
圖3給出了改進(jìn)MMA-Net算法車道線檢測(cè)的部分可視化結(jié)果,從左到右4列分別為輸入圖像、真實(shí)標(biāo)簽、改進(jìn)MMA-Net預(yù)測(cè)結(jié)果和原始MMA-Net預(yù)測(cè)結(jié)果??梢钥闯?改進(jìn)MMA-Net算法在多種場(chǎng)景下都能準(zhǔn)確地檢測(cè)出車道線,同時(shí)檢測(cè)結(jié)果更加接近真實(shí)標(biāo)簽,對(duì)原始MMA-Net中的漏檢(如第1行)、預(yù)測(cè)車道線模糊(如第2行)等現(xiàn)象都有較大的改進(jìn)。
圖3 改進(jìn)MMA-Net和MMA-Net的視覺對(duì)比
表1給出了改進(jìn)MMA-Net算法與其它11個(gè)車道線檢測(cè)算法在VIL-100數(shù)據(jù)集上的檢測(cè)結(jié)果量化性能對(duì)比,其中LaneNet[4]、SCNN[5]、ENet-SAD[19]、UFSA[20]和LSTR[6]是圖像級(jí)的車道線檢測(cè)方法,而GAM[21]、RVOS[22]、STM[23]、AFB-URR[24]、TVOS[25]和MMA-Net[10]是視頻級(jí)的車道線檢測(cè)方法。可以看出,改進(jìn)MMA-Net算法的準(zhǔn)確率(Accuracy)最高,達(dá)到97.2%,同時(shí)誤檢率(FP)和漏檢率(FN)最低,分別為7.6%和4.4%,都遠(yuǎn)遠(yuǎn)勝于其它算法。與原始的MMA-Net相比,準(zhǔn)確率提升了6.2%,誤檢率降低了3.5%,漏檢率降低了6.1%,性能顯著提高了。
表1 各方法量化性能比較
4.6.1 編碼器模型
為了研究編碼器模型對(duì)車道線檢測(cè)結(jié)果的影響,對(duì)不同的編碼器模型進(jìn)行實(shí)驗(yàn),在控制網(wǎng)絡(luò)層數(shù)為4層的前提下,分別將CNN、RNN、LSTM、GRU作為編碼器進(jìn)行訓(xùn)練,結(jié)果見表2。可以看到,這四種編碼器中GRU的準(zhǔn)確率(Accuracy)最高,為91.9%,而RNN的誤檢率(FP)和漏檢率(FN)最低,分別為10.8%和10.3%,LSTM的檢測(cè)速度則最快,達(dá)到18.277幀/每秒(fps)。本文使用RNN編碼器進(jìn)行預(yù)訓(xùn)練,再用得到的最優(yōu)權(quán)重對(duì)GRU編碼器進(jìn)行正式訓(xùn)練,有效地綜合了各網(wǎng)絡(luò)的優(yōu)勢(shì),訓(xùn)練結(jié)果顯示各個(gè)性能都有顯著提升,準(zhǔn)確率達(dá)到了94.7%,誤檢率降為9.9%,漏檢率降為6.1%,同時(shí)檢測(cè)速度也提高到18.391 fps。可見采用RNN進(jìn)行預(yù)訓(xùn)練,再用GRU作為編碼器的檢測(cè)效果最好。
表2 編碼器模型的定量評(píng)估
4.6.2 編碼器層數(shù)
為了研究編碼器層數(shù)取多少時(shí)車道線檢測(cè)效果最佳,采用RNN預(yù)訓(xùn)練,GRU作為編碼器,對(duì)不同層數(shù)的編碼器進(jìn)行實(shí)驗(yàn)。從表3可以看出,隨著層數(shù)的增加,準(zhǔn)確率呈現(xiàn)先上升后下降的趨勢(shì),在6層時(shí)達(dá)到最高,為97.2%;而誤檢率和漏檢率則相反,呈現(xiàn)先下降后上升的趨勢(shì),同樣在6層時(shí)達(dá)到最低,分別為7.6%和4.4%;而檢測(cè)速度也是在6層時(shí)達(dá)到最快,為18.571 fps,較原始MMA-Net的4層CNN編碼器(17.928 fps)提高了0.643 fps。這驗(yàn)證了選擇編碼器層數(shù)為6層是最佳的,可達(dá)到最高的檢測(cè)精度和最快的檢測(cè)速度。
表3 編碼器層數(shù)的定量評(píng)估
本文提出了一種改進(jìn)MMA-Net算法的車道線檢測(cè)方法,將MMA-Net的編碼器由CNN替換為GRU,增加長(zhǎng)時(shí)記憶信息,同時(shí)將編碼器層數(shù)增加到6層,形成編碼多解碼少的非對(duì)稱網(wǎng)絡(luò)結(jié)構(gòu),更好地獲取車道線的細(xì)長(zhǎng)形狀。采用兩階段訓(xùn)練方法在VIL-100數(shù)據(jù)集上進(jìn)行訓(xùn)練與測(cè)試,實(shí)驗(yàn)結(jié)果表明,改進(jìn)MMA-Net算法的準(zhǔn)確率和檢測(cè)速度都明顯高于原始MMA-Net,且遠(yuǎn)勝于其它車道線檢測(cè)方法。下一步將在其它數(shù)據(jù)集上進(jìn)行實(shí)驗(yàn),對(duì)模型的泛化能力進(jìn)一步深入研究。