高海強(qiáng),萬(wàn)茂松,侯長(zhǎng)軍
(南京林業(yè)大學(xué)汽車與交通工程學(xué)院,江蘇南京 210037)
世界衛(wèi)生組織統(tǒng)計(jì)數(shù)據(jù)顯示,在全球范圍內(nèi),每年約有135 萬(wàn)人因道路交通事故死亡。人們逐漸意識(shí)到,成熟的自動(dòng)駕駛技術(shù)會(huì)使出行更加安全、便捷和高效。自動(dòng)駕駛技術(shù)作為人工駕駛的輔助,可在一定程度上減少因駕駛員注意力不集中、操作失誤等因素造成的交通事故[1],甚至代替駕駛員實(shí)現(xiàn)無人駕駛。自動(dòng)駕駛車輛需要有高精度的傳感器和嚴(yán)格的算法,其在規(guī)避闖紅燈、無故超車以及壓線等危險(xiǎn)違規(guī)操作方面比人工駕駛車輛更加可控。車道線作為機(jī)動(dòng)車安全行駛的一個(gè)重要指引,是傳感器的重點(diǎn)數(shù)據(jù)采集對(duì)象,也是車輛實(shí)現(xiàn)自動(dòng)駕駛的基礎(chǔ)[2]。
傳統(tǒng)的車道線檢測(cè)方法包括手工提取特征和啟發(fā)式方法[3-5],提取的特征包括顏色[6]、條形濾波器[7]、脊線[8]等,提取特征后再與霍夫變換和卡爾曼濾波器相結(jié)合以識(shí)別車道線。郜瑞芹[9]提出一種針對(duì)車道線彎道的塔式梯度直方圖方法,利用支持向量機(jī)對(duì)各種場(chǎng)景的彎道進(jìn)行檢測(cè),增強(qiáng)了算法在霧天場(chǎng)景的魯棒性;Kang 等[10]使用Sobel算子邊緣檢測(cè)獲得帶有噪聲的車道線邊緣特征,沿著垂直方向?qū)⒌缆穲D像分為多個(gè)子區(qū)域,采用動(dòng)態(tài)規(guī)劃算法進(jìn)行車道線提取;Suddamalla 等[11]采用自適應(yīng)閾值法,結(jié)合像素強(qiáng)度與邊界信息提取車道線標(biāo)記;門光文[12]提出一種基于Canny 算子的車道線檢測(cè)方法,使用中值濾波濾除干擾信息,并使用Canny 算子提取車道線邊緣信息;蔣玉亭[13]提出一種基于邊緣點(diǎn)投影的車道線快速識(shí)別算法,根據(jù)邊緣信息提取車道特征點(diǎn)以及梯度方向投影計(jì)數(shù),根據(jù)置信度判斷檢測(cè)車道線;郭月停[14]提出一種基于區(qū)域特征MSER 的改進(jìn)方法,并對(duì)累積概率的Hough 變換算法PPHT 進(jìn)行了改進(jìn);葉美松[15]提出一種單目視覺的車道線檢測(cè)算法,通過簡(jiǎn)單縮放與逐樣本均值消減的方法對(duì)IPM 圖像進(jìn)行歸一化處理,然后使用高斯濾波對(duì)圖片進(jìn)行去噪閾值化處理;Ding 等[16]提出一種基于鳥瞰圖的新型車道線檢測(cè)方法,并根據(jù)遙感圖像中提取的道路特征改進(jìn)了RANSAC 算法。
目前深度學(xué)習(xí)在圖像分割與目標(biāo)分類領(lǐng)域中廣泛應(yīng)用,基于深度學(xué)習(xí)的車道線檢測(cè)方法已逐漸成為趨勢(shì)。該方法通過對(duì)大量樣本進(jìn)行訓(xùn)練,自主學(xué)習(xí)獲取特征,在光照陰影、夜間、彎道等復(fù)雜駕駛環(huán)境中均具有較強(qiáng)的魯棒性。胡忠闖[17]提出一種基于CNN 的線段分類器方法,通過消失點(diǎn)檢測(cè)對(duì)車道線進(jìn)行全局篩選,具有較強(qiáng)的實(shí)時(shí)性和魯棒性;Neven 等[18]提出一種基于CNN 的LaneNet 網(wǎng)絡(luò)車道線實(shí)例分割方法,通過LaneNet 結(jié)合聚類算法完成對(duì)每條車道線的分割,提高了擬合精度;Pan 等[19]設(shè)計(jì)了一個(gè)新的結(jié)構(gòu),在長(zhǎng)寬方向上對(duì)CNN 輸出的特征圖分別進(jìn)行切片,并將卷積結(jié)果向后傳遞,以達(dá)到循環(huán)神經(jīng)網(wǎng)絡(luò)的效果;Ghafoorian 等[20]將車道線檢測(cè)看作是圖像分割問題,采用生成式對(duì)抗網(wǎng)絡(luò),其中生成器用于生成車道線的預(yù)測(cè)值,判別器判別生成器的輸出與真實(shí)標(biāo)簽的差異,最終網(wǎng)絡(luò)能夠直接生成車道線標(biāo)記位置;Kim等[21]結(jié)合CNN與RANSAC算法進(jìn)行車道線預(yù)測(cè),利用CNN 強(qiáng)大的表達(dá)能力進(jìn)行復(fù)雜道路場(chǎng)景的特征提取,采用RANSAC 算法進(jìn)行車道線擬合;王嘉雯[22]提出一種基于6 層CNN 的車道線分類方法,以Canny 算子結(jié)合Hough 變換的方式突出車道線特征,再通過CNN 網(wǎng)絡(luò)對(duì)圖片進(jìn)行分類訓(xùn)練。
針對(duì)傳統(tǒng)車道線檢測(cè)方法易受環(huán)境影響且需要手工提取特征的局限性,本文構(gòu)建一種基于CNN 結(jié)合后處理算法的車道線檢測(cè)方法,該方法具有不需要人工調(diào)參、適用場(chǎng)景較為廣泛以及擬合效果較好等優(yōu)點(diǎn)。
車道線圖像數(shù)據(jù)預(yù)處理是為了增強(qiáng)圖像中目標(biāo)的特征,使深度學(xué)習(xí)能更好地學(xué)習(xí)特征信息,獲得泛化能力更強(qiáng)的模型。
為去除多余圖片信息,改善網(wǎng)絡(luò)訓(xùn)練的速度與檢測(cè)效果,采用固定的ROI 區(qū)域提取方法,通過OpenCV 將分辨率為720×480 的原始圖像(圖1)裁剪為720×240 的ROI 區(qū)域(圖2)。

