王學(xué)東 黃宏成
(上海交通大學(xué)機械與動力工程學(xué)院,上海 200240)
車道線檢測是自動駕駛視覺感知部分的重要基礎(chǔ)任務(wù),同時也是變道場景下的核心子任務(wù),該任務(wù)的目標是通過對車輛行駛前方的車道線數(shù)目、位置進行識別來獲取路面的可行駛區(qū)域范圍。當車輛周圍存在其他障礙物車輛時,行之有效的車道線檢測可與道路車輛檢測任務(wù)間協(xié)同配合為汽車提供安全的變速、變道策略支持。針對傳統(tǒng)車道線檢測算法對光照、噪聲、遮擋等因素敏感,只適用于簡單路況以及基于深度學(xué)習(xí)分割的算法難以滿足實時檢測的需求等現(xiàn)狀,論文參考[1-2]的思路,設(shè)計了一種輕量化的車道線檢測算法用來解決復(fù)雜變道場景下存在遮擋并可能伴隨陰影、光線不足等不利因素時的車道線識別任務(wù)。
一般而言,車道線自身的顏色、邊緣、紋理等特征與其周圍環(huán)境存在較大差異,基于傳統(tǒng)圖像處理算法的車道線檢測[3-7]正是基于這一特性展開研究。概括來說,這類經(jīng)典的檢測方法可大致細分為以下幾步,只是在特定步驟采用的處理算法存在一定區(qū)別。
(1)首先,車載相機實際采集數(shù)據(jù)集時圖像的邊緣可能存在扭曲,因而需要通過標定獲得相機的內(nèi)外參數(shù),進而校正畸變的圖像。
(2)對校正后的圖像進行邊緣檢測,去除大量的無用數(shù)據(jù),獲取車道線的基本輪廓信息。
(3)將經(jīng)邊緣檢測的圖像提取感興趣區(qū)域(ROI),進一步減少不必要的計算量,縮短圖像的處理時間,并采用逆透視變換將透視圖轉(zhuǎn)化為鳥瞰圖。
(4)對車道線的鳥瞰圖進行掩膜操作,過濾掉無用的像素點。
(5)最后采用經(jīng)典的滑動窗口搜索方法對車道線進行擬合,完成對車道線的最終檢測。
其中,上述五步中的第一步,即相機標定、畸變圖像校正操作是當前開展視覺感知算法研究中必不可少的步驟。
總的來說,基于傳統(tǒng)圖像處理算法的車道線檢測方法在光照條件良好、車流量較少的情況下有著不錯的表現(xiàn),但總體步驟繁瑣,對車道線的邊緣特征要求較高,且易受環(huán)境等因素的影響,算法的泛化性能較差,無法應(yīng)對真實變道場景下存在遮擋時的車道線檢測。
近年來,隨著人工智能在圖像處理領(lǐng)域的優(yōu)勢逐漸凸顯,基于深度學(xué)習(xí)的車道線檢測算法層出不窮。在深度學(xué)習(xí)領(lǐng)域,主流的算法通常將車道線檢測劃分為目標分割層面的任務(wù),即對整張圖像的像素點進行分類,將屬于車道線部分的像素點進行歸類以完成檢測?;谏疃确指畹能嚨谰€檢測根據(jù)技術(shù)差異存在兩種不同的路線。
一種是在主流的圖像分割網(wǎng)絡(luò)的基礎(chǔ)上進行調(diào)整和優(yōu)化實現(xiàn)檢測的,這部分檢測方法涉及的圖像分割網(wǎng)絡(luò)主要包括FCN[8]、SegNet[9]、DeepLab[10-13]系列、U-Net[14]等。其中U-Net網(wǎng)絡(luò)的整體結(jié)構(gòu)如圖2所示,提出該網(wǎng)絡(luò)的最初目的是用于解決醫(yī)學(xué)領(lǐng)域的圖像分割問題,因網(wǎng)絡(luò)的整體結(jié)構(gòu)完全對稱,類似于英文大寫字母U而得名。在模型的框架方面,U-Net采用了與FCN類似的編碼器-解碼器(Encoder-Decoder)結(jié)構(gòu),其中,編碼器部分用于獲取圖像的全局信息,通過卷積層及池化層進行多次下采樣得到不同尺度的特征層以完成圖像的特征提取。解碼器部分則是通過雙線性插值的方式實現(xiàn)上采樣,并與下采樣階段對應(yīng)尺度的特征層進行維度拼接實現(xiàn)特征融合,從而確保了圖像中像素的精確定位。
圖3顯示的是基于U-Net的車道線檢測效果。雖然U-Net引入的新穎特征融合方式能在只有少量圖像數(shù)據(jù)集的情況下獲得較高的分割精度,但對圖像中小目標物體的邊緣分割效果較差,同時因訓(xùn)練時滑動窗口之間的重疊區(qū)域存在重復(fù)計算致使運行效率低下,因而在實際檢測的過程中速度非常緩慢。
另一種基于分割的車道線檢測算法并非對全局圖像進行分割進而關(guān)注車道線的位置,而是從車道線的形狀先驗角度出發(fā)設(shè)計了全新的卷積神經(jīng)網(wǎng)絡(luò),使網(wǎng)絡(luò)能學(xué)習(xí)到車道線的這些先驗信息,該分支內(nèi)主要包括諸如SCNN[15]、LaneNet、SAD[16]、RESA[17]等車道線檢測算法。其中RESA延續(xù)了SCNN算法的思路,并對SCNN中因串行、序列式的信息聚合導(dǎo)致的效率低下、信息損失嚴重等問題進行了優(yōu)化。
在總體架構(gòu)(Pipeline)方面,RESA和U-Net網(wǎng)絡(luò)類似,同樣采用了編碼器-解碼器結(jié)構(gòu)。區(qū)別在于,RESA網(wǎng)絡(luò)中還加入并行特征移位聚合(Recurrent feature-shift aggregator, RESA)模塊實現(xiàn)了空間信息的聚合,極大地提升了網(wǎng)絡(luò)的信息傳遞效率。如圖4所示,并行特征移位聚合模塊共迭代K次,每次迭代中向上、下、左、右四個方向傳遞信息,使特征圖中的每個位置均能接收到全局信息。對于解碼器部分,針對U-Net網(wǎng)絡(luò)中使用的雙線性插值實現(xiàn)上采樣可能造成細節(jié)丟失的問題,RESA中創(chuàng)新性地提出了使用雙邊上采樣解碼器(BUSD),該解碼器由兩條分支組成,其中一條分支采用雙線性插值的方式進行上采樣用于恢復(fù)粗粒度特征,另一條分支采用轉(zhuǎn)置卷積的方式進行上采樣用于捕捉并恢復(fù)細粒度特征,從而實現(xiàn)了精細的像素級車道線預(yù)測。
盡管基于圖像分割的車道線檢測算法在實際檢測中的精度差強人意,但仍存在一些其他方面的不足。例如,部分算法未能融合不同特征層的信息,致使在變道場景中存在遮擋或逆光等情況時對車道線的檢測效果不佳;部分算法雖然考慮了單個像素點與全局信息之間的關(guān)系,但模型的整體檢測速度較慢,以RESA為例,針對車道線的實時檢測速度僅有42幀每秒(即Frames Per Second, FPS),難以滿足實際工程檢測的速度需求。
對于采用傳統(tǒng)圖像處理和深度學(xué)習(xí)分割的車道線檢測方法在檢測的實時性、泛化性及魯棒性等方面切實存在的諸多不足,本節(jié)結(jié)合實際復(fù)雜變道場景,并重點考慮該場景下存在光線不足、車道線模糊、遮擋時的情況,提出了一種基于跨層特征融合的輕量化車道線檢測算法,首先通過輕量化的RepVGG-A0[18]主干網(wǎng)絡(luò)完成對圖像的特征提取,并根據(jù)卷積過程中深層特征的感受野大,具有更加豐富的語義;淺層特征的感受野小,保留了更多細節(jié)信息的這一特性引入了路徑聚合網(wǎng)絡(luò)(PA-FPN)模塊,隨后進一步引入先驗車道線特征提取模塊解決因遮擋、逆光、車道線模糊等因素出現(xiàn)的視覺線索不明顯問題,最后確定算法的損失函數(shù)和評價指標完成網(wǎng)絡(luò)的整體搭建。
RepVGG網(wǎng)絡(luò)是由Ding等人于2021年提出,該網(wǎng)絡(luò)的核心思想是通過結(jié)構(gòu)重參數(shù)化(Structural Re-parameterization)技術(shù)將模型訓(xùn)練時采用的多分支結(jié)構(gòu)模型轉(zhuǎn)化為部署推理時的單路模型,從而使網(wǎng)絡(luò)在推理時的速度更快、內(nèi)存占用空間更低且更適合用于剪枝實現(xiàn)結(jié)構(gòu)的進一步優(yōu)化。在圖像分類的準確率方面,RepVGG在ImageNet數(shù)據(jù)集上達到了80%以上,在相同的GPU上進行測試時,RepVGG的性能相較于ResNet、ResNeXt等模型都更具優(yōu)勢,不僅檢測速度相較于ResNet-101快了101%,同時檢測精度也更高。與EfficientNet和RegNet等目前的SOTA網(wǎng)絡(luò)對比時,RepVGG網(wǎng)絡(luò)也毫不遜色,在沒有使用任何的NAS(Neural Architecture Search)、復(fù)雜的人工迭代設(shè)計等技術(shù)的情況下,當處于相同檢測精度時,網(wǎng)絡(luò)推理的速度更快,實現(xiàn)了良好的精度-速度平衡。
圖5顯示的是RepVGG網(wǎng)絡(luò)與一些經(jīng)典網(wǎng)絡(luò)在ImageNet數(shù)據(jù)集上的TOP-1準確率及推理速度對比。從網(wǎng)絡(luò)搭建的層面上分析,RepVGG在訓(xùn)練階段的結(jié)構(gòu)與ResNet網(wǎng)絡(luò)類似,同樣為重復(fù)堆疊block結(jié)構(gòu),以本文中使用的RepVGG-A0為例,該網(wǎng)絡(luò)的結(jié)構(gòu)如表1所示。
表1 RepVGG-A0網(wǎng)絡(luò)的結(jié)構(gòu)
由表1可知,每個階段的RepBlock堆疊層數(shù)存在一定差異,當堆疊層數(shù)等于1時,采用圖6中左側(cè)的RepConv卷積模塊;當堆疊層數(shù)大于1時,針對該階段的第一層卷積模塊采用圖6中的左側(cè)結(jié)構(gòu),剩余的所有堆疊層均采用右側(cè)的相應(yīng)結(jié)構(gòu)。通過分析Resnet、Inception系列、DenseNet系列等網(wǎng)絡(luò)可知,采用這樣的多分支結(jié)構(gòu)可以有效增加模型的表征能力。
進一步剖析采用不同步距(Stride)大小時RepConv卷積模塊的結(jié)構(gòu)。當步距為2時,主分支采用了大小為3×3的卷積核進行下采樣,捷徑(Shortcut)分支的卷積核大小為1×1,主從分支通過求和(Add)操作完成信息的融合。當步距為1時,一共并行了三個分支,其中主分支的卷積核大小為3×3,另外兩個分支分別為采用卷積核大小為1×1的分支和僅使用批歸一化(BN)的捷徑分支。
圖7顯示的是結(jié)構(gòu)重參數(shù)化的大致過程,其中涉及的具體原理將在第三章作進一步詳細概述。簡要來說,模型在推理階段時將訓(xùn)練好的RepConv卷積模塊通過重參數(shù)化方式轉(zhuǎn)化為卷積核大小為3×3的高性能結(jié)構(gòu)單元,實現(xiàn)了多分支的融合,這樣操作存在如下幾種原因:首先從計算速度的角度進行考量,在網(wǎng)絡(luò)的實際訓(xùn)練、推理過程中,NVIDIA cuDNN、Intel MKL等相關(guān)加速庫對3×3卷積核有著更好的性能優(yōu)化,實際的計算密度是1×1和5×5卷積核的4倍。其次是融合后的單路架構(gòu)在內(nèi)存節(jié)省、計算并行度提高等方面存在更大優(yōu)勢,模型的推理速度快速,適合用于車道線的實時檢測。舉例來說,同屬于輕量化模型,RepVGG-A0的參數(shù)量為8.30 M,僅為ResNet-18的70%大小,但在模型的檢測準確度及速度上卻更有優(yōu)勢,在速度方面甚至可以達到其1.4倍以上,因而本文考慮選用輕量化的RepVGG-A0作為車道線檢測模型的主干特征提取網(wǎng)絡(luò)。
目標檢測領(lǐng)域中進行檢測的常見思路是設(shè)置預(yù)定義錨框,通過對錨框的位置、大小進行調(diào)整從而實現(xiàn)目標的定位與識別。鑒于車道線的細長結(jié)構(gòu)具備極強的形狀先驗,因而可以參考上述領(lǐng)域中處理問題的方法,即設(shè)置預(yù)定義先驗車道線,使網(wǎng)絡(luò)在檢測時更好地定位車道線的位置。根據(jù)Li等人在Line-CNN模型中提出的車道線錨框(LPU)策略可知,可在圖像中采樣若干等距的2D像素點組成序列P實現(xiàn)對車道線的離散化建模。
P={(x1,y1),(x2,y2),…,(xM,yM)}
(1)
(2)
式1中(xi,yi)表示實際車道線上的某一坐標點,其中縱坐標yi是在圖像高度H方向上對車道線均勻采樣所得,具體計算見式2,M為總采樣點個數(shù)。
根據(jù)上述對實際車道線的離散化建模方式,同時為了方便后續(xù)檢測過程中對預(yù)測的車道線位置不斷優(yōu)化調(diào)整,本文中定義的先驗車道線參數(shù)由以下四部分構(gòu)成:(1)檢測時前景及背景的概率;(2)先驗車道線的長度l,用于確定采樣點的位置范圍;(3)先驗車道線的起始點坐標(x,y)以及與圖像x軸方向(W方向)間的夾角θ;(4)N個(實際設(shè)置為72)采樣點的偏移量,實現(xiàn)對采樣點位置的調(diào)整。
在先驗車道線的總條數(shù)初始化方面,本文利用nn.Embedding( )方式共初始化192條先驗車道線,其中圖像的左右兩側(cè)各初始化24條,并根據(jù)實際情況將每條先驗車道線起始點的θ夾角設(shè)置為2種;圖像的中間區(qū)域初始化144條,起始點的θ角設(shè)置為4種。車道線的檢測流程大體上可描述為,根據(jù)先驗車道線中的參數(shù)(x,y,θ)、長度l及N個坐標偏移量不斷調(diào)整先驗車道線上各坐標點的位置參數(shù),輸出并擬合最后的先驗車道線各采樣點坐標,即為實際預(yù)測的車道線。
本文中提出的模型整體框架如圖8所示,首先,經(jīng)RepVGG-A0網(wǎng)絡(luò)完成圖像的特征提取,隨后采用基于線錨的方式初始化若干先驗車道線,通過不斷優(yōu)化并修正先驗車道線的坐標點位置信息從而完成最終的檢測。在具體的功能實現(xiàn)層面,主要涉及RepVGG-A0主干特征提取網(wǎng)絡(luò)、路徑聚合網(wǎng)絡(luò)模塊、先驗車道線特征提取模塊、整體損失函數(shù)這四個部分,其中主干特征提取網(wǎng)絡(luò)已在前序章節(jié)介紹完畢,后續(xù)將對后面三個部分詳細展開,闡述算法的具體檢測流程。
在卷積神經(jīng)網(wǎng)絡(luò)中,深層的特征圖雖然具備更為豐富的全局語義信息,但對圖像的細節(jié)信息丟失嚴重;淺層的特征圖通常分辨率較高,含有更多的位置、細節(jié)信息,但感受野較小,語義信息不夠豐富。為了充分融合不同特征層的信息,提高網(wǎng)絡(luò)對圖像信息的表征能力,Lin等人針對在多尺度目標檢測中對小尺度物體檢測精度較低的問題提出了特征金字塔(FPN)網(wǎng)絡(luò)結(jié)構(gòu),通過將自底向上及自頂向下對應(yīng)的特征層進行融合,有效提升了對小尺度目標物體的檢測能力,實現(xiàn)了多尺度目標的高效檢測。盡管特征金字塔網(wǎng)絡(luò)解決了淺層的特征圖語義信息不夠豐富的問題,但并沒有考慮深層特征圖中因下采樣導(dǎo)致的圖像細節(jié)信息丟失,造成全局定位不準的問題。基于此,Liu等人提出了路徑聚合網(wǎng)絡(luò)(PA-Net/PA-FPN),該網(wǎng)絡(luò)在特征金字塔結(jié)構(gòu)的基礎(chǔ)上新增加一條自底向上的路徑,進一步將低層特征與高層特征進行融合,縮短了高、低特征層之間的信息路徑,增強了深層特征圖中的定位信息。
對于實際車道線的檢測與定位而言,卷積網(wǎng)絡(luò)中的高、低層特征同樣重要。一方面,高層特征圖涵蓋的語義信息豐富,具備更多的局部上下文信息,使網(wǎng)絡(luò)在輸出時能夠準確區(qū)分車道線和地標從而避免造成誤檢;另一方面,低層特征圖的分辨率較高,對原始圖像的細節(jié)信息保留豐富,可以實現(xiàn)對車道線的準確定位??紤]到利用深層特征圖輸出車道線預(yù)測時語義特征更為明確,同時路徑聚合網(wǎng)絡(luò)增強了深層特征圖中的定位信息,因此本文采用PA-FPN結(jié)構(gòu)作為整體框架融合并輸出車道線信息。
圖1 基于傳統(tǒng)算法的車道線檢測流程圖
圖3 基于U-Net的車道線檢測
圖4 RESA網(wǎng)絡(luò)結(jié)構(gòu)圖[17]
圖5 Top-1準確率及實際運行速度對比[18]
圖6 RepConv卷積模塊示意圖
圖7 結(jié)構(gòu)重參數(shù)化的大致過程
圖8 車道線檢測模型的整體框架
圖9 FPN與PA-Net結(jié)構(gòu)示意圖
圖10 PA-Net對于實際檢測的作用
根據(jù)2.3節(jié)中介紹的內(nèi)容可知,先驗車道線特征提取模塊的作用在于和路徑聚合網(wǎng)絡(luò)模塊配合,實現(xiàn)對預(yù)測的車道線坐標位置的優(yōu)化調(diào)整,故該模塊應(yīng)滿足以下要求:(1)針對實際變道場景下存在的遮擋、車道線模糊等情況,能通過為先驗車道線中每個采樣點構(gòu)建與該點附近像素點間的特征聯(lián)系,來降低漏檢概率;(2)為避免出現(xiàn)誤檢問題,還需要使先驗車道線能進一步獲取圖像的全局語義特征信息。下面將通過圖11具體介紹上述要求的實現(xiàn)邏輯。
圖11 先驗車道線特征提取模塊
圖11顯示的是特征提取模塊的結(jié)構(gòu)框架,根據(jù)對先驗車道線的參數(shù)定義可知,包含N個采樣點的偏置量,故相應(yīng)地共涉及N個坐標點。為降低計算量,可均勻采樣其中Np個坐標點,具體操作參考ROI Align算法中使用的雙線性插值方法,基于對應(yīng)的特征圖求得每個采樣點位置的特征向量。這些采樣點的集合構(gòu)成了先驗車道線的感興趣區(qū)域(Region of Interest, ROI)特征Xp,其中Xp∈C×Np。此外對于特征層上的特征Xp,還需要與上一層的Xp在通道維度方向上進行拼接以增強車道線的特征表達。隨后,通過卷積核大小為9的一維卷積(1D Conv)獲取Xp中每個采樣點附近的特征點信息,由此實現(xiàn)了上述中的第一個要求。為了進一步降低計算開銷,還應(yīng)該通過一個全連接層(FC)進行降維,得到最終的感興趣區(qū)域特征Xp∈C×1。
(3)
(4)
通過式4可得到最終的先驗車道線特征G,最后在輸出的G后面添加分類和回歸分支,其中分類分支判斷當前的先驗車道線是否屬于正樣本,回歸分支用于預(yù)測車道線的起始點坐標(x,y)、夾角θ、長度l及72個坐標點的偏移量。
在總體的損失函數(shù)設(shè)計方面,根據(jù)本文中對先驗車道線的定義可知,先驗車道線本質(zhì)上可由長度為78的參數(shù)向量表示,且向量的前2項為前景及背景的概率,中間4項分別為起始點坐標(x,y)、夾角θ以及車道線的長度l,最后72項為先驗車道線中每個采樣位置點的偏置量,當?shù)玫?x,y,θ)三項參數(shù)值后,可根據(jù)l更新72個采樣點位置坐標,將每個點與對應(yīng)的偏置量相加后得到本次更新中先驗車道線的最終預(yù)測坐標。
根據(jù)上述分析可得,整個網(wǎng)絡(luò)的損失函數(shù)應(yīng)由分類損失和回歸損失兩部分組成,實際在模型的訓(xùn)練中,分類損失涉及先驗車道線參數(shù)向量的前2項,回歸損失由(x,y,θ,l)參數(shù)損失及車道線72個坐標位置坐標損失兩部分組成。為了平衡各部分的損失權(quán)重占比,本文為各部分損失函數(shù)相應(yīng)地設(shè)置了超參數(shù),具體損失函數(shù)見式5。
Ltotal=ωclsLcls+ωxytlLxytl+ωLIOULLIOU
(5)
式中Ltotal為模型的整體損失;Lcls為模型的分類損失,由于本文中正負樣本數(shù)比例存在極度不平衡的情況,因此還需引入焦點損失(Focalloss)[56]降低負樣本在分類損失中的權(quán)重;Lxytl為對先驗車道線的起始點、角度以及長度的回歸損失,本文中針對這部分損失采用了smooth-l1損失函數(shù);LLIOU為預(yù)測的車道線坐標回歸損失,下面將針對這部分回歸損失作具體介紹。
由于圖像中的車道線由一系列像素點組成,在進行預(yù)測車道線坐標值與地面真實值間的回歸計算時,若采用逐一計算每個坐標點的回歸值后求和的方式,會使整體的回歸損失計算不夠準確,因此考慮將所有的坐標點視作一個整體進行回歸計算。具體如圖12所示。
圖12 預(yù)測的車道線與實際車道之間的交并比
(6)
鑒于車道線由連續(xù)的像素點組成,為降低整體的計算量,需要對車道線進行離散化處理,僅計算N個采樣高度yi上對應(yīng)水平線段間的IOU值,得到整條車道線的LIOU值。
(7)
LLIOU=1-LIOU
(8)
式8表示的是整體車道線坐標的回歸損失。其中,LIOU的值域為[-1, 1],當實際車道線與先驗車道線水平方向上坐標線段完全重合時值為1,當距離無限遠時為-1,通過將整條車道線離散化處理極大地增強了模型對異常數(shù)據(jù)的魯棒性。
在實際的訓(xùn)練過程中,為了有效計算整體損失并加快模型的收斂速度,還需要完成對正負樣本的匹配。參考SimOTA標簽匹配策略,本文首先計算192條先驗車道線與每條實際車道線的匹配距離LIOU值,隨后為每條實際車道線取前k個最大的LIOU值,進行求和并取整得到實際參與預(yù)測該實際車道線的正樣本數(shù)量Npos。最后,將參與預(yù)測的192條先驗車道線分別與該實際車道線計算分配代價,取分配代價最低的Npos條先驗車道線作為最終匹配到的正樣本。
{Cassign=ωsimCsim+ωclsCclsCsim=(Cdis·Cxy·Cθ)2
(9)
式9中,Ccls計算的是預(yù)測值與標簽值之間的焦點損失,Csim代表預(yù)測的車道線與實際車道線之間的相似性匹配代價,具體由三部分組成,分為采樣坐標點與實際坐標點的像素距離Cdis,預(yù)測的車道線與實際車道線的起始點坐標差值Cxy以及角度θ的差值Cθ,并將這三部分均作歸一化處理以提高模型的收斂速度。
車道線檢測領(lǐng)域常見的數(shù)據(jù)集包括CamVid、KITTI、TuSimple等,但這些數(shù)據(jù)集都存在一些不足,例如CamVid和KITTI數(shù)據(jù)集的樣本量過小,極易造成訓(xùn)練過程中出現(xiàn)過擬合現(xiàn)象,致使模型的泛化性能不佳。TuSimple數(shù)據(jù)集雖然包括6 408張帶車道線注釋標記的圖像,但僅涉及高速公路中車流量較為稀疏的交通場景,此時車道線邊緣輪廓清晰,與實際復(fù)雜場景下的車流密集、車道線磨損模糊或不可見的情況并不契合。綜合考慮數(shù)據(jù)集的大小、交通場景的真實復(fù)雜度,本文選擇了CULane作為模型訓(xùn)練時的數(shù)據(jù)集,該數(shù)據(jù)集最先由Pan等人[15]在SCNN論文中提出,涵蓋了北京地區(qū)的郊區(qū)街道路段、市區(qū)街道路段以及高速公路等多種場景,由133 235張分辨率為1 640 ×590的圖像構(gòu)成,是TuSimple數(shù)據(jù)集總量的20多倍。將CULane數(shù)據(jù)集進行劃分后,88 880張圖像組成訓(xùn)練集,34 680張圖像組成測試集,剩余的9 675張圖像組成驗證集。在具體場景的細化方面,CULane數(shù)據(jù)集還包括了正常、擁擠、逆光、遮擋、陰影、橋隧、無車道線、彎道、十字路口、夜晚等真實場景,在實際數(shù)據(jù)標注過程中針對車道線模糊、存在遮擋等情況時還結(jié)合了上下文語義信息,滿足實際需求。數(shù)據(jù)集部分樣例如圖13所示。
圖13 CULane數(shù)據(jù)集
本文中提出的輕量化車道線檢測模型基于PyTorch框架完成搭建,選擇輕量化的RepVGG-A0主干網(wǎng)絡(luò)進行圖像特征的提取,并利用路徑聚合網(wǎng)絡(luò)模塊、先驗車道線特征提取模塊實現(xiàn)了特征信息的融合與輸出。在數(shù)據(jù)的預(yù)處理方面,通過將輸入網(wǎng)絡(luò)的圖像分辨率調(diào)整到800×320的尺寸大小減少運算量,并降低了過擬合風(fēng)險。為了進一步提高模型的泛化能力及檢測時的魯棒性,本文還使用了一定的數(shù)據(jù)增強策略,包括對圖像進行隨機仿射變換(平移、旋轉(zhuǎn)和縮放),并以50%的概率對圖像進行隨機水平翻轉(zhuǎn)。在詳細參數(shù)的設(shè)置方面,模型在實際訓(xùn)練過程中選用了AdamW優(yōu)化器,初始學(xué)習(xí)率設(shè)置為10-3,學(xué)習(xí)率的衰減方式選擇余弦退火衰減策略,每次迭代中的批數(shù)據(jù)大小(batch size)設(shè)為24,一共訓(xùn)練50輪(epoch)。此外,在先驗車道線的特征模塊中,本文將L0特征層的尺寸參數(shù)設(shè)置為H= 10,W= 25,C= 64,將車道線的寬度半徑e設(shè)置為15像素。
在完成模型的訓(xùn)練后,還需要基于合理的評價指標對模型結(jié)果進行定量分析。本文中沿用了Pan等人[44]提出的評價準則,由上節(jié)知車道線在圖像的水平方向上覆蓋寬度為30像素的線條狀區(qū)域,在計算預(yù)測的車道線與真實的車道線之間的交并比(intersection-over-union, IOU)時可通過設(shè)置一定的閾值判斷該預(yù)測的車道線是否屬于真正例(True Positve, TP)。
(10)
本文中設(shè)置了0.5、0.75兩檔不同的閾值用于評判,其中以閾值取0.5時進行舉例,當IOU的值不小于0.5時,預(yù)測的車道線被歸為真正例,否則被歸為假正例(False Positive, FP),實際評價的可視化如圖14所示。
圖14 基于IOU值得評價準則[15]
圖中綠色的車道線表示實際的車道線,而藍色和紅色的預(yù)測車道線分別表示為TP和FP時的情況。相應(yīng)地,還存在真反例(True Negative, TN)以及假反例(False Negative, FN)兩種情況。
基于TP、FP、TN、FN四種預(yù)測情況,衍生出了查準率(Precision)及查全率(Recall)指標來評價模型的實際檢測性能,但二者的數(shù)值通常難以協(xié)調(diào)甚至?xí)霈F(xiàn)相互矛盾的窘境,需要對其作加權(quán)調(diào)和平均以進行綜合考慮。為此,本文針對CULane數(shù)據(jù)集最終選用了F1-measure作為評價指標。
(11)
(12)
(13)
此外,本文還參考了COCO數(shù)據(jù)集上的評價指標,將IOU的閾值設(shè)定在區(qū)間0.50~0.95范圍內(nèi)并以0.05為間隔進行劃分,此時基于F1-measure便可引入新的指標mF1用于進一步評價模型在預(yù)測車道線時的定位性能。
mF1=(F10.50+F10.55+…+F10.95)/10
(14)
式14中,F10.50表示閾值取0.50時的F1-measure數(shù)值。
在實際的車道線檢測中,模型的推理速度FPS同樣是極為重要的評價指標,只有滿足實時性檢測要求的模型才能夠在真正意義上用于自動駕駛領(lǐng)域。綜上,本文中選用F1-measure、mF1以及速度FPS三項指標綜合評價模型的實際檢測性能。
本文通過使用2張GeForce GTX1080Ti顯卡完成對模型的訓(xùn)練,并結(jié)合4.3節(jié)提出的評價指標,最終得到了在CULane數(shù)據(jù)集上的實驗結(jié)果。表2顯示的是不同模型在CULane數(shù)據(jù)集上測試時的性能對比。由表中的數(shù)據(jù)可知,本文提出的車道線檢測模型相較于主干特征提取網(wǎng)絡(luò)(Backbone)采用了ResNet-50的CondLane而言,mF1指標提高了約2個點,達到了主干網(wǎng)絡(luò)采用ResNet-101時CondLane模型的性能水平,但就參數(shù)量而言,RepVGG-A0僅有ResNet-101的20%,與同為輕量化網(wǎng)絡(luò)的ResNet-18相比,參數(shù)量也僅為其70%??紤]到RepVGG-A0在推理時速度更快、內(nèi)存占用空間更低,因此更適合部署在車載平臺設(shè)備上。
表2 不同模型在CULane數(shù)據(jù)集上的性能對比
由于CULane數(shù)據(jù)集涵蓋了正常、擁擠、逆光等9種不同的場景,為進一步驗證模型的魯棒性,需要對每種場景下的車道線檢測結(jié)果分別進行分析。如表3所示,與CondLane(ResNet-101)模型相比,本文提出的車道線檢測模型在各個場景下均能有良好的性能表現(xiàn)。需要注明的是十字路口場景并未標注真實的車道線,因而僅采用FP指標對這部分場景下的車道線檢測進行評價,其余8種場景仍采用F1-measure評價指標。
表3 不同場景下的模型性能對比
在實時推理速度方面,當采用單張GTX1080Ti進行測試時,模型的推理速度可達到132幀每秒(FPS),雖然與主干網(wǎng)絡(luò)采用ResNet-18的UFLD以及CondLane模型相比仍有一些差距,但在檢測的精度上卻有較大幅度的領(lǐng)先,后續(xù)章節(jié)將介紹使用TensorRT對提出的模型進行推理加速,以進一步達到實時性檢測的目的。
為了驗證前文中提出的路徑聚合網(wǎng)絡(luò)模塊以及先驗車道線特征提取模塊的有效性,本文還在CULane數(shù)據(jù)集上設(shè)計了消融實驗驗證各模塊對模型性能的影響。具體來說,通過在RepVGG-A0基準(Baseline)上依次疊加各個模塊,根據(jù)各指標的數(shù)值變化分析其作用。由表4所示,當疊加路徑聚合網(wǎng)絡(luò)模塊時,mF1指標的數(shù)值由52.74增加到54.81,同時F10.50、F10.75、F10.90的值均有不同幅度的增加,這說明卷積網(wǎng)絡(luò)中高、低層特征的語義信息對車道線的預(yù)測與定位均非常重要。在此基礎(chǔ)上繼續(xù)疊加先驗車道線特征提取模塊時,mF1的數(shù)值再次提升了約0.62個點,這充分證明了豐富的局部上下文信息能有效增強車道線的特征表示。
表4 不同模塊的作用研究
分析表5中的前三行數(shù)據(jù)可知,僅由L0、L1、L2層單獨進行預(yù)測時,輸出的R0、R1、R2結(jié)果在各評價指標數(shù)值上總體接近。但在細節(jié)方面,基于L2層相較于L0層進行預(yù)測輸出時,F10.90指標的數(shù)值更高,但F10.50指標的數(shù)值更低,這證明了低層特征圖中包含的位置、細節(jié)信息有助于準確定位車道線,而高層特征圖的豐富全局語義信息有助于降低車道線錯誤檢測的概率。分析表格5中的后兩行數(shù)據(jù)可以得出,模型整體結(jié)構(gòu)采用路徑聚合網(wǎng)絡(luò)時,相比于特征金字塔網(wǎng)絡(luò)而言,在整體參數(shù)量方面僅略微增加的情況下,各評價指標數(shù)值均取得了一定的提升,有效地兼顧了模型的輕量化與檢測的準確性。
表5 不同特征層輸出的效果研究
前文中提到在單張GTX1080Ti顯卡上對構(gòu)建的車道線檢測模型進行推理測試時,推理速度可達132 FPS,已經(jīng)滿足了多數(shù)駕駛場景下的車道線檢測需要,但處于快速變道場景時需要對檢測速度提出更高要求,因此為了進一步確保處于不同工況下的汽車均能實時、準確地檢測車道線,并為后續(xù)的路徑規(guī)劃、控制決策等環(huán)節(jié)提供可靠的前提支撐,本節(jié)將引入TensorRT完成對模型的推理加速。
TensorRT是由英偉達(NVIDIA)推出的基于CUDA及cuDNN的高性能優(yōu)化推理引擎,可實現(xiàn)對部署在自動駕駛等嵌入式平臺上的深度學(xué)習(xí)模型進行推理加速。TensorRT之所以能夠?qū)崿F(xiàn)對模型的推理加速主要是通過層間(或張量間)融合、數(shù)據(jù)精量校準(量化)、動態(tài)張量內(nèi)存等5種方式實現(xiàn)的,其中前兩種方式更是在其中起到了關(guān)鍵性作用,下面將對其分別作簡要介紹。
在模型的實際推理過程中,GPU通過激活不同的CUDA核心完成對卷積神經(jīng)網(wǎng)絡(luò)中不同特征層的計算。CUDA核心擁有極強的算力,因而在處理張量計算時速度極快,但CUDA核心的啟動及數(shù)據(jù)張量的讀寫都極為耗時,如果在處理每層特征層時均分別獨立進行這類操作,勢必會造成GPU資源的浪費并觸發(fā)內(nèi)存帶寬的瓶頸?;诖?TensorRT通過將不同層進行合并以減少CUDA核心的啟動次數(shù)進而加快模型的推理。以Inception模塊經(jīng)TensorRT優(yōu)化為例,如圖15所示,層間縱向融合是將卷積層(Conv)、偏置層(Bias)以及激活函數(shù)層(ReLU)進行合并形成CBR層,如1×1CBR、3×3CBR以及5×5CBR,進一步地,將3個完全相同的1×1CBR層進行橫向(張量間)融合,形成一個更大的1×1CBR層??梢缘弥?jīng)TensorRT優(yōu)化后的Inception模塊的網(wǎng)絡(luò)總層數(shù)有效地降低,整個模型的結(jié)構(gòu)更加輕量高效。
圖15 網(wǎng)絡(luò)層間及張量間的融合
圖16 TensorRT加速前后車道線檢測效果對比
實際在網(wǎng)絡(luò)模型的訓(xùn)練過程中,為提高模型的訓(xùn)練精度,張量(Tensor)通常采用的都是32位浮點數(shù)(FP32)精度類型,但訓(xùn)練完成后進行模型的部署推理時,由于不再需要進行梯度的反向傳播來更新參數(shù),因而可以適當降低數(shù)據(jù)的精度以壓縮模型的體積,獲得更低的內(nèi)存占用和更高的計算速度。
由表6可知,FP16及INT8精度類型的數(shù)據(jù)表示范圍相較于FP32類型均出現(xiàn)極大的縮窄,如果直接將FP32精度類型數(shù)據(jù)做強制類型轉(zhuǎn)化會導(dǎo)致部分信息丟失,使模型的精度下降。針對這類問題,TensorRT會自動優(yōu)化量化的過程,以最小化模型的性能損失作為優(yōu)化目標,將FP32精度類型的數(shù)據(jù)降低為更低的FP16或INT8類型。
表6 不同數(shù)據(jù)精度類型對比
在TensorRT加速的具體流程方面,為了實現(xiàn)對模型的推理加速,首先需要將基于PyTorch框架訓(xùn)練保存的“.pth”模型文件轉(zhuǎn)化為ONNX模型,并將其導(dǎo)入TensorRT框架中,通過指定優(yōu)化的參數(shù)生成半精度(FP16)TensorRT引擎(Engine),隨后執(zhí)行模型的序列化并進行存儲,最后讀取序列化模型并執(zhí)行推理。
為方便進一步對比同平臺情況下TensorRT對模型的推理加速效果,本文中選擇繼續(xù)在單張GTX1080Ti顯卡上開展實驗。如表7所示,經(jīng)TensorRT加速后,在單張GTX1080Ti上進行測試時,模型的實時推理速度提高了約70%,達到了224FPS,且在采用半精度(FP16)的情況下,加速前后的模型對車道線檢測的效果基本一致,切實滿足了汽車處于不同行駛工況下時的檢測需求。
表7 TensorRT加速前后的推理速度對比
本文中提出的輕量化車道線檢測模型在CULane測試集上的檢測效果如圖17所示。由圖可知,在不同情況下時模型均能夠較好地完成對車道線的檢測,有效解決了汽車處于變道工況下時因存在遮擋、逆光等因素而出現(xiàn)的漏檢、誤檢問題。從細化場景角度進一步分析,針對彎道上的車道線進行檢測時,該模型能夠根據(jù)輸出的先驗車道線特征信息準確、平滑地完成曲線擬合,而基于圖像分割的檢測模型一般難以保證擬合曲線的平滑度。此外,由于文中提出的路徑聚合網(wǎng)絡(luò)模塊能夠與先驗車道線特征提取模塊配合,準確獲取圖像的全局上下文語義信息,實現(xiàn)了跨層特征的信息融合,因而在光線較差甚至夜晚的場景時也能準確地識別車道線。綜上,本文中提出的輕量化車道線檢測模型能適應(yīng)不同場景下汽車處于變道工況時的檢測,模型的泛化性及魯棒性均有著不錯的表現(xiàn),且在檢測速度上也充分達到了實時性的要求。
本文主要基于真實復(fù)雜交通場景下的汽車變道工況,針對采用傳統(tǒng)算法及深度學(xué)習(xí)分割的車道線檢測方法在障礙物遮擋、逆光及夜晚等實際情況下的檢測效果不佳、實時性不足等問題,提出了一種基于跨層特征融合的輕量化車道線檢測算法,并就所搭建模型中的主干特征提取網(wǎng)絡(luò)、路徑聚合網(wǎng)絡(luò)模塊、先驗車道線特征提取模塊等結(jié)構(gòu)展開作了詳細介紹。隨后從場景的復(fù)雜性及多樣性角度考慮,選用了CULane數(shù)據(jù)集對模型進行訓(xùn)練并設(shè)計合理得當?shù)南趯嶒灧治隽怂岢龅哪K的有效性,最后在實時性檢測方面提出進一步使用TensorRT進行模型的推理加速。結(jié)果表明,所提出的車道線檢測模型在CULane數(shù)據(jù)集中的9種場景下均能夠保持較高的檢測精度,魯棒性及泛化性均較高,經(jīng)TensorRT進行推理加速后,在單張GTX1080Ti顯卡上實時檢測速度高達224 FPS,充分證明了檢測的高效性。綜上,本文提出的輕量化車道線檢測算法對于復(fù)雜交通場景下的汽車實現(xiàn)變道提供了良好的安全支撐。