韓尚君,余艷梅,陶青川
(四川大學(xué)電子信息學(xué)院,成都 610065)
隨著傳統(tǒng)汽車行業(yè)與人工智能技術(shù)的結(jié)合,各種計算機視覺技術(shù)已被證明是保證自動駕駛安全可靠的[1]不可或缺的一部分。為保證自動駕駛的實用性和有效性,車道檢測是至關(guān)重要的。隨著卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural networks,CNN)[2]的發(fā)展,深度學(xué)習(xí)的快速發(fā)展和設(shè)備能力的改善(如計算力、內(nèi)存容量、能耗、圖像傳感器分辨率和光學(xué)器件等)提升了視覺應(yīng)用的性能和成本效益,并進(jìn)一步加快了此類應(yīng)用的擴展。與傳統(tǒng)CV 技術(shù)相比,深度學(xué)習(xí)可以幫助CV 工程師在圖像分類、語義分割、目標(biāo)檢測和同步定位與地圖構(gòu)建等任務(wù)上獲得更高的準(zhǔn)確率,故目前自動駕駛的研究熱點已轉(zhuǎn)移到深度學(xué)習(xí)方法上來[3-6]。
車道檢測對于自動駕駛而言是極為重要的一步,首先它可以使車輛行駛在正確的道路上,對于后續(xù)的導(dǎo)航和路徑規(guī)劃也是至關(guān)重要的,同時它也具有挑戰(zhàn)性,因為交通、駕駛環(huán)境、障礙物、天氣條件等各種內(nèi)外部復(fù)雜條件都會產(chǎn)生巨大影響。對于車道檢測的研究主要有兩種方法進(jìn)行解決——傳統(tǒng)方法和深度學(xué)習(xí)方法。
傳統(tǒng)方法主要是通過手工提取特征,然后將其與濾波器進(jìn)行結(jié)合,得到分割的車道線,最后過濾部分錯誤車道得到最終的檢測結(jié)果。目前已經(jīng)有研究使用深度網(wǎng)絡(luò)來取代手工提取特征來進(jìn)行車道檢測:Huval 等[7]首次將深度學(xué)習(xí)方法應(yīng)用于CNN 的車道檢測;Pan等[8]通過提出一種相鄰像素之間的消息傳遞機制SCNN顯著提高了深度分割方法對車道檢測的性能;Li等[9]提出了一種端到端的高效深度學(xué)習(xí)系統(tǒng)Line-CNN(L-CNN),在實時環(huán)境中試驗顯示,優(yōu)于當(dāng)時最先進(jìn)的方法,顯示出更高的效率和效率;Tabelini 等[10]提出了一種基于錨的單階段車道檢測模型LaneATT,其架構(gòu)允許使用輕量級主干CNN,同時保持高精度。
本文提出的模型LaneEcaATT 是在基于錨的單級車道檢測模型LaneATT 的基礎(chǔ)上進(jìn)行改進(jìn),添加了通道注意力機制ECAnet[11],將ECAnet和輕量級主干網(wǎng)Resnet[12]相結(jié)合,在保持FPS 和MACs 指標(biāo)基本不變的情況下,提高了車道檢測的準(zhǔn)確率。本文在兩個公開數(shù)據(jù)集Tusimple[13]和CULane[8]上評估了本文的方法,同時與LaneATT的結(jié)果進(jìn)行了比較。
LaneATT 是一種基于錨的單階段模型,用于車道檢測。LaneATT 算法主要由主干網(wǎng)Resnet、基于錨的特征池化層、注意力機制和結(jié)果預(yù)測層組成。
1.1.1 LaneATT的主干網(wǎng)
卷積神經(jīng)網(wǎng)絡(luò)(CNN[2])是一種模擬生物的神經(jīng)結(jié)構(gòu)的數(shù)學(xué)模型,通常用于目標(biāo)檢測、圖像分割、車道檢測等方法的特征提取。理論上CNN 網(wǎng)絡(luò)隨著深度越深,就能獲得更加豐富的特征信息,但是在實際實驗中,網(wǎng)絡(luò)的深度并不能無限制地增加,網(wǎng)絡(luò)深度達(dá)到瓶頸之后,效果反而更差,準(zhǔn)確率也隨之降低。
通過添加如圖1所示的殘差塊,將多個相似的Residual Block 進(jìn)行串聯(lián)構(gòu)成Resnet[12]。根據(jù)不同的需求,殘差塊有兩種形式,一種是圖1左邊的形式basic block,它由兩層3 × 3 的卷積組成,輸入輸出的維度相同;另一種是圖1右邊的形式bottleneck block,通過使用1 × 1 卷積層實現(xiàn)了先降維再升維的過程,此方法可以降低計算復(fù)雜度。Resnet通過引入殘差塊在一定程度上解決了梯度消失和梯度爆炸的問題,從而能夠訓(xùn)練更深的網(wǎng)絡(luò)。相比于VGG[14]網(wǎng)絡(luò),Resnet網(wǎng)絡(luò)不僅更深而且模型的尺寸和參數(shù)量更小,LaneEcaATT 使用Resnet18、Resnet34、Resnet101 作為主干網(wǎng)來提取圖片特征。