Fig.1 Original image圖1 原始圖像

Fig.2 Original image after ROI圖2 原始圖片經(jīng)ROI 后的區(qū)域圖
對(duì)比度即最白與最黑亮度單位的比值,調(diào)節(jié)對(duì)比度可使圖像更加生動(dòng)。以RGB 格式圖像的一個(gè)顏色通道為例,以像素當(dāng)前顏色深度值I為橫坐標(biāo),輸出變換的顏色深度值O為縱坐標(biāo)建立坐標(biāo)系,傳統(tǒng)RGB 格式圖像的每個(gè)像素點(diǎn)都可以用0~255 的數(shù)值表示其顏色深度。
對(duì)圖像的亮度和對(duì)比度同時(shí)進(jìn)行修改時(shí),其變換方程式為:

式中,J為圖像亮度增加值,K為原始顏色深度比例值。
根據(jù)實(shí)際情況多次嘗試,確定了圖片對(duì)比度與亮度調(diào)整增加值,未經(jīng)調(diào)整的原始圖像如圖3 所示,原始圖像經(jīng)過K=1、J=20 的調(diào)整處理后如圖4 所示。

Fig.3 Original picture圖3 原始圖像

Fig.4 Effect of brightness contrast conversion圖4 亮度對(duì)比度變換效果
本文建立的車道線檢測(cè)算法主要分為兩個(gè)步驟,分別為網(wǎng)絡(luò)設(shè)計(jì)與模型訓(xùn)練、車道線模型后處理,如圖5 所示。

Fig.5 Design steps of lane line detection algorithm圖5 車道線檢測(cè)算法設(shè)計(jì)步驟
對(duì)VGG16 網(wǎng)絡(luò)進(jìn)行微調(diào)(Fine-tuning),在已經(jīng)在其他分類問題上訓(xùn)練好的VGG16 基網(wǎng)絡(luò)上添加自定義網(wǎng)絡(luò),然后凍結(jié)基網(wǎng)絡(luò),再訓(xùn)練之前添加的自定義部分并解凍基網(wǎng)絡(luò)的某些層,最后聯(lián)合訓(xùn)練解凍層與自定義添加部分,如圖6 所示。在網(wǎng)絡(luò)模型輸出的最后一層加入Softmax 層對(duì)模型框架進(jìn)行修改,以實(shí)現(xiàn)模型輸出結(jié)果多通道像素點(diǎn)的概率分布,便于后處理算法中的聚類算法對(duì)車道線進(jìn)行聚類操作。

