李芳芳,李玉旺,侯雅楠,趙新佳,陳佳佳
(太原科技大學,太原 030024)
無人駕駛技術(shù)是當今尖端科學方面的重要發(fā)展技術(shù),其對社會和經(jīng)濟的進步發(fā)展,國防軍事建設(shè)的增強和科學技術(shù)的發(fā)展有著重大影響。但即使無人駕駛技術(shù)發(fā)展迅速,也并不能完全避免交通事故,在一些緊急情況或極端條件下,無人駕駛并不能像人一樣很好地做出及時反應(yīng),因此如何提高安全保障程度是無人駕駛需要解決的問題。改善安全性的一項關(guān)鍵技術(shù)是環(huán)境感知,包括駕駛車輛的路面檢測,車道線檢測,交通信號燈檢測等。目前檢測車道線的方法基本可以分為3種:基于特征的檢測方法、基于模型的檢測方法及基于深度學習的檢測方法[1]。
基于特征的方法是根據(jù)車道標志邊緣和路面圖像及周圍環(huán)境之間的差異進行檢測,通過閾值分割或邊緣檢測提取車道線的相關(guān)特征信息[2]。Chiu等[3]提出了根據(jù)路面顏色來檢測車道線的方法,通過統(tǒng)計方法找到圖像中的分割閾值,對車道線區(qū)域和道路區(qū)域進行分割;Guo等[4]提出了將Prewitt算子與Shen Jun算子相結(jié)合,在噪聲平滑與邊緣定位之間進行最優(yōu)折中的方法來提取車道標記;Liu等[5]提出了一種基于局部閾值分割和形態(tài)學運算的車道線提取方法,選取車道線的光照強度和寬度作為局部特征?;谔卣鞯姆椒ㄔ谲嚨谰€特征明顯的情況下可獲得較好的結(jié)果,但對噪聲比較敏感,且易受到車道線遮擋、破損的影響,魯棒性較差。
基于模型的檢測方法是將車道線檢測簡化為求解模型參數(shù)[6]。Wang等[7]將車道檢測問題表述為確定車道模型控制點集的問題,提出了一種基于Catmull-Rom樣條的車道模型,采用類似Hough的技術(shù)對消失點(線)進行檢測,然后提出最大相似度方法,解決車道檢測問題。雖然基于模型的檢測方法對噪聲的抗干擾能力強,但并不能以一種車道線模型同時適應(yīng)多種道路,因此解決問題的關(guān)鍵在于選擇合適的模型及對參數(shù)進行求解[8]。
基于深度學習的檢測方法是通過搭建一個深層神經(jīng)網(wǎng)絡(luò)模型完成車道線檢測,重點在于通過大量數(shù)據(jù)對網(wǎng)絡(luò)進行訓(xùn)練,使網(wǎng)絡(luò)能夠自主學習提取車道線特征,以此實現(xiàn)車道線的檢測。John等[9]通過CNN網(wǎng)絡(luò)從路面圖像中提取車道線特征,并訓(xùn)練一個回歸模型,使用提取出的特征來估計車道線位置;He等[10]提出一個雙視圖(DVCNN)模型,通過前視圖排除路沿、障礙物等帶來的誤判,通過俯視圖去除地面字符和箭頭等非桿狀結(jié)構(gòu);Neven等[11]提出了LaneNet模型,將車道線檢測看作實例分割問題,通過語義分割區(qū)分車道線和背景,通過實例分割區(qū)分車道線上的像素屬于哪條車道,然后利用H-net擬合預(yù)測車道線。
通過以上分析,雖然基于深度學習的檢測方法精度更高且魯棒性更高,但是由于算法的參數(shù)規(guī)模較大,因此不利于檢測的實時性。針對以上問題,本文將基于像素的圖片粗顆?;?,將像素級語義分割問題轉(zhuǎn)換為網(wǎng)格級車道線檢測,特征表示的維度數(shù)量級降低,從而使車道線檢測算法達到端到端實時車道線檢測。
車道線檢測算法大多都是在晴朗天氣下進行檢測,但是現(xiàn)實中需要面對較復(fù)雜的天氣條件和不同的道路場景,車道線的圖片清晰度下降,可能會出現(xiàn)圖像失真、車道線特征缺失等問題,難以識別出車道線,影響檢測的精度。并且對于深度學習而言,訓(xùn)練樣本的數(shù)量和種類很大程度上影響算法對車道線的檢測能力。因此,需要有大量多場景的車道線訓(xùn)練樣本,才能有助于提高復(fù)雜環(huán)境狀況下的車道線檢測的準確度。
完善系統(tǒng)的數(shù)據(jù)集對檢測結(jié)果有關(guān)鍵作用,在車道線的檢測過程中,需要建立類型全面的車道線數(shù)據(jù)集。本文主要通過在相關(guān)數(shù)據(jù)集網(wǎng)站獲取含有車道線的圖片,選取了約3 000張車道線不同環(huán)境下特征明顯、類型比較全面的圖片,建立了本次實驗的數(shù)據(jù)集。
在數(shù)據(jù)集的建立過程中,由于車道線所在場景不同,我們需要對數(shù)據(jù)集進行分類,本文將數(shù)據(jù)集分為晴天、陰天、雨天和夜晚4個子集。對數(shù)據(jù)集進行分類之后,將數(shù)據(jù)按照tusimple數(shù)據(jù)集格式整理,具體處理過程為:①更改數(shù)據(jù)集的圖片格式。將建立的數(shù)據(jù)集中的圖片格式統(tǒng)一為.jpg格式;②利用labelme圖像標注工具對圖片進行標注,在這里選擇點進行標注,標注完成后生成json格式的標注信息。然后將json文件轉(zhuǎn)換為可用于訓(xùn)練的標簽集。
整體上來說,數(shù)據(jù)集類型比較全面,場景豐富,不僅包括不同的天氣情況、不同的光線強度、多條道路的場景及高速公路,也包括車道線模糊不清晰,被遮擋等,符合實際生活范圍內(nèi)所碰到的實際具有車道線的場景情況,增強了數(shù)據(jù)集的實用性。對陰天、黑夜、晴天和雨天等進行檢測,用不同顏色標簽區(qū)分不同的車道點,匯聚成線,效果如圖1所示。
圖1 數(shù)據(jù)集
本文利用深度分割處理圖像畫面,因為圖像分割一般是全卷積獲得分割結(jié)果,而卷積基本上是比較局部的,所以為了解決每個像素感受野有限的問題,從分類的角度來構(gòu)思車道線檢測這個問題,將問題轉(zhuǎn)化為對圖像中的特定行進行分類,每一個類別代表車道線所在的一個位置。對數(shù)據(jù)集圖片進行基于全局圖像特征的行選擇,通過流動性提取行特征,對于提取的圖像像素進行語義分割,尋找合適的車道點,對于相鄰的行錨中的車道點進行基于全連接層的分類,整合車道點形成完整的車道線。
如圖2所示,在輸入圖像中每隔若干像素畫水平線,將輸入圖像劃分成若干個行錨。再將每個行錨在垂直方向切割若干單元格。并在每個行錨最后面增加1個單元格,此單元格代表該行錨中沒有車道線。通過設(shè)計1個網(wǎng)絡(luò),當行錨中含有車道線時,網(wǎng)絡(luò)能夠輸出此單元格的位置,當某個行錨中沒有車道線時,網(wǎng)絡(luò)輸出該行錨中“人為地”增加的單元格的位置。通過每個行錨劃分的每個車道點單元格標記,合并整合形成完整的車道線點集,即為車道線。
圖2 網(wǎng)絡(luò)架構(gòu)
假設(shè)輸入網(wǎng)絡(luò)的圖片尺寸為H×W,G是全局圖像特征,并且 是用于選擇第i車道第j行錨點上車道位置的分類器。將每張圖片分為h行,每行分為w個小網(wǎng)格。然后在每一行中選擇一個網(wǎng)格作為車道線的一個點,將所有行累積起來就可以得到一條車道線,基于全局特征得到車道線的預(yù)測結(jié)果車道線的預(yù)測公式如式(1),即
式中:Pi,j,:表示為第i車道第j行錨點選擇w+1個網(wǎng)格單元的概率;N為車道線的數(shù)量;h為行錨數(shù);w為網(wǎng)格單元數(shù)。Y∈RN×h×(w+1)是正確位置的選擇。為交叉熵損失函數(shù),則公式的損失函數(shù)可以寫為式(2),即
ResNet[12]系列網(wǎng)絡(luò)是圖像分類領(lǐng)域的知名算法,由于過深的網(wǎng)絡(luò)會使訓(xùn)練集產(chǎn)生退化問題,通過引入殘差網(wǎng)絡(luò)結(jié)構(gòu)構(gòu)建極深的網(wǎng)絡(luò)層,提高了最終的分類效果,經(jīng)常用于圖像識別任務(wù)。殘差網(wǎng)絡(luò)的基本結(jié)構(gòu)如圖3所示,ResNet網(wǎng)絡(luò)結(jié)構(gòu)如圖4所示。
圖3 殘差結(jié)構(gòu)
圖4 ResNet網(wǎng)絡(luò)結(jié)構(gòu)
本文使用ResNet提取了全局特征,全連接層使用了全局特征,這樣能利用環(huán)境信息來對車道線的位置進行推斷。首先將卷積網(wǎng)絡(luò)分為4層,每層由2個基礎(chǔ)模塊組成,第一層是由2個普通的殘差塊組成,其他3層由一個普通的殘差塊和下采樣的卷積塊組成。輸入圖像經(jīng)過卷積和池化后輸入主網(wǎng)絡(luò)架構(gòu)。利用ResNet為骨干網(wǎng)絡(luò)獲取第2層,第3層及第4層特征,并對第4層網(wǎng)絡(luò)獲取的特征進行1×1卷積和平均池化層后輸出,分類出車道線,形成完整檢測效果圖。
為了更好地檢驗所提出算法的性能,以9∶1的比例劃分訓(xùn)練集與測試集。即使用自制數(shù)據(jù)集的2 700張車道線訓(xùn)練集圖片進行模型參數(shù)訓(xùn)練以實現(xiàn)車道線檢測,本文中深度學習網(wǎng)絡(luò)的訓(xùn)練環(huán)境為CentOS 7,Pytorch和CUDA。本文的訓(xùn)練數(shù)據(jù)集使用圖森格式,統(tǒng)一輸入網(wǎng)絡(luò)的圖片尺寸為1 280×720個像素大小,在優(yōu)化過程中,將圖像大小調(diào)整到288×800。批量大小設(shè)置為16,基礎(chǔ)學習率為0.000 4,動量為0.9,重量衰減為0.000 1,訓(xùn)練次數(shù)設(shè)置為5 000,正常訓(xùn)練。
訓(xùn)練結(jié)束后,使用生成預(yù)訓(xùn)練的最優(yōu)模型對測試集進行測試,取得較好的檢測結(jié)果,能檢測出正確的目標圖片。如式(3),計算預(yù)測圖像中正確車道線像素點數(shù)在標簽圖像中真正車道線的像素點的占比作為實驗所采用的準確率指標。
式中:Cim是預(yù)測圖像中正確車道線的像素點數(shù);Sim是標簽圖像中真正車道線的像素點。實驗進行測試的數(shù)據(jù)集圖片在300張左右,測試準確率能夠達到92.33%,測試結(jié)果如圖5所示。
圖5 車道線在不同場景下的檢測結(jié)果
由圖5中的檢測結(jié)果可以看出,在經(jīng)過5 000次的訓(xùn)練后,能夠得到較好的檢測效果。對于不同天氣情況、不同場景的車道線都能實現(xiàn)較為準確的檢測。即使車道線被遮擋或檢測的車道線是虛線等,都能夠準確地預(yù)測車道線的位置。例如,由圖5(c)和圖5(d)可以看出當天氣并不是很好,光線并不是很明亮的情況下,對較為模糊的車道線也能準確地檢測出來。
自動駕駛對環(huán)境的正確感知是保障其安全行駛的必要條件,而對車道線的準確檢測則是重中之重。車道線的檢測有很多干擾因素,比如車道線被磨損、遮擋及光線亮度過高、過暗等都會影響車道線檢測的準確率,故需要網(wǎng)絡(luò)有較強的推測能力。為此作者提出了一種網(wǎng)格級的車道線檢測方法來預(yù)測輸入圖像中每行的車道線位置,通過該方法可以有效解決不同場景環(huán)境下端到端車道線實時檢測。由于該方法依賴的是整個圖像的感受野,遠遠大于分割網(wǎng)絡(luò)的有限感受野,所以能很好地處理復(fù)雜天氣和不同道路場景,并且提高車道線的檢測準確率。通過在相關(guān)數(shù)據(jù)集網(wǎng)站獲取含有車道線的圖片,挑選了包含3 000張車道線特征明顯、類型比較全面的圖片的數(shù)據(jù)集,使用該方法獲得車道線檢測圖并建立了本次實驗的數(shù)據(jù)集。