實時局部建圖的深入思考 | MapTR繼往開來的18篇論文剖析!
本文經自動駕駛之心公眾號授權轉載,轉載請聯系出處。
實時局部建圖領域自從端到端方案MapTR(2023.1)[1]問世后已經又涌現出非常多優秀的工作,基本是在MapTR基本框架的基礎上進行一系列改進,包括原班人馬的升級作品MapTRv2(2023.8)[2].博主準備從MapTRv2開始至今(2024.5)發表的比較優秀的論文按時間順序做一個梳理,大概18篇,因為數量較多不具體介紹每個模塊,只按自己的理解概括最核心的創新點,在文章結尾會對18篇論文做一個簡要總結,希望對從事相關領域研究的同學和業內人士有所幫助.
[1] MapTR: Structured Modeling and Learning for Online Vectorized HD Map Construction
[2]MapTRv2: An End-to-End Framework for Online Vectorized HD Map Construction
1.BeMapNet(2023.6][3]
[3] End-to-End Vectorized HD-map Construction with Piecewise Bezier Curve
BeMapNet是在MapTR之后發表的,但沒有借鑒MapTR架構,而是在基于圖像分割+復雜后處理得到向量化地圖元素的模型,如HDMapNet[4] 的基礎上,首次提出使用分段的貝塞爾曲線來表征地圖元素,實現端到端的目的.關于貝塞爾曲線可參考這篇博客:啟思:從零開始學圖形學:10分鐘看懂貝塞爾曲線(https://zhuanlan.zhihu.com/p/344934774).
BeMapNet架構
為了能更加準確且高效地表示形狀復雜多變的地圖元素,論文中使用分段的貝塞爾曲線,并且使用固定的階數和可變的分段數.由Bezier Decoder輸出實例級的貝塞爾曲線特征,再由Piecewise Bezier Output Head輸出point級的貝塞爾曲線控制點序列.文中還使用IPM-PE Align Layer為bev feature提供IPM投影的幾何先驗信息.
2.MapTRv2(2023.8)[2]
是MapTR的提升版,文中總結的第一個創新點是置換等價(permutation-equivalent)建模方法,也就是對gt建立多個按不同順序排列的點集副本,目的是消除排列順序的影響,然后用分層二分匹配(Hierarchical bipartite matching)的方式與query的預測結果做匹配,匹配的標準是與距離最近的一種排列的gt的距離,有點繞,因為在原版MapTR已經用到,不過多介紹.
第二個創新點是MapTRv2的核心,是對decoder的self-attention和cross-attention都做出了改進.對self-attention的改進是使用分層query embedding的方案代替之前的全量query embedding,就是建立實例級的instance query 和關鍵點級的point query兩個集合,分別在集合內部做self-attention,再用廣播相加的方式代表全量的query集合,這種共享權重的方式不僅能為每個point賦予對應的instance信息,還能極大地減少計算量,在精度和性能上都有很大提升.對cross-attention的改進主要是混合了BEV-based和PV-based cross-attention,充分利用BEV和PV信息.下圖可以直觀展示這種設計:
MapTRv2 的Map decoder結構
還有一個創新是結合了one-to-one和one-to-many匹配.one-to-one自不必說,one-to-many是另外設計了一組instance query,與復制了K次的gt進行匹配,這樣可以增加正樣本的匹配成功概率,加快模型的收斂.
3.StreamMapNet(2023.8)[4]
[4]StreamMapNet: Streaming Mapping Network for Vectorized Online HD Map Construction
StreamMapNet主要在時序方面對MapTR進行了提升.核心策略是近期出現的streaming strategy,在去年發布的VideoBEV [5],StreamPETR [6], Sparse4D v2 [7]等論文都有應用,不同于傳統的單iteration迭代多幀或者stacking多幀的方式,streaming strategy單iteration只迭代一幀,在iteration之間做時序融合,可以實現時序模型的訓練時長與單幀模型相當,且能融合長時序數據,大幅提升了訓練效率.在StreamMapNet的時序融合中,使用了稠密bev feature和稀疏query同時融合的方式,bev feature采用Gated Recurrent Unit [8] (GRU)模塊進行融合,稀疏query采用和Sparse4D v2類似的方式,按置信度取top k個query迭代到下一幀,與下一幀新初始化的query進行合并,再用一個transformation loss進行約束.
Stacking 和 Streaming 策略對比
[5]Exploring recurrent long-term temporal fusion for multi-view 3d perception
[6] Exploring object-centric temporal modeling for efficient multi-view 3d object detection
[7] Sparse4d v2: Recurrent temporal fusion with sparse model
[8] Empirical evaluation of gated recurrent neural networks on sequence modeling
文中還使用了Multi-Point Attention代替原始deformable DETR的cross-attention設計,參照MapTRv2, 本質上是只使用了instance query,沒有point query,一個instance query負責預測多個點,生成多個reference points,而不是原始deformable DETR中一個query預測一個點,生成一個reference points,加多個offset.這樣是為了適應地圖元素的non-local特性.我認為本質上與區分instance query和point query差不多.
Multi-Point Attention
4. InsightMapper(2023.8)[9]
[9] InsightMapper: A closer look at inner-instance information for vectorized high-definition mapping
InsightMapper也是在MapTR基礎上做出一些改進.第一是細化了地圖元素預處理,如下圖所示,將原Polyline的復雜形狀都在交點切分成多個簡單形狀,降低模型學習難度.
地圖元素預處理
第二是提出MapTR的分層query embedding的設計有一個問題是instance之間共享了point query的權重,導致不同instance的points錯誤地有了一定的關聯性.所以文中沒有設定共享point query權重,而是對每個instance設置不同的point query,稱為Hybrid query, 消除這種錯誤的關聯.在做self-attention進行instance內部信息交互的時候設計一個attention-mask,讓屬于不同的instance的point query之間不可見,只在instance內部進行交互.
Hierarchical query和Hybrid query對比
5. MapPrior(2023.8)[10]
[10] MapPrior: Bird's-Eye View Map Layout Estimation with Generative Models
MapPrior是一種結合感知和先驗的地圖模型,先驗用的是預訓練生成模型,整體結構如下:因為對生成模型了解不是很深,就不具體介紹了.
MapPrior架構
6.PivotNet(2023.9)[11]
[11] PivotNet: Vectorized Pivot Learning for End-to-end HD Map Construction.
PivotNet針對MapTR使用固定數量且地位一致的點表征復雜地圖元素會引起形狀信息損失的問題,提出了用關鍵點(pivot)和共線點(collinear point)表征地圖元素的端到端框架.關鍵點即對元素形狀產生決定性影響的點,如下圖所示.
Pivotnet架構
首先在query的設定上并沒有采用分級的架構,而是只有point query,在Line-aware Point Decoder模塊中,由最多N個point query concate起來經過MLP得到Line feature,再與BEV feature相乘得到一個可學習的Line-aware mask,通過與BEV 語義分割的真值做bce loss和dice loss進行約束,得到query與instance的關系.
最關鍵的部分在于關鍵點預測和匹配模塊,不同于MapTR同樣數量的dt和gt做一對一匹配,這里先計算出一個實例的gt的T個關鍵點,T是動態變化的,然后在N個dt里找到最優的T個組合,即為dt的關鍵點,剩下即為共線點,都是帶有順序的.為了提高效率,文中還使用了一些優化措施.匹配結束后,利用對關鍵點和共線點不同的約束條件進行約束.實驗證明Pivotnet比起MapTR能夠更好地預測元素的形狀和角度.
7.MapVR(2023.10)[12]
[12] Online Map Vectorization for Autonomous Driving: A Rasterization Perspective
MapVR(Map Vectorization via Rasterization)通過一個額外的可微柵格化模塊來學習更好的向量化地圖,架構如下:
MapVR架構
文中提出,類似MapTR的向量化地圖模型的問題是使用Chamfer distance做gt和dt的匹配存在兩個缺陷,一是沒有尺度不變性,即對于大尺度和小尺度地圖元素采用一樣的標準不合理,二是這種方式忽略了形狀和幾何特性,會得出不合理的結果,圖示如下:
Chamfer Distance匹配的問題
而如果使用柵格化地圖,就可以以mIOU為標準,匹配更加準確,如下圖所示:
mIOU匹配
文中首次使用近期相關研究中提出的一種無參數的可微分的柵格化[11]來作為向量化地圖和柵格化地圖的橋梁.在訓練階段可以更準確地實現gt和dt的匹配,使loss計算更加準確,幫助模型收斂,在推理階段可以移除這個模塊,輸出更好的向量化地圖.
[13] Soft rasterizer: A differentiable renderer for image-based 3d reasoning
8.MapEX(2023.11)[14]
[14] Mind the map! Accounting for existing map information when estimating online HDMaps from sensor data
在實際工程應用中,往往還不能完全拋棄傳統高精地圖,但傳統高精地圖有著生成周期長,更新慢的缺點,MapEX就是利用已有的未更新的先驗地圖數據,結合傳感器實時感知,給出一個實時的地圖結果,是一個非常有實際工程價值的模型,比起只使用傳感器輸入有質的提升.
MapEX架構
如果是在工程中存在發生變化的真實地圖數據,那可以直接作為輸入的EX-GT(Existing map GT),如果使用開源數據集不存在發生變化的場景,文中做了一些場景模擬,來模擬地圖的變化,如元素缺失,元素加噪,元素徹底變化等等,隨機對GT做一些處理后作為輸入的EX-GT.
MapEX的模擬場景
MapEX的框架也是建立在MapTR框架的基礎上,將decoder原來使用的初始化query的一部分替換為從EX-GT的位置和類別編碼而來的EX-query,編碼的方式如下圖所示:
Ex query編碼
然后在匹配過程中并不是直接使用匈牙利匹配,而是對EX-query做一個預匹配,即對與真實GT實例的所有點的平均距離小于1m的EX-query直接匹配為對應的GT,剩下的query再進行匈牙利匹配,降低模型學習的難度.這樣就可以充分利用已有地圖數據的先驗信息,得到更加準確的實時輸出.
另外MapEX還有一個地圖變化檢測模塊,即使用一個獨立的change detection query,與decoder每一層的全部query做cross-attention,融合所有query的信息,最后回歸出地圖變化的置信度.
9.GeMap(2023.12)[15]
[15] Online Vectorized HD Map Construction using Geometry
GeMap也是利用幾何先驗對地圖元素進行約束的模型.對比BeMapnet,PivotNet等模型,大多基于絕對坐標,不具備旋轉平移不變性,且沒有考慮到實例之間的相關性,如車道線之間一般平行,且距離與車道寬度有關,車道線與路口一般垂直等.GeMap基于實例的位移矢量(displacement vectors),從它自身的形狀線索和不同位移矢量之間的相關性線索對輸出實例和點集進行約束,能夠更加準確地利用地圖元素的幾何特征.
GEMap框架
具體是通過Geometry-Decoupled Attention和Euclidean loss實現的.前者設計了兩個解耦的attention模塊,通過不同的attention-mask,一個關注于實例內部的形狀信息,一個關注于實例之間的相關性信息.后者是分別對形狀和相關性進行約束,公式如下(實際操作中使用了優化效率的策略),另外也使用了segmentation, depth, dorection 和pts loss.
Euclidean Loss
10. ScalableMap(2024.1)[16]
[16] ScalableMap: Scalable Map Learning for OnlineLong-Range Vectorized HD Map Construction ScalableMap
ScalableMap使用一種類似于縮放的方式來更好地還原出地圖元素的結構化信息,實現長距離場景的性能提升,在整個架構上都做出了一些改進.
ScalableMap架構
首先是BEV特征提取部分,第一步是分為兩個分支,一個通過DETR架構得到類似BEVFormer的position-aware的全局BEV特征, 另一個利用MLP得到的基于每個視角的instance-aware的k個BEV特征,多視角BEV特征再通過線性層融合成為統一的BEV特征.第二步是兩個BEV特征經過Structure-Guided 特征融合模塊,并加入一個額外的分割頭,對兩個BEV特征分別進行矯正和融合,使其同時具備準確的位置和形狀信息.
其次是使用漸進的Decoder來實現多尺度的地圖表示和監督,核心是HSMR策略,即定義地圖密度為地圖元素中曲率超過閾值的頂點數量, 獲得漸進的不同密度的地圖元素表示.在gt中,對頂點過多的元素進行采樣,對頂點較少的元素進行插值,可以獲得不同密度的gt; 在Decoder每層的query設定中,采用動態插入的方法,即利用相鄰頂點之間的位置約束生成新的query,動態地插入到原始query序列中,以此獲得不同密度的query序列.
在loss約束上也使用漸進的loss約束,一是Vertex loss, 分別對原始頂點和新加入的頂點進行約束,前者使用L1 loss,后者使用頂點到所屬邊的距離,二是Edge Loss對形狀進行約束.
11.mapNeXt(2024.1)[17]
[17] MapNeXt: Revisiting Training and Scaling Practices for Online Vectorized HD Map Construction
mapNeXt是從實際工程的角度對mapTR進行優化.首先通過分析mapTR對gt的置換等價處理,即對每個gt增加所有可能的排列再進行匈牙利匹配,發現如果使用無序的Chamfer Distance作為距離代價,可以忽略置換等價帶來的影響.作者通過增加decoder中query的組數,采用并行的方式進行一對一的匈牙利匹配,得到了較好的效果,且不影響推理效率.另外沒有采用隱式的位置編碼,而使用顯式的無參數的sin位置編碼提供位置先驗可以提升效率.
在模型遷移和縮放方面,分析了各種預訓練模型的性能,由于decoder增加了更多的query,選擇使用更強的VoVNetV2 backbone+FFN并做了規模擴展的適配,而且在使用PETRv2的nuScenes BEV地圖分割任務上預訓練,實現更好的模型遷移.
12.Stream Query Denoising(SQD)(2024.1)[18]
[18] Stream Query Denoising for Vectorized HD Map Construction
Stream Qurty Denoising(SQD)是在StreamMapNet[4]的基礎上進一步結合了去噪的思想,幫助模型更好的收斂.去噪的思想由DN-DETR[19]等一系列論文啟發,是通過對gt加噪聲構建denoise query,直接綁定對應的gt而不需要匈牙利匹配,使transformer減少被匈牙利匹配不穩定的特性所影響,實現更快的收斂.
[19] Dn-detr: Accelerate detr training by introducing query denoising.
SQD架構
SQD整個架構與StreamMapNet類似,通過stream的方式實現時序融合,包括bev feature的融合和top k query的融合,這里前序幀query對應的gt,以及前序幀的bev feature都根據ego-motion進行了轉換.
SQD核心改進在于Denoising模塊,和DN-DETR不同的是SQD是對前序幀的gt進行加噪.首先針對curve的特性,采取和bbox不同的加噪方式: line shifting, angular rotation, 和scale transformation,再編碼成位置嵌入,構造noise query,和當前幀的query以及前序幀的top k query進行拼接,一起輸入decoder.
進一步地,文中考慮到前一幀gt轉換到當前幀后可能帶來的偏差,如新增,缺失,位置偏差等,設計了Adaptive Temporal Matching和Dynamic Query Noising模塊作為補充和增強.前者計算了前序幀經過時序轉換以后和當前幀的Chamfer Distance,只把小于閾值的gt用來與當前幀的query做匹配.后者在對前序幀加噪的過程中設計了decay rate,結合實例的變化尺度進行有針對性的加噪.
13.ADMap(2024.1)[20]
[20] ADMap: Anti-disturbance framework for reconstructing online vectorized HD
ADMap架構
ADMap提出由于MapTR預測的點會發生抖動和移位,導致預測的實例會變得扭曲和鋸齒狀.為了提高模型的抗干擾能力,在MapTR的基礎上對網絡和Loss做出一些改進,主要有三個部分:Multi-Scale Perception Neck (MPN), Instance Interactive Attention (IIA) and Vector Direction Difference Loss(VDDL).
MPN類似于FPN,將bev feature通過下采樣和上采樣得到不同尺度的bev 特征,便于decoder能得到多尺度的信息.
IIA首先在分級query(instance query 和point query)設計的基礎上,改變了MapTR中instance query的生成方式:通過point query的維度轉換和多層MLP學習而來,先經過Instance-self-attention進行實例之間的信息交互,再與point query相加,經過Points-self-attention學習實例內部的點之間的信息交互.
VDDL則設計了帶權重的向量方向損失,來進一步約束實例向量的形狀和方向.方向損失由逐點與gt的夾角余弦獲得,權重取決于gt的方向變化,即對方向變化劇烈的實例給予更大的權重.
14.MapQR(2024.2)[21]
MapQR致力于在MapTR的基礎上進一步挖掘查詢機制(query)的潛力,只使用instance query,共享同一地圖中的內容信息,避免使用points query發生同一地圖元素的信息不一致性,同時可以減少計算量.
MapTR和MapQR的Decoder對比
作者稱這種實例查詢機制為Scatter-and-Gather Query,首先定義N個Instance query,經過self-attention后通過Scatter操作每個擴展為n個副本,根據不同的n個reference points生成不同的Positional Embedding,再concate后輸入cross-attention,最后將輸出的query通過Gather操作恢復為instance query,每個query負責預測n個點.另外,在reference points的設計上,MapQR考慮了不同高度的影響.
15.EAN-MapNet(2024.2)[22]
[22] EAN-MapNet: Efficient Vectorized HD Map Construction with Anchor Neighborhoods
EAN-MapNet架構
EAN-MapNet提出,建圖模型一般使用DETR decoder,這種query構建機制缺少對地圖元素臨近的局部位置特征的關注,所以參照anchor思想,在BEV空間初始化多組anchors,每個anchor設計了查詢單元(query units)機制,由neighborhood central query和non-neighborhood central query構成,同樣GT除了target points, 也在半徑為r的區域增加gt neighborhoods,neighborhood central query與target points相匹配,non-neighborhood central query與gt neighborhoods中的隨機點相匹配.
文中還設計了Grouped local self-attention(GL-SA)模塊適應這種query機制,分為局部特征提取,組間特征交互,組內特征交互三步,以更好地利用局部特征.損失函數方面也同時考慮了center和none-center區域的損失.
16.HIMap(2024.3)[23]
[23] HIMap: HybrId Representation Learning for End-to-end Vectorized HD Map Construction
HIMap架構
HIMAP也是在query機制和decoder設計上對MapTR進行改進,使模型能夠更好地學到實例級的特征.首先設計了混合的HIQuery,包含E個element query和E* P個point query,再把兩種query分別輸入element特征提取器(參照Masked Attention[24])和point特征提取器(參照DAB-DETR[25]),point query屬于一個實例的positional embedding的加權和作為element query的positional embedding.更新好的point query和elementquery會輸入point-element hybrider進行信息融合,具體方式是屬于同一個實例的point query會與對應的element query相加,然后每個element query會與對應的所有point query的加權和相加,這樣point query 和element query都同時擁有了點的信息和實例信息,再作為新的HIMAP輸入下一層decoder.
[24] Masked-attention mask transformer for universal image segmentation.
[25] Dab-detr: Dynamic anchor boxes are better queries for detr.
為了保證point query和element query的一致性,作者做了一致性約束,即計算point query的加權和與對應的element query的交叉熵加到總loss中.
17.MapTracker(2024.3)[26]
[26] MapTracker: Tracking with Strided Memory Fusion for Consistent Vector HD Mapping
MapTracker架構
MapTracker是用跟蹤的方式更好地進行時序增強,從而使建圖更加準確和一致性,魯棒記憶機制是核心.文中借鑒MOTR[27]的端到端目標跟蹤思想,一共用到兩種記憶機制,一是BEV feature的記憶,會從前面10幀中選取更接近1m/5m/10m/15m的4幀,經過ego-motion轉換后用兩層卷積層融合.二是Vector記憶,每幀由100個新初始化的vector和若干歷史幀保存的預測score超過閾值的positive vector經過時空變換和MLP拼接而成,對應于同一個地圖元素的歷史vector會被融合.
[27] MOTR: End-to-End Multiple-Object Tracking with Transformer
訓練過程中同時考慮BEV loss,VEC loss和Transformation loss,同時對BEV特征,地圖元素匹配和跟蹤,時序融合的一致性進行約束.采用增強每幀的幾何特性,前后兩幀之間建立匹配關聯的方式提高gt的一致性,并采用帶有一致性信息的mAP做為評測標準.文中沒有具體說推理機制,應該與訓練機制一致.
18.P-MapNet(2024.3)[28]
[28] P-MapNet: Far-seeing Map Generator Enhanced by both SDMap and HDMap Priors
P-MapNet是除MapEX[14]外另一種結合已有地圖先驗來輔助當前建圖的方式,與MapEX采用直接替換query不同,P-MapNet主要使用cross-attention和MAE[29] finetune的方式來融合二者信息.
[29] Masked autoencoders are scalable vision learners.
P-MapNet架構
文中同時利用了比較粗的SDMap和比較精細的HDMap先驗進行信息融合.首先是SDMap融合模塊.SDMap信息可以從GPS獲取,經過CNN網絡得到SDMap特征,與傳感器(包括camera/lidar)融合和視角轉換得到的BEV feature(經過下采樣)通過cross attention進行融合,再接一個segmentation head得到一個較粗的分割地圖.
然后是HDMap融合模塊.這里首先有一個MAE預訓練步驟,與原生的MAE不同,這里的預訓練是輸入帶有mask的柵格地圖原始image,再通過一個segmentation head輸出語義分割地圖,與原生MAE的作用相同,都是作為一個具有較強恢復能力的autoencoder,結構大體是VIT+segmentation head.預訓練結束后,將SDMap和傳感器融合的segmentaion結果輸入MAE,得到refine的segmention結果.
看到這大家可能有點confused, 最后對上面18個模型做個簡短的總結:
使用地圖元素的幾何特性進行約束: BeMapNet, PivotNet, GeMap, ADMap
對MapTR 的query機制進行改進: MapTRv2, StreamMapNet, InsightMapper, ADMap, MapQR, EAN-MapNet, HIMap
時序優化: StreamMapNet, SQD(加去噪), MapTracker(跟蹤)
使用先驗信息: MapPrior, MapEX, P-MapNet
其他: MapVR(柵格化輔助), mapNeXt(工程優化)