高精度(High-Definition, HD)語義地圖是目前自動駕駛領域的一個重要研究方向,近年隨著Transformer和BEV的大火,很多大佬團隊都開展了HD語義地圖構建相關的工作。2021年7月,清華大學MARS實驗室提出了HDMapNet。緊隨其后,同一團隊又在今年6月公開了后續工作VectorMapNet。同時,MIT和上海交通大學也在今年5月提出了BEVFusion。今年11月底的時候,蘇黎世聯邦理工學院、毫末、國防科大、阿爾托大學又聯合開發了SuperFusion。這四種方案基本上就是目前HD地圖構建的主流方案。
本文將帶領讀者深入探討這四種方案的優勢與不足,通過對比方案來思考HD地圖構建的重點與難點。當然筆者水平有限,如果有理解錯誤的地方歡迎大家一起討論,共同學習。 溫馨提示,本文討論的方案都是開源的,各位讀者可以在這些工作的基礎上開展自己的研究!文末附原文鏈接和代碼鏈接!
1. 為什么自動駕駛都要做BEV感知?
先說答案:因為自動駕駛要求的是空間感知單純的前視攝像頭輸入,看到的只是有限視角內的畫面。而自動駕駛任務要求的是對車輛周圍整體空間范圍內的感知,因此往往需要對輸入的環視相機/激光雷達進行投影,轉到BEV視角下進行HD地圖的構建。 那么BEV感知的難點是什么呢? 在自動駕駛的車道線檢測、可行駛區域檢測等任務中,都是針對前視攝像頭輸入進行逐像素的分割/檢測,每個輸入像素都對應一個輸出類別。這種一一對應的關系使得我們可以很容易得應用CNN/Transformer模型進行分割/檢測。 但自動駕駛BEV感知已經不僅僅是2D感知問題,在空間變換的過程中像素很有可能發生畸變!比如,前視攝像頭中的車輛,轉換到BEV視角下可能已經不是車輛的形狀了!再比如,前視攝像頭中相鄰很近的兩個物體,轉換到BEV視角下變得相隔很遠。
既然如此,可不可以先針對圖像進行分割處理,然后再投影到BEV視角呢? 理論上來說這是一個很好的解決思路,避免了三維物體在投影過程中產生的畸變,但在實際操作過程中,會發現很容易造成多相機之間的不一致問題!
因此,需要直接針對BEV空間進行處理以構建HD地圖!此外,BEV空間也使得相機和雷達的融合變得簡單。
2. 傳統的HD語義地圖構建有什么問題?
先說說傳統的HD地圖構建方案: 基本上目前SLAM的落地方案都是分成兩部分,一個是配備高精度傳感器的地圖采集車,用于對環境信息進行高精度的采集和處理,一個是乘用車,也就是大家所熟知的SLAM中的僅定位。 具體思路是,首先利用高精度傳感器(雷達/IMU/相機/GPS/輪速計)在園區上來回往復運行,得到帶有回環的軌跡以后基于SLAM方法獲得全局一致性地圖,后面交友標注員進行手工處理,得到靜態HD地圖。后面的乘用車就是將自身提取到的特征和前面構建的HD地圖進行特征匹配,進行僅定位。這么做有什么問題呢?(1) 整體的Pipeline非常長,導致工藝流程非常繁瑣。 (2) 手工標注需要消耗大量人力。不知道大家有沒有手動打深度學習標簽的經歷,真的是非常痛苦。 (3) 需要在實際運行過程中更新地圖。我認為這也是最重要的一點,上述基于手工方法構建的HD地圖是完全的靜態地圖,但實際運行場景必然與之前構建的地圖有所區別(比如某個車移動了位置,某個箱子轉運到了其他位置)。所以乘用車在實際運行過程中需要實時更新并存儲HD地圖,這也是個非常繁瑣的課題。但基于學習的端到端的方案是可以解決這一問題的,雖然從目前來看基于學習的方案在精度上還稍有不足,但相信這一問題可以很快被解決。
我們希望實現什么效果呢?(1) 簡單,最好是端到端的網絡架構。 (2) 自動、在線得構建HD地圖。 (3) 能夠不受動態環境影響,直接構建HD地圖。
3. 清華大學開源HDMapNet
清華大學2021年7月開源的HDMapNet,其主要思路是輸入環視相機和雷達點云,將相機和雷達點云分別進行特征提取后投影到BEV空間,在BEV空間里進行特征融合。注意,在BEV空間里進行特征融合是非常有優勢的!之后,便是在BEV空間內進行解碼。解碼器共有三個輸出,第一是地圖的語義分割結果,里面包含了地圖里哪個是車道線、哪個是路標、哪個是人行橫道線。第二是實例Embedding,里面包含了實例信息,主要表達車道線和車道線直接、路標和路標之間的實例區分。第三是方向信息,主要表達了HD地圖中每條線的方向。最后,語義分割HD地圖首先和實例Embedding進行融合,得到實例化的HD地圖,并融合方向信息以及NMS得到矢量化的HD地圖。
需要特別注意的是,HDMapNet并不一定需要做多傳感器融合,純相機或者純雷達也是可以基于HDMapNet構建HD地圖,只是效果相對要弱一些。HDMapNet的結果顯示,相機對于車道線、人行橫道線這種視覺紋理豐富的特征識別的較好,雷達對于路沿這種物理邊界的效果更好。 但純相機或純雷達的操作真的給一些經費受限的小伙伴帶來了福音!
一句話總結:HDMapNet實現了多模態BEV視角下的HD地圖構建!
4. 清華大學后續工作VectorMapNet
我們可以發現,HDMapNet的重點在于BEV空間下的特征提取。 但問題是,這個Pipeline仍然有點長了,有沒有更加端到端的方案?也就是說,直接輸入圖像和雷達,經過某個深度神經網絡,直接輸出HD地圖。為解決這個問題,清華大學MARS實驗室今年6月又開源了新的工作VectorMapNet。他們的思路是啥? (1) 需要找到一種更合適的圖形來表示HD地圖,MARS實驗室認為折線更有利于HD地圖的表達。此外,谷歌2020年的CVPR論文VectorNet: Encoding HD Maps and Agent Dynamics from Vectorized Representation也提出了這種用折線來表達HD地圖的方案,谷歌官方沒有開源,但Github上有Pytorch實現https://github.com/Henry1iu/TNT-Trajectory-Prediction,感興趣的小伙伴可以復現一下,但目前該網絡仍然需要非常大的顯存(128G+)。 (2) 之前的HDMapNet還是處理的分割問題,但如果將分割問題轉換為檢測問題,會更有利于矢量地圖的構建。 (3) 基于DETR進行開發有利于HD地圖的構建。
其實,VectorMapNet的網絡架構就是三個部分:投影、檢測、生成。投影就類似HDMapNet,將輸入的相機和雷達轉換到BEV視角,得到BEV特征圖。檢測就是提取HD地圖元素,具體來說就是基于Query來提取關鍵點,這里的關鍵點可以是車道線的起點、終點、中間點。這個檢測的思想其實非常巧妙,它沒有在中間過程就得到非常多的輸出點,而是選取了更簡潔更統一化的表示!生成就是指得到折線化矢量化的HD地圖,也是一個自回歸模型,具體思路也是基于Transformer回歸每個頂點坐標。 雖然整體來看架構有些復雜,但這個網絡是直接端到端的,有利于訓練和應用。筆者個人感覺,VectorMapNet的一個更有意思的點在于,它是一個端到端的多階段網絡。也就是說,網絡不再是一個完全的黑盒子。如果網絡的輸出結果出現漏檢/誤檢,那么我們可以打印出中間的關鍵點,看看具體是哪一個階段出現了問題。
結果顯示,VectorMapNet這種基于檢測的方案性能遠超HDMapNet。例如在人行橫道上的預測AP提升了幾乎32個點,在整體的mAP上也提升了22.7個點。
從定性結果也可以看出,VectorMapNet對于細節的把握是非常好的。HDMapNet和STSU經常出現漏檢,但VectorMapNet很少。在Ground Truth上的車道線有時會出現一些細小的波折,HDMapNet和STSU很難檢測出來,但VectorMapNet提取的HD地圖輪廓與真值更吻合。 說到這里,也肯定有小伙伴關心VectorMapNet端到端方案和HDMapNet后處理方案之間的優劣。可以發現的是,HDMapNet在進行一些后處理時,很容易將一條檢測線檢測為兩條,這主要是由于分割過程中對于車道線的分割結果過寬導致的。在實際使用中,這種將一條車道線檢測為兩條的結果會導致很嚴重的問題。這也說明了基于檢測的HD地圖方案要優于基于分割的HD地圖方案。
不僅如此,VectorMapNet更強大的地方在于,它甚至可以檢測出來未標注的車道線!從下圖可以看出,在原始的數據集中漏標了一條車道線,HDMapNet無法檢測出來,但VectorMapNet卻輸出了這一結果。
一句話總結:VectorMapNet基于檢測思路優化了HDMapNet!
5. MIT&上交&OmniML開源BEVFusion
這篇文章大家就都比較熟悉了, MIT韓松團隊開源的BEVFusion,文章題目是BEVFusion: Multi-Task Multi-Sensor Fusion with Unified Bird's-Eye View Representation。注意和NeurIPS 2022論文BEVFusion: A Simple and Robust LiDAR-Camera Fusion Framework要區分開。 單從網絡架構上來看,感覺和HDMapNet原理非常類似,都是先從相機、雷達輸入分別提取特征并投影到BEV空間,然后做BEV視角下的解碼,輸出結果不太相同,BEVFusion除了HD地圖外還輸出了3D目標檢測的結果。 這篇文章其實解答了困惑我很久的一個問題,就是為什么不先把圖像投影到雷達,或者雷達投影到圖像,然后再一起轉到BEV空間下,而是要分別提取特征再到BEV空間下進行特征融合。這是因為相機到激光雷達的投影丟掉了相機特征的語義密度,對于面向語義的任務(如三維場景分割)有非常大的影響。
感覺BEVFusion的主要創新點還是基于BEV池化提出了兩個效率優化方法:預計算與間歇降低。預計算:BEV池化的第一步是將攝像頭特征點云的每個點與BEV網格相關聯。與激光雷達點云不同,攝像頭特征點云的坐標是固定的。基于此,預計算每個點的3D坐標和BEV網格索引。還有根據網格索引對所有點進行排序,并記錄每個點排名。在推理過程中,只需要根據預計算的排序對所有特征點重排序。這種緩存機制可以將網格關聯的延遲從17ms減少到4ms。間歇降低: 網格關聯后,同一BEV網格的所有點將在張量表征中連續。BEV池化的下一步是通過一些對稱函數(例如,平均值、最大值和求和)聚合每個BEV網格內的特征。現有的實現方法首先計算所有點的前綴和,然后減去索引發生變化的邊界值。然而,前綴和操作,需要在GPU進行樹縮減(tree reduction),并生成許多未使用的部分和(因為只需要邊界值),這兩種操作都是低效的。為了加速特征聚合,BEVFusion里實現一個專門的GPU內核,直接在BEV網格并行化:為每個網格分配一個GPU線程,該線程計算其間歇和(interval sum)并將結果寫回。該內核消除輸出之間的依賴關系(因此不需要多級樹縮減),并避免將部分和寫入DRAM,從而將特征聚合的延遲從500ms減少到2ms。 通過優化的BEV池化,攝像頭到BEV的轉換速度提高了40倍:延遲從500ms減少到12ms(僅為模型端到端運行時間的10%),并且可以在不同的分特征辨率之間很好地擴展。
輸出結果也很漂亮:聯合實現了3D目標檢測和語義地圖構建。
一句話總結:BEVFusion大幅降低了計算量!
6. 蘇黎世聯邦理工開源SuperFusion
說實話,這項工作感覺非常驚艷! HDMapNet和VectorMapNet的指導老師趙行教授也表示過,現有的基于學習的HD地圖構建方案的主要問題在于,所構建的HD地圖仍然是短距離地圖,對于長距離表達還有一些不足。而SuperFusion這項工作就專門解決了這個長距離HD建模問題,它可以構建90m左右的HD地圖,而同年提出的HDMapNet建模長度也不過30m。 如下圖所示,紅色汽車代表汽車當前的位置,藍色星星代表目標。結果顯示,SuperFusion在生成短程(30 m)的HD語義地圖基礎上,預測高達90 m距離的遠程HD語義地圖。這給自動駕駛下游路徑規劃和控制模塊提供了更強平穩性和安全性。
SuperFusion整體的網絡結構是利用雷達和相機數據在多個層面的融合。在SuperFusion中體現了三種融合策略: 數據層融合:融合雷達的深度信息以提高圖像深度估計的精度。 特征層融合:使用交叉注意力進行遠距離的融合,在特征引導下進行BEV特征預測。 BEV級融合:對齊兩個分支,生成高質量的融合BEV特征。 最后,融合后的BEV特征可以支持不同的頭部,包括語義分割、實例嵌入和方向預測,進行后處理生成高清地圖預測。
定性和定量結果也表明,SuperFusion相較于其他HD語義地圖構建方案來說,性能提升很明顯,尤其是長距離建模。這種長距離建模能力使得SuperFusion更有利于自動駕駛下游任務。
一句話總結:SuperFusion實現了長距離HD語義地圖構建!
7. 結論
本文帶領讀者探討了自動駕駛任務中的HD語義地圖構建的主要問題,并介紹了4種主流的HD語義地圖構建方案,分別是清華大學開源的HDMapNet和VectorMapNet、MIT&上交開源的BEVFusion、蘇黎世聯邦理工&毫末&國防科大&阿爾托開源的SuperFusion。四種方案主要都是在nuScenes上進行評估的,其中HDMapNet和VectorMapNet主要解決的是如何端到端的實現HD地圖構建問題,BEVFusion主要解決的是計算效率問題,SuperFusion主要解決的是長距離HD地圖構建問題。四種方案的底層架構其實都是Transformer,這也說明了Transformer在多模態和CV領域的影響力越來越大了。其實,現有的HD語義地圖中表達的語義信息也都是像車道線、人行橫道線的這種低級語義。作者個人認為,在未來,HD語義地圖的發展趨勢是提取更高級別的語義,比如車輛識別到了一個正在橫穿馬路的行人,我們想知道的不僅僅是馬路上有個人,我們更想讓自動駕駛車輛理解的是,這個人的具體意圖是什么。
審核編輯:郭婷
-
激光雷達
+關注
關注
968文章
3969瀏覽量
189830 -
自動駕駛
+關注
關注
784文章
13786瀏覽量
166402
原文標題:高精度語義地圖構建的一點思考
文章出處:【微信號:3D視覺工坊,微信公眾號:3D視覺工坊】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論