劉 軍,陳 辰,李漢冰,許 多
(江蘇大學 汽車與交通工程學院, 江蘇 鎮江 212013)
在智能交通系統中,機器視覺技術具有重要意義,主要應用于:車牌識別、車輛檢測、交通標志檢測、車道線檢測、駕駛員行為檢測、3D視覺感知等。其中,車道線檢測以及基于車道線對前方車輛的距離估計是自動駕駛系統環境感知部分的關鍵技術[1-3]。
傳統的車道線檢測算法通常根據人工選取某個特征進行檢測,如方向梯度直方圖特征(histogram of oriented gradient,HOG)[1]、加速穩健特征(speeded up robust features,SURF)[2]等。然而在實際場景應用下,由于光照、陰影等因素導致圖像的顏色和結構產生變化,從而影響到檢測的準確性和魯棒性。同時,車道線檢測必須實時或更快速地執行,以節省其他系統的處理能力。
隨著深度學習的快速發展,卷積神經網絡廣泛用于車輛檢測和車道線檢測中,考慮到大部分檢測方法是將目標檢測和車道線檢測分開,而在復雜的交通場景中,在計算資源有限的情況下,若搭載在實車系統上的車道檢測采用2個獨立的檢測模型,分別檢測目標(車輛/騎行車/行人等)、車道線,不僅會增加硬件需求,而且會降低實時性,如何實現單個模型同時魯棒地檢測車輛和車道線是一個亟需解決的工程問題。
為了使模型具有通用性、低成本、檢測的實時性,本文提出了一種新的多任務檢測網絡,基于YOLOv3[4]結構,采用輕量化模型MobilenNetv2[5]作為backbone,同時在損失函數中應用Focalloss[6],從而減少易分類樣本的權重,使訓練過程中模型更加關注難分類樣本,共享YOLOv3的卷積層,構成編碼解碼結構,添加車道線分類模塊、分割模塊、坐標生成模塊,將車道線看作點的集合,固定點的縱坐標,根據最小二乘模塊生成的車道線擬合參數和點的縱坐標計算得到點的橫坐標。與其他方法比,該方法實現了端到端的車輛與車道線檢測,實時性和魯棒性較好,且適用于多種場景。
基于單目視覺的目標測距方法目前主要有2種:基于目標位置信息和基于目標寬度信息。在基于目標位置信息的研究中,Adamshuk等[7]提出一種基于逆透視變換的測距方法,然而逆透視變換存在的固有特性使得誤差伴隨距離增加而增大,因此適用的測距范圍較小。國內外學者從事目標寬度信息方向研究:Han等[8]提出一種基于車輛寬度特征的距離估計方法,然而車輛寬度估計的過程中存在很大的不確定性。Lee[9]提出一種基于車道線寬度的距離估計方法,該方法根據前方車輛底邊緣位置處對應的車道線像素寬度進行距離估計,對比文獻[8]中基于車輛牌照尺寸特征的測距方法,該方法的測距范圍更廣,測距精度也相應提高。
考慮到車道寬度是較為容易獲得的先驗信息,運動情況下測距魯棒性較好,且距離和相機的姿態角的變化等因素對基于車道線寬度的測距方法影響較小,因此本文提出一種基于車道線等寬度假設、車道線為參考的目標定位模型。通過分析基于車道線斜率的車道線寬度的計算方法在計算過程中產生誤差的原因,進而對彎道下前方車輛縱向距離的測距方法進行優化,最終通過對比幾何方法獲得的估計值與真實值驗證模型的測距精度。
目標檢測部分以YOLOv3為核心,用輕量化網絡MobileNetv2替換darknet53作為backbone。MobileNetv2網絡結合了深度可分離卷積和殘差結構。深度可分離卷積相對于標準卷積計算量壓縮率為:
(1)
式中:DK·DK·M·N·DF·DF代表標準卷積參數量;DK·DK·M·DF·DF+M·N·DF·DF代表深度可分離卷積參數量;Dk表示卷積核尺寸;DF表示輸出的特征圖尺寸;M為輸入通道數;N為輸出通道數。
網絡融合特征金字塔[10](FPN)的思想,通過多尺度特征圖檢測目標,融合高層特征圖[11]上采樣和底層特征,網絡輸出為預測的邊界框信息[12]、置信度[13]和類別概率。
基本框架:車道線檢測網絡共享YOLOv3的卷積層,在FPN的基礎上繼續添加上采樣,構成編碼-解碼結構。編碼器(MobileNetv2)逐漸降低物體的空間維度,提取語義信息,解碼器逐步修復物體的細節和空間維度,生成逐像素的車道線權重圖,同時對特征圖的值取平方,確保生成的權重為正。
模型包含用于判斷該車道線是否存在的車道線分類分支[14],分類分支位于編碼器后,編碼器提取的特征語義信息十分豐富,分類較為準確。
本文去掉傳統的車道線后處理方法,將坐標特征[15]手動添加進特征中。在擬合曲線的過程中,鳥瞰圖坐標更適合用于擬合曲線,如圖1所示,因此將x坐標和y坐標的特征映射利用透視變換矩陣[16]轉換為鳥瞰圖坐標[17]再添加進車道線權重圖中,為每個坐標配一個權重w,對生成的權重圖[18]和2個坐標圖進行平坦化,則可以得到特征圖中每個像素i的x坐標、y坐標和車道線權重值。

