速度最快 250fps!實(shí)時、高性能車道線檢測算法 LaneATT
CVPR 2021 車道線檢測方向論文: Keep your Eyes on the Lane: Real-time Attention-guided Lane Detection 。
論文:
https://arxiv.org/pdf/2010.12035.pdf
代碼:
https://github.com/lucastabelini/LaneATT
0
動機(jī)
車道線檢測是自動駕駛領(lǐng)域非常重要的子任務(wù)之一。作者提出了一個實(shí)時、高性能的車道線檢測算法,將其命名為LaneATT。
該方法基于anchor實(shí)現(xiàn),且應(yīng)用了注意力機(jī)制,輕量級版本的推理速度達(dá)到250FPS。
01
網(wǎng)絡(luò)結(jié)構(gòu)
1.1 總體流程
算法總體流程如下圖所示:
將車輛前視相機(jī)采集到的RGB圖像作為輸入,輸出車道線位置。
從上圖中可以看出,該算法將backbone的輸出結(jié)果進(jìn)行池化操作,以提取每個anchor的特征;將提取到的特征與注意力模塊產(chǎn)生的全局特征進(jìn)行融合,以解決遮擋、光照等原因?qū)е萝嚨谰€檢測不到的問題;融合后的特征作為全連接層的輸入,全連接層輸出車道線的置信度和相關(guān)參數(shù)。
1.2 車道線和anchor的表示方法
車道線的表示
沿圖片縱向做等分操作,得到的等分點(diǎn)記作,其中。
對于每條車道線,令固定,因此決定了每條車道線的差異;每個都與對應(yīng)的形成車道線上的一個點(diǎn)。
由于車道線不會貫穿整張圖像,令和分別表示的開始索引和結(jié)束索引,用于表示車道線的連續(xù)有效點(diǎn)。
anchor的表示
使用原點(diǎn)和方向表示anchor,其中。
原點(diǎn)總是位于圖像的左、右、下三個邊界上。
1.3 Backbone
使用諸如ResNet的通用網(wǎng)絡(luò)作為LaneATT的backbone;將backbone的輸出特征記作。
為減少后續(xù)模塊計(jì)算量,對做卷積,將輸出結(jié)果記作。
1.4 feature pooling
對于每個anchor,都要從中提取特征,使用坐標(biāo)索引要從中提取的特征點(diǎn)。先定義這些坐標(biāo)點(diǎn)的方向坐標(biāo):,使用如下公式求它們對應(yīng)的坐標(biāo):
上式中的和表示anchor的原點(diǎn)和方向,表示特征對應(yīng)原圖的步長。
對于每個anchor,使用上述的和,從中提取到特征;若上述計(jì)算得到的某個點(diǎn)的坐標(biāo)值超出的范圍,則中對應(yīng)位置的值為0。
1.5 注意力機(jī)制
上文提到的feature pooling操作得到的為局部特征。為了能夠應(yīng)對遮擋、光照等復(fù)雜場景,需要將局部特征與全局特征融合。
作者使用注意力模塊,該模塊的輸入為局部特征,輸出為全局特征。
注意力模塊中包含一個全連接層,對于索引為的anchor,該anchor對應(yīng)的局部特征作為的輸入,的輸出為權(quán)重:
用于融合除第i個anchor以外的其他anchor對應(yīng)的局部特征從而形成全局特征:
以上內(nèi)容只是針對索引為i的anchor;對于所有的anchor,可以使用矩陣乘法快速實(shí)現(xiàn)。假設(shè)anchor的數(shù)量為,令,,使用如下矩陣乘法計(jì)算所有anchor對應(yīng)的全局特征:
上式中,且。
1.6 prediction head
對于索引為i的anchor,其局部特征和全局特征做concat操作,輸出結(jié)果記作。作為2個并行的全連接層的輸入,其中一個全連接層用于分類,輸出信息為;另外一個全連接層用于回歸,輸出信息為。
對于每個anchor,網(wǎng)絡(luò)最終輸出3類信息:
(1)個概率值,用于預(yù)測該anchor對應(yīng)的車道線類別和背景的概率。對于不包含車道線類別標(biāo)注信息的數(shù)據(jù)集,令。
(2)個offset值,指出anchor中個點(diǎn)和預(yù)測出的車道線上點(diǎn)的橫向偏移。
(3)車道線的長度,是anchor中實(shí)際用來表示車道線的點(diǎn)的數(shù)量。根據(jù)1.2節(jié)中的信息,和分別表示的開始索引和結(jié)束索引,其中可由anchor原點(diǎn)的坐標(biāo)決定,長度可用于確定的值:
1.7 NMS
定義2條車道線和的距離為:
上式中,。
使用上述定義的距離對網(wǎng)絡(luò)預(yù)測結(jié)果進(jìn)行NMS操作,減少false positive的數(shù)量。
02
模型訓(xùn)練
2.1 訓(xùn)練
在訓(xùn)練時,依然使用1.7節(jié)中定義的距離來衡量anchor和ground truth的距離。當(dāng)兩者距離小于閾值時,該anchor被當(dāng)作正樣本,當(dāng)兩者距離大于時,該anchor被當(dāng)作負(fù)樣本;否則忽略該anchor。
構(gòu)造如下?lián)p失函數(shù):
上式中的和分別表示網(wǎng)絡(luò)的分類分支和回歸分支的輸出結(jié)果,和為真值。為Focal Loss,為Smooth L1損失函數(shù);用于平衡2個損失函數(shù)。回歸損失是基于對應(yīng)anchor和ground truth之間共同的橫坐標(biāo)計(jì)算的。
2.2 模型加速
在訓(xùn)練和推理時,共有2782個anchor,如此龐大的anchor數(shù)量會降低計(jì)算效率。有相當(dāng)一部分anchor在訓(xùn)練和推理時都是無效的,比如起點(diǎn)在地平線以上的anchor。測量在訓(xùn)練集中每個anchor作為正樣本的次數(shù),作為評價(jià)anchor是否有用的指標(biāo)。在后續(xù)的訓(xùn)練和推理時,選取個使用次數(shù)最多的anchor。
03
實(shí)驗(yàn)結(jié)果
在訓(xùn)練時,網(wǎng)絡(luò)輸入圖片分辨率為,使用translation、rotation、scaling和horizontal flip用于數(shù)據(jù)增強(qiáng)。設(shè)置,,,。
在TuSimple數(shù)據(jù)集上的結(jié)果如下表所示:
在CULane數(shù)據(jù)集上的結(jié)果如下表所示:
在2個數(shù)據(jù)集上模型運(yùn)行時間和性能的對比情況如下圖所示:
可視化的結(jié)果如下圖所示:
上圖中第一行為TuSimple數(shù)據(jù)集的可視化結(jié)果,第二行為CULane數(shù)據(jù)集的可視化結(jié)果。圖中藍(lán)線為ground truth;綠線和紅線均為網(wǎng)絡(luò)輸出結(jié)果,綠線為true positive,紅線為false positive。
04
總結(jié)
-
提出了實(shí)時、單階段、基于anchor的高性能車道線檢測算法LaneATT;
-
在LaneATT中應(yīng)用注意力機(jī)制,提高算法性能;
-
LaneATT能夠很好地平衡精度和推理速度。