Fig.6 VGG16 network after adding fine-tuning圖6 添加fine-tuning 后的VGG16 網(wǎng)絡(luò)
DBSCAN(Density-based Spatial Clustering of Applica?tions with Noise)是一種基于密度的聚類算法,其通過對(duì)核心點(diǎn)、密度可達(dá)點(diǎn)進(jìn)行聚類,將具有足夠高密度的區(qū)域劃分為一類。同時(shí),DBSCAN 還能識(shí)別出稀疏的噪聲數(shù)據(jù)。
對(duì)車道線分割模型輸出圖像的像素分布進(jìn)行聚類處理,將屬于同一車道線的圖像像素點(diǎn)歸為同一類。將車道線分割圖像的像素點(diǎn)概率分布轉(zhuǎn)化為3D 可視化圖像,如圖7 所示,其中x軸表示圖像寬度,y軸表示圖像長(zhǎng)度。按照x軸值對(duì)車道線分割輸出的像素點(diǎn)概率分布圖像進(jìn)行排序,分別取圖像模型位置x=240、250…480 對(duì)應(yīng)的y 項(xiàng)準(zhǔn)確率(Accuracy)數(shù)據(jù),然后提取概率值大于0.5 的峰值點(diǎn),對(duì)其進(jìn)行聚類,車道線概率值大于0.5 的峰值點(diǎn)輸出圖像如圖8所示。
車道線擬合即對(duì)經(jīng)過重新分類的車道線分割模型的像素點(diǎn)概率峰值點(diǎn)進(jìn)行擬合處理,進(jìn)而求得車道線的軌跡參數(shù)方程。

Fig.7 Probability map of pixel point probability distribution of lane line segmentation image圖7 分割圖像像素點(diǎn)概率分布圖
曲線擬合是指對(duì)給定的m個(gè)數(shù)據(jù)點(diǎn)Pi(xi,yi),i=1,2,…,m,求得一條近似曲線y=ρ(x),使曲線y=ρ(x)與真實(shí)曲線y=f(x)之間的偏差最小。y=ρ(x)在點(diǎn)Pi處的偏差δi的計(jì)算方式為:

Fig.8 Output image of peak points with lane line probability value greater than 0.5圖8 概率值大于0.5 的峰值點(diǎn)輸出圖像

式中,δi為偏差。
偏差最小化計(jì)算公式為:

最小二乘法將二次方程作為擬合曲線,并選擇偏差平方和最小的擬合曲線。采用最小二乘法對(duì)給定的m個(gè)樣本點(diǎn)進(jìn)行多項(xiàng)式擬合,使yi=f(x)的近似曲線δi=ρ(xi)-yi經(jīng)過這些樣本點(diǎn)。
假設(shè)車道線需擬合的多項(xiàng)式為:

所有像素點(diǎn)到達(dá)近似曲線的偏差平方和為:

解多項(xiàng)式ai=(i=1,2,…,k),使式(6)取得最小值,表示為:

為求解參數(shù)a1,a1,…ak的多元函數(shù)極值,對(duì)變量ai=(i=1,2,…,k)求偏導(dǎo)公式得:

將等式變?yōu)榫仃囆问剑?/p>

將范德蒙矩陣化簡(jiǎn)后得到:

求解得系數(shù)矩陣Q公式為:

式(10)即為擬合曲線的關(guān)系式,利用最小二乘法對(duì)經(jīng)過聚類分類的車道線像素點(diǎn)概率峰值點(diǎn)進(jìn)行二次曲線擬合,擬合圖像如圖9 所示。將擬合曲線回歸到原始車道線圖像,示例效果如圖10 所示。

Fig.9 Conic fitting image圖9 二次曲線擬合圖像

Fig.10 Lane line fitting effect diagram圖10 車道線擬合效果
本文算法基于Keras 深度學(xué)習(xí)框架,使用Python 語(yǔ)言,采用OpenCV 計(jì)算機(jī)視覺處理庫(kù),在Ubuntu18.04L TS 系統(tǒng)上進(jìn)行測(cè)試。
采用隨機(jī)梯度下降法對(duì)神經(jīng)網(wǎng)絡(luò)模型進(jìn)行訓(xùn)練,初始學(xué)習(xí)率設(shè)為0.01,批處理大小(batch_size)設(shè)置為16,訓(xùn)練循環(huán)(Epoch)設(shè)置為100。在訓(xùn)練過程中會(huì)輸出一些反映模型訓(xùn)練狀態(tài)的參數(shù),根據(jù)迭代輪數(shù),提取訓(xùn)練過程輸出參數(shù)中訓(xùn)練集和驗(yàn)證集的平均準(zhǔn)確率與損失量,利用OpenCV 繪圖函數(shù)分別繪制訓(xùn)練過程中平均準(zhǔn)確率與損失量隨迭代輪數(shù)變化的曲線。模型100 次迭代訓(xùn)練的損失量隨迭代輪數(shù)變化的曲線如圖11 所示,模型100 次迭代訓(xùn)練的平均準(zhǔn)確率隨迭代輪數(shù)變化的曲線如圖12 所示。