圖1 bottleneck block[12]
1.1.2 基于錨的特征池化層
LaneATT 的池化操作借鑒了Fast R-CNN[15]的感興趣區(qū)域投影(ROI 投影),區(qū)別在于檢測的時候使用的是線。相比于Line-CNN[9]只利用了特征圖的邊界,LaneATT 在一定程度上可以使用所有的特征圖,故LaneATT 可以使用更小的主干網(wǎng)和更小的接受域。一個錨就定義了一個候選點集F,將錨所構(gòu)成虛線上的特征進(jìn)行串聯(lián),對于超出圖片邊界的點做補零操作以保證串聯(lián)后的維度恒定,。對于每一個yj=0,1,2…HF-1,的計算公式如式(1)所示:
其中(xo,yo)是錨線的原點,θ是錨線的斜率,δback是主干網(wǎng)的全局步長。
1.1.3 LaneATT的注意力機制
對于大多數(shù)輕量級模型來說,獲取的是局部特征向量。但是在某些復(fù)雜的場景下,例如有其他物體遮擋視野或目標(biāo)部分消失的情況下,局部特征可能無法預(yù)測車道是否存在以及其位置。為解決這一問題LaneATT 提出了一種新的注意力機制Latt[10],它利用局部特征來生成附加特征,將其和局部特征結(jié)合得到全局特征。對于每一個局部特征向量,當(dāng)i≠j的時候,輸出一個權(quán)重ωi,j[10],如公式(2)所示:
通道注意力機制可以提升CNN網(wǎng)絡(luò)的性能,但現(xiàn)有的算法為獲得更加優(yōu)秀的效果,大都選擇復(fù)雜的注意力模塊而忽略了算法應(yīng)用于輕量級模塊和實時運算的情況[11]。
SENet[16]的降維會給通道注意力機制帶來副作用,并且沒有必要獲取通道之間的依賴關(guān)系。ECAnet 將原始的SENet 與它的三個都沒有降維的變體(SE-Var1,SE-Var2 和SE-Var3)進(jìn)行了對比實驗:SE-Var1 雖然沒有參數(shù)但是性能仍然優(yōu)于SENet,說明在提高深度CNN 的性能上面通道注意力是有用的;SE-Var2 在每個通道獨立地學(xué)習(xí)權(quán)重且參數(shù)較少,結(jié)果也是優(yōu)于SENet,說明通道及其權(quán)重需要直接對應(yīng),而且避免降維比非線性通道依賴更加重要;SE-Var3 比在SE塊中少使用一個FC 層進(jìn)行降維,結(jié)果顯示性能更好[11]。綜合ECAnet 的實驗可以表明,避免降維對于通道注意力機制的性能有很大的提升,故ECAnet 在SENet 的基礎(chǔ)上進(jìn)行改進(jìn),ECAnet通過一維卷積來實現(xiàn)了一種不需要降維的局部交叉通道交互策略。ECAnet 的模型結(jié)構(gòu)如圖2所示。

