王 祥,柯福陽,朱節(jié)中,夏德鑄
(1. 南京信息工程大學(xué)自動(dòng)化學(xué)院,江蘇 南京210000;2. 南京信息工程大學(xué)遙感與測繪學(xué)院,江蘇 南京 210000;3. 南京信息工程大學(xué)無錫研究院,江蘇 無錫 214000;4. 無錫學(xué)院,江蘇 無錫 214000)
隨著城鎮(zhèn)化的加快和汽車保有量的增加,城市交通負(fù)擔(dān)日益加重,交通事故頻發(fā),人們駕駛車輛的壓力倍增[1]。為了避免車輛道路事故,保障駕駛的安全性,近年來在世界范圍內(nèi)針對為駕駛員提供幫助的車輛駕駛輔助系統(tǒng)的研發(fā)蓬勃展開[2-7]。這些系統(tǒng)通過從車輛載有的傳感器獲取輸入,利用系統(tǒng)輸出的某種形式的反饋信號指導(dǎo)駕駛員安全駕駛。車道偏離預(yù)警(lane departure warning,LDW)和車道保持(lane keeping,LK)、車道變換(lane changing,LC)和前向碰撞預(yù)警(forward collision warning,FCW)、自適應(yīng)巡航控制(adaptive cruise control,ACC)及盲點(diǎn)檢測(blind spot monitoring, BSM)系統(tǒng)等都屬于駕駛輔助系統(tǒng)的范疇[8]。車道標(biāo)線檢測則是組成這些系統(tǒng)的核心部分。所以研究車道線檢測有重大理論價(jià)值和現(xiàn)實(shí)意義。
更為精確有效地從圖像中檢測出車道線是近些年來相關(guān)研究人員廣泛關(guān)注的問題,人們針對車道線檢測方法進(jìn)行了大量研究。目前,對于車道檢測有兩種主流的方法,即傳統(tǒng)的圖像檢測處理方法[9-11]和深度分割方法[12-14]。傳統(tǒng)的車道檢測方法通常是基于視覺信息來解決車道檢測問題,這些方法主要思想是通過圖像處理利用視覺線索,如HSI(HueSaturationIntensity)顏色模型[15]和邊緣提取算法[16,17]。而傳統(tǒng)方法針對視覺信息不夠強(qiáng)的時(shí)候,表現(xiàn)效果較差。最近,深度分割方法在這一領(lǐng)域取得了巨大的成功,它具有很強(qiáng)的代表性和學(xué)習(xí)能力。為了更有效地使用視覺信息,SCNN(Spatial CNN)[14]在分割模塊中使用了一種特殊的卷積運(yùn)算,通過對切片特征的處理,將不同維度的信息進(jìn)行聚合,并將其逐一相加,但該方法檢測速度較慢,限制了進(jìn)一步地發(fā)展;文獻(xiàn)[18]提出了自蒸餾的方法來解決檢測速度慢這一問題,但由于分割SAD(self attention distillation)算法稠密的預(yù)測特性,該方法計(jì)算量大;文獻(xiàn)[13]提出了將車道線檢測看作實(shí)例分割問題,采用實(shí)例分割得到每條車道線的像素點(diǎn),通過學(xué)習(xí)路面的透視投影矩陣,并將前視圖轉(zhuǎn)換到鳥瞰圖視角,擬合每條車道線的曲線方程,最后逆變換回原視圖。該方法可以有效地解決傳統(tǒng)的車道檢測方法計(jì)算成本高等問題,但容易因道路場景變化而不具有可擴(kuò)展性;文獻(xiàn)[19]針對采用像素分割的傳統(tǒng)車道線檢測方法,存在速度慢、感受野有限和未充分利用全局特征等缺點(diǎn),提出了UFSA(UltraFast Structure-aware)算法。該算法檢測過程使用全局特征,在全局特征上使用大感受野,此外還提出了一種結(jié)構(gòu)損失來模擬車道結(jié)構(gòu)。利用全局特征在圖像中篩選提前預(yù)定行的車道線位置而不是基于局部特征的車道線,這樣不僅減少了計(jì)算量,還可以解決速度和無視覺線索(車道線被遮擋,需要通過車的位置和環(huán)境語義信息去猜測研究)的問題。
針對解決UFSA算法網(wǎng)絡(luò)卷積和池化提取車道特征可能會(huì)丟失重要信息、大感受野時(shí),不能獲取更豐富、捕獲長距離的上下文信息等問題的存在,故在輔助語義分割網(wǎng)絡(luò)層采用空洞空間金字塔池化ASPP(Atrous Spatial Pyramid Pooling)[20]和FCANet(Frequency Channel Attention)[21]注意力機(jī)制融合機(jī)制,定義為FCASPP(Frequency Channel Attention Spatial Pyramid Pooling),該機(jī)制可以有效地獲取豐富信息、提取更有用和緊致的特征而抑制噪聲信息;車道線檢測對于邊界信息敏感,不僅只關(guān)注對象的幾何形狀,更需要關(guān)注邊緣信息,如顏色、紋理和照明等,L-Dice (Lane Dice Loss)函數(shù)[22]比Softmax函數(shù)更加關(guān)注車道邊界的信息。通過消融實(shí)驗(yàn)驗(yàn)證了上述改進(jìn)的有效性,此外,加入的FCASPP機(jī)制和L-Dice函數(shù)時(shí),未添加任何計(jì)算量。檢測速度和精度與原文相比,均有進(jìn)一步地提升。與原文相當(dāng),本文算法較具競爭力。
網(wǎng)絡(luò)的總體框架如1圖所示,上分支為輔助分割分支模塊,用于語義分割,且僅在訓(xùn)練階段工作;下分支左側(cè)為網(wǎng)絡(luò)層Resnet模塊用于特征提取;緊接著右分支是分類預(yù)測模塊。
圖1 UFSA原始網(wǎng)絡(luò)結(jié)構(gòu)
Ltotal=Lcls+αLstr+βLseg
(1)
Lseg對應(yīng)于分割損失,Lstr對應(yīng)結(jié)構(gòu)損失,Lcls對應(yīng)分類損失,α和β是為損失系數(shù)。
2.2.1 ASPP網(wǎng)絡(luò)層
ASPP(Atrous Spatial Pyramid Pooling)主要是對所給定的輸入圖片,以不同采樣率的空洞卷積并行采樣,相當(dāng)于以多個(gè)比例捕捉圖像的上下文,捕捉上下文信息。為了解決已有車道線檢測算法無法有效捕捉輸入圖像多尺度長距離上下文信息,而導(dǎo)致的分割準(zhǔn)確率較低的問題。本文提出基于空洞空間金字塔池化的車道線語義分割網(wǎng)絡(luò),構(gòu)建多尺度長距離上下文特征提取層。通過在車道線檢測場景特征提取引入空洞空間金字塔池化層來對多尺度長距離上下文信息進(jìn)行有效提取,更好地學(xué)習(xí)車道線圖片的特征。改進(jìn)的模塊如圖2所示,圖2左側(cè)為ASPP原始模塊,膨脹率不同,可以提取不同感受野的特征,以便于更加豐富的信息;將ASPP卷積層與FCANet注意力機(jī)制相連接,將融合后的模塊定義為FCASPP,基于空洞空間金字塔池化,對于特征信息具有更強(qiáng)的學(xué)習(xí)能力。特征提取模塊中的空洞卷積如式所示
圖2 FCASPP機(jī)制
圖3 L-Dice示意圖
(2)
其中,y[i]是輸出特征圖上第i個(gè)位置的輸出信號,x是輸入信號,w是卷積濾波器,k是卷積核大小,r是濾波器擴(kuò)張率。
2.2.2 FCANet
卷積層和池化層類似于通道注意力機(jī)制,通過網(wǎng)絡(luò)學(xué)習(xí)的方式來獲得權(quán)重函數(shù)。但存在一些潛在的問題:卷積層和池化層無法很好地捕獲豐富的輸入模式信息、提取特征會(huì)丟失重要信息等,因此在處理不同的輸入時(shí)缺乏特征多樣性。而FCANet注意力機(jī)制,可以有效解決上述問題。
為了引入更多的有效信息,使用二維的DCT(discrete cosine transform)來融合多個(gè)頻率分量。具體操作流程為:將輸入的X按通道維度劃分為n部分,其中n必須能被通道數(shù)整除。每個(gè)部分分配相應(yīng)的二維DCT頻率分量,其結(jié)果可作為通道注意力的預(yù)處理結(jié)果,數(shù)學(xué)推導(dǎo)過程為
(3)
H為輸入特征圖的高,W為輸入特征圖的寬,X為輸入的圖像特征張量,h∈{1,2,…,H-1},w∈{1,2,…,W-1},ui,vi是對應(yīng)于Xi二維頻率分量的索引,Freqi是壓縮后的C′維向量。
將各部分的頻率分量合并起來為
Freq=compress(X)
=cat([Freq0,Freq1,…,Freqn-1])
(4)
其中,Freq為多光譜向量,整個(gè)多光譜通道注意力框架可以寫為
ms_att=sigmoid(fc(Freq))
(5)
其中,att∈RC是注意力向量,sigmoid是Sigmoid函數(shù),fc為全連接層或一維卷積的映射函數(shù)??梢钥闯?該通道注意力將原有的方法推廣到一個(gè)具有多個(gè)頻率分量的通道,壓縮后的通道信息可以豐富有效地用于表征。
2.2.3 Lane Dice Loss損失函數(shù)
邊界檢測的一個(gè)直接解決方案是將其視為語義分割問題。在標(biāo)注中簡單地將邊界記為1和其它區(qū)域記為0,即將其表示為一個(gè)二分類語義分割問題,以二值交叉熵為損失函數(shù)。然而,交叉熵具有兩個(gè)局限性:標(biāo)簽分布高度不平衡和邊界相鄰像素點(diǎn)的交叉熵?fù)p失難確定問題。交叉熵?fù)p失值只考慮微觀意義上的損失,而不是考慮全局。
Dice Loss損失可以很好地解決上述存在的問題,該損失起源于20世紀(jì)40年代,是用來測量兩個(gè)樣本之間的相似性,示意圖如3所示。它是由米勒塔里等人應(yīng)用到計(jì)算機(jī)視覺中,并在2016年[23]進(jìn)行三維醫(yī)學(xué)圖像分割。其數(shù)學(xué)表達(dá)式為
(6)
上式顯示的骰子系數(shù)方程,其中pi和gi分別表示的是像素預(yù)測值和真實(shí)值,值為0或1。在車道線檢測場景中,表示像素是否為邊界,是值為1,不是值為0。分母是預(yù)測值和真實(shí)值的總邊界像素和,分子是正確預(yù)測的總邊界像素和,只有當(dāng)pi和gi值(兩值為1)匹配時(shí),損失函數(shù)才遞增。在該文中,將Dice Loss定義為L-Dice(Lane Dice Loss),并將此時(shí)的分割損失定義為LL-Dice。
那么,總體的損失函數(shù)重新定義為
Ltotal=Lcls+αLstr+β(μLseg+γLL-Dice)
(7)
其中,分割損失Lseg的系數(shù)μ設(shè)置為0.7,分割損失LL-Dice的系數(shù)γ設(shè)置為0.3。
UFSA網(wǎng)絡(luò)結(jié)構(gòu)的改進(jìn)如圖4所示,主要改進(jìn)基于輔助分割分支,加入ASPP與FCANet融合模塊FCASPP,且損失引進(jìn)L-Dice,在原有基礎(chǔ)上并未增加任何計(jì)算量。
圖4 UFSA改進(jìn)網(wǎng)絡(luò)結(jié)構(gòu)
實(shí)驗(yàn)運(yùn)用深度學(xué)習(xí)相關(guān)理論方法與傳統(tǒng)算法優(yōu)化方法完成了算法構(gòu)建,實(shí)驗(yàn)階段,采用opencv庫函數(shù)與pytorch框架,所用GPU(Graphics Processing Unit)為NVIDIA 1080Ti,通過CUDA10.0與CUDNN V5.0采用Python語言實(shí)現(xiàn)了算法內(nèi)容。
3.1.1 訓(xùn)練數(shù)據(jù)集
針對車道線檢測選用圖森未來發(fā)布的TuSimple數(shù)據(jù)集和香港中文大學(xué)發(fā)布的CULane數(shù)據(jù)集進(jìn)行相關(guān)實(shí)驗(yàn)和研究,大部分車道線明顯且清晰,車道線彎曲程度小。
TuSimple數(shù)據(jù)集采用的是結(jié)構(gòu)化道路圖像,包含72520個(gè)訓(xùn)練集和55640個(gè)測試集。該數(shù)據(jù)集將視頻數(shù)據(jù)通過分幀轉(zhuǎn)換成多張圖片形成,并僅對未位圖片進(jìn)行標(biāo)注。數(shù)據(jù)集標(biāo)注采用中心打點(diǎn)式以json文件儲存,一張道路圖片的標(biāo)注為一個(gè)元組。
CULane數(shù)據(jù)集用于行車道檢測學(xué)術(shù)研究的大規(guī)模挑戰(zhàn)性數(shù)據(jù)集,一共包含133235張圖像。其中數(shù)據(jù)集分為88880個(gè)訓(xùn)練集,9675個(gè)驗(yàn)證集和34680個(gè)測試集,道路中的車道線用粗實(shí)線進(jìn)行了標(biāo)注。如表1所示,對兩個(gè)基準(zhǔn)數(shù)據(jù)集詳細(xì)地介紹。
表1 數(shù)據(jù)集描述
3.1.2 模型訓(xùn)練
模型訓(xùn)練過程中將數(shù)據(jù)集主要分為兩個(gè)部分:訓(xùn)練集和測試集。在TuSimple數(shù)據(jù)集時(shí),訓(xùn)練迭代次數(shù)設(shè)置為100,在CULane數(shù)據(jù)集時(shí),訓(xùn)練迭代次數(shù)設(shè)置為50;批處量大小為32,基礎(chǔ)學(xué)習(xí)率初始為4e-4,其中動(dòng)量和權(quán)重衰減分別配置0.9和0.00055。訓(xùn)練誤差和驗(yàn)證誤差使用均方誤差,訓(xùn)練結(jié)束時(shí)訓(xùn)練誤差收斂為0.0044,驗(yàn)證誤差收斂為0.0045。
準(zhǔn)確率和召回率是評價(jià)目標(biāo)檢測識別算法時(shí)最常用的兩項(xiàng)評估指標(biāo)。準(zhǔn)確率用來衡量輸出的預(yù)測結(jié)果中為正確檢測為真實(shí)值的比例,而召回率是用來衡量輸出的預(yù)測結(jié)果之中所包含的應(yīng)該被正確檢測數(shù)量的比例。
其中,準(zhǔn)確率和召回率的計(jì)算公式為
(8)
(9)
TP為真正例,指模型將正類別樣本正確預(yù)測為正類別;TN為真負(fù)例,指模型將負(fù)類別樣本正確預(yù)測為負(fù)類別;FP為假正例,指將負(fù)類別樣本錯(cuò)誤的預(yù)測為正類別;FN為真負(fù)例,將負(fù)類別樣本錯(cuò)誤的預(yù)測為負(fù)類別。
使用的車道線檢測算的是基于深度學(xué)習(xí)分割算法與傳統(tǒng)方法進(jìn)行優(yōu)化的融合算法,因此使用圖像分割的評價(jià)指標(biāo)對檢測結(jié)果進(jìn)行像素級的分類評價(jià)。F值(F-measure)又稱為F1分?jǐn)?shù)(F-score),是準(zhǔn)確率(Precision)和召回率(Recall)的加權(quán)調(diào)和平均,用于判斷分類模型的優(yōu)劣,精準(zhǔn)率和回歸率兩個(gè)因素決定,計(jì)算公式為
(10)
將β參數(shù)設(shè)置為1時(shí),即F值函數(shù)設(shè)為常見的F1,它綜合了準(zhǔn)確率和召回率的結(jié)果,F1越高這說明分割模型越優(yōu)秀。
原文的方法是基于兩個(gè)基礎(chǔ)網(wǎng)絡(luò)模型進(jìn)行,分別為Resnet-18和Resnet-34;本文基于Resnet-18網(wǎng)絡(luò)模型進(jìn)行修改,分別添加FCASPP模塊和L-Dice損失,實(shí)驗(yàn)總共分為四個(gè)對個(gè)實(shí)驗(yàn),如表2所示。
表2 UFSA算法改進(jìn)不同模塊對模型性能影響對比
表2所示是本文實(shí)驗(yàn)改進(jìn)的內(nèi)容,其中實(shí)驗(yàn)1是UFSA原文的方法,對應(yīng)的F1分?jǐn)?shù)為68.4%;實(shí)驗(yàn)2是基于UFSA原文方法,只添加FCASPP融合模塊的檢測結(jié)果,對應(yīng)的F1分?jǐn)?shù)為69.4%,比原UFSA的精度提高了1.2%,此實(shí)驗(yàn)證明了此融合模塊FCASPP的有效性;實(shí)驗(yàn)3是基于UFSA原文方法,只添加L-Dice損失的檢測結(jié)果,對應(yīng)的F1分?jǐn)?shù)為69.3%,比原UFSA的精度提高了0.9%,此實(shí)驗(yàn)證明了分類損失L-Dice的有效性;實(shí)驗(yàn)4是基于UFSA原文方法,添加FCASPP模塊和L-Dice損失的檢測結(jié)果,即本文改進(jìn)的方法,對應(yīng)的F1分?jǐn)?shù)為70.1%,比原文的檢測精度提高了1.7%,FCASPP模塊和L-Dice損失緩解了網(wǎng)絡(luò)卷積和池化提取車道特征丟失重要信息、大感受野時(shí),不能獲取更豐富、捕獲長距離的上下文信息等問題的存在。
該改進(jìn)部分實(shí)驗(yàn)是基于兩個(gè)公開數(shù)據(jù)集進(jìn)行,分別為TuSimple基準(zhǔn)數(shù)據(jù)集和CULane數(shù)據(jù)集,進(jìn)行了大量的實(shí)驗(yàn)驗(yàn)證。表3展示了7種傳統(tǒng)分割算法,在TuSimple數(shù)據(jù)集上檢測精度的對比。由表中數(shù)據(jù)可知,該改進(jìn)的UFSA算法在TuSimple數(shù)據(jù)集上表現(xiàn)勝于改進(jìn)前該算法的表現(xiàn),精度有所提升,原文在Tusimple上的檢測精度為95.87%,改進(jìn)后的檢測精度為96.08%,提高了0.21%,說明了改進(jìn)的有效性。
表3 TuSimple基準(zhǔn)數(shù)據(jù)集的檢測精度對比
表4為CULane數(shù)據(jù)集基于不同算法下,9個(gè)場景的識別精度。本文基于Resnet-18改進(jìn)的檢測精度,如表所示。9種場景分別為:Normal、Crowded、Night、No-line、Shadow、Arrow、Dazzlelight、Curve、Crossroad,原文在Resnet-18對應(yīng)的精度分別為:87.7%,66.0%,62.1%,40.2%,62.8%,81.0%,58.4%,57.9%,1743;本文實(shí)驗(yàn)對應(yīng)的精度分別為:89.2%,68.2%,64.5%,42.9%,64.2%,83.8%,59.7%,59.5%,‘2336’。改進(jìn)后比改進(jìn)前,前8個(gè)場景精度分別提高為:1.5%,2.2%,2.4%,2.7%,1.4%,2.8%,1.3%,1.6%,而第9個(gè)場景的檢測識別精度較低,誤檢的車道線與改進(jìn)前相比較多,但總體檢測效果良好。原Resnet-18綜合檢測精度為68.4%,而改進(jìn)后為70.1%,提高了1.7%;同時(shí),檢測速度也較之前明顯變快,由322.5FPS變?yōu)?98.4FPS。
表4 在CULane數(shù)據(jù)集下9個(gè)場景的識別精度
表4中,測試閾值設(shè)為0.5,圖片分辨率設(shè)為1640×590,“-”表示結(jié)果不可得。
圖5(a)(b)(c)(d)主要以場景豐富的Culane數(shù)據(jù)集為例,四幅圖橫坐標(biāo)表示迭代次數(shù),縱坐標(biāo)表示損失函數(shù)值。
圖5 損失曲線
圖5(a)對應(yīng)的是輔助分支分割的損失,隨著網(wǎng)絡(luò)迭代的不斷增加,損失逐漸降低。圖中曲線表明本文提出的混合損失在迭代80k次后逐漸收斂。
圖5(b)對應(yīng)的是主分支的分類損失,隨著網(wǎng)絡(luò)迭代的不斷增加,損失逐漸降低。從圖中可知,分類網(wǎng)絡(luò)在75k完全收斂。
圖5(c)對應(yīng)的是結(jié)構(gòu)化損失,隨著網(wǎng)絡(luò)的迭代,損失增加。車道線理想狀態(tài)下是筆直的,但是現(xiàn)實(shí)中相鄰車道線像素之間并非在一條直線,從圖中說明網(wǎng)絡(luò)已經(jīng)能夠清楚的識別公路上的車道線,損失逐漸遞增原因,但是迭代80k后,損失曲線呈現(xiàn)水平狀表示已經(jīng)完全收斂。
圖5(d)對應(yīng)的是本篇論文的多階段學(xué)習(xí)率策略,有利于網(wǎng)絡(luò)的學(xué)習(xí)。
從圖6可知,本文采用的FCASSP和L-Dice loss對車道線檢測的取得較好的效果起到關(guān)鍵作用。
圖6 車道線效果圖
首先是介紹了UFSA算法網(wǎng)絡(luò)模型的基本結(jié)構(gòu),然后對其進(jìn)行精簡和改進(jìn),主要針對的是輔助分割分支的改進(jìn)。其一是ASPP網(wǎng)絡(luò)層與FCANet注意力機(jī)制融合,并將融合模塊FCASPP添加到UFSA算法網(wǎng)絡(luò)的輔助分割分支中,這樣可保證UFSA算法在大感受野時(shí),能獲取更豐富、捕獲長距離的上下文信息,同時(shí)可以有效地提取更有用和緊致的特征而抑制噪聲信息;其二是由于車道線檢測對于邊界信息敏感這一特殊性,不僅只關(guān)注對象的幾何形狀,更需要關(guān)注邊緣信息,如顏色、紋理和照明等,故進(jìn)行損失函數(shù)的修改,L-Dice損失比Softmax函數(shù)更加關(guān)注車道邊界的信息。通過消融實(shí)驗(yàn)驗(yàn)證了上述改進(jìn)的有效性,在兩個(gè)公開數(shù)據(jù)集TuSimple和CULane測試,性能和精度都有進(jìn)一步地提升。此外,加入的FCASPP模塊和L-Dice損失時(shí),未在原有的基礎(chǔ)上添加任何計(jì)算量,且檢測速度也與改進(jìn)前相當(dāng)。