丁海濤,孫 銳,程旭升,高 雋
(合肥工業(yè)大學計算機與信息學院,安徽 合肥 230601)
Figure 1 Diagram of the lane line detection method圖1 車道線檢測方法框圖
現(xiàn)代智能汽車都配置了車道偏離警告系統(tǒng)LDWS(Lane Departure Warning System)和車道保持輔助系統(tǒng)LKAS(Lane Keeping Assist System)。其中,車道線檢測是車道偏離警告系統(tǒng)LDWS和車道保持輔助系統(tǒng)LKAS中的關鍵技術(shù)。目前,車道線檢測方法大體分為基于特征、基于模型和基于深度學習的檢測方法。基于特征的方法通常利用車道線的顏色特征[1,2]、紋理特征[3]和幾何特征[4,5]等,再與霍夫變換[6 - 9]或卡爾曼濾波器[9 - 12]相結(jié)合檢測車道線,識別車道線后,利用后處理濾除誤檢得到最終的車道線。基于模型[13 - 17]的檢測方法首先要估計道路的數(shù)學模型,利用圖像信息確定道路數(shù)學模型的參數(shù)。通常,這些基于特征和基于模型的檢測方法容易受到車輛遮擋和地面污損等不良天氣道路場景的影響。隨著深度學習在計算機視覺領域的成功運用,國內(nèi)外學者提出了一些基于深度學習的車道線檢測方法。例如,Li等人[18]使用卷積神經(jīng)網(wǎng)絡CNN(Convolutional Neural Network)和循環(huán)神經(jīng)網(wǎng)絡RNN(Recurrent Neural Networks)進行車道線檢測。作者在CNN提取道路特征信息的基礎上,結(jié)合RNN進行車道線檢測。Lee等人[19]提出一種多任務卷積神經(jīng)網(wǎng)絡的車道線檢測算法。作者采集了多種環(huán)境下的車道線和道路標志,利用特殊的grid標注方法標注消失點,再利用滅點引導網(wǎng)絡VPGNet(Vanishing Point Guided Network)進行車道線檢測。文獻[20]提出了一種新的卷積神經(jīng)網(wǎng)絡用于車道線檢測,這種卷積神經(jīng)網(wǎng)絡通過切片到切片之間的卷積提取特征信息,適合學習連續(xù)的、長的形狀結(jié)構(gòu)。這些基于深度學習的車道線檢測方法雖然有著較好的性能,但是還不能很好地解決車輛遮擋和地面污損問題。
針對車輛遮擋和地面污損問題,本文將車道線檢測視為連續(xù)細長區(qū)域?qū)嵗指顔栴},提出了一種基于密集分割網(wǎng)絡DSNet(Dense Segmentation Network)的車道線檢測方法。首先,在SegNet網(wǎng)絡模型[21]的基礎上,使用稠密塊[22]構(gòu)建了1個密集分割網(wǎng)絡,該網(wǎng)絡由1個提取實例特征的下采樣路徑和1個恢復輸入圖像分辨率大小的上采樣路徑組成。所構(gòu)建的深度分割網(wǎng)絡在不同層之間建立了連接關系,使得該網(wǎng)絡具有重復使用特征的特性,減少了網(wǎng)絡的加深導致細長區(qū)域?qū)嵗卣餍畔⒌膿p失,提高了圖像分割的準確性。其次,為了使得車道線邊界更為準確,該方法引入了鄰近AND運算和Meanshift聚類算法,對密集分割網(wǎng)絡的輸出進行處理,以減小非車道線像素的干擾。最后,為了能夠?qū)嚨谰€進行實例分割,本文制作了一個與圖森訓練集對應的車道線實例分割數(shù)據(jù)集,結(jié)合圖森訓練集一起對該網(wǎng)絡進行端到端的訓練。實驗表明,本文提出的方法能很好地解決車輛遮擋和地面污損的問題,具有較好的魯棒性和實時性,同時還能確定檢測的車道線的數(shù)量。
本文提出的車道線檢測方法邏輯框圖如圖1所示,該方法可以通過端到端的訓練密集分割網(wǎng)絡學習到道路場景中車道線的實例特征,對因車輛遮擋和地面污損導致的車道線不連續(xù)的區(qū)段進行預測,輸出每個車道線和背景像素集合的RGB圖像IS;再通過鄰近AND運算設定合適的閾值過濾掉圖像IS中的非車道像素得到車道線二值分割圖IB,獲取圖像IB中像素值為“1”的位置,從圖像IS中標記相同位置的像素點,使用Meanshift聚類算法對標記的像素點進行聚類,得到以不同顏色區(qū)分不同車道線實例的車道線實例分割圖。
SegNet由1個下采樣網(wǎng)絡、1個上采樣網(wǎng)絡和1個像素分類層(Softmax)組成。下采樣路徑采用13層的視幾何組網(wǎng)絡VGG(Visual Geometry Group Network)網(wǎng)絡作為語義特征的提取器,將提取到的特征通過與下采樣路徑具有相同層數(shù)的上采樣路徑恢復至輸入圖像分辨率大小,實現(xiàn)端到端的輸出。
SegNet網(wǎng)絡中的層與層之間是順序連接的,隨著網(wǎng)絡的加深,該網(wǎng)絡能較好地學習到相對大點的區(qū)塊的實例特征,但是細長區(qū)域的實例特征信息會有較大的損失。為了提高SegNet網(wǎng)絡模型對細長區(qū)域分割的性能,使其適用于車道線檢測,本文在該網(wǎng)絡模型的基礎上,用稠密塊構(gòu)建密集分割網(wǎng)絡,結(jié)構(gòu)如圖2所示,該網(wǎng)絡也是由1個下采樣路徑和1個上采樣路徑組成。稠密塊結(jié)構(gòu)如圖3所示,該結(jié)構(gòu)為了改善不同層之間信息的流動,采用了一種將任何一層與后面所有層建立密集的連接的方式,使得特征和梯度能夠更加有效地傳遞。因此,第l層會接受前面所有層的特征圖x0,x1,…,xl-1作為輸入:
xl=Hl([x0,x1,…,xl-1])
(1)
其中,x0,x1,…,xl-1為0,1,…,l-1層的特征圖,Hl(x)為第l層的非線性函數(shù)。本文的密集分割網(wǎng)絡采用具有在不同層間建立連接方式的稠密塊重新構(gòu)建了SegNet的下采樣路徑和上采樣路徑,使得網(wǎng)絡能夠充分利用特征,以相對較少的參數(shù)提高提取車道線實例特征和恢復特征圖分辨率的性能,同時還能使得梯度的傳遞更加有效,讓網(wǎng)絡在無需使用預訓練參數(shù)的情況下變得更加容易訓練。
Figure 2 Structure of dense segmentation network 圖2 密集分割網(wǎng)絡結(jié)構(gòu)
Figure 3 Dense block structure 圖3 稠密塊結(jié)構(gòu)
在下采樣網(wǎng)絡中,如圖4a和圖4b所示,稠密塊中的層由批量正則化(Batch Normalization)、ReLU激活函數(shù)、卷積和Dropout組成,過渡層由批量正則化、ReLU、卷積、Dropout和大小為2×2的非重疊濾波窗口執(zhí)行最大池化(Max Pooling)操作組成。由于最大池化操作會降低特征圖的分辨率,造成邊界信息損失,因此在最大池化操作之前,需要存儲特征圖中的邊界信息。為了更加有效地保留特征圖中的邊界信息,只需要存儲最大池化索引,即濾波窗口中最大特征值的位置。雖然這種內(nèi)存存儲方式會導致精確度有輕微損失,但是可以提高內(nèi)存利用率,縮短運行時間。
Figure 4 Structure of layer in upsampling and downsampling path圖4 上、下采樣中層的結(jié)構(gòu)圖
在上采樣網(wǎng)絡中,如圖4c所示,稠密塊中的層由批量正則化(Batch Normalization)、卷積和Dropout組成。上采樣過程如圖5所示,圖中a~d為對應像素的像素值,該過程用原先存儲的對應的最大池化索引對輸入的特征圖進行上采樣,將道路場景中的車道線分割出來。
Figure 5 Upsampling圖5 上采樣
密集分割網(wǎng)絡預測的車道線邊界有模糊的現(xiàn)象,因此本文增加了鄰近AND運算。該運算先將圖像IS灰度化,使用查找垂直和水平線的Sobel算子對灰度圖像執(zhí)行梯度測量查找邊緣信息。再設定一個合適的閾值th,根據(jù)式(2)將灰度圖像IG1和IG2進行二值化得到IB1和IB2:
(2)
鄰近AND運算的數(shù)學表達式如式(3)所示,它能使二值圖像IB1和IB2中車道線鄰近的共同特征更為清晰,并過濾掉非共同部分的特征,得到像素值為1和0的二值圖,其中像素值為1表示車道線,像素值為0表示背景。
(3)
其中,k為鄰近參數(shù)。
Figure 6 Images and their corresponding lane line segmentation instances in the tuSimple training set圖6 圖森訓練集中圖像和與之對應的車道線實例分割圖像示例
為了減小圖像IS中非車道線像素的干擾,得到邊界線清晰的RGB車道線實例分割圖,本文采用Meanshift聚類算法對圖像IS中像素值被標記為1的像素進行聚類。Meanshift聚類算法是一種無參數(shù)概率密度估計算法,它不需要預先知道聚類的類別數(shù),同時對聚類的形狀也沒有限制。假設在一個d維空間Rd中給定n個數(shù)據(jù)xi,i=1,2,…,n,多元核估計密度函數(shù)的數(shù)學表達式如式(4)所示:
(4)
其中,K(x)為核函數(shù),K(x)=ck,dk(‖x‖2),這里ck,d是一個歸一化常數(shù),h為窗口的寬度。該算法是根據(jù)偏移向量調(diào)整下次計算的位置,而不是逐個像素計算,這就會減少冗余計算,加快收斂速度。由于Meanshift算法還可以使用核函數(shù),使得計算區(qū)域中各像素對應的權(quán)值不同,離中心越遠權(quán)值越小,對結(jié)果的影響也就越小,在一定程度上可以避免車道線周圍噪聲的干擾,提高了抗干擾能力,確定檢測的車道線數(shù)量。
圖森數(shù)據(jù)集由7 000個一秒鐘視頻剪輯組成。其中,訓練集有3 626個視頻剪輯,每個視頻剪輯中有20幀,最后一幀圖像的標簽信息無序地存儲在json文件中。測試集由2 782個視頻集組成,每個視頻剪輯中有20幀。這些視頻剪輯包括不同的天氣環(huán)境和交通環(huán)境場景。本文將車道線檢測視為車道線實例分割問題。在訓練模型的時候,不僅用到帶標記的圖像,還需要與標簽對應的車道線實例分割數(shù)據(jù)集。本文的實驗用Python語言并且借助第三方庫OpenCV依次讀取每幅圖像中的每條車道線標簽信息,制作每條車道線的灰度值從220依次遞減50的灰度圖像,構(gòu)建與之對應的車道線實例分割數(shù)據(jù)集,示例如圖6所示。
本文實驗采用的網(wǎng)絡結(jié)構(gòu)如圖7所示,用圖森數(shù)據(jù)集和對應的車道線實例分割數(shù)據(jù)集訓練該網(wǎng)絡。實驗所使用的硬件平臺為內(nèi)存:16 GB,處理器:Intel(R)Core(TM)i7-6700K CPU@3.60 GHz x8,顯卡:GeForce GTX 1070Ti/PCIe/SSE2。實驗參數(shù)設置:訓練次數(shù)為50 000,批量大小為8,初始化學習率為0.000 1,并且每5 000次訓練減少0.96。
本文采用的評價標準有2個:準確率(Acc)和誤檢率(FN)。準確率計算按每幅圖像的平均正確點數(shù)計算,計算方法如式(5)所示:
(5)
Figure 7 DSNet network structure in the experiment圖7 實驗中的DSNet網(wǎng)絡結(jié)構(gòu)
其中,Cim表示預測正確點數(shù)目,Sim表示地面實況正確點數(shù)目。當?shù)孛鎸崨r和預測點之間的差異小于特定的閾值時,判定這個點是正確的。誤檢率的計算方法如式(6)所示:
(6)
其中,Mpred表示誤判為車道線的數(shù)量,Ngt表示所有真實路況的車道線數(shù)量。
為了驗證本文提出的方法能解決車輛遮擋和地面污損問題,從圖森測試集中選取了車輛遮擋和地面污損的道路場景圖像,檢測結(jié)果如圖8所示。從檢測結(jié)果來看,本文方法能夠?qū)σ蜍囕v遮擋和地面污損導致車道線不連續(xù)的區(qū)段進行預測,并且檢測結(jié)果的車道線邊界線更為清晰。同時,從圖8可以看出,在相同的道路場景下,基于密集分割網(wǎng)絡的車道線檢測效果明顯優(yōu)于基于SegNet網(wǎng)絡的檢測效果。
Figure 8 Detection results under the scenes occluded by vehicles and groud fouling圖8 地面污損和車輛遮擋場景下的檢測效果圖
表1給出了本文方法與幾種典型方法在圖森測試集上的性能比較。如表1所示,本文方法的準確率Acc和誤檢率FN比TF Placeholder方法分別提高了0.1%和0.003 6%。與文獻[20]方法相比,該文獻中的方法設計了一種特殊層的網(wǎng)絡結(jié)構(gòu),訓練時需要使用固定順序的車道線標簽數(shù)據(jù)集;而本文方法可以使用無序標簽的車道線訓練集,簡化了構(gòu)建訓練集標志的工作,并且在處理速度方面提升至29 fps。與文獻[23]方法相比,雖然該方法要優(yōu)于本文方法,但是文獻[23]方法的學習目標是學習嵌入像素特征向量,需要后處理來聚類像素發(fā)現(xiàn)車道線,很難確定車道線的數(shù)量;而本文方法可以很容易地確定所檢測的車道線數(shù)量,為智能駕駛提供有關車道線數(shù)量的信息。
Table 1 Comparison of the method in this paper and typical methods 表1 本文方法與典型方法的對比
為了進一步驗證本文方法的性能,使用包含多種道路場景的數(shù)據(jù)進行測試,結(jié)果如表2所示。從表2中可以看出,本文方法的平均準確率高達98.10%,其中在高速公路場景下的準確率高達100%,這是因為高速公路屬于標準的結(jié)構(gòu)化道路,并且影響因素也很少。夜晚場景下的準確率低,只有95.07%,這主要是由于光線不足導致的。另外,影響車道線檢測的因素有很多,圖9給出了幾種典型干擾下的車道線檢測結(jié)果,從中可以看出,本文方法能很好地適應光照劇變、非結(jié)構(gòu)化區(qū)段和彎道等道路場景。
Table 2 Accuracy in different road scenarios表2 不同道路場景下的準確率
Figure 9 Detection results in some typical complex scenarios圖9 一些典型復雜場景下的檢測效果圖
本文提出了一種基于密集分割網(wǎng)絡的車道線檢測方法,該方法先構(gòu)建了一個密集分割網(wǎng)絡,將車道線檢測視為連續(xù)細長區(qū)域進行實例分割,再使用鄰近AND運算和Meanshift聚類算法對密集分割網(wǎng)絡的輸出進行處理,減少非車道線像素的干擾,使得車道線的邊界更連續(xù)、更準確。實驗表明,本文方法能解決車輛遮擋和地面污損問題,確定檢測的車道線數(shù)量,并且還能很好地適應綜合性的復雜道路場景,具有較好的魯棒性和實時性。