劉 軍,陳 辰,李漢冰,許 多
(江蘇大學(xué) 汽車與交通工程學(xué)院, 江蘇 鎮(zhèn)江 212013)
在智能交通系統(tǒng)中,機(jī)器視覺技術(shù)具有重要意義,主要應(yīng)用于:車牌識(shí)別、車輛檢測、交通標(biāo)志檢測、車道線檢測、駕駛員行為檢測、3D視覺感知等。其中,車道線檢測以及基于車道線對前方車輛的距離估計(jì)是自動(dòng)駕駛系統(tǒng)環(huán)境感知部分的關(guān)鍵技術(shù)[1-3]。
傳統(tǒng)的車道線檢測算法通常根據(jù)人工選取某個(gè)特征進(jìn)行檢測,如方向梯度直方圖特征(histogram of oriented gradient,HOG)[1]、加速穩(wěn)健特征(speeded up robust features,SURF)[2]等。然而在實(shí)際場景應(yīng)用下,由于光照、陰影等因素導(dǎo)致圖像的顏色和結(jié)構(gòu)產(chǎn)生變化,從而影響到檢測的準(zhǔn)確性和魯棒性。同時(shí),車道線檢測必須實(shí)時(shí)或更快速地執(zhí)行,以節(jié)省其他系統(tǒng)的處理能力。
隨著深度學(xué)習(xí)的快速發(fā)展,卷積神經(jīng)網(wǎng)絡(luò)廣泛用于車輛檢測和車道線檢測中,考慮到大部分檢測方法是將目標(biāo)檢測和車道線檢測分開,而在復(fù)雜的交通場景中,在計(jì)算資源有限的情況下,若搭載在實(shí)車系統(tǒng)上的車道檢測采用2個(gè)獨(dú)立的檢測模型,分別檢測目標(biāo)(車輛/騎行車/行人等)、車道線,不僅會(huì)增加硬件需求,而且會(huì)降低實(shí)時(shí)性,如何實(shí)現(xiàn)單個(gè)模型同時(shí)魯棒地檢測車輛和車道線是一個(gè)亟需解決的工程問題。
為了使模型具有通用性、低成本、檢測的實(shí)時(shí)性,本文提出了一種新的多任務(wù)檢測網(wǎng)絡(luò),基于YOLOv3[4]結(jié)構(gòu),采用輕量化模型MobilenNetv2[5]作為backbone,同時(shí)在損失函數(shù)中應(yīng)用Focalloss[6],從而減少易分類樣本的權(quán)重,使訓(xùn)練過程中模型更加關(guān)注難分類樣本,共享YOLOv3的卷積層,構(gòu)成編碼解碼結(jié)構(gòu),添加車道線分類模塊、分割模塊、坐標(biāo)生成模塊,將車道線看作點(diǎn)的集合,固定點(diǎn)的縱坐標(biāo),根據(jù)最小二乘模塊生成的車道線擬合參數(shù)和點(diǎn)的縱坐標(biāo)計(jì)算得到點(diǎn)的橫坐標(biāo)。與其他方法比,該方法實(shí)現(xiàn)了端到端的車輛與車道線檢測,實(shí)時(shí)性和魯棒性較好,且適用于多種場景。
基于單目視覺的目標(biāo)測距方法目前主要有2種:基于目標(biāo)位置信息和基于目標(biāo)寬度信息。在基于目標(biāo)位置信息的研究中,Adamshuk等[7]提出一種基于逆透視變換的測距方法,然而逆透視變換存在的固有特性使得誤差伴隨距離增加而增大,因此適用的測距范圍較小。國內(nèi)外學(xué)者從事目標(biāo)寬度信息方向研究:Han等[8]提出一種基于車輛寬度特征的距離估計(jì)方法,然而車輛寬度估計(jì)的過程中存在很大的不確定性。Lee[9]提出一種基于車道線寬度的距離估計(jì)方法,該方法根據(jù)前方車輛底邊緣位置處對應(yīng)的車道線像素寬度進(jìn)行距離估計(jì),對比文獻(xiàn)[8]中基于車輛牌照尺寸特征的測距方法,該方法的測距范圍更廣,測距精度也相應(yīng)提高。
考慮到車道寬度是較為容易獲得的先驗(yàn)信息,運(yùn)動(dòng)情況下測距魯棒性較好,且距離和相機(jī)的姿態(tài)角的變化等因素對基于車道線寬度的測距方法影響較小,因此本文提出一種基于車道線等寬度假設(shè)、車道線為參考的目標(biāo)定位模型。通過分析基于車道線斜率的車道線寬度的計(jì)算方法在計(jì)算過程中產(chǎn)生誤差的原因,進(jìn)而對彎道下前方車輛縱向距離的測距方法進(jìn)行優(yōu)化,最終通過對比幾何方法獲得的估計(jì)值與真實(shí)值驗(yàn)證模型的測距精度。
目標(biāo)檢測部分以YOLOv3為核心,用輕量化網(wǎng)絡(luò)MobileNetv2替換darknet53作為backbone。MobileNetv2網(wǎng)絡(luò)結(jié)合了深度可分離卷積和殘差結(jié)構(gòu)。深度可分離卷積相對于標(biāo)準(zhǔn)卷積計(jì)算量壓縮率為:
(1)
式中:DK·DK·M·N·DF·DF代表標(biāo)準(zhǔn)卷積參數(shù)量;DK·DK·M·DF·DF+M·N·DF·DF代表深度可分離卷積參數(shù)量;Dk表示卷積核尺寸;DF表示輸出的特征圖尺寸;M為輸入通道數(shù);N為輸出通道數(shù)。
網(wǎng)絡(luò)融合特征金字塔[10](FPN)的思想,通過多尺度特征圖檢測目標(biāo),融合高層特征圖[11]上采樣和底層特征,網(wǎng)絡(luò)輸出為預(yù)測的邊界框信息[12]、置信度[13]和類別概率。
基本框架:車道線檢測網(wǎng)絡(luò)共享YOLOv3的卷積層,在FPN的基礎(chǔ)上繼續(xù)添加上采樣,構(gòu)成編碼-解碼結(jié)構(gòu)。編碼器(MobileNetv2)逐漸降低物體的空間維度,提取語義信息,解碼器逐步修復(fù)物體的細(xì)節(jié)和空間維度,生成逐像素的車道線權(quán)重圖,同時(shí)對特征圖的值取平方,確保生成的權(quán)重為正。
模型包含用于判斷該車道線是否存在的車道線分類分支[14],分類分支位于編碼器后,編碼器提取的特征語義信息十分豐富,分類較為準(zhǔn)確。
本文去掉傳統(tǒng)的車道線后處理方法,將坐標(biāo)特征[15]手動(dòng)添加進(jìn)特征中。在擬合曲線的過程中,鳥瞰圖坐標(biāo)更適合用于擬合曲線,如圖1所示,因此將x坐標(biāo)和y坐標(biāo)的特征映射利用透視變換矩陣[16]轉(zhuǎn)換為鳥瞰圖坐標(biāo)[17]再添加進(jìn)車道線權(quán)重圖中,為每個(gè)坐標(biāo)配一個(gè)權(quán)重w,對生成的權(quán)重圖[18]和2個(gè)坐標(biāo)圖進(jìn)行平坦化,則可以得到特征圖中每個(gè)像素i的x坐標(biāo)、y坐標(biāo)和車道線權(quán)重值。
圖1 鳥瞰圖坐標(biāo)示意圖
最小二乘模塊:在鳥瞰圖上,每條車道線都可以用二次函數(shù)擬合,使用最小二乘法對函數(shù)參數(shù)進(jìn)行擬合。
最小二乘的矩陣形式:
min||Yβ-X||2
(2)
β=(YTY)-1YTX
(3)
將車道線權(quán)重加入到最小二乘計(jì)算中,令X′=WX,Y′=WY得到:
β′=(Y′TY′)-1Y′TX′
(4)
式中:Y∈Rm×n,β′∈Rn×1,X∈Rm×1,W∈Rm×m;W代表網(wǎng)絡(luò)生成的車道線權(quán)重;X,Y代表添加的鳥瞰圖橫、縱坐標(biāo)特征;β′代表車道線曲線擬合參數(shù)。
(5)
(6)
(7)
車道線擬合損失函數(shù):對坐標(biāo)生成模塊生成的點(diǎn)的橫坐標(biāo)進(jìn)行監(jiān)督,采用的損失函數(shù)為MSE損失:
(8)
車道線分類損失函數(shù):采用二分類交叉熵?fù)p失
(9)
車輛檢測損失函數(shù):采用YOLOv3網(wǎng)絡(luò)的損失函數(shù),在損失函數(shù)中應(yīng)用Focalloss,從而在訓(xùn)練過程中,模型更加關(guān)注難分類樣本。Focalloss主要用在Lnoobj_confidence,為:
(10)
YOLOv3網(wǎng)絡(luò)的損失函數(shù)為:
LYOLOv3=Lcoordinate+Lobj_confidence+
Lnoobj_confidence+Lclass
(11)
總的損失函數(shù)為:
L=λYOLOLYOLOv3+λx_coorLlane_xcoor+
λlane_clasLlane_classification
(12)
式中:
λYOLO=4,λx_coor=1,λlane_clas=2
多任務(wù)檢測網(wǎng)絡(luò)模型結(jié)構(gòu)如圖2所示。
圖2 模型結(jié)構(gòu)示意圖
首先分析只存在俯仰角β的情況,如圖3所示。其中:h=OO′為攝像機(jī)的安裝高度,CD為車道寬度,AB=b為車道像素寬度,θ1為相機(jī)高度方向上一半的視場角,2θ2是相機(jī)方位視場角,β為俯仰角,OE′=f(焦距)。
圖3 只存在俯仰角的駕駛場景示意圖
根據(jù)投影關(guān)系可知:
(13)
當(dāng)只存在俯仰角β時(shí),車道寬度的計(jì)算公式為式(13)。
然后分析俯仰角β與偏航角α同時(shí)存在的情況如圖4所示。其中:α為偏航角,2θ為相機(jī)方位視場角,DG為車道寬度,OE′=f(焦距)。
將O點(diǎn)投影到路面上記作O′,如圖5所示。由圖4可知,俯仰角β與偏航角α同時(shí)存在時(shí),車道寬度的計(jì)算公式為式(14)。
圖4 俯仰角與偏航角同時(shí)存在時(shí)的駕駛場景示意圖
圖5 O點(diǎn)投影圖
(14)
考慮到車道線投影情況類似小孔成像的原理,根據(jù)檢測到的前方車輛位置處的車道線在圖像中的像素寬度,通過幾何學(xué)知識(shí)推導(dǎo)出前方車輛縱向距離的計(jì)算式,圖6展示了直道下測距模型。由式(14)計(jì)算出車道真實(shí)寬度Lline,通過相機(jī)內(nèi)外參數(shù)可獲得相機(jī)焦距fx、前方車輛位置處車道像素寬度Lpixel,因此,自車與前方車輛之間的縱向距離計(jì)算式為:
圖6 直道下測距模型示意圖
(15)
如圖7所示,在彎道下行駛時(shí),若按照直道下測距模型的計(jì)算方法去計(jì)算彎道模型,此時(shí)前方車輛位置處的車道像素寬度Lpixel對應(yīng)的是真實(shí)世界坐標(biāo)系中的Ldraw,然而從三維俯視圖中可以看出Ldraw并不等于當(dāng)前車道的實(shí)際寬度Lline。若仍然按照直道模型計(jì)算前方車距會(huì)產(chǎn)生極大的誤差,且該誤差隨著彎道的曲率增大和前車距離變遠(yuǎn)而增大。
圖7 鳥瞰場景下分析示意圖
為了得到更準(zhǔn)確的車道真實(shí)寬度,需要對彎道下前方車輛位置處的車道線寬度計(jì)算公式進(jìn)行修正,減小測距誤差,提高測距結(jié)果的精度。
已知x=f(y)為車道線方程,通過式(16)計(jì)算前方車輛的距離估計(jì)值Ydraw,然后根據(jù)Ydraw處的車道線切線的斜率k計(jì)算世界坐標(biāo)系中Ldraw與Lline的夾角θ,最終推導(dǎo)出車道線的實(shí)際橫向?qū)挾鹊挠?jì)算模型,計(jì)算公式分別為:
(16)
(17)
(18)
最后通過合并式(15)和式(18)得到前方車輛的實(shí)際縱向距離,計(jì)算公式為:
(19)
如圖8所示,該測距方法的計(jì)算模型存在兩點(diǎn)誤差:首先根據(jù)式(16)計(jì)算斜率的過程中,令Ldraw=Lline并代入式(15)中計(jì)算得到縱向距離Ydraw,然而實(shí)際情況下,Lline 圖8 彎道下測距模型細(xì)節(jié)圖 為了降低上述兩點(diǎn)誤差對前方車輛測距結(jié)果準(zhǔn)確性的干擾,以本車前進(jìn)方向作為Y軸,相機(jī)所在位置的橫向作為X軸,建立如圖8所示的坐標(biāo)系,L是根據(jù)式(18)計(jì)算出的橫向距離。為了簡化模型,車輛平行于車道線行駛且將左右車道線視作一個(gè)同心圓模型,為: (x-a)2+y2=(r+Lline)2 (20) (x-a)2+y2=r2 (21) 式中:a代表圓心的橫坐標(biāo);r代表右車道線的半徑。 則目標(biāo)車輛位置處車道橫向?qū)挾萀draw可表示為: (22) 式中,Yr為真實(shí)縱向距離。 將式(22)代入式(15)可以得到關(guān)于真實(shí)縱向距離Yr的關(guān)系式: (23) 文獻(xiàn)[8]所用的測距方法根據(jù)式(15)整理為: (24) 將式(23)代入式(19)計(jì)算出本文所用方法的測距結(jié)果: (25) 假設(shè)車道寬度Lline是3 m,文獻(xiàn)[9]所用測距方法與本文提出的測距方法在不同曲率半徑的車道線下的測距結(jié)果與真實(shí)距離如圖9所示。在相同的情況下,本文所使用的方法的測距結(jié)果更貼近真實(shí)距離,其測距精度隨著真實(shí)距離的增加而提高;在車道線半徑為85 m和105 m的情況下,由于半徑較小,進(jìn)行遠(yuǎn)距離車輛測距時(shí)會(huì)存在以下的特殊情況:目標(biāo)車輛實(shí)際上已經(jīng)駛離了自車的視野中心或駛出了自車的檢測范圍。然而對比文獻(xiàn)[9]所用方法,本文修正后的方法在近距離車輛測距時(shí)效果更好,測距精度更高,修正后的測距結(jié)果更加接近真實(shí)距離。 圖9 修正后的方法與文獻(xiàn)[9]的測距結(jié)果 修正后的方法與文獻(xiàn)[9]所用方法的誤差如圖10所示。車道線半徑為85 m,真實(shí)距離為40 m的情況下,文獻(xiàn)[8]所用方法的測距誤差為12.4%,修正后的方法測距誤差則為3.5%;真實(shí)距離為60 m時(shí),文獻(xiàn)[9]所用方法的測距誤差為29.2%,修正后的方法測距誤差則為17.7%。當(dāng)車道線半徑為225 m,真實(shí)距離為40 m的情況下,文獻(xiàn)[9]所用方法的測距誤差為0.94%,修正后的方法測距誤差幾乎為0;真實(shí)距離為60 m時(shí),文獻(xiàn)[9]所用方法的測距誤差為7.98%,修正后的方法測距誤差則為0.97%。 圖10 修正后的方法與文獻(xiàn)[8]方法的測距誤差 從圖10中可以看出,隨著真實(shí)距離的增加,測距誤差越來越大,然而相對而言誤差距離較小。此外,測距誤差受到車道線曲率半徑的影響,具體表現(xiàn)為測距誤差隨著車道線半徑的增大而降低,當(dāng)半徑超過200 m時(shí),在100 m真實(shí)距離范圍內(nèi)的測距誤差控制在1%以內(nèi)。因此,綜合而言,修正后的測距方法對減小誤差效果顯著。 訓(xùn)練所用數(shù)據(jù)為圖森的車道線數(shù)據(jù)集加收集的各種場景圖片,對車輛的標(biāo)注框采用coco訓(xùn)練的YOLOv3進(jìn)行自動(dòng)標(biāo)注,并使用標(biāo)注工具進(jìn)行補(bǔ)充。車道線標(biāo)注采用圖森的標(biāo)注方案,如圖11所示,將圖片的下半部分等分成N份(固定的縱坐標(biāo)),然后取車道線與標(biāo)注線交叉點(diǎn)的橫坐標(biāo),如果該縱坐標(biāo)對應(yīng)的位置處無車道線,則橫坐標(biāo)填充為-2。 圖11 車道線標(biāo)注示意圖 實(shí)驗(yàn)平臺(tái)為Ubuntu18.04,GPU型號(hào)為NVIDIA GeForce GTX 1080Ti,深度學(xué)習(xí)框架為pytorch,batchsize為8,所使用優(yōu)化器為adam,訓(xùn)練時(shí)損失曲線如圖12所示,其中橫坐標(biāo)表示迭代次數(shù),縱坐標(biāo)表示loss大小。 圖12 損失曲線 模型的檢測結(jié)果如表1所示,F(xiàn)ocal-loss對于mAP提升較大,并且模型添加車道線檢測任務(wù)也并不會(huì)對車輛檢測產(chǎn)生較大的影響。部分圖片可視化效果如圖13所示,其中,第1列所展示的是原圖,第2列為解碼器生成的車道線權(quán)重圖,第3列為圖片檢測結(jié)果??梢钥闯觯P蛯τ谲嚨谰€的近點(diǎn)擬合都比較好,由于二次函數(shù)并不能完全擬合鳥瞰圖上的車道線投影曲線,彎曲車道線遠(yuǎn)處點(diǎn)擬合較差,此外,模型在有遮擋的情況下仍然可以預(yù)測出遮擋部分的車道線,魯棒性較好。表中:mAP為平均類別精度;Acc、TPR和FNR為車道線檢測評價(jià)指標(biāo)。 表1 模型檢測結(jié)果 % 圖13 檢測結(jié)果可視化效果圖 1) 車道寬度計(jì)算。 實(shí)驗(yàn)通過在Prescan軟件中搭建仿真環(huán)境,獲取車道的真實(shí)寬度,便于結(jié)果驗(yàn)證。實(shí)驗(yàn)中所用的相機(jī)參數(shù)如表2所示。實(shí)驗(yàn)結(jié)果如表3所示。本文提出的車道寬度計(jì)算模型的誤差為3.71%,小于4%,考慮到像素寬度的計(jì)算誤差,計(jì)算結(jié)果已十分接近真實(shí)車道寬度,誤差較小。 表2 相機(jī)參數(shù) 表3 車道寬度計(jì)算結(jié)果及誤差分析 2) 前方目標(biāo)測距結(jié)果。 為了解決文獻(xiàn)[9]只針對直道下的測距方法存在的局限性,在實(shí)驗(yàn)中選用了89張包含標(biāo)注數(shù)據(jù)的圖片,共對140個(gè)目標(biāo)車輛進(jìn)行測距計(jì)算,測距結(jié)果如圖14所示,相關(guān)結(jié)果如表4所示。誤差分析如表5所示:將測距結(jié)果和真實(shí)距離進(jìn)行對比,本文所用測距方法的誤差均值μ和標(biāo)準(zhǔn)差σ均小于文獻(xiàn)[9]所采用的方法且平均誤差控制在4%以內(nèi),雖然在實(shí)際應(yīng)用中隨著真實(shí)駕駛場景的距離增加,測距誤差也隨之增大,但是相對而言誤差距離較小,說明本文所用方法提高了測距精度高,可信度高。 圖14 本文方法的計(jì)算結(jié)果 表4 本文所用方法的測距結(jié)果與誤差分析 表5 實(shí)驗(yàn)的誤差分析 本文所用方法仍然存在以下幾種誤差: 1) 車道寬度的準(zhǔn)確性。車道線是關(guān)鍵參照物,車道寬度作為先驗(yàn)信息,在實(shí)際運(yùn)用的環(huán)境中,考慮到天氣因素,以及車道線的磨損情況都會(huì)使車道線寬度計(jì)算產(chǎn)生較大的誤差,從而對后續(xù)的目標(biāo)距離估計(jì)精度帶來很大的影響。 2) 車道線方程的不準(zhǔn)確性。實(shí)際應(yīng)用的過程中,隨著相機(jī)外參數(shù)存在變化,逆透視變換后得到的車道線不平行,使得車道線方程存在不準(zhǔn)確性,從而帶來距離估計(jì)上的誤差。 3) 目標(biāo)檢測框底邊緣位置的精度。目標(biāo)的定位是由目標(biāo)檢測框位置決定的,如果檢測框底邊緣的上下像素發(fā)生位移,受到直接影響的是車道像素寬度,最終產(chǎn)生測距誤差。 提出了一種可以實(shí)現(xiàn)端到端的車輛與車道線檢測的多任務(wù)檢測網(wǎng)絡(luò)模型,從而獲取目標(biāo)測距所需的車輛檢測框?qū)挾扰c車道線擬合曲線的數(shù)學(xué)模型。推導(dǎo)出彎道下車道寬度的計(jì)算公式,并通過搭建仿真實(shí)驗(yàn)場景驗(yàn)證其準(zhǔn)確性。通過分析現(xiàn)有的基于車道線測距方法運(yùn)用于彎道下的目標(biāo)測距存在的誤差及其原因,并基于車道線斜率修正上述測距模型。通過KITTI數(shù)據(jù)集驗(yàn)證所提出的多任務(wù)檢測模型與修正后的測距模型,結(jié)果表明:多任務(wù)檢測網(wǎng)絡(luò)對于近場的車道線擬合效果較好,且即便車道線被遮擋,模型仍能很好地預(yù)測出被遮擋部分,魯棒性較好;在目標(biāo)測距實(shí)驗(yàn)中,修正后的測距模型在誤差均值與標(biāo)準(zhǔn)差方面均有顯著提高,測距結(jié)果的平均誤差小于4%,測距效果較好。3 實(shí)驗(yàn)結(jié)果及分析
3.1 車道線檢測實(shí)驗(yàn)
3.2 前方目標(biāo)測距實(shí)驗(yàn)
4 結(jié)論