久等了!希望這篇萬字長文能幫助入門的朋友徹底搞懂車道線檢測(中科院最新綜述)
寫在前面
大家好,很榮幸能受到自動駕駛之心的邀請來為大家分享我們的一篇關于單目車道線檢測的綜述。與papaer里展現(xiàn)的順序和內(nèi)容可能有所不同,在這里筆者想更多地講一講本文的成文過程以及各類方法的發(fā)展史,因此對于各方法的詳細介紹讀者可以參考本文原文,這里不會花費過多筆墨來重述。關于本文原文中提到的方法,以及更多未提到的方法的論文和代碼均可在筆者構建的GitHub倉庫里找到,筆者后續(xù)也會不斷更新,歡迎大家關注,也歡迎業(yè)內(nèi)同仁指正,共同探討。
- 論文鏈接:https://arxiv.org/abs/2411.16316
- 開源鏈接:https://github.com/Core9724/Awesome-Lane-Detection
最開始入門車道線檢測的時候要從去年春季,看了幾篇22年頂會頂刊的2D車道線檢測論文(那一年的相關論文很高產(chǎn),僅CVPR就有5篇)說起。起初對于車道線檢測的了解也僅限于它們在文中related work部分里提到的有基于分割的、基于anchor的、基于曲線的方法等等。但是還有一些地方不明白,相信不少剛接觸這個領域的朋友也有同樣的疑問:
1、為什么要區(qū)分不同的實例?而且一些論文里專門針對解決這個問題花費大量篇幅講解,可是另一些論文里似乎又沒怎么提及;
2、為什么用語義分割得到的車道線mask還要進一步擬合成點集或曲線?很多論文里只說了用分割做的話需要進一步后處理擬合,但沒說這樣做的原因;
帶著這些疑問,筆者又翻閱了近年來的一些相關綜述,期望能得到答案。遺憾的是,當時最新的質量較高的綜述只到21年為止,里面包含的方法基本都是2D車道線檢測且用語義分割來做的方法,也沒有強調實例區(qū)分和曲線擬合這兩個問題。
所幸之后接觸到了一些自動駕駛工程師,和他們交流一番后才明白:下游規(guī)劃控制任務實際上只關心車道線中心線。如果不區(qū)分車道線實例以及缺乏矢量化格式(點集或曲線方程)的話,就沒法計算了。
考慮到以往的綜述年代有點老,近年來很多新的方法都不包含,于是萌生了寫一篇車道線檢測的綜述的想法。但是當時筆者只對2D車道線檢測理解比較深入,而近年來也有3D車道線檢測的工作出現(xiàn),所以在綜述范圍上就又有疑問了:只寫2D還是2D和3D都寫?
后來在看了3D車道線檢測的相關論文后才明白:下游需要的都是基于自車的3D信息,2D車道線檢測結果還需要IPM投影得到3D車道線才能用。然而IPM假設地面平坦,在上下坡時會不準確,所以3D車道線檢測任務誕生。
因此筆者認為有必要把2D車道線檢測和3D車道線檢測都寫進去,它們之間的關系是很密切的。考慮到傳統(tǒng)方法現(xiàn)在基本很少用了,目前基本都是深度學習主導。另外LiDAR-based的方案太少,目前在這個領域里主流傳感器還是單目相機。于是確定了最終選題:基于深度學習的單目車道線檢測綜述。
1、本文組織結構
以往的綜述過分關注每個具體的方法的網(wǎng)絡結構和損失函數(shù),雖然它們對于深度學習來說也很重要,但是并不完全構成解決車道線檢測任務本身挑戰(zhàn)的關鍵。所以本文從車道線檢測任務的完整流程和挑戰(zhàn)出發(fā),先總結了車道線檢測算法的四個核心設計,然后從這四個方面展開方法回顧。
先說車道線檢測任務的完整流程和挑戰(zhàn):
完整流程:從前視圖(Front View,以下簡稱FV)得到基于自車坐標系下的3D車道線,即鳥瞰圖(Bird‘s Eye View,以下簡稱BEV)結果,實現(xiàn)方式如圖1所示,包括:
1、2D車道線檢測+IPM;
2、3D車道線檢測。
挑戰(zhàn):
1、精確的定位和實時處理能力;
2、能夠應對車道線被遮擋、光照等干擾因素影響的情況;
3、區(qū)分不同實例;
4、以矢量化格式呈現(xiàn)車道線檢測結果(點集或曲線方程)。
基于完整流程和挑戰(zhàn),筆者總結了車道線檢測算法的四個核心設計:
1、任務范式,即如何區(qū)分車道線實例;
2、車道線建模,即將車道線表示為一組網(wǎng)絡可學習的參數(shù);
3、全局上下文補充,即應對那些不明顯的車道線;
4、(相機)透視效應消除,即為下游提供準確的3D車道線。
因此本文對現(xiàn)有方法的回顧主要從以上四個核心設計為角度開展。本文的貢獻如下:
1、對基于深度學習的單目車道線檢測并且首次同時包含2D和3D車道線檢測方法的全面綜述;
2、本文先介紹了車道線檢測算法的四個核心設計,然后從上述角度系統(tǒng)地總結現(xiàn)有方法。以往的相關綜述通常對某個方法的具體網(wǎng)絡結構和損失函數(shù)做詳細介紹,然后附上相應方法的網(wǎng)絡結構圖。筆者更傾向于把每一類方法都總結為一個pipeline,然后針對每個pipeline介紹其框架下的每個方法,這樣可以幫助讀者更好地理解;
3、考慮到不同方法做實驗時使用的設備可能有所不同,直接用其原論文中報告的速度來進行比較肯定是不公平的。所以除了比較不同方法在不同benchmark下的性能以外,還在統(tǒng)一環(huán)境下重新測試了代表性方法的速度;
4、近年來還有一些工作(多任務感知、視頻車道線檢測、在線高精地圖構建、車道線拓撲推理)也很受關注,在任務流程上可以視為單目車道線檢測的升級,所以筆者在文中也對它們進行了介紹。基于這些介紹,讀者可以獲得一份關于車道線檢測研究熱點發(fā)展的路線圖。
本文的組織結構如圖2所示。
2、數(shù)據(jù)集和評估指標
2.1 數(shù)據(jù)集
對于2D車道線檢測,最常用的四個數(shù)據(jù)集:Tusimple、CULane、LLAMAS和CurveLanes。現(xiàn)有2D方法基本上選擇三個做實驗,CULane和Tusimple,外加LLAMAS和CurveLanes二選一。
對于3D車道線檢測,雖然LLAMAS也有3D車道線標注,但最常用的還是Apollo 3DLane、ONCE-3DLanes和OpenLane這三個。
這里多說一些有關OpenLane、OpenLane-V和OpenLane-V2三個數(shù)據(jù)集的區(qū)別,以防讀者混淆。OpenLane是上海AI Lab在ECCV 2022提出的3D車道線檢測數(shù)據(jù)集,是對Waymo Open數(shù)據(jù)集中部分FV圖像的車道線進行標注得到的;OpenLane-V是ICCV 2023的RVLD這篇文章的作者團隊基于OpenLane的部分2D車道線標注修改得到的2D車道線檢測數(shù)據(jù)集;OpenLane-V2也是上海AI Lab提出的數(shù)據(jù)集,但它和OpenLane關系其實不大,它是基于nuScenes和Argoverse2兩個環(huán)視場景數(shù)據(jù)集構建而來的,并且標注主要集中在中心線、紅綠燈和拓撲關系,曾用于CVPR 2023拓撲挑戰(zhàn)賽,最終發(fā)表于NeurIPS 2023。
2.2 評估指標(TP的判定標準)
不同benchmark的評估指標都有所不同,不過F1-Score是幾乎所有數(shù)據(jù)集的首要評估指標,而F1-Score的計算又離不開TP的判定。因此本文主要介紹不同主流benchmark的TP判定標準。
對于2D車道線檢測,TP判定主要以Tusimple和CULane為代表。Tusimple主要衡量每個點。當縱坐標相同時,如果與GT點的水平距離小于20像素,則認為預測點正確。進而當預測的車道線包含不少于85%的正確點時,該預測線被視為TP。相比之下,CULane更注重衡量車道線整體,車道線被視為若干像素寬的mask,如果預測的車道線mask和GT的IoU大于75%則被視為TP。
對于3D車道線檢測,TP判定主要以OpenLane和ONCE-3DLanes為代表。OpenLane:當一個預測車道線有75%的覆蓋y位置與GT的逐點距離小于允許的最大距離(1.5米)時,被視為TP;ONCE-3DLanes:首先,在z-x平面(即俯視圖)上使用CULane的計算IoU的方法來評估預測與地面實況之間的對齊情況。其次,如果IoU超過預定義閾值,則使用單側倒角距離(詳見ONCE-3DLanes原文或本文附錄)計算相機坐標中的曲線匹配誤差。如果該單側倒角距離低于指定閾值,則預測線被歸為TP。
3、2D車道線檢測方法
3.1 分類框架
以往的相關綜述主要關注具體網(wǎng)絡結構和損失函數(shù)。而實例級判別和矢量化結果表達往往被忽視。相比之下,本文對二維車道線檢測方法的分類主要依據(jù)上述兩個方面。
如圖3所示,首先,對于實例級判別,根據(jù)完成任務所需的階段數(shù)分為兩類范式:
(a)基于分割的方法(segmentation-based methods,兩階段),按照一定的順序完成車道線識別和實例區(qū)分。圖4總結了這類方法中實例區(qū)分的通用流程。
(b)基于目標檢測的方法(object detection-based methods,單階段),直接同時完成實例區(qū)分和定位。這一優(yōu)勢源自目標檢測算法的一般流程(并行地對一組候選proposal執(zhí)行分類和回歸)。
其次,矢量化結果表示要求算法考慮如何將車道線建模為一組用于神經(jīng)網(wǎng)絡學習的值,即車道線建模。基于分割的方法可以進一步分為基于mask的建模、基于grids的建模和基于keypoints的建模。對于基于目標檢測的方法,采用bounding box來建模細長的車道線往往并不合理。因為目標檢測方法生成的邊界框可能會相互遮擋,而且一個框內(nèi)可能包含多個車道線實例。為了與一般的目標檢測范式對齊,這些方法設計了獨特的“bounding box”來建模車道線,包括基于line anchor的建模和基于curve的建模。每種車道線建模方式的細節(jié)如圖5所示。
另外,大多數(shù)現(xiàn)有的2D車道線檢測數(shù)據(jù)集甚至為被車輛嚴重遮擋或受極端天氣條件影響的車道線提供了完整的標注。這促使許多算法在其網(wǎng)絡里精心設計特殊結構補充全局上下文來解決這一挑戰(zhàn),無論它們屬于哪個分類體系。因此,在回顧這些方法時,還闡述了它們?yōu)榻鉀Q這一問題所采取的措施(篇幅限制,在這里未詳細列出,具體可見本文原文)。根據(jù)上述分類標準,表2詳細比較了具有代表性的二維車道線檢測工作。
注:其實不少論文里的related work部分都有把現(xiàn)有的2D車道線檢測方法分為segmentation-based、anchor-based、keypoints-based、curve-based等等。但是這個分類僅反映了不同方法的車道線建模方式。實例級判別很少被提及,原因一方面是那些基于anchor或者曲線的方法本身遵循目標檢測的范式,不需要考慮實例判別問題;另一方面是在related work里也確實沒必要分的這么細(再細分就超頁數(shù)了)。但對于綜述來說,有必要把這個上下級關系為讀者解釋清楚,所以本文針對實例級判別和車道線建模方式進行了二級分類。另外,不少論文的related work里將UFLD、CondLaneNet等方法也歸為anchor-based,這一點可能源自于UFLD原論文中的“row-anchor”表述。但實際上它們是遵循著“實例區(qū)分、逐行/列分類”一個順序的過程,需要額外考慮實例判別過程,并不符合目標檢測并行“分類+回歸”的特點,因此本文將其劃分至基于分割和基于grids的建模的方法。
3.2 基于分割的方法
3.2.1 基于mask的建模
基于mask的建模方法,即將車道線檢測視為語義分割任務,也是早期被廣泛采用的方法。不過和一般的語義分割任務不同的是,一般的語義分割任務只分割可見的物體,但是車道線檢測是要能分割出那些不明顯的車道線的。所以這一類的大部分方法在解碼器上采樣之前引入了專門的結構來增強特征表示,比如VPGNet、SCNN、SAD、EL-GAN、RESA、PriorLane等方法。
而對于實例級判別來說,一個比較直接的方法是用自頂向下(先有實例后有語義類別)的實例分割框架,比如Mask R-CNN或YOLACT,以實現(xiàn)車道線實例級別的區(qū)分和分割。然而,目標檢測方法生成的邊界框可能包含多個車道線實例,后續(xù)的語義分割過程中區(qū)分它們會變得復雜。
SCNN采用了一種與上述不同的自頂向下方式,如圖4(b)所示:每條車道線視為一個類別,然后多類別語義分割結果和一個并行的分類分支結合。后續(xù)的SAD、EL-GAN、RESA、PriorLane也都是這么做的。這種方式方便了實例區(qū)分,但也引入了一定的局限性:需要提前定義車道線的最大數(shù)量來確定可能的實例數(shù)量。此外,車道線與類別之間的對應關系是通過標注建立的。當車輛變道時,這種預定義的標注可能會導致歧義。
為了解決上述問題,一些方法采用了更為靈活的自底向上(先有語義后有實例)的實例分割方式,即對車道線/背景的二值分割結果進行聚類,如圖4(a)所示。最典型的當屬LaneNet和LaneAF這倆。不過盡管這些方法提高了實例區(qū)分能力,但由于自底向上聚類的高復雜度以及語義分割時對所有像素分類的機制,算法的整體效率仍然不佳。
通過網(wǎng)絡分割獲得的車道線mask通常包含大量不相關區(qū)域。為了將其用于自車運動預測和規(guī)劃,還需要進一步對mask進行去噪處理,以獲得矢量化結果。通常,對于每個車道線的mask,在等間距高度上依次采樣最高響應值,然后進行曲線擬合。
3.2.2 基于grids的建模
為了避免語義分割分類所有像素的機制帶來的低效率,UFLD設計了一種逐行網(wǎng)格分類的方式完成車道線檢測。這個方法也是目前所有2D車道線檢測方法里最快的,但是它的實例判別過程也是遵循SCNN那一套。所以為了解決實例級判別問題,受經(jīng)典實例分割方法CondInst和SOLOv2的啟發(fā),ConeLaneNet以預測動態(tài)卷積核的方式完成實例級判別,如圖4(c)所示。后來UFLDv2又把逐行分類升級成逐行/列分類來解決水平車道線的檢測難以用逐行分類機制實現(xiàn)的問題。但仍然遵循SCNN的實例判別過程,這使得為每個車道線實例來選擇逐行/列分類過于簡單,所以后來CANet又針對這一點進行了改進,讓網(wǎng)絡能夠動態(tài)選擇行分類或列分類。
由于這類方法的網(wǎng)絡輸出每一行/列網(wǎng)格的分類概率,并非矢量化格式,因此還需要后處理。具體地說,每個點的坐標計算為位置的期望值(來自同一行/列的網(wǎng)格)即概率加權平均值。這個后處理過程與語義分割獲得的車道線mask的后處理相比更容易實現(xiàn)。
3.2.3 基于keypoints的建模
一些方法直接預測車道線的關鍵點,和基于grids的建模類似,可以被視為基于mask的建模的稀疏版本,但它直接提供了下游所需的矢量化表達。像PINet、FOLOLane、GANet還有RCLane這些都是以自底向上的方式進行,也有遵循自頂向下的方式,最典型的比如CondLSTR。
3.3 基于目標檢測的方法
3.3.1 基于line anchor的建模
這類建模方式是目前用的最多,在各個benchmark上刷點也很高的一類。其方法本質就是預測一條參考線上的等距點的水平偏移量來描述車道線,這與一般目標檢測方法預測中心點和寬高的偏移量是類似的。
這類方法最早可以追溯到Line-CNN,后來被LaneATT發(fā)揚光大。不過由于預設大量的line anchor,以及早期一般的目標檢測方法的正負樣本匹配策略的局限性,導致那一時期出現(xiàn)的方法都需要NMS后處理。后來隨著目標檢測逐漸被DETR占據(jù)主導地位以及匹配策略的改進,相應產(chǎn)生的車道線檢測方法也慢慢向其靠攏。比較典型的例如Laneformer、CLRNet、ADNet,相比于早期的基于line anchor的建模方法,它們從固定密集的line anchor轉變?yōu)閯討B(tài)稀疏的line anchor。
3.3.2 基于curve的建模
另一批基于目標檢測的方法直接用曲線方程建模車道線,網(wǎng)絡學習曲線的參數(shù)。最初的方法比如PolyLaneNet用三次多項式建模車道線并學習多項式的系數(shù),后來LSTR又把這種建模方式套進了DETR里。由于學習相對較少的參數(shù),這類方法在速度上屬于較快的一批。但是在性能上并不具備有競爭力的優(yōu)勢。后來BézierLaneNet用三次貝塞爾曲線建模車道線,網(wǎng)絡學習貝塞爾曲線上的控制點,顯著改善了這一問題。
3.4 2D車道線轉3D車道線(IPM投影過程)
由于實際使用時最終需要3D車道線,所以2D車道線檢測的結果還需要進一步利用IPM投影得到3D車道線。因此本文還對IPM的過程進行了回顧,以幫助讀者理解其過程,以及IPM帶來的缺陷和為什么3D車道線檢測任務被提出。這里只展示一下IPM導致的錯誤結果可視化(圖5,以上坡為例),具體的推導步驟讀者可參考本文原文。
4、3D車道線檢測方法
4.1 分類框架
作為2D車道線檢測的升級,3D車道線檢測更加關注:如何用網(wǎng)絡從FV圖像中重建缺失的3D信息。如圖7所示,現(xiàn)有的3D車道線檢測方法可以分為兩大類:
(a)基于BEV的方法:利用相機參數(shù),以某種方式將FV特征轉換為含有高度信息的BEV特征。這個構建中間代理,即BEV轉換的過程通常稱為View Transformation。通過這種方式,3D車道線檢測任務可以簡化為在BEV上的2D車道線檢測和高度估計。因此,這類方法的性能不僅取決于BEV中的2D車道線檢測結果,還取決于View Transformation的實現(xiàn)方式。
(b)無BEV方法:不依賴BEV特征,可以進一步分為兩類。一種是結合深度估計值將2D車道線檢測結果投影至3D空間中;另一種是直接建模3D車道線,有了初始化的3D信息,就可以根據(jù)相機參數(shù)將其投影到FV上,讓3D車道線與FV特征之間進行交互,并更新3D車道線。
對于每種方法,實例級判別和車道線建模仍然有討論。表3中列出了代表性工作的比較。
4.2 基于BEV的方法
4.2.1 IPM用于View Transformation
3D-LaneNet既是3D車道線檢測任務的提出者,也是3D車道線檢測中基于BEV的方法的首個工作。隨后Gen-LaneNet、3D-LaneNet+、CLGo等工作進一步進行改進,但是這些早期的3D車道線檢測方法對于BEV的轉換都是基于IPM實現(xiàn)的,相當于是把IPM從2D車道線檢測結果階段提前到了特征階段。
4.2.2 可學習的View Transformation
因此,后續(xù)的工作為了避免IPM帶來的固有誤差,嘗試以更靈活的方式完成BEV轉換,即可學習的View Transformation。這一思想其實早在一些3D目標檢測的工作中就有體現(xiàn)了,比如LSS、BEVDet、BEVFormer等。對于車道線檢測來說,PersFormer算是首個以可學習的方式實現(xiàn)View Transformation的工作,之后也引出了不少優(yōu)秀工作,比如BEV-LaneDet、SPG3DLane、LaneCPP等。
4.3 無BEV方法
4.3.1 結合深度估計
和早期的一些深度輔助的單目3D目標檢測方法類似,SALAD將3D車道線檢測分解為FV上的2D車道線檢測和深度估計任務,有了準確的深度值即可將2D車道線精準投影至3D空間。
4.3.2 直接建模3D車道線
這一思想也是類似于一些3D目標檢測中的Sparse BEV方法例如DETR3D和PETR(將3D參考點或3D位置embedding投影回FV進行交互)。典型的方法當屬CurveFormer、Anchor3DLane、LATR等,都是Persformer之后的同時期工作。盡管在交互細節(jié)上可能有所不同(比如Anchor3DLane在投影回FV后用類似LaneATT的方式做pooling,CurveFormer和LATR則是用query和FV做cross attention),但是它們的核心思想都遵循:建模3D車道線并正向投影回FV進行交互對齊。
注:1、關于“3D Line Anchor”的表述:雖然在CurveFormer和LATR原文里沒有像Anchor3DLane和PVALane中明確的“3D Anchor”的表述,但是這些方法的本質都是遵循目標檢測的范式,并學習3D參考線上等距點的X方向和Z方向的偏移量。因此本文將它們的建模方式都歸為“3D Line Anchor”;2、盡管PVALane構建了BEV特征,但僅用于輔助增強3D車道線檢測效果,而不是像基于BEV的方法那樣成為網(wǎng)絡的必要組成部分。
5、方法性能對比
5.1 主流Benchmark下的結果比較
CULane和OpenLane是目前最常用的2D和3D車道線檢測數(shù)據(jù)集。表4和表5分別報告了這兩個benchmark下代表性方法的性能。所有結果均來自原文數(shù)據(jù)。更多數(shù)據(jù)集下的結果在附錄。
5.2 主流Benchmark下的結果比較
考慮到現(xiàn)有方法中實驗所用設備的差異性,直接用各方法原論文中報告的速度來進行比較是不公平的。因此,筆者在統(tǒng)一環(huán)境中重新測試了代表性方法。表6展示了這些方法的工作效率。根據(jù)代表性且開源的方法在CULane或OpenLane數(shù)據(jù)集上的設置,筆者對其進行了重新評估。為確保公平性,僅測試了模型的推理速度以報告FPS值(即不包含后處理部分,因為有的方法的后處理可能在CPU上執(zhí)行)。同時,還描述了每種方法的骨干網(wǎng)絡、輸入大小、模型輸出以及可能的后處理(即模型的輸出是否反映了每個唯一車道線實例的矢量化表示)。所有測試均使用單張Nvidia GeForce RTX 3090 GPU。
5.3 討論
先前的章節(jié)中從任務范式、車道線建模、全局上下文補充和透視效應消除四個方面概述了現(xiàn)有方法。結合性能和效率的比較,筆者繼續(xù)討論它們對車道線檢測的重要性。
1、任務范式。基于分割的方法通過兩階段方法實現(xiàn)實例級判別和車道線定位,算法運行時間的大部分被獨立的實例判別過程所占據(jù),這使得它們總體上不如一階段實現(xiàn)的目標檢測方法高效。而對于基于目標檢測的方法,有必要考慮網(wǎng)絡訓練過程中的正負樣本匹配策略,這將決定后處理是否需要NMS。
2、車道線建模。在基于mask的建模方法中,每個像素都被分類,這可能導致不準確的分割mask,進而阻礙矢量化擬合。因此,實現(xiàn)最佳性能和效率仍然是個挑戰(zhàn)。相比之下,基于keypoints的建模、基于line anchor的建模和基于curve的建模方法學習的點或參數(shù)更少,且直接產(chǎn)生下游所需的矢量化結果。
基于keypoints的建模方法表現(xiàn)出強大的性能,得益于其在專注于局部方向上的高精度姿態(tài)估計技術。然而,這些算法的整體效率受到其分割范式中固有實例判別步驟的限制。
基于line anchor的建模方法利用車道線在單目圖像中的垂直和細長特性,在性能和效率之間取得了良好的平衡。然而,這些方法學習等距點的水平偏移量,因此不適用于U形或近乎水平的車道線。這一特殊情況將在后續(xù)章節(jié)進一步討論。
基于curve的建模方法表現(xiàn)出良好的效率,但在2D車道線檢測基準上的競爭性能方面有所欠缺。有趣的是,這種方法在3D車道線檢測中取得了有競爭力的表現(xiàn)。根據(jù)Han等人的分析,這種差異應該是由于地面高度的影響,使得在FV中難以擬合不規(guī)則的車道線。相比之下,這些車道線在BEV中看起來更平滑,因此更容易擬合。
最后,像UFLD這樣的基于grids的建模方法實現(xiàn)了最高的效率;然而,這是以降低計算量為代價的,導致性能次優(yōu),通常需要更高級的算子(CondLaneNet里的Transformer encoder和動態(tài)卷積)來彌補。
3、全局上下文補充。無論屬于哪種類型,大多數(shù)方法都達成了一個共識,即補充全局信息可以顯著提高車道線檢測性能,特別是對于檢測那些不明顯的車道線。此外,確保這些專門設計的結構在高效處理和有效結果之間取得平衡至關重要。雖然這一方面在現(xiàn)有的3D車道線檢測benchmark和方法中很少被關注(主要還是因為3D車道線檢測更關注在網(wǎng)絡中消除透視效應),但在實際應用中,2D車道線檢測中的某些解決方案可以作為參考或者直接無縫集成到三維車道線檢測框架中。
4、透視效應消除。最終目標仍然是實現(xiàn)精確的3D車道線檢測,以支持下游應用。使用IPM將二維車道線檢測結果投影到三維空間中是可行的。然而,由于假設地面平坦,即使在FV中預測準確,BEV中也往往會出現(xiàn)錯誤結果。雖然基于深度值將2D車道線檢測結果投影到三維空間的方法很直接,但這種方法嚴重依賴于深度估計結果,無法進行端到端的優(yōu)化。
早期的3D車道線檢測方法仍然假設地面是平坦的,利用IPM來構建BEV特征。后來一些方法通過融入可學習的方式對此進行了改進,從而提高了性能。另一批方法則完全避免了BEV特征的構建,直接對3D車道線進行建模,并利用3D到2D的正向投影來規(guī)避IPM引入的固有誤差。應該指出的是,Transformer在BEV轉換(PersFormer)或實現(xiàn)3D車道線與前視圖特征之間的交互(LATR)上具有強大的能力,這一點在相關的3D目標檢測工作(BEVFormer,PETR)也有所體現(xiàn)。然而,deformable attention等高級算子的硬件部署仍然是一個需要優(yōu)化的問題。
6、車道線檢測的擴展工作
其實正常到第5章后關于對車道線檢測方法的總結部分就結束了。但是筆者在接觸到一些其他和車道線檢測高度相關的領域后,覺得還是有必要提及一下。這些工作在任務流程上可以視作單目圖像車道線檢測的升級:
1、多任務感知:一個模型同時完成目標檢測和車道線檢測等任務;
2、視頻車道線檢測:多幀圖像的時序關聯(lián);
3、在線高精地圖構建:檢測環(huán)視圖下的地圖元素,包括車道線、人行橫道、車道邊界線等各種靜態(tài)目標;
4、車道線拓撲推理:同樣是環(huán)視圖場景,檢測中心線,預測中心線之間的拓撲以及紅綠燈和中心線之間的拓撲關系,從而實現(xiàn)場景理解。
并且在近年來也很火熱,因此筆者在本章對它們進行了介紹,并給出一份關于車道線檢測研究熱點的發(fā)展路線圖(圖8)。可以觀察到,從檢測2D車道線到檢測3D車道線,再到檢測地圖元素,再到檢測中心線和拓撲關系預測,模型的輸出越來越靠近下游應用。
6.1 多任務感知
早期的一些工作主要集中在BDD100K數(shù)據(jù)集上的三個任務:目標檢測、可行使區(qū)域分割和車道線檢測。其代表性方法例如YOLOP、YOLOPv2等,它們采用強力Encoder結構提特征然后銜接多個任務頭,實現(xiàn)了強大的性能。不過需要指出的是BDD100K數(shù)據(jù)集里的車道線沒有實例級標注,注釋都是語義分割mask,所以這些方法的車道線檢測頭也都是用語義分割的方式來做的。最近的研究慢慢上升到3D多任務感知上,比如PETRv2設計三種query,用三個任務頭完成3D目標檢測、BEV分割和3D車道線檢測,還有RFTR設計一種統(tǒng)一向量場表示從而將3D目標檢測和3D車道線檢測集成到一個單頭模型里。
6.2 視頻車道線檢測
對于2D的視頻車道線檢測,早期的一些工作用經(jīng)典RNN網(wǎng)絡(LSTM、GRU)實現(xiàn)多幀特征融合。后來21年ICCV新出了VIL-100數(shù)據(jù)集,每個視頻的幀率下采樣至10s,因此更適合視頻車道線檢測。其相應的baseline方法設計兩種attention模塊來關聯(lián)多幀的特征。后續(xù)也有RVLD、OMR等創(chuàng)新工作。在3D車道線檢測方面,STLane3D算是第一篇利用時序信息的工作,利用attention關聯(lián)多幀的BEV特征。相比之下,Anchor3DLane-T和CurveFormer++在3D Line Anchor的特征上做attention來補充時序信息。
6.3 在線高精地圖構建
即現(xiàn)在業(yè)內(nèi)大火的無圖NOA。基本流程是通過環(huán)視圖構建BEV特征,然后解碼器預測地圖元素。因此其關鍵和車道線檢測類似,需要考慮如何統(tǒng)一地建模各種地圖元素。需要指出的就是當傳感器從單目相機增加到多相機時,在BEV平面上會出現(xiàn)很多U型或水平線,那這時候車道線檢測里常用的學習等距點偏移量的line anchor modeling方法就不適用了。該任務最先由HDMapNet提出,其采用自底向上的分割方法預測所有地圖元素的mask,并結合instance embedding聚類得到地圖元素實例。但這種方法仍然需要矢量化后處理以供下游使用,因此后續(xù)的工作試圖直接完成端到端矢量化建圖。在后續(xù)的一眾方法里,MapTR可謂是最具代表性的工作,其用均勻點來統(tǒng)一建模地圖元素,所有地圖元素都被表示為具有相同點數(shù)和不同排列順序的集合。得益于其統(tǒng)一的置換等價建模方式和層級化query的設計,MapTR在nuScenes上僅靠相機輸入就實現(xiàn)了當時的SOTA,為后續(xù)的研究提供了強有力的baseline。后續(xù)的大部分工作基本都是針對MapTR進行了改進,比如PivotNet、HIMap、StreamMapNet、MapTracker等,也有一些工作引入地圖先驗來加強局部建圖能力。這一領域內(nèi)的優(yōu)秀工作還有很多,由于這一章是對車道線檢測擴展工作的簡單介紹,所以筆者沒有列出所有的方法(僅ECCV 2024的在線建圖論文貌似就高達7篇),更多方法的論文和代碼可以在筆者構建的GitHub倉庫里找到。
6.4 車道線拓撲推理
早期的工作主要集中在線和線之間的拓撲關系上,即檢測車道中心線來構建一幅車道圖(lane graph)。開創(chuàng)性工作當屬STSU,之后也衍生了如CenterLineDet、LaneGAP等創(chuàng)新工作。后來OpenLane-V2數(shù)據(jù)集誕生,除了包含中心線檢測以外,還引入了線和交通標志之間的拓撲關系,代表性方法例如TopoNet和TopoMLP。TopoNet也是當時的拓撲挑戰(zhàn)賽的冠軍。后來LaneSegNet又把車道線和中心線的關系連接起來,進一步加強了場景理解。
7、未來方向
對于未來方向,討論的范圍包括:領域內(nèi)仍然有待改進的問題,尚未充分探索的子領域,以及在本領域之外具有重大研究價值的相關任務。
1、高效統(tǒng)一的建模方式。就目前而言,在不影響效率的條件下有效地建模任意形狀的車道線仍然是一個挑戰(zhàn)。特別是當場景從單目相機前視圖擴展到多相機環(huán)視圖時,會存在大量U形或近乎水平的車道線。在這種情況下,嚴重依賴先驗知識的建模方法,如基于grids的逐行分類建模,或是學習等距點偏移量的基于line anchor的建模方式都不適用。這種情況下往往表現(xiàn)不佳的基于mask的建模方式實際上更有效。像MapTR的均勻點建模方式就不會出現(xiàn)這種歧義性,不過這些建圖方案在實車應用的時候還需要對速度進行優(yōu)化。再有就是CVPR 2024的Lane2Seq通過序列生成來統(tǒng)一2D車道線檢測也是一個不錯的思路,盡管其效率需要進一步改進(Lane2Seq以自回歸的方式輸出車道線的點集,當車道線數(shù)量增多時推理速度就會顯著下降,這可能也是為什么其沒有在CurveLanes這種多車道線場景的數(shù)據(jù)集做實驗的原因)。
2、多模態(tài)車道線檢測。其實近年來純LiDAR的車道線檢測Benchmark和方案也有,最典型的比如CVPR 2022的K-Lane。盡管LiDAR可以直接提供3D信息,但其較短的感知范圍和較高的成本使得基于相機的方法更普遍。不過后續(xù)的技術路線肯定是多模態(tài)融合,這一點已經(jīng)在很多通用3D感知工作中得到印證了,但對于車道線檢測來說目前這類方法還很稀少,代表性的如-3DLaneNet、DV-3DLane,都是LATR團隊的工作。
3、標簽高效的車道線檢測。即弱監(jiān)督策略和無監(jiān)督策略,同樣目前相關工作較少。
4、對于端到端自動駕駛。在端到端框架中,車道線檢測往往不再輸出顯式的車道線坐標,而是作為提供中間表示的模塊。后續(xù)的研究或許可以將特定的車道線檢測輸出(如中心線、車道線寬度、曲率等)作為先驗知識整合進端到端框架里來提高性能。
5、針對車道線檢測的視覺推理。大語言模型(LLM)和視覺語言模型(VLM)目前也已經(jīng)被廣泛用于自動駕駛領域,相關工作有很多。值得注意的是今年CVPR的一個新數(shù)據(jù)集MapLM,是專門針對地圖和交通場景里的車道線等靜態(tài)目標開發(fā)的benchmark,利用大模型來更好地理解交通場景,未來在這方面的研究應該會更多。
6、路側車道線檢測。V2X也是目前比較火熱的一個方向,其相應的路側3D目標檢測任務和相關方法也得到了廣泛關注。但是目前還沒有針對路側場景車道線標注的相關數(shù)據(jù)集和方法。如果能誕生相應benchmark和baseline,路側車道線檢測可以有效地幫助監(jiān)控車輛非法變道等行為,在安防領域具有巨大的潛力。
8、總結
本文全面回顧了基于深度學習的單目車道線檢測的最新進展,涵蓋了先進的2D和3D車道線檢測方法。通過理論分析和實驗評估,確定了車道線檢測算法的四個核心設計:(1)所遵循的任務范式;(2)車道線的建模方式;(3)全局上下文補充;(4)相機透視效應的消除。從這些角度,本文對現(xiàn)有方法進行了全面概述。此外,本文還回顧了單目車道線檢測的擴展工作,旨在為讀者提供對車道線檢測發(fā)展的更全面理解。最后指出了車道線檢測的未來研究方向。