圖2 ECAnet結(jié)構(gòu)[11]
本文提出的算法模型LaneEcaATT(如圖3 所示)在LaneATT 的基礎(chǔ)上添加了ECAnet(如圖3圓角矩形所示),以提取局部特征。模型的輸入圖像經(jīng)過主干網(wǎng)Resnet 和ECAnet 提取特征,利用基于錨的特征池化層提取感興趣的錨線,進(jìn)而生成局部特征,局部特征通過注意力機制生成全局特征,將局部特征和全局特征進(jìn)行結(jié)合,最后將組合特征傳遞給全連接層得到最終預(yù)測的車道。

圖3 LaneEcaATT的模型圖
本文的方法在兩個最常使用的車道檢測數(shù)據(jù)集(Tusimple[13]和CULane[8])上進(jìn)行測試,兩個數(shù)據(jù)集的具體信息如表1所示,所有的實驗都使用了數(shù)據(jù)集的創(chuàng)建者默認(rèn)的參數(shù)。

表1 數(shù)據(jù)集信息
實驗中的所有輸入圖像都被調(diào)整為HI×WI=360 × 640 像素,對于兩個數(shù)據(jù)集都使用Adam優(yōu)化器,Tusimple訓(xùn)練100個epochs,CULane訓(xùn)練15 個epochs,通過隨機的平移、旋轉(zhuǎn)、縮放和水平翻轉(zhuǎn)來進(jìn)行數(shù)據(jù)增強。本文實驗部分的效率指標(biāo)分為每秒幀數(shù)(FPS)和乘積累加運算(MACs)。
2.2.1 Tusimple數(shù)據(jù)集
Tusimple[13]是一個只包含高速公路場景的車道檢測數(shù)據(jù)集,通常相對于街景來說,這個場景作為車道檢測會更容易。但是它仍然是在車道檢測工作中使用最廣泛的數(shù)據(jù)集之一。所有的圖像都有1280 × 720像素,最多有5個車道。
2.2.2 Tusimple數(shù)據(jù)集上的評價指標(biāo)
在Tusimple 數(shù)據(jù)集上三個評價指標(biāo)分別是錯誤發(fā)現(xiàn)率(FDR)、假陰性率(FNR)和準(zhǔn)確性(Accuracy)。
準(zhǔn)確性Accuracy如公式(4)所示:
其中,Cclip是切片中正確預(yù)測車道的點數(shù),Sclip是圖片中總的點數(shù),預(yù)測點必須是在真實圖像點的20個像素內(nèi)才能被認(rèn)為是正確的點。
2.2.3 Tusimple數(shù)據(jù)集上的實驗結(jié)果
表2是本文模型在Tusimple數(shù)據(jù)集上得到的檢測結(jié)果。可以看出,本文的方法LaneEcaATT在MACs 和Params 上基本上沒有任何增加,F(xiàn)PS也基本持平。在準(zhǔn)確率上本文均優(yōu)于LaneATT,甚至在使用Resnet18 作為主干網(wǎng)的情況下,比LaneATT 使用Resnet34 的準(zhǔn)確率還要高,但MACs 減少了50%,Params 減少了45%,F(xiàn)PS 提升了44%。雖然在Resnet18 和Resnet34 上FDR比較高,但是在FNR 方面則是都優(yōu)于LaneATT。圖4 是LaneEcaATT 和LaneATT 在Tusimple 上 的檢測效果對比,LaneEcaATT 的檢測效果要略優(yōu)于LaneATT的檢測效果。
結(jié)合表2 和圖4,在Tusimple 數(shù)據(jù)集上,本文算法的準(zhǔn)確率都得到了提升,尤其是在Resnet18 上達(dá)到了LaneATT 在Resnet34 上的準(zhǔn)確率。(左中右依次是原圖、LaneATT、LaneEcaATT;上中下分別是Resnet18、Resnet34、Resnet101;黑色線條是真實車道,灰色線條是檢測結(jié)果)

