李芳芳,李玉旺,侯雅楠,趙新佳,陳佳佳
(太原科技大學,太原 030024)
無人駕駛技術是當今尖端科學方面的重要發展技術,其對社會和經濟的進步發展,國防軍事建設的增強和科學技術的發展有著重大影響。但即使無人駕駛技術發展迅速,也并不能完全避免交通事故,在一些緊急情況或極端條件下,無人駕駛并不能像人一樣很好地做出及時反應,因此如何提高安全保障程度是無人駕駛需要解決的問題。改善安全性的一項關鍵技術是環境感知,包括駕駛車輛的路面檢測,車道線檢測,交通信號燈檢測等。目前檢測車道線的方法基本可以分為3種:基于特征的檢測方法、基于模型的檢測方法及基于深度學習的檢測方法[1]。
基于特征的方法是根據車道標志邊緣和路面圖像及周圍環境之間的差異進行檢測,通過閾值分割或邊緣檢測提取車道線的相關特征信息[2]。Chiu等[3]提出了根據路面顏色來檢測車道線的方法,通過統計方法找到圖像中的分割閾值,對車道線區域和道路區域進行分割;Guo等[4]提出了將Prewitt算子與Shen Jun算子相結合,在噪聲平滑與邊緣定位之間進行最優折中的方法來提取車道標記;Liu等[5]提出了一種基于局部閾值分割和形態學運算的車道線提取方法,選取車道線的光照強度和寬度作為局部特征?;谔卣鞯姆椒ㄔ谲嚨谰€特征明顯的情況下可獲得較好的結果,但對噪聲比較敏感,且易受到車道線遮擋、破損的影響,魯棒性較差。
基于模型的檢測方法是將車道線檢測簡化為求解模型參數[6]。Wang等[7]將車道檢測問題表述為確定車道模型控制點集的問題,提出了一種基于Catmull-Rom樣條的車道模型,采用類似Hough的技術對消失點(線)進行檢測,然后提出最大相似度方法,解決車道檢測問題。雖然基于模型的檢測方法對噪聲的抗干擾能力強,但并不能以一種車道線模型同時適應多種道路,因此解決問題的關鍵在于選擇合適的模型及對參數進行求解[8]。
基于深度學習的檢測方法是通過搭建一個深層神經網絡模型完成車道線檢測,重點在于通過大量數據對網絡進行訓練,使網絡能夠自主學習提取車道線特征,以此實現車道線的檢測。John等[9]通過CNN網絡從路面圖像中提取車道線特征,并訓練一個回歸模型,使用提取出的特征來估計車道線位置;He等[10]提出一個雙視圖(DVCNN)模型,通過前視圖排除路沿、障礙物等帶來的誤判,通過俯視圖去除地面字符和箭頭等非桿狀結構;Neven等[11]提出了LaneNet模型,將車道線檢測看作實例分割問題,通過語義分割區分車道線和背景,通過實例分割區分車道線上的像素屬于哪條車道,然后利用H-net擬合預測車道線。
通過以上分析,雖然基于深度學習的檢測方法精度更高且魯棒性更高,但是由于算法的參數規模較大,因此不利于檢測的實時性。針對以上問題,本文將基于像素的圖片粗顆粒化,將像素級語義分割問題轉換為網格級車道線檢測,特征表示的維度數量級降低,從而使車道線檢測算法達到端到端實時車道線檢測。
車道線檢測算法大多都是在晴朗天氣下進行檢測,但是現實中需要面對較復雜的天氣條件和不同的道路場景,車道線的圖片清晰度下降,可能會出現圖像失真、車道線特征缺失等問題,難以識別出車道線,影響檢測的精度。并且對于深度學習而言,訓練樣本的數量和種類很大程度上影響算法對車道線的檢測能力。因此,需要有大量多場景的車道線訓練樣本,才能有助于提高復雜環境狀況下的車道線檢測的準確度。
完善系統的數據集對檢測結果有關鍵作用,在車道線的檢測過程中,需要建立類型全面的車道線數據集。本文主要通過在相關數據集網站獲取含有車道線的圖片,選取了約3 000張車道線不同環境下特征明顯、類型比較全面的圖片,建立了本次實驗的數據集。
在數據集的建立過程中,由于車道線所在場景不同,我們需要對數據集進行分類,本文將數據集分為晴天、陰天、雨天和夜晚4個子集。對數據集進行分類之后,將數據按照tusimple數據集格式整理,具體處理過程為:①更改數據集的圖片格式。將建立的數據集中的圖片格式統一為.jpg格式;②利用labelme圖像標注工具對圖片進行標注,在這里選擇點進行標注,標注完成后生成json格式的標注信息。然后將json文件轉換為可用于訓練的標簽集。
整體上來說,數據集類型比較全面,場景豐富,不僅包括不同的天氣情況、不同的光線強度、多條道路的場景及高速公路,也包括車道線模糊不清晰,被遮擋等,符合實際生活范圍內所碰到的實際具有車道線的場景情況,增強了數據集的實用性。對陰天、黑夜、晴天和雨天等進行檢測,用不同顏色標簽區分不同的車道點,匯聚成線,效果如圖1所示。