Fig.11 Training loss curve圖11 訓(xùn)練損失量變化曲線

Fig.12 Training accuracy rate change curve圖12 訓(xùn)練準(zhǔn)確率變化曲線
將模型準(zhǔn)確率與召回率定義為評(píng)判模型分割效果好壞的依據(jù),即準(zhǔn)確率與召回值越大,模型分割效果越好。平均準(zhǔn)確率acc的計(jì)算公式為:

式中,Cimg為分割正確的像素點(diǎn)數(shù),Timg為整個(gè)圖像標(biāo)注的總像素點(diǎn)數(shù)。
將標(biāo)注為車道線圖像區(qū)域的所有像素點(diǎn)分為車道線像素點(diǎn)與非車道線像素點(diǎn),兩者的比值即為召回率recall。計(jì)算公式為:

式中,TP為被正確預(yù)測(cè)的車道線像素點(diǎn),F(xiàn)N為被錯(cuò)誤預(yù)測(cè)的車道線像素點(diǎn)。
經(jīng)過計(jì)算,最終模型驗(yàn)證集的平均準(zhǔn)確率、召回率分別為91.3%、90.6%,說明模型具有較好的分割效果。然后對(duì)不同場(chǎng)景下的車道線進(jìn)行檢測(cè)識(shí)別,夜晚場(chǎng)景的車道線回歸如圖13 所示,陰天場(chǎng)景如圖14 所示,陰影場(chǎng)景如圖15所示,雨天場(chǎng)景如圖16 所示。

Fig.13 Lane line returnat night圖13 夜晚場(chǎng)景的車道線回歸

Fig.14 Lane line return in cloudy day圖14 陰天場(chǎng)景的車道線回歸

Fig.16 Lane line return in rainy day圖16 雨天場(chǎng)景的車道線回歸
針對(duì)同一實(shí)驗(yàn)樣本,比較本文模型與其他模型的檢測(cè)準(zhǔn)確率與單幀圖像耗時(shí),結(jié)果如表1 所示。

Table 1 Comparison of accuracy and time of single frame image among different models表1 不同模型準(zhǔn)確率與單幀圖像耗時(shí)對(duì)比
實(shí)驗(yàn)結(jié)果顯示,傳統(tǒng)車道線檢測(cè)方法K-means 的準(zhǔn)確率遠(yuǎn)不如其他結(jié)合深度學(xué)習(xí)的模型方法。CNN 結(jié)合Hough變換的方法雖然提升了檢測(cè)準(zhǔn)確率,但其處理單幀圖像的平均耗時(shí)最長(zhǎng),與該方法相比,SegNet 模型的車道線檢測(cè)準(zhǔn)確率和平均耗時(shí)均有較大改善。相較于其他3 個(gè)模型,VGG16 模型在準(zhǔn)確率以及單幀圖像處理速度方面均有明顯提升,達(dá)到了較好的圖像分割效果。
本文利用CNN 在圖像特征提取領(lǐng)域的優(yōu)勢(shì)對(duì)車道線特征進(jìn)行學(xué)習(xí),并利用DBSCAN 聚類算法對(duì)車道線分割模型進(jìn)行后處理,提升了該模型的準(zhǔn)確率,優(yōu)化了車道線的擬合效果。實(shí)驗(yàn)結(jié)果表明,與傳統(tǒng)車道線檢測(cè)算法相比,CNN 結(jié)合后處理的算法具有更高的準(zhǔn)確性和可靠性。因此,本文提出的車道線檢測(cè)算法具有一定應(yīng)用價(jià)值。但該算法仍存在一些不足之處:一方面,圖像在訓(xùn)練過程中由于自身硬件條件的限制,可能導(dǎo)致訓(xùn)練時(shí)間較長(zhǎng)且訓(xùn)練結(jié)果存在一定誤差,使網(wǎng)絡(luò)模型不能充分學(xué)習(xí)到圖像特征;另一方面,在進(jìn)行車道線分割模型輸出數(shù)據(jù)后處理時(shí),可能會(huì)濾除少部分像素點(diǎn)數(shù)據(jù),導(dǎo)致不能對(duì)其進(jìn)行擬合,造成部分車道線漏檢等情況。以上問題是下一步研究的重點(diǎn)方向。