表2 Tusimple數(shù)據(jù)集結(jié)果

圖4 Tusimple數(shù)據(jù)集實驗結(jié)果
2.3.1 CULane數(shù)據(jù)集
CULane[8]是最大的公開車道檢測數(shù)據(jù)集之一,也是最復(fù)雜的數(shù)據(jù)集之一。所有圖像大小均為1640 × 590 像素,測試圖像分為九類,包含正常、擁擠、夜間、無可見線等。
2.3.2 CULane數(shù)據(jù)集上的評價指標(biāo)
在CULane 上有三個評價指標(biāo)Precision、Recall、F1。
Precision是計算正確預(yù)測占整個正確預(yù)測與錯誤預(yù)測之后的百分比,如公式(5)所示:
Recall是計算正確預(yù)測占正確預(yù)測與假陽性之和的比例,如公式(6)所示:
在式(5)、式(6)中,TP是正確預(yù)測車道的數(shù)目,F(xiàn)P是錯誤預(yù)測車道的數(shù)目,F(xiàn)N是假陰性的數(shù)目。
F1 是基于IOU(intersection over union)來進(jìn)行判斷的。IOU 的評價標(biāo)準(zhǔn)是根據(jù)兩個區(qū)域的交集占比,官方將車道線視為30像素值寬的線,如果預(yù)測出來的車道和真實車道的IOU大于0.5,那么就會被認(rèn)為預(yù)測正確,F(xiàn)1 如公式(7)所示:
2.3.3 CULane數(shù)據(jù)集上的實驗結(jié)果
考慮到CULane 數(shù)據(jù)集圖片大小和Resnet 深度,在CULane 數(shù)據(jù)集上本文在Resnet18 上將ECAnet 的一維卷積核大小k保持為3,在Resnet34 和Resnet101 將k修改為5,整個CULane 數(shù)據(jù)集的測試結(jié)果見表3,表4 展示了從normal到night的九類場景的F1參數(shù)數(shù)據(jù)。
通過表3、表4 可以得到,Resnet18 運用本文方法后在Recall上提升0.4個百分點,hlight上提升1.66 個百分點,arrow 上提升1.24 個百分點,在curve上提升1.15個百分點,在night上提升0.99 個百分點。Resnet34 上運用本文方法后在Precision 上提升0.04 個百分點,cross 錯誤量降低了28 個百分點,但是F1 值有所下降。Resnet101 上運用本文方法后在Recall 上提升了1.04 個百分點,在noline 上提升了0.88 個百分點,在curve 上提升了1.26 個百分點。圖5 是Lane-EcaATT和LaneATT在CULane上的檢測效果對比。
結(jié)合表3、表4 和圖5 的結(jié)果,可以看出在CULane 數(shù)據(jù)集上,本文算法在Resnet18 網(wǎng)絡(luò)結(jié)構(gòu)上改進(jìn)效果較好。

圖5 CULane數(shù)據(jù)集實驗結(jié)果

表3 整個CULane數(shù)據(jù)集的結(jié)果

表4 CULane數(shù)據(jù)集九類場景的F1結(jié)果
本文改進(jìn)的車道檢測算法LaneEcaATT 不僅有著高準(zhǔn)確率,同時還保持快速的檢測速度。在Tusimple 數(shù)據(jù)集上,本文方法比原始模型檢測準(zhǔn)確率更高,甚至可以用更淺的主干網(wǎng)實現(xiàn)不錯的檢測效果。在CULane 數(shù)據(jù)集上,本文方法在Resnet18 網(wǎng)絡(luò)結(jié)構(gòu)下表現(xiàn)優(yōu)于原方法,但是在另外兩種網(wǎng)絡(luò)結(jié)構(gòu)下的表現(xiàn)有待提升,將在后期研究中進(jìn)一步改進(jìn)。