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