近期閱讀的幾篇關於車道線檢測的論文總結。
1. 任務需求分析
1.1 問題分析
針對車道線檢測任務,需要明確的問題包括:
(1)如何對車道線建模,即用什么方式來表示車道線。
從應用的角度來說,最終需要的是車道線在世界坐標系下的方程。而神經網絡更適合提取圖像層面的特征,直接回歸方程參數不是不可能,但限制太多。
由此,網絡推理輸出和最終結果之間存在一個Gap,需要相對復雜的后處理去解決。
(2)網絡推理做到哪一步。
人在開車時觀察車道線,會同時關注兩方面信息:
- 繪制在路面上的車道線標識本身
- 通過車道線標識,表征的抽象的車道分隔邊界線
1.2 方法概述
概括來說,基於CNN的車道線檢測主流方法大致可以這么分類:
- 對畫面上每一個像素是否屬於地面標識,屬於哪一類地面標識進行預測,即圖像分割的思想,對全圖每一個像素進行分類。典型的數據集如Apollo中的Lane Segmentation數據集。
- 對畫面上每一個像素是否屬於車道分界線進行預測,屬於圖像分割,還可以細分為前景/背景的二分類,以及判斷車道線實例的多分類。典型的數據集如Tusimple和CULane。
- 不關心每一個像素的歸屬問題,而是直接提取更抽象層面的車道線屬性。
方法1的推理目標最為確定,網絡需要猜測的成分最少。根據獲取的分割圖,由后處理步驟來完成車道線信息的提取。
方法2需要網絡具有一定的聯想猜測能力,能夠把不連續的車道線識別為連續的實體。
方法3需要網絡具有最強的抽象能力,能夠直接感知到車道線的空間結構。
1.3 面臨挑戰
針對車道線檢測任務,面臨的挑戰主要有:
(1)車道線這種細長的形態結構,需要更加強大的高低層次特征融合,來同時獲取全局的空間結構關系,和細節處的定位精度。
(2)車道線的形態有很多不確定性,比如被遮擋,磨損,以及道路變化時本身的不連續性。需要網絡針對這些情況有較強的推測能力。
(3)在實際應用中,車輛穩定行駛在車道中央的工況最常見,但車輛的偏離或換道過程才是關鍵工況,此時會產生自車所在車道的切換,車道線也會發生左/右線的切換。
據此,一些提前給車道線賦值固定序號的方法,在實際使用中是有巨大缺陷的,在換道過程中會產生歧義的情況。
這種方法在刷數據集指標的時候可能效果OK,但在應用中,從網絡結構設計的角度,無法應對換道這種關鍵工況。
2. 論文要點解讀
Paper - 1
《Robust Lane Detection from Continuous Driving Scenes Using Deep Neural Networks》
將車道線檢測作為一個分割問題來處理,最后輸出車道線前景和背景的2值分割圖。
網絡整體上使用了CNN+RNN的結構。
CNN的部分采用了常規的Encoder-Decoder結構。
在Encoder和Decoder之間插入ConvLSTM
模塊,通過ConvLSTM
對Encoder部分提取的Feature-map進行處理,提取有用的隱含歷史信息。如下圖所示:
在訓練階段,針對Tusimple數據集,將連續5幀作為輸入,並在帶有標注的最后一幀計算Loss。
在推理階段,連續幀圖像持續輸入,每一幀圖像經過處理都會輸出對應的推理結果。
Paper - 2
《Key Points Estimation and Point Instance Segmentation Approach for Lane Detection》
這篇文章比較有意思,在一眾圖像分割路線的方法中比較特別,借鑒了目標檢測的思路來解決。
將原圖進行一定程度的降采樣后,在獲得的Feature-map上預測每一個點的結果,包括了Confidence、Offset、Feature三個輸出。每一個點類似於目標檢測中的Anchor概念。其中:
- Confidence預測該點代表的區域是否存在車道線;
- Offset預測車道線點相對Anchor中心點的偏移量;
- Feature輸出一個向量編碼,用於區分不同車道線的點。這一點應該是借鑒了LaneNet這篇文章的思路。
在512x256輸入的情況下,論文中嘗試了64x32和32x16兩種輸出分辨率。
在后處理過程中,采用了一種從車道線的最近端開始逐漸向上匹配的機制,來排除一些錯誤點(outliers)。
Paper - 3
《Ultra Fast Structure-aware Deep Lane Detection》
這篇文章從分類的角度來構思車道線檢測這個問題。
它將問題轉化為對圖像中的特定行進行分類,每一個類別代表車道線所在的一個位置。
對原圖進行一定降采樣操作后,所獲一個Feature-map,其中:
- 每一個channel代表一條特定的車道線;
- 每一行對應原圖中某幾行組成的一個Row anchor;
- Row中的每一個col,對應了原圖中某幾列的位置,另外有一個額外的col,代表了無車道線,即背景類。
在Loss函數方面,除了分類Loss以外,還定義了一個structure-loss,主要從兩方面進行衡量:
- similarity loss:考慮同一個channel中,相鄰row的分類結果的連續性
- shape loss:考慮連續多個點的斜率變化趨勢
這個方法能夠達到很快的推理速度,因此以Ultra Fast
命名,但我以為存在如下幾個問題:
- 在目標構建過程中,需要提前定義好每一條車道線屬於哪個channel,因此對於換道過程中處於臨界狀態的車道線的歸屬問題具有歧義性,原論文中也沒有提及這方面的解決辦法。此外這種方式對於可檢測的車道線最大數量也有限制,即提前設定的channel數。這個問題目前沒有想到特別合適的解決辦法。
- 分類的目標是一個one-hot編碼的多選一,而車道線在近處是有一定寬度的,很有可能會覆蓋多個col。這個問題理論上可以通過label-smooth來緩解,或者引入類似CenterNet一樣的Heatmap目標。
Paper - 4
《CurveLane-NAS: Unifying Lane-Sensitive Architecture Search and Adaptive Point Blending》
參考了Dense Prediction Based
(分割的思路)和 Proposal Based
(檢測的思路)兩種車道線檢測的框架,以后者為基礎,采用了NAS的方法,獲得了一個更適合車道線檢測任務的網絡結構。
網絡整體上可以分為以下幾個部分:
- 特征提取及多尺度融合,在這兩個階段均引入了NAS的方法;
- 多尺度檢測輸出,以充分獲取大范圍內的全局結構特征,以及小范圍內的精確定位
- 結果融合,采用一種叫做
Adaptive Point Blending Search
的方法(類似於一種NMS方法,將低層輸出中位置精度回歸較高的點逐步向高層輸出替換,得到最后融合優化的車道線點輸出)
而這篇文章還有一個重大的貢獻,即發布了一個大規模的車道線檢測公開數據集Curvelanes。在此之前,只有Tusimple和CULane,Curvelanes的體量跟CULane相當,場景更加多樣化。
Paper - 5
《Heatmap-based Vanishing Point boosts Lane Detection》
網絡整體上同樣采用Encoder-Decoder結構,在車道線的預測Head以外,增加了一個Head,用於消失點的預測。
將消失點看做一種特殊的關鍵點,采用Heatmap的方式來預測。
通過這種方式,將消失點預測任務作為一種限制和引導因素,來優化車道線檢測的結果。
車道線檢測和消失點檢測,兩個任務有多種組合方式。
經試驗,LD-mid-VP的結構,在CULane數據集上能夠獲得最好的結果。這種結構將特征提取階段的輸出和車道線預測的輸出進行信息融合,再經過一些卷積層(mid部分)的處理后,輸出消失點的預測結果。
從直觀層面理解,人根據視覺判斷消失點,也是根據車道線的位置關系,來推測消失點位置,具有一定的因果關系。因此把消失點預測任務后置,反過來也能夠促進前端的車道線預測任務更好地收斂。
在此之前,還有一篇較有代表性的文章 VPGNet,同樣是通過消失點來引導網絡學習,以期獲得更好的收斂效果。不同的是VPGNet是通過四象限分割的方式來定義消失點位置,感覺不如Heatmap的方式更加符合直覺。
Paper - 6
《Lane Detection Model Based on Spatio-Temporal Network with Double ConvGRUs》
整體思路與第一篇論文比較類似。都是Encoder+RNN+Decoder。結構如下圖所示:
不同的是,它的RNN部分由兩個ConvGRU組成,Front-ConvGRU
和Middle-ConvGRUs
。
Front-ConvGRU
位於Encoder部分的第二個卷積模塊之后。理論依據主要是認為視覺感知和記憶之間存在聯系,因此在低層特征中引入RNN模塊。
此處有一點沒有理解,從文中給出的結構圖看,FCGRU這個模塊,並沒有在前后幀的時序上產生聯系(對比MCGRU的畫法可以發現),連接關系類似一個普通的Conv模塊,只有一個輸入,一個輸出。
我不確定是示意圖畫的問題,還是此處的GRU模塊有什么特殊的用法。
按論文的說法,經FCGRU處理前后的Feature-map可視化結果。車道線特征更加明顯突出。
Middle-ConvGRUs
位於Encoder和Decoder部分之間,作用主要是用於提取連續幀輸入的時序關聯信息,與前文所說的ConvLSTM
是類似的。
Paper - 7
《RESA: Recurrent Feature-Shift Aggregator for Lane Detection》
網絡同樣基於Encoder-Decoder結構進行改進。在Encoder和Decoder部分之間,插入RESA
模塊,增強空間結構信息在全局的傳播能力。結構如下圖所示:
同樣的思路可以回溯到SCNN這篇文章。
同樣是通過在Encoder-Decoder之間插入一個SCNN
模塊,來增強網絡感知空間結構信息的能力。
按論文的說法,RESA
模塊比SCNN
模塊的效率要高,時間復雜度與尺度的關系為$log_2L$。
3. 總結
總結近期車道線檢測領域的論文,有如下一些發展趨勢:
- 車道線檢測的應用場景具有很明顯的時序信息特征,為了利用到時序信息,通常采用
Encoder-RNN-Decoder
這樣的網絡架構,利用RNN模塊,對Encoder提取的Features進行進一步加工,提取連續幀帶來的歷史信息。- 可以參考人的視覺暫留現象,人在開車時觀察車道線,能夠自覺把虛線識別為一條空間上連續的線,也是利用了前后的時序信息。
- 在全圖分割的思路以外,出現了一些以目標檢測或目標分類的思路來處理車道線檢測問題的方法。
- 除了車道線檢測本身,通過增加一些額外的相關任務,引導網絡更好地學習,來獲得更好的效果。