圖1 鳥瞰圖坐標示意圖
最小二乘模塊:在鳥瞰圖上,每條車道線都可以用二次函數擬合,使用最小二乘法對函數參數進行擬合。
最小二乘的矩陣形式:
min||Yβ-X||2
(2)
β=(YTY)-1YTX
(3)
將車道線權重加入到最小二乘計算中,令X′=WX,Y′=WY得到:
β′=(Y′TY′)-1Y′TX′
(4)
式中:Y∈Rm×n,β′∈Rn×1,X∈Rm×1,W∈Rm×m;W代表網絡生成的車道線權重;X,Y代表添加的鳥瞰圖橫、縱坐標特征;β′代表車道線曲線擬合參數。

(5)
(6)
(7)
車道線擬合損失函數:對坐標生成模塊生成的點的橫坐標進行監督,采用的損失函數為MSE損失:
(8)

車道線分類損失函數:采用二分類交叉熵損失
(9)

車輛檢測損失函數:采用YOLOv3網絡的損失函數,在損失函數中應用Focalloss,從而在訓練過程中,模型更加關注難分類樣本。Focalloss主要用在Lnoobj_confidence,為:
(10)

YOLOv3網絡的損失函數為:
LYOLOv3=Lcoordinate+Lobj_confidence+
Lnoobj_confidence+Lclass
(11)
總的損失函數為:
L=λYOLOLYOLOv3+λx_coorLlane_xcoor+
λlane_clasLlane_classification
(12)
式中:
λYOLO=4,λx_coor=1,λlane_clas=2
多任務檢測網絡模型結構如圖2所示。

圖2 模型結構示意圖
首先分析只存在俯仰角β的情況,如圖3所示。其中:h=OO′為攝像機的安裝高度,CD為車道寬度,AB=b為車道像素寬度,θ1為相機高度方向上一半的視場角,2θ2是相機方位視場角,β為俯仰角,OE′=f(焦距)。

圖3 只存在俯仰角的駕駛場景示意圖
根據投影關系可知:

(13)
當只存在俯仰角β時,車道寬度的計算公式為式(13)。
然后分析俯仰角β與偏航角α同時存在的情況如圖4所示。其中:α為偏航角,2θ為相機方位視場角,DG為車道寬度,OE′=f(焦距)。
將O點投影到路面上記作O′,如圖5所示。由圖4可知,俯仰角β與偏航角α同時存在時,車道寬度的計算公式為式(14)。

圖4 俯仰角與偏航角同時存在時的駕駛場景示意圖

圖5 O點投影圖

(14)
考慮到車道線投影情況類似小孔成像的原理,根據檢測到的前方車輛位置處的車道線在圖像中的像素寬度,通過幾何學知識推導出前方車輛縱向距離的計算式,圖6展示了直道下測距模型。由式(14)計算出車道真實寬度Lline,通過相機內外參數可獲得相機焦距fx、前方車輛位置處車道像素寬度Lpixel,因此,自車與前方車輛之間的縱向距離計算式為:

