論文解讀Ultra Fast Structure-aware Deep Lane Detection
最近閱讀了ECCV2020一篇車道線檢測的論文, 看完了源代碼, 寫下這篇博客, 希望能對其他學習的同學有所幫助。
1. Intro
車道線檢測有很久遠的歷史, 在之前的工作中主要有以下兩個流派:
比較有代表性的工作可點擊下面的鏈接查看
- 傳統圖像處理的方法
- 深度學習圖像分割的方法
- Towards end to end lane detection: and instance segmentation approach
- spatial cnn for traffic scene understanding
- Learning Lightweight Lane Detection CNNs by Self Attention Distillation
- VPGnet
- LaneNet
- Learning to Cluster for Proposal-Free Instance Segmentation
- Deep Neural Network for Structural Prediction and Lane Detection in Traffic Scene
- FastDraw
對於任何一個流派, 在目前的自動駕駛車道線檢測中, 都需要面臨兩個問題:
-
computational cost
自動駕駛的車輛上往往有多個攝像頭, 如果同時對每個車輛的攝像頭進行道路線進行識別的話, 需要耗費大量的計算資源, 因此需要計算復雜度更低的車道線檢測方法。
-
no-visual-clue
在很多道路上, 由於車輛擁堵, 車道線被車擋住了, 需要通過車的位置和環境的語義信息去猜測。 在這種情況下, 沒有視覺信息(車道的顏色, 形狀)去引導車道線的識別, 造成了很大的困難。 下面這張圖就是很好的例子。
為了解決以上兩個問題, 作者提出了基於row achor的網絡, 讓網絡在不同的行中選擇屬於車道線的列, 減少了傳統語義分割pixel level prediction的復雜度, 同時使用global feature來增加網絡的感受野, 提升在有車輛遮擋關系下的網絡推理能力。
論文的貢獻有以下幾點:
- 提出了很有效的辦法來解決fast speed和no visual cue的問題 Global Feature, Row Anchor
- 提出了結構化損失函數structural loss來對道路的形狀進行約束 Structural Loss
- 在CULane數據集上取得了SOTA, 可達到300fps的識別速度。
2. Method
2.1 符號定義
論文里首先定義了一些符號, 如下圖所示
作者首先把圖像降采樣到800x288, 然后定義了row anchor, 也就是作者從圖片里里事先選好的一些行。
比如在tumsimple這個數據集里, 作者選了這些行, 作為車道線可能的起始行。
在這些符號里P代表的是某一行, 某一列里采樣的像素屬於某一條車道的概率
比如下圖里的 Pij是一個向量, 向量的長度是w+1, 代表了第j行(row anchor)里的每個grid屬於第i條車道的概率
我們可以發現向量的長度是w+1而不是w, 因為有可能這一行里所有的grid都不屬於第i條車道, 這個時候需要多出一個grid來代表不存在, 此時向量前w個grid都是0, 第w+1個元素為1
根據以上的描述, 作者對於車道線檢測的優化目標是如下的classification loss, 其中LCE代表的是交叉熵損失函數
作者認為這樣對問題的表述能解決兩個問題:
- Fast speed
傳統的語義分割的預測目標維度為HxWx(C + 1), 但是作者的方法的維度是Cxhx(w + 1)
h比H小恨到, w比W小很多,總體計算復雜度是傳統分割的1%
- No visual-clue
作者用resnet提取了全局特征, 全連接層使用了全局特征, 因此作者這樣的方法能使用環境信息來對車道線的位置進行推斷。
2.2 損失函數
總體來看, loss分為三部分
- 上文所述的classification cross entropy loss
- structural loss
- segmentation loss
其中structural loss分為similarity loss和shape loss兩部分
其中similarity loss如下, 作者希望相鄰的兩個row anchor的預測概率接近
shape loss的推導如下
首先是第j行, 第i個車道的位置, 選擇預測概率最大的作為預測值
但是由於argmax不可導, 作者換了一種表示方式
對location求二階差分得到下面的loss
3.3 總體結構
最后, 網絡的總體結構如下圖
藍線上的網絡做語義分割, 得到segmentation loss, 下面的網絡進行預測, 得到structural loss和classication loss
3. Experiments
作者分別在CULane和Tusimple上實驗
對於tusimple, 准確度的定義如下
Cclip指的是預測正確的道路點數, Sclip是所有的道路點數。
對於CULane用F1-measure來度量, 因為CULane的每條車道都是一條30pixel的線, 因此TP代表的是IoU>0.5的預測, FP代表的是IoU<0.5的預測, TN代表的是沒有這條車道且預測沒有這條車道, FN代表的是有這條車道但是被預測為沒有這條車道
Tusimple結果如下
CULane結果如下
4. 代碼研讀
TODO:
288x800
Adam
cosine decay