圖1 數據集
本文利用深度分割處理圖像畫面,因為圖像分割一般是全卷積獲得分割結果,而卷積基本上是比較局部的,所以為了解決每個像素感受野有限的問題,從分類的角度來構思車道線檢測這個問題,將問題轉化為對圖像中的特定行進行分類,每一個類別代表車道線所在的一個位置。對數據集圖片進行基于全局圖像特征的行選擇,通過流動性提取行特征,對于提取的圖像像素進行語義分割,尋找合適的車道點,對于相鄰的行錨中的車道點進行基于全連接層的分類,整合車道點形成完整的車道線。
如圖2所示,在輸入圖像中每隔若干像素畫水平線,將輸入圖像劃分成若干個行錨。再將每個行錨在垂直方向切割若干單元格。并在每個行錨最后面增加1個單元格,此單元格代表該行錨中沒有車道線。通過設計1個網絡,當行錨中含有車道線時,網絡能夠輸出此單元格的位置,當某個行錨中沒有車道線時,網絡輸出該行錨中“人為地”增加的單元格的位置。通過每個行錨劃分的每個車道點單元格標記,合并整合形成完整的車道線點集,即為車道線。

圖2 網絡架構
假設輸入網絡的圖片尺寸為H×W,G是全局圖像特征,并且 是用于選擇第i車道第j行錨點上車道位置的分類器。將每張圖片分為h行,每行分為w個小網格。然后在每一行中選擇一個網格作為車道線的一個點,將所有行累積起來就可以得到一條車道線,基于全局特征得到車道線的預測結果車道線的預測公式如式(1),即

式中:Pi,j,:表示為第i車道第j行錨點選擇w+1個網格單元的概率;N為車道線的數量;h為行錨數;w為網格單元數。Y∈RN×h×(w+1)是正確位置的選擇。為交叉熵損失函數,則公式的損失函數可以寫為式(2),即

ResNet[12]系列網絡是圖像分類領域的知名算法,由于過深的網絡會使訓練集產生退化問題,通過引入殘差網絡結構構建極深的網絡層,提高了最終的分類效果,經常用于圖像識別任務。殘差網絡的基本結構如圖3所示,ResNet網絡結構如圖4所示。

圖3 殘差結構

圖4 ResNet網絡結構
本文使用ResNet提取了全局特征,全連接層使用了全局特征,這樣能利用環境信息來對車道線的位置進行推斷。首先將卷積網絡分為4層,每層由2個基礎模塊組成,第一層是由2個普通的殘差塊組成,其他3層由一個普通的殘差塊和下采樣的卷積塊組成。輸入圖像經過卷積和池化后輸入主網絡架構。利用ResNet為骨干網絡獲取第2層,第3層及第4層特征,并對第4層網絡獲取的特征進行1×1卷積和平均池化層后輸出,分類出車道線,形成完整檢測效果圖。
為了更好地檢驗所提出算法的性能,以9∶1的比例劃分訓練集與測試集。即使用自制數據集的2 700張車道線訓練集圖片進行模型參數訓練以實現車道線檢測,本文中深度學習網絡的訓練環境為CentOS 7,Pytorch和CUDA。本文的訓練數據集使用圖森格式,統一輸入網絡的圖片尺寸為1 280×720個像素大小,在優化過程中,將圖像大小調整到288×800。批量大小設置為16,基礎學習率為0.000 4,動量為0.9,重量衰減為0.000 1,訓練次數設置為5 000,正常訓練。
訓練結束后,使用生成預訓練的最優模型對測試集進行測試,取得較好的檢測結果,能檢測出正確的目標圖片。如式(3),計算預測圖像中正確車道線像素點數在標簽圖像中真正車道線的像素點的占比作為實驗所采用的準確率指標。

式中:Cim是預測圖像中正確車道線的像素點數;Sim是標簽圖像中真正車道線的像素點。實驗進行測試的數據集圖片在300張左右,測試準確率能夠達到92.33%,測試結果如圖5所示。


圖5 車道線在不同場景下的檢測結果
由圖5中的檢測結果可以看出,在經過5 000次的訓練后,能夠得到較好的檢測效果。對于不同天氣情況、不同場景的車道線都能實現較為準確的檢測。即使車道線被遮擋或檢測的車道線是虛線等,都能夠準確地預測車道線的位置。例如,由圖5(c)和圖5(d)可以看出當天氣并不是很好,光線并不是很明亮的情況下,對較為模糊的車道線也能準確地檢測出來。
自動駕駛對環境的正確感知是保障其安全行駛的必要條件,而對車道線的準確檢測則是重中之重。車道線的檢測有很多干擾因素,比如車道線被磨損、遮擋及光線亮度過高、過暗等都會影響車道線檢測的準確率,故需要網絡有較強的推測能力。為此作者提出了一種網格級的車道線檢測方法來預測輸入圖像中每行的車道線位置,通過該方法可以有效解決不同場景環境下端到端車道線實時檢測。由于該方法依賴的是整個圖像的感受野,遠遠大于分割網絡的有限感受野,所以能很好地處理復雜天氣和不同道路場景,并且提高車道線的檢測準確率。通過在相關數據集網站獲取含有車道線的圖片,挑選了包含3 000張車道線特征明顯、類型比較全面的圖片的數據集,使用該方法獲得車道線檢測圖并建立了本次實驗的數據集。