圖6 直道下測距模型示意圖
(15)
如圖7所示,在彎道下行駛時,若按照直道下測距模型的計算方法去計算彎道模型,此時前方車輛位置處的車道像素寬度Lpixel對應的是真實世界坐標系中的Ldraw,然而從三維俯視圖中可以看出Ldraw并不等于當前車道的實際寬度Lline。若仍然按照直道模型計算前方車距會產生極大的誤差,且該誤差隨著彎道的曲率增大和前車距離變遠而增大。

圖7 鳥瞰場景下分析示意圖
為了得到更準確的車道真實寬度,需要對彎道下前方車輛位置處的車道線寬度計算公式進行修正,減小測距誤差,提高測距結果的精度。
已知x=f(y)為車道線方程,通過式(16)計算前方車輛的距離估計值Ydraw,然后根據Ydraw處的車道線切線的斜率k計算世界坐標系中Ldraw與Lline的夾角θ,最終推導出車道線的實際橫向寬度的計算模型,計算公式分別為:
(16)
(17)
(18)
最后通過合并式(15)和式(18)得到前方車輛的實際縱向距離,計算公式為:
(19)
如圖8所示,該測距方法的計算模型存在兩點誤差:首先根據式(16)計算斜率的過程中,令Ldraw=Lline并代入式(15)中計算得到縱向距離Ydraw,然而實際情況下,Lline 圖8 彎道下測距模型細節圖 為了降低上述兩點誤差對前方車輛測距結果準確性的干擾,以本車前進方向作為Y軸,相機所在位置的橫向作為X軸,建立如圖8所示的坐標系,L是根據式(18)計算出的橫向距離。為了簡化模型,車輛平行于車道線行駛且將左右車道線視作一個同心圓模型,為: (x-a)2+y2=(r+Lline)2 (20) (x-a)2+y2=r2 (21) 式中:a代表圓心的橫坐標;r代表右車道線的半徑。 則目標車輛位置處車道橫向寬度Ldraw可表示為: (22) 式中,Yr為真實縱向距離。 將式(22)代入式(15)可以得到關于真實縱向距離Yr的關系式: (23) 文獻[8]所用的測距方法根據式(15)整理為: (24) 將式(23)代入式(19)計算出本文所用方法的測距結果: (25) 假設車道寬度Lline是3 m,文獻[9]所用測距方法與本文提出的測距方法在不同曲率半徑的車道線下的測距結果與真實距離如圖9所示。在相同的情況下,本文所使用的方法的測距結果更貼近真實距離,其測距精度隨著真實距離的增加而提高;在車道線半徑為85 m和105 m的情況下,由于半徑較小,進行遠距離車輛測距時會存在以下的特殊情況:目標車輛實際上已經駛離了自車的視野中心或駛出了自車的檢測范圍。然而對比文獻[9]所用方法,本文修正后的方法在近距離車輛測距時效果更好,測距精度更高,修正后的測距結果更加接近真實距離。 圖9 修正后的方法與文獻[9]的測距結果 修正后的方法與文獻[9]所用方法的誤差如圖10所示。車道線半徑為85 m,真實距離為40 m的情況下,文獻[8]所用方法的測距誤差為12.4%,修正后的方法測距誤差則為3.5%;真實距離為60 m時,文獻[9]所用方法的測距誤差為29.2%,修正后的方法測距誤差則為17.7%。當車道線半徑為225 m,真實距離為40 m的情況下,文獻[9]所用方法的測距誤差為0.94%,修正后的方法測距誤差幾乎為0;真實距離為60 m時,文獻[9]所用方法的測距誤差為7.98%,修正后的方法測距誤差則為0.97%。 圖10 修正后的方法與文獻[8]方法的測距誤差 從圖10中可以看出,隨著真實距離的增加,測距誤差越來越大,然而相對而言誤差距離較小。此外,測距誤差受到車道線曲率半徑的影響,具體表現為測距誤差隨著車道線半徑的增大而降低,當半徑超過200 m時,在100 m真實距離范圍內的測距誤差控制在1%以內。因此,綜合而言,修正后的測距方法對減小誤差效果顯著。 訓練所用數據為圖森的車道線數據集加收集的各種場景圖片,對車輛的標注框采用coco訓練的YOLOv3進行自動標注,并使用標注工具進行補充。車道線標注采用圖森的標注方案,如圖11所示,將圖片的下半部分等分成N份(固定的縱坐標),然后取車道線與標注線交叉點的橫坐標,如果該縱坐標對應的位置處無車道線,則橫坐標填充為-2。 圖11 車道線標注示意圖 實驗平臺為Ubuntu18.04,GPU型號為NVIDIA GeForce GTX 1080Ti,深度學習框架為pytorch,batchsize為8,所使用優化器為adam,訓練時損失曲線如圖12所示,其中橫坐標表示迭代次數,縱坐標表示loss大小。 圖12 損失曲線 模型的檢測結果如表1所示,Focal-loss對于mAP提升較大,并且模型添加車道線檢測任務也并不會對車輛檢測產生較大的影響。部分圖片可視化效果如圖13所示,其中,第1列所展示的是原圖,第2列為解碼器生成的車道線權重圖,第3列為圖片檢測結果。可以看出,模型對于車道線的近點擬合都比較好,由于二次函數并不能完全擬合鳥瞰圖上的車道線投影曲線,彎曲車道線遠處點擬合較差,此外,模型在有遮擋的情況下仍然可以預測出遮擋部分的車道線,魯棒性較好。表中:mAP為平均類別精度;Acc、TPR和FNR為車道線檢測評價指標。 表1 模型檢測結果 % 圖13 檢測結果可視化效果圖 1) 車道寬度計算。 實驗通過在Prescan軟件中搭建仿真環境,獲取車道的真實寬度,便于結果驗證。實驗中所用的相機參數如表2所示。實驗結果如表3所示。本文提出的車道寬度計算模型的誤差為3.71%,小于4%,考慮到像素寬度的計算誤差,計算結果已十分接近真實車道寬度,誤差較小。 表2 相機參數 表3 車道寬度計算結果及誤差分析 2) 前方目標測距結果。 為了解決文獻[9]只針對直道下的測距方法存在的局限性,在實驗中選用了89張包含標注數據的圖片,共對140個目標車輛進行測距計算,測距結果如圖14所示,相關結果如表4所示。誤差分析如表5所示:將測距結果和真實距離進行對比,本文所用測距方法的誤差均值μ和標準差σ均小于文獻[9]所采用的方法且平均誤差控制在4%以內,雖然在實際應用中隨著真實駕駛場景的距離增加,測距誤差也隨之增大,但是相對而言誤差距離較小,說明本文所用方法提高了測距精度高,可信度高。 圖14 本文方法的計算結果 表4 本文所用方法的測距結果與誤差分析 表5 實驗的誤差分析 本文所用方法仍然存在以下幾種誤差: 1) 車道寬度的準確性。車道線是關鍵參照物,車道寬度作為先驗信息,在實際運用的環境中,考慮到天氣因素,以及車道線的磨損情況都會使車道線寬度計算產生較大的誤差,從而對后續的目標距離估計精度帶來很大的影響。 2) 車道線方程的不準確性。實際應用的過程中,隨著相機外參數存在變化,逆透視變換后得到的車道線不平行,使得車道線方程存在不準確性,從而帶來距離估計上的誤差。 3) 目標檢測框底邊緣位置的精度。目標的定位是由目標檢測框位置決定的,如果檢測框底邊緣的上下像素發生位移,受到直接影響的是車道像素寬度,最終產生測距誤差。 提出了一種可以實現端到端的車輛與車道線檢測的多任務檢測網絡模型,從而獲取目標測距所需的車輛檢測框寬度與車道線擬合曲線的數學模型。推導出彎道下車道寬度的計算公式,并通過搭建仿真實驗場景驗證其準確性。通過分析現有的基于車道線測距方法運用于彎道下的目標測距存在的誤差及其原因,并基于車道線斜率修正上述測距模型。通過KITTI數據集驗證所提出的多任務檢測模型與修正后的測距模型,結果表明:多任務檢測網絡對于近場的車道線擬合效果較好,且即便車道線被遮擋,模型仍能很好地預測出被遮擋部分,魯棒性較好;在目標測距實驗中,修正后的測距模型在誤差均值與標準差方面均有顯著提高,測距結果的平均誤差小于4%,測距效果較好。



3 實驗結果及分析
3.1 車道線檢測實驗




3.2 前方目標測距實驗





4 結論