武志斐,李守彪
(太原理工大學(xué)機(jī)械與運(yùn)載工程學(xué)院,太原 030024)
車道線檢測(cè)是高級(jí)輔助駕駛系統(tǒng)乃至自動(dòng)駕駛系統(tǒng)的關(guān)鍵感知技術(shù),基于車道線檢測(cè)的車道線偏離預(yù)警系統(tǒng)和車道保持輔助系統(tǒng)對(duì)于改善汽車的主動(dòng)安全性及減少交通事故有著至關(guān)重要的作用[1-2]。
傳統(tǒng)的車道線檢測(cè)算法大多數(shù)依賴車道線的顏色[3-4]、灰度[5-6]、邊緣[7-8]等手工特征提取,易受車輛遮擋和不良光線等因素的影響,難以適應(yīng)自動(dòng)駕駛實(shí)際應(yīng)用的復(fù)雜場(chǎng)景。
隨著深度學(xué)習(xí)的發(fā)展和車載處理器性能的提升,基于深度學(xué)習(xí)的車道線檢測(cè)得到快速發(fā)展。相比傳統(tǒng)的車道線檢測(cè)算法,基于深度學(xué)習(xí)的車道線檢測(cè)算法可以自動(dòng)根據(jù)圖像信息提取車道線特征,擁有更高的準(zhǔn)確率和魯棒性,主要分為基于分割的算法[9-11]、基于行分類的算法[12-13]和基于參數(shù)預(yù)測(cè)的算法[14-15]。
基于分割的車道線檢測(cè)算法將車道線看作像素的集合并進(jìn)行分類,又可以細(xì)分為基于語(yǔ)義分割的算法和基于實(shí)例分割的算法。基于語(yǔ)義分割的車道線檢測(cè)將每條車道線和背景看作不同的類別進(jìn)行多類別分割,將增強(qiáng)對(duì)車道線的感知作為研究重點(diǎn)。Pan 等[9]設(shè)計(jì)了一種空間卷積網(wǎng)絡(luò)(spatial convolutional neural network,SCNN),通過(guò)捕獲圖像中行和列的空間關(guān)系來(lái)增強(qiáng)對(duì)車道線的檢測(cè)效果。Hou 等[10]提出一種自注意力蒸餾(self attention distillation,SAD)模塊,通過(guò)模塊間輸出特征的相互學(xué)習(xí)來(lái)有效地提取車道線特征。然而基于語(yǔ)義分割的車道線檢測(cè)算法只能檢測(cè)預(yù)定義且固定數(shù)量的車道線,不能靈活應(yīng)對(duì)駕駛路面上數(shù)量變化的車道線。Neven 等[11]基于實(shí)例分割的思想提出了LaneNet 算法,通過(guò)對(duì)每一個(gè)像素分配一組多維嵌入向量來(lái)區(qū)分不同的車道線實(shí)例,可以在不預(yù)定義車道線數(shù)量的前提下進(jìn)行多車道線檢測(cè),但其檢測(cè)精度不高,且利用Meanshift 聚類算法導(dǎo)致后處理耗時(shí)長(zhǎng),無(wú)法滿足自動(dòng)駕駛實(shí)時(shí)性要求。
基于行的車道線檢測(cè)利用車道線的形狀先驗(yàn),通過(guò)行方向上的分類實(shí)現(xiàn)對(duì)車道線的定位。Qin等[12]提出了一種超快車道線檢測(cè)(ultra fast lane detection,UFLD)算法,利用行分類公式顯著降低了計(jì)算成本。Yoo 等[13]提出了端到端的行分類車道線檢測(cè)網(wǎng)絡(luò)(E2Enet),并設(shè)計(jì)了一種水平壓縮模塊提高檢測(cè)的性能。雖然利用行分類可以簡(jiǎn)化模型的輸出,但其未能有效解決車道線的實(shí)例級(jí)檢測(cè)問(wèn)題。
基于參數(shù)預(yù)測(cè)的車道線檢測(cè)將車道線用曲線方程表示。Tableini等[14]提出了PolyLaneNet,首次利用深度網(wǎng)絡(luò)直接回歸車道線曲線方程。為更好地預(yù)測(cè)曲線方程的參數(shù),Liu 等[15]提出基于transformer 的車道線檢測(cè)算法(LSTR),利用transformer 的自注意力機(jī)制來(lái)建模車道線的細(xì)長(zhǎng)結(jié)構(gòu)。雖然這類算法可以預(yù)測(cè)數(shù)量變化的車道線,但是抽象的曲線方程參數(shù)難以優(yōu)化,導(dǎo)致其在復(fù)雜場(chǎng)景下的性能較差。
綜合上述分析,車道線檢測(cè)一方面須增強(qiáng)模型的感知來(lái)應(yīng)對(duì)復(fù)雜的自動(dòng)駕駛場(chǎng)景,另一方面須實(shí)現(xiàn)實(shí)例級(jí)車道線檢測(cè)來(lái)應(yīng)對(duì)道路中數(shù)量變化的車道線。因此本文提出一種基于實(shí)例分割的車道線檢測(cè)算法,設(shè)計(jì)基于擴(kuò)張卷積的殘差模塊來(lái)增強(qiáng)模型的感受野,并提出一種基于車道線位置的實(shí)例分割方法來(lái)實(shí)現(xiàn)車道線的實(shí)例級(jí)檢測(cè)。
針對(duì)本文所提出的車道線檢測(cè)算法,設(shè)計(jì)的車道線檢測(cè)網(wǎng)絡(luò)模型整體框架如圖1 所示??傮w結(jié)構(gòu)分為編碼網(wǎng)絡(luò)和解碼網(wǎng)絡(luò)。
圖1 車道線檢測(cè)網(wǎng)絡(luò)整體結(jié)構(gòu)
通過(guò)分析車道線的顏色和結(jié)構(gòu)可知,車道線與道路邊沿等具有一定的相似性,且被遮擋、磨損后會(huì)造成特征提取困難。為準(zhǔn)確提取圖像的車道線特征,須采用深度網(wǎng)絡(luò)進(jìn)行特征提取,然而深層次的網(wǎng)絡(luò)在訓(xùn)練時(shí)會(huì)出現(xiàn)退化現(xiàn)象,造成網(wǎng)絡(luò)的性能下降。為解決這一問(wèn)題,殘差網(wǎng)絡(luò)[16](residual network,ResNet)提出了殘差學(xué)習(xí)的網(wǎng)絡(luò)結(jié)構(gòu),通過(guò)在網(wǎng)絡(luò)的不同層之間增加跳躍連接(skip connection)為訓(xùn)練時(shí)的梯度提供了恒等映射的通道,使淺層網(wǎng)絡(luò)信息可以快速傳遞到深層,在一定程度上解決了深度網(wǎng)絡(luò)訓(xùn)練出現(xiàn)的性能退化,增強(qiáng)了網(wǎng)絡(luò)提取圖像特征的能力,被廣泛應(yīng)用于車道線檢測(cè)研究。為提高車道線檢測(cè)的實(shí)時(shí)性,本文中采用殘差網(wǎng)絡(luò)系列中最輕量的ResNet18 作為主干網(wǎng)絡(luò)提取圖像的多尺度特征,并在大規(guī)模數(shù)據(jù)集ImageNet[17]上進(jìn)行預(yù)訓(xùn)練來(lái)提高特征提取效果,當(dāng)輸入網(wǎng)絡(luò)的圖像尺寸為800×320×3時(shí),ResNet18 網(wǎng)絡(luò)結(jié)構(gòu)及輸出特征尺寸如表1所示。
表1 ResNet18網(wǎng)絡(luò)結(jié)構(gòu)
其中殘差模塊結(jié)構(gòu)如圖2 所示。圖中w0為輸入殘差模塊的特征通道數(shù),w為各卷積輸出特征的通道數(shù),并采用ReLU激活函數(shù)進(jìn)行非線性映射。
圖2 殘差模塊
由于車道線的細(xì)長(zhǎng)結(jié)構(gòu),使檢測(cè)網(wǎng)絡(luò)既需要車道線的高層次語(yǔ)義特征,同時(shí)也需要局部的細(xì)節(jié)特征,因此采用特征金字塔網(wǎng)絡(luò)[18](feature pyramid network,F(xiàn)PN)來(lái)融合多尺度的特征信息,結(jié)構(gòu)如圖3所示。將ResNet18的L3、L4和L5層輸出的特征,首先通過(guò)1×1 卷積來(lái)匹配通道數(shù),同時(shí)采用雙線性插值匹配不同特征層的尺寸,最后輸出尺寸為100×40×128的特征。
圖3 特征金字塔結(jié)構(gòu)
由于本文采用輕量化的主干網(wǎng)絡(luò),模型會(huì)存在感受范圍不足的情況,因此采用擴(kuò)張卷積[19](dilated convolution)來(lái)增強(qiáng)模型的感受野。擴(kuò)張卷積的原理是在卷積中引入擴(kuò)張率(dilation rate)的新參數(shù),通過(guò)擴(kuò)張率來(lái)控制卷積核各點(diǎn)的間距,相較于普通卷積,在卷積核尺寸相同時(shí),參數(shù)量不變,但是擴(kuò)張卷積的感受野更大,單層擴(kuò)張卷積的感受野大小遵循公式為
式中:k為原始卷積核的感受野大小;kd為擴(kuò)張后卷積核的感受野大小;d為擴(kuò)張率。
圖4 為不同擴(kuò)張率的擴(kuò)張卷積。如圖4(a)所示,當(dāng)擴(kuò)張率d為1時(shí),3×3 的擴(kuò)張卷積相當(dāng)于標(biāo)準(zhǔn)卷積,單層感受野只有3×3大??;圖4(b)為當(dāng)擴(kuò)張率d為3的3×3擴(kuò)張卷積,單層感受野增大到7×7大小。
圖4 不同擴(kuò)張率的擴(kuò)張卷積
利用擴(kuò)張卷積的原理,本文中提出一種基于擴(kuò)張卷積的殘差模塊,如圖5 所示。整體上采用殘差結(jié)構(gòu),并采用4層3×3的擴(kuò)張卷積。雖然擴(kuò)張卷積可以有效提高模型的感受野,但當(dāng)采用相同或成倍數(shù)的擴(kuò)張率時(shí)會(huì)存在網(wǎng)格效應(yīng)[20],造成特征圖上卷積中心點(diǎn)的不連續(xù),導(dǎo)致像素信息的缺失,因此疊加卷積的擴(kuò)張率不應(yīng)有大于1的公約數(shù),本文將4層卷積的擴(kuò)張率分別設(shè)置為1、3、7 和11,采用小的擴(kuò)張率來(lái)獲取圖像的局部信息,并利用遞增的大擴(kuò)張率增強(qiáng)中遠(yuǎn)距離車道線信息的聯(lián)系。在編碼網(wǎng)絡(luò)中采用3 個(gè)擴(kuò)張卷積殘差模塊增強(qiáng)模型的感受野,來(lái)提高車道線檢測(cè)的精度。
圖5 擴(kuò)張卷積殘差模塊
解碼網(wǎng)絡(luò)負(fù)責(zé)將提取的車道線特征進(jìn)行解碼輸出。主要由分割分支、水平偏置分支和垂直偏置分支組成。首先通過(guò)一個(gè)1×1 卷積核將通道數(shù)縮小一半,然后通過(guò)雙線性插值將特征圖的尺寸擴(kuò)大兩倍,通過(guò)3 層殘差模塊后分別連接分割分支、水平偏置分支和垂直偏置分支,3 個(gè)分支結(jié)構(gòu)相同,都由3 層3×3 的卷積組成。本文中將各分支輸出特征尺寸固定到輸入圖片尺寸的1/4,而不是像大多數(shù)分割模型輸出高分辨率的特征,這樣一方面可以簡(jiǎn)化模型的輸出,提高網(wǎng)絡(luò)的推理速度,另一方面可以提高模型后處理聚類的速度。解碼網(wǎng)絡(luò)是實(shí)現(xiàn)實(shí)例分割的基礎(chǔ),各分支的具體作用參考2.1節(jié)。
實(shí)例分割是計(jì)算機(jī)視覺(jué)領(lǐng)域的一個(gè)經(jīng)典任務(wù),其不僅要區(qū)分不同類別的物體,且須區(qū)分同一類別物體的不同實(shí)例。具體到車道線檢測(cè)任務(wù),實(shí)例分割須區(qū)分車道線類別與背景類別,然后將對(duì)每條車道線實(shí)例進(jìn)行區(qū)分。
為準(zhǔn)確區(qū)分不同的車道線實(shí)例,本文中提出一種基于車道線位置的實(shí)例分割方法。首先利用模型分割分支來(lái)預(yù)測(cè)二分類的車道線分割圖,通過(guò)Argmax 函數(shù)獲取每一個(gè)像素的類別,屬于車道線類別的每個(gè)像素視為一個(gè)車道線點(diǎn),每張圖片上的所有車道線點(diǎn)可以用一組坐標(biāo)表示:
式中:P表示車道線點(diǎn)的集合;xi表示第i個(gè)車道線點(diǎn)的水平坐標(biāo)位置;yi表示第i個(gè)車道線點(diǎn)的垂直坐標(biāo)位置;F表示車道線點(diǎn)的最大數(shù)量。
車道線點(diǎn)的預(yù)測(cè)結(jié)果示意圖如圖6 所示。此時(shí)只能區(qū)分車道線點(diǎn)與背景,而不能區(qū)分車道線點(diǎn)的實(shí)例。由圖中車道線點(diǎn)的空間位置分布可知,不同實(shí)例點(diǎn)的車道線點(diǎn)相互分離,已具備一定的聚類特性,但由于車道線的細(xì)長(zhǎng)結(jié)構(gòu),使車道線點(diǎn)分散嚴(yán)重,且相鄰的車道線在遠(yuǎn)處時(shí)相互聚集,不能簡(jiǎn)單地利用聚類算法對(duì)車道線點(diǎn)進(jìn)行實(shí)例區(qū)分。
圖6 車道線點(diǎn)分布示意圖
為更好地區(qū)分不同實(shí)例的車道線點(diǎn),本文算法為每個(gè)車道線點(diǎn)預(yù)測(cè)一個(gè)對(duì)應(yīng)的聚類點(diǎn),讓不同實(shí)例但卻相鄰的車道線點(diǎn)對(duì)應(yīng)的聚類點(diǎn)相互分離,并使同一實(shí)例車道線點(diǎn)對(duì)應(yīng)的聚類點(diǎn)更加聚集,提高每個(gè)實(shí)例的點(diǎn)密度,從而更易區(qū)分不同的車道線實(shí)例。因此利用模型的水平偏置分支和垂直偏置分支,分別預(yù)測(cè)一個(gè)水平偏置圖和垂直偏置圖,根據(jù)車道線點(diǎn)位置提取出其對(duì)應(yīng)每個(gè)點(diǎn)的水平位置偏置和垂直位置偏置,如式(3)和式(4)所示。
利用車道線點(diǎn)的位置和預(yù)測(cè)的水平偏置與垂直偏置來(lái)計(jì)算對(duì)應(yīng)的聚類點(diǎn),其原理如圖7 所示。圖中黑點(diǎn)表示預(yù)測(cè)的車道線點(diǎn),紅色點(diǎn)表示第i個(gè)車道線點(diǎn)經(jīng)過(guò)式(5)和式(6)位置計(jì)算后對(duì)應(yīng)的聚類點(diǎn)。聚類點(diǎn)的分布示意圖如圖8所示。
圖7 聚類點(diǎn)位置計(jì)算原理
圖8 聚類點(diǎn)分布示意圖
最后采用基于密度的DBSCAN[21](densitybased spatial clustering of application with noise)聚類算法對(duì)聚類點(diǎn)進(jìn)行實(shí)例區(qū)分,DBSCAN 有鄰域搜索半徑(Eps)和搜索鄰域內(nèi)包含的最小點(diǎn)數(shù)(Minpts)兩個(gè)關(guān)鍵參數(shù),根據(jù)這兩個(gè)關(guān)鍵參數(shù)將聚類點(diǎn)區(qū)分為3 類:核心點(diǎn)、邊界點(diǎn)和噪聲點(diǎn)。其中核心點(diǎn)是Eps內(nèi)聚類點(diǎn)的數(shù)量不小于Minpts的聚類點(diǎn),而不屬于核心點(diǎn)但在某個(gè)核心點(diǎn)鄰域內(nèi)的聚類點(diǎn)稱為邊界點(diǎn),既不屬于核心點(diǎn)也不屬于邊界點(diǎn)的聚類點(diǎn)則為噪聲點(diǎn)。同時(shí)定義了點(diǎn)與點(diǎn)之間存在的3 種關(guān)系,對(duì)于聚類點(diǎn)集合,如果聚類點(diǎn)q在點(diǎn)p的Eps領(lǐng)域內(nèi),p為核心點(diǎn),則稱p對(duì)q直接密度可達(dá);對(duì)于聚類點(diǎn)集合,給定一串聚類點(diǎn)p1,p2,p3,…,pn,p=p1,q=pn,若對(duì)象pi從pi-1直接密度可達(dá),則對(duì)象q從對(duì)象p密度可達(dá);存在聚類點(diǎn)集合中的一點(diǎn)o,若對(duì)象o到對(duì)象p和對(duì)象q都密度可達(dá),則p和q密度相連。
DBSCAN算法的具體流程如下:
(1)從聚類點(diǎn)集合中任意選取一個(gè)聚類點(diǎn)p;
(2)如果對(duì)于參數(shù)Eps和Minpts,所選取的聚類點(diǎn)p為核心點(diǎn),則找出所有與p密度可達(dá)的聚類點(diǎn),形成一個(gè)簇;
(3)如果選取的聚類點(diǎn)p是邊緣點(diǎn),則選取另一個(gè)聚類點(diǎn);
(4)重復(fù)步驟(2)、(3),直到所有聚類點(diǎn)被處理。
最終形成的每個(gè)簇即為聚類點(diǎn)的每個(gè)實(shí)例集合,然后根據(jù)聚類點(diǎn)來(lái)區(qū)分對(duì)應(yīng)車道線點(diǎn)的實(shí)例。從以上DNSCAN 的算法原理可知,其不必在聚類前確定聚類簇的個(gè)數(shù),因此本文算法可以在不預(yù)定義車道線數(shù)量的情況下進(jìn)行多車道線檢測(cè)。本文設(shè)置Eps為10,Minpts為150,實(shí)例區(qū)分結(jié)果如圖9(a)所示,對(duì)應(yīng)的車道線點(diǎn)區(qū)分結(jié)果如圖9(b)所示。
圖9 實(shí)例區(qū)分結(jié)果
損失函數(shù)主要分為兩部分:分割損失和位置損失。由于車道線在圖像中所占像素相對(duì)背景較少,像素分類不平衡,因此選用帶有權(quán)重的交叉熵?fù)p失函數(shù)作為分割損失,即
式中:Lseg表示分割損失;N表示像素?cái)?shù)目;M表示類別數(shù)量,因?yàn)楸疚牟捎枚诸惙指?,因此M=2;wij表示當(dāng)前類別的權(quán)重,背景類別設(shè)為0.4,車道線類別設(shè)為1;yij為樣本的真實(shí)值,當(dāng)樣本i的類別等于j時(shí)取1,否則取0;pij為觀測(cè)樣本i類別屬于j的預(yù)測(cè)值。
為使車道線點(diǎn)對(duì)應(yīng)的聚類點(diǎn)可以自適應(yīng)地得到聚類中心,位置損失參考LaneNet中基于距離的度量學(xué)習(xí)方法,并引入車道線的位置信息,主要由方差損失和距離損失兩部分組成,即
式中:Lloc表示位置損失;Lvar表示方差損失;Ldist表示距離損失。
方差損失是為減小屬于同一車道線聚類點(diǎn)之間的距離,如式(9)所示;距離損失是為增大不同車道線聚類點(diǎn)之間的距離,如式(10)所示。為方便模型訓(xùn)練擬合,對(duì)車道點(diǎn)的水平位置和垂直位置均進(jìn)行開(kāi)方來(lái)減小尺度,因此在預(yù)測(cè)時(shí),車道線點(diǎn)對(duì)應(yīng)的聚類點(diǎn)位計(jì)算公式如式(11)和式(12)所示。
式中:C為車道線的數(shù)目;Nc為每條車道線中車道線點(diǎn)的數(shù)目;uxc為同一車道線點(diǎn)的水平位置平均值;uyc為同一車道線點(diǎn)的垂直位置平均值;δv為方差閾值;δd為距離閾值。
綜上所述,本文算法的總損失為
式中:L為總損失;α為分割損失的權(quán)重系數(shù),設(shè)為1.0;β為位置損失的權(quán)重系數(shù),設(shè)為0.5。
實(shí)驗(yàn)所用處理器為Intel(R)Xeon(R)Gold 5218 CPU @ 2.30 GHz,運(yùn)行內(nèi)存為64 GB,GPU 為NVIDIA RTX3090,采用PyTorch深度學(xué)習(xí)框架,均通過(guò)Python代碼實(shí)現(xiàn)。
為評(píng)價(jià)本文提出的車道線檢測(cè)算法,使用車道線檢測(cè)最通用的CULane 數(shù)據(jù)集和TuSimple 數(shù)據(jù)集對(duì)模型進(jìn)行訓(xùn)練與測(cè)試,兩個(gè)數(shù)據(jù)集的圖像分辨率、總幀數(shù)以及對(duì)應(yīng)的訓(xùn)練集、驗(yàn)證集和測(cè)試集劃分如表2 所示。其中CULane 數(shù)據(jù)集是一個(gè)包含城區(qū)、郊區(qū)和高速公路等多種道路類型的大規(guī)模車道線數(shù)據(jù)集,除正常場(chǎng)景外,還包含擁擠、夜晚、無(wú)線、陰影、箭頭、眩光、彎道和路口這8個(gè)復(fù)雜場(chǎng)景,最多標(biāo)注4條車道線,可以用于測(cè)試算法在面對(duì)復(fù)雜場(chǎng)景時(shí)的車道線檢測(cè)情況。TuSimple 只包含高速公路類型的車道線,最多標(biāo)注5 條車道線,是最廣泛使用的車道線檢測(cè)數(shù)據(jù)集之一。
表2 車道線數(shù)據(jù)集
為便于與其他的車道線檢測(cè)算法進(jìn)行對(duì)比,所有實(shí)驗(yàn)均采用數(shù)據(jù)集的官方評(píng)價(jià)標(biāo)準(zhǔn)。
CULane 數(shù)據(jù)集將車道線看做30 像素寬的細(xì)長(zhǎng)曲線,通過(guò)計(jì)算預(yù)測(cè)車道線與真實(shí)車道線之間的交并比(intersection over union,IOU)來(lái)判斷是否預(yù)測(cè)正確。交并比大于0.5 的車道線表明預(yù)測(cè)正確,視為真正例(true positive,TP);小于0.5 則認(rèn)為預(yù)測(cè)錯(cuò)誤,視為假正例(false positive,F(xiàn)P);因漏檢而未被檢測(cè)出的車道線作為假負(fù)例(false negative,F(xiàn)N)。因?yàn)槁房趫?chǎng)景不含車道線,所以采用FP 的數(shù)量作為評(píng)價(jià)標(biāo)準(zhǔn),F(xiàn)P 數(shù)量越小,表明檢測(cè)效果越好,其余場(chǎng)景采用調(diào)和平均值(F1)作為最終評(píng)價(jià)標(biāo)準(zhǔn),精確率、召回率和F1的計(jì)算公式分別為
式中:Pprecision表示精確率;Precall表示召回率;PF1表示調(diào)和平均值F1;NTP表示真正例的數(shù)量;NFP表示假正例的數(shù)量;NFN表示假負(fù)例的數(shù)量。
TuSimple 數(shù)據(jù)集有3 個(gè)評(píng)價(jià)指標(biāo)分別是假陽(yáng)率(false positive rate,F(xiàn)PR)、假陰率(false negative rate,F(xiàn)NR)和準(zhǔn)確率(accuracy)3個(gè)評(píng)價(jià)指標(biāo),分別為
式中:PFPR表示假陽(yáng)率;PFNR表示假陰率;Paccuracy表示準(zhǔn)確率;Npred為所有預(yù)測(cè)的車道線數(shù);Ngt為真實(shí)的車道線數(shù);Ci為第i張圖片正確預(yù)測(cè)的車道線點(diǎn)數(shù)量;Si表示第i張圖片真實(shí)的車道線點(diǎn)數(shù)量。
同時(shí)本文將F1 作為T(mén)uSimple 的最終評(píng)價(jià)標(biāo)準(zhǔn),如果超過(guò)85%的預(yù)測(cè)車道點(diǎn)在真實(shí)車道線點(diǎn)的20像素以內(nèi),則預(yù)測(cè)車道線為T(mén)P,否則為FP,漏檢的車道線視為FN。
在模型訓(xùn)練時(shí)需要對(duì)數(shù)據(jù)進(jìn)行預(yù)處理,對(duì)CULane 和Tusimple 數(shù)據(jù)集中的每張圖像分別裁減掉其上部240 和160 行像素,然后縮放到800×320 的分辨率,并進(jìn)行隨機(jī)旋轉(zhuǎn)、隨機(jī)水平移動(dòng)和隨機(jī)垂直移動(dòng)等數(shù)據(jù)增強(qiáng)。
使用自適應(yīng)矩陣估計(jì)(adaptive moment estimation,Adam)算法作為優(yōu)化器,批處理數(shù)據(jù)量(batch size)設(shè)為16,初始學(xué)習(xí)率設(shè)為1×10-4,使用polylr 學(xué)習(xí)率[22]下降策略,在CULane 和Tusimple 訓(xùn)練集上分別訓(xùn)練20和40個(gè)迭代輪次(epoch)。
在CULane 數(shù)據(jù)集上對(duì)比SCNN、SAD、UFLD和E2Enet的結(jié)果如表3所示。其中SAD、UFLD 和E2Enet分別采用Enet、ResNet34和ERFNet作為主干網(wǎng)絡(luò)。本文算法在正常場(chǎng)景和夜晚、無(wú)線、陰影等多個(gè)復(fù)雜場(chǎng)景取得了最高的檢測(cè)性能,綜合F1 達(dá)到75.2%,對(duì)比SCNN、SAD、UFLD 和E2Enet 算法分別高出3.6、4.4、2.9和1.2個(gè)百分點(diǎn),證明了本文算法在復(fù)雜場(chǎng)景下具有更高的檢測(cè)精度和魯棒性。
表3 CULane數(shù)據(jù)集結(jié)果
圖10 列舉了本文算法在不同場(chǎng)景下的車道線檢測(cè)效果??梢钥闯觯疚木W(wǎng)絡(luò)可以有效地應(yīng)對(duì)車輛遮擋和不良光線等復(fù)雜場(chǎng)景,且可以檢測(cè)數(shù)量變化的車道線。
圖10 多場(chǎng)景下的車道線檢測(cè)
在TuSimple 數(shù)據(jù)集上增加了與LaneNet、PolyLaneNet 和LSTR 算法的對(duì)比,結(jié)果如表4 所示。由于TuSimple 數(shù)據(jù)集都是高度規(guī)則化的高速場(chǎng)景,且大多光線良好,因此不同車道線檢測(cè)算法性能差距較小,本文算法取得了最高的F1 指標(biāo),假陽(yáng)率顯著降低,說(shuō)明不易錯(cuò)誤預(yù)測(cè)車道線,對(duì)于汽車安全意義重大。
表4 TuSimple數(shù)據(jù)集結(jié)果
由于車道線檢測(cè)算法須滿足駕駛的實(shí)時(shí)性需求,因此對(duì)本文算法的模型推理速度和DBSCAN 聚類速度進(jìn)行測(cè)試,通過(guò)500 張圖像測(cè)試平均時(shí)間,結(jié)果如表5 所示。其中車道線檢測(cè)網(wǎng)絡(luò)模型利用GPU推理加速,聚類算法在CPU 運(yùn)行。本文模型的推理時(shí)間為7.91 ms,DBSCAN 算法進(jìn)行聚類所用時(shí)間為7.23 ms,即使包括聚類,本文算法的FPS(frames per second)仍然可以達(dá)到66.05,可以實(shí)時(shí)檢測(cè)車道線。
表5 網(wǎng)絡(luò)推理與聚類時(shí)間
為驗(yàn)證本文設(shè)計(jì)的擴(kuò)張卷積殘差模塊對(duì)車道線檢測(cè)的提升效果,將模型中的擴(kuò)張卷積殘差模塊去掉后,采用相同的訓(xùn)練參數(shù)在CULane數(shù)據(jù)集進(jìn)行訓(xùn)練,對(duì)比結(jié)果見(jiàn)表6。加入擴(kuò)張卷積殘差模塊后取得了更好的檢測(cè)結(jié)果,精確率提高0.3 個(gè)百分點(diǎn),召回率提高1.2 個(gè)百分點(diǎn),F(xiàn)1 提高0.8 個(gè)百分點(diǎn),證明了本文提出的擴(kuò)張卷積殘差模塊可以有效提高車道線檢測(cè)的精度。
表6 網(wǎng)絡(luò)性能對(duì)比結(jié)果 %
為驗(yàn)證本文所提的實(shí)例分割方法的有效性,將實(shí)例分割方法與只使用DBSCAN 對(duì)分割圖像進(jìn)行聚類的方法進(jìn)行對(duì)比。由于分割圖像中車道線點(diǎn)的分布密度低,因此直接進(jìn)行聚類的DBSCAN 算法中Eps和Minpts參數(shù)分別設(shè)為2 和10,在CULane 數(shù)據(jù)集檢測(cè)結(jié)果如表7 所示。通過(guò)數(shù)據(jù)對(duì)比可知,直接對(duì)二分類車道線分割運(yùn)用DBSCAN 算法檢測(cè)結(jié)果并不理想,F(xiàn)1 指標(biāo)只有40.9%,而本文實(shí)例分割方法可以達(dá)到75.2%,相比提高34.3個(gè)百分點(diǎn)。
表7 實(shí)例分割方法對(duì)比 %
如圖11所示,當(dāng)二分類分割出的車道線遠(yuǎn)處不連接時(shí),直接采用DBCSAN對(duì)二分類圖像進(jìn)行聚類,也可以取得與本文實(shí)例分割方法同樣的實(shí)例區(qū)分效果。
圖11 分割車道線遠(yuǎn)處不連接
當(dāng)分割得到的左側(cè)兩條車道線遠(yuǎn)處密集連接時(shí),由于DBSCAN 會(huì)將連通的點(diǎn)看作同一實(shí)例,導(dǎo)致不能有效地對(duì)車道線進(jìn)行實(shí)例區(qū)分,從而導(dǎo)致模型精確率和召回率大幅降低,而本文實(shí)例方法得到的聚類點(diǎn)無(wú)論車道線遠(yuǎn)處是否聚集,屬于同一車道線的聚類點(diǎn)相互聚集,密度更高,不同車道線的聚類點(diǎn)相互分離,更易被區(qū)分實(shí)例,且預(yù)測(cè)的車道線聚類點(diǎn)聚集在對(duì)應(yīng)的車道線附近,說(shuō)明預(yù)測(cè)的聚類點(diǎn)充分利用了對(duì)應(yīng)車道線的位置信息,檢測(cè)結(jié)果更加準(zhǔn)確,如圖12所示。
圖12 分割車道線遠(yuǎn)處連接
為測(cè)試模型在實(shí)際道路的有效性,利用如圖13所示的智能車在校園內(nèi)采集實(shí)際道路圖像,并利用在CULane數(shù)據(jù)集上訓(xùn)練的模型進(jìn)行車道線檢測(cè)。
圖13 實(shí)際道路測(cè)試車
實(shí)際道路的車道線檢測(cè)結(jié)果如圖14 所示??梢钥闯?,本文算法可以在擁擠、箭頭、陰影和眩光的實(shí)際道路準(zhǔn)確地檢測(cè)車道線,表明該算法魯棒性強(qiáng),具有良好的泛化性和實(shí)用性。
圖14 實(shí)際道路檢測(cè)結(jié)果
提出一種基于實(shí)例分割的車道線檢測(cè)算法,可以在不預(yù)定義車道線數(shù)量的情況下進(jìn)行復(fù)雜場(chǎng)景的多車道線檢測(cè)。算法采用輕量殘差網(wǎng)絡(luò)作為主干網(wǎng)絡(luò),利用特征金字塔進(jìn)行特征融合,并設(shè)計(jì)基于擴(kuò)張卷積的殘差模塊來(lái)提高車道線檢測(cè)的精度,提出一種基于車道線位置的實(shí)例分割方法,充分利用了車道線的位置信息,通過(guò)計(jì)算車道線點(diǎn)對(duì)應(yīng)的聚類點(diǎn)實(shí)現(xiàn)更好的實(shí)例分割。在CULane數(shù)據(jù)集和TuSimple數(shù)據(jù)集上的F1 指標(biāo)分別達(dá)到75.2%和97.0%,在復(fù)雜場(chǎng)景表現(xiàn)出優(yōu)秀的檢測(cè)性能。所提出的實(shí)例分割方法對(duì)比只采用DBSCAN 聚類的方法,在CULane數(shù)據(jù)集上可以提高34.3 個(gè)百分點(diǎn),且即使包括聚類,本文算法的檢測(cè)速度仍能達(dá)到66.05幀/s,可以實(shí)現(xiàn)實(shí)時(shí)車道線檢測(cè)。最后通過(guò)實(shí)際道路測(cè)試,驗(yàn)證了該算法在復(fù)雜道路的適用性。