重新定義端到端自動駕駛!SparseDrive:所有任務(wù)都超過現(xiàn)有SOTA
本文經(jīng)自動駕駛之心公眾號授權(quán)轉(zhuǎn)載,轉(zhuǎn)載請聯(lián)系出處。
論文鏈接:https://arxiv.org/pdf/2405.19620
github鏈接: https://github.com/swc-17/SparseDrive
寫在前面 & 筆者理解
不得不說,地平線真的很喜歡在在sparse上做文章!之前開源的3D目標(biāo)檢測工作"Sparse4D",無論是性能還是部署端的友好程度,都在業(yè)內(nèi)不小的反響。這篇論文,地平線又通過稀疏的場景表達(dá),實現(xiàn)端到端的自動駕駛,達(dá)到 SOTA。命名為"SparseDrive"!
在端到端火熱起來之前,成熟的模塊化自動駕駛系統(tǒng)被分解為不同的獨立任務(wù),例如感知、預(yù)測和規(guī)劃,從而導(dǎo)致模塊間信息丟失和錯誤累積。相比之下,端到端范式將多任務(wù)統(tǒng)一到一個完全可微分的框架中,從而允許以規(guī)劃為導(dǎo)向進(jìn)行優(yōu)化。盡管端到端范式具有巨大潛力,但現(xiàn)有方法的性能和效率都不令人滿意,特別是在規(guī)劃安全方面。作者將其歸因于計算成本高昂的 BEV 特征以及較為簡單的預(yù)測和規(guī)劃設(shè)計。為此,作者探索了稀疏表示并回顧了端到端自動駕駛的任務(wù)設(shè)計,提出了一個名為 SparseDrive 的新范式。具體點說,SparseDrive 由對稱稀疏感知模塊和并行運動規(guī)劃器組成。稀疏感知模塊將檢測、跟蹤和在線建圖與對稱模型架構(gòu)統(tǒng)一起來,學(xué)習(xí)駕駛場景的完全稀疏表示。對于運動預(yù)測和規(guī)劃,我們發(fā)現(xiàn)這兩個任務(wù)之間的巨大相似性,從而為運動規(guī)劃器提出了一個并行設(shè)計?;谶@種將規(guī)劃建模為多模態(tài)問題的并行設(shè)計,作者提出了一種分層規(guī)劃選擇策略,該策略結(jié)合了碰撞感知重新評分模塊,以選擇合理且安全的軌跡作為最終規(guī)劃輸出。憑借這種有效的設(shè)計,SparseDrive 在所有任務(wù)的性能上都實現(xiàn) SOTA,同時實現(xiàn)了更高的訓(xùn)練和推理效率。
為什么要做?
為了充分利用端到端范式的潛力,作者回顧了現(xiàn)有方法的任務(wù)設(shè)計,并認(rèn)為運動預(yù)測和規(guī)劃之間有三個主要相似之處被忽略了:
- 為了預(yù)測周圍智能體和自車的未來軌跡,運動預(yù)測和規(guī)劃都應(yīng)考慮道路智能體之間的高階和雙向交互。然而,以前的方法通常采用順序設(shè)計進(jìn)行運動預(yù)測和規(guī)劃,忽略了自車對周圍智能體的影響。
- 準(zhǔn)確預(yù)測未來軌跡需要語義信息來理解場景,幾何信息來預(yù)測智能體的未來運動,這適用于運動預(yù)測和規(guī)劃。雖然這些信息是在周圍智能體的上游感知任務(wù)中提取的,但對于自車卻被忽略了。
- 運動預(yù)測和規(guī)劃都是具有內(nèi)在不確定性的多模態(tài)問題,但以前的方法只預(yù)測規(guī)劃的確定性軌跡。為此,我們提出了 SparseDrive,一種以稀疏為中心的范例,
如上圖所示,SparseDrive 由對稱稀疏感知模塊和并行運動規(guī)劃器組成。利用解耦的實例特征和幾何錨點作為一個實例(動態(tài)道路智能體或靜態(tài)地圖元素)的完整表示,對稱稀疏感知將檢測、跟蹤和在線地圖任務(wù)與對稱模型架構(gòu)統(tǒng)一起來,學(xué)習(xí)完全稀疏的場景表示。在并行運動規(guī)劃器中,首先從自我實例初始化模塊獲得語義和幾何感知的自我實例。利用來自稀疏感知的自我實例和周圍智能體實例,同時進(jìn)行運動預(yù)測和規(guī)劃,以獲得所有道路智能體的多模態(tài)軌跡。為了確保規(guī)劃的合理性和安全性,采用了結(jié)合碰撞感知重新評分模塊的分層規(guī)劃選擇策略,從多模態(tài)軌跡提案中選擇最終的規(guī)劃軌跡。
通過上述有效的設(shè)計,SparseDrive 發(fā)揮了端到端自動駕駛的巨大潛力,如上圖c 所示。我們的基礎(chǔ)模型 SparseDrive-B 無需任何花哨的手段,就能將平均 L2 誤差降低 19.4%,并將碰撞率降低到 71.4%。與之前的 SOTA(最先進(jìn))方法 UniAD 相比,我們的小型模型 SparseDrive-S 在所有任務(wù)中都取得了優(yōu)異的性能,同時訓(xùn)練速度提高了 7.2 倍,推理速度提高了 5.0 倍。
工作的主要貢獻(xiàn)總結(jié)如下:
- 我們探索了端到端自動駕駛的稀疏場景表示,并提出了一種以稀疏為中心的范式 SparseDrive,它將多個任務(wù)與稀疏實例表示統(tǒng)一起來。
- 我們修改了運動預(yù)測和規(guī)劃之間的巨大相似性,相應(yīng)地帶來了運動規(guī)劃器的并行設(shè)計。我們進(jìn)一步提出了一種分層規(guī)劃選擇策略,其中包含一個碰撞感知重新評分模塊,以提高規(guī)劃性能。
- 在具有 nuScenes 數(shù)據(jù)集上,SparseDrive 在所有指標(biāo)方面都超越了之前的 SOTA 方法,尤其是安全關(guān)鍵指標(biāo)碰撞率,同時保持了更高的訓(xùn)練和推理效率。
相關(guān)工作
多視角3D檢測(Multi-view 3D Detection)
多視角 3D 檢測是自動駕駛系統(tǒng)安全的先決條件。LSS 利用深度估計將圖像特征提升到 3D 空間,并將特征分層到 BEV 平面。后續(xù)工作將 lift-splat 操作應(yīng)用于 3D 檢測領(lǐng)域,在準(zhǔn)確率和效率方面取得了顯著提升。一些工作預(yù)定義了一組 BEV 查詢并將其投影到透視視圖以進(jìn)行特征采樣。另一條研究路線消除了對密集 BEV 特征的依賴。PETR 系列引入了 3D 位置編碼和全局注意力來隱式學(xué)習(xí)視圖變換。Sparse4D 系列在 3D 空間中設(shè)置顯式錨點,將它們投影到圖像視圖以聚合局部特征并以迭代方式細(xì)化錨點。
端到端跟蹤(End-to-End Tracking)
大多數(shù)多目標(biāo)跟蹤 (MOT) 方法采用基于檢測的跟蹤方式,這種方式依賴于數(shù)據(jù)關(guān)聯(lián)等后處理。這種流程無法充分利用神經(jīng)網(wǎng)絡(luò)的功能。一些工作引入了軌跡查詢,以流式方式對跟蹤實例進(jìn)行建模。MOTR 提出了軌跡感知標(biāo)簽分配,這迫使軌跡查詢不斷檢測相同的目標(biāo),并遭受檢測和關(guān)聯(lián)之間的沖突。Sparse4Dv3 證明時間傳播的實例已經(jīng)具有一致性,并通過簡單的 ID 分配過程實現(xiàn)了 SOTA 跟蹤性能。
在線建圖(Online Mapping)
由于高清地圖構(gòu)建成本高昂且耗費大量人力,在線建圖被提出作為高清地圖的替代方案。HDMapNet將 BEV 語義分割與后處理相結(jié)合,以獲得矢量化地圖實例。VectorMapNet 利用兩階段自回歸變換器進(jìn)行在線地圖構(gòu)建。MapTR 將地圖元素建模為等價排列的點集,避免了地圖元素定義的歧義。BeMapNet 采用分段貝塞爾曲線來描述地圖元素的細(xì)節(jié)。StreamMapNet 引入了 BEV 融合和查詢傳播進(jìn)行時間建模。
端到端運動預(yù)測(End-to-End Motion Prediction)
端到端運動預(yù)測的提出是為了避免傳統(tǒng)流程中的級聯(lián)誤差。FaF 采用單個卷積網(wǎng)絡(luò)來預(yù)測當(dāng)前和未來的邊界框。IntentNet 更進(jìn)一步,推理高級行為和長期軌跡。PnPNet引入了一個在線跟蹤模塊來聚合軌跡級特征以進(jìn)行運動預(yù)測。ViP3D 使用智能體查詢執(zhí)行跟蹤和預(yù)測,以圖像和高清地圖作為輸入。PIP 用局部矢量化地圖取代了人工注釋的高清地圖。
端到端規(guī)劃(End-to-End Planning)
端到端規(guī)劃的研究自上個世紀(jì)以來一直在進(jìn)行。早期的論文省略了感知和運動預(yù)測等中間任務(wù),這些任務(wù)缺乏可解釋性并且難以優(yōu)化。一些研究從感知或預(yù)測結(jié)果中構(gòu)建顯式損失圖以增強可解釋性,但依靠手工制作的規(guī)則來選擇損失最低的最佳軌跡。最近,UniAD 提出了一種統(tǒng)一的查詢設(shè)計,將各種任務(wù)集成到一個面向目標(biāo)的模型中,在感知、預(yù)測和規(guī)劃方面取得了顯著的表現(xiàn)。VAD 采用矢量化表示進(jìn)行場景學(xué)習(xí)和規(guī)劃約束。GraphAD 利用圖模型進(jìn)行交通場景中的復(fù)雜交互。FusionAD 將端到端駕駛擴展到多傳感器輸入。然而,以前的方法主要側(cè)重于場景學(xué)習(xí),并采用簡單的預(yù)測和規(guī)劃設(shè)計,沒有充分考慮這兩個任務(wù)之間的相似性,極大地限制了性能。
具體怎么做?
模型概述
SparseDrive 的整體框架如圖所示。具體來看,是由三部分組成:圖像編碼器、對稱稀疏感知和并行運動規(guī)劃器。給定多視圖圖像,圖像編碼器(包括主干網(wǎng)絡(luò)和頸部)首先將圖像編碼為多視圖多尺度特征圖 ,其中 S 是尺度數(shù),N 是攝像機視圖數(shù)。在對稱稀疏感知模塊中,特征圖 被聚合成兩組實例,來學(xué)習(xí)駕駛場景的稀疏表示。這兩組實例分別代表周圍的智能體和地圖元素,被輸入到并行運動規(guī)劃器中,與初始化的自我實例進(jìn)行交互。運動規(guī)劃器同時預(yù)測周圍智能體和自身車輛的多模態(tài)軌跡,并通過分層規(guī)劃選擇策略選擇一條安全軌跡作為最終規(guī)劃結(jié)果。
對稱稀疏感知(Symmetric Sparse Perception)
稀疏感知模塊的模型結(jié)構(gòu)表現(xiàn)出結(jié)構(gòu)對稱性,將檢測、跟蹤和在線建圖統(tǒng)一在一起。
Sparse Detection:周圍智能體由一組實例特征 和錨框 表示,其中是錨點數(shù),C是特征通道維度。每個錨框都格式化為位置、尺寸、偏航角和速度:
稀疏檢測分支由 解碼器組成,包括一個非時間解碼器和 個時間解碼器。每個解碼器以特征圖 、實例特征 和錨框 作為輸入,輸出更新的實例特征和細(xì)化錨框。非時間解碼器以隨機初始化的實例作為輸入,而時間解碼器的輸入來自當(dāng)前幀和歷史幀。具體而言,非時間解碼器包括三個子模塊:可變形聚合、前饋網(wǎng)絡(luò) (FFN) 和用于細(xì)化和分類的輸出層。可變形聚合模塊在錨框 周圍生成固定或可學(xué)習(xí)的關(guān)鍵點,并將它們投影到特征圖 進(jìn)行特征采樣。實例特征 通過與采樣特征求和來更新,并負(fù)責(zé)預(yù)測輸出層中錨框的分類分?jǐn)?shù)和偏移量。時間解碼器有兩個額外的多頭注意層:上一幀的時間實例與當(dāng)前實例之間的時間交叉注意,以及當(dāng)前實例之間的自注意。在多頭注意層中, 錨框被轉(zhuǎn)化為高維錨嵌入 , 作為位置編碼。
Sparse Online Mapping:在線建圖分支與檢測分支共享相同的模型結(jié)構(gòu),只是實例定義不同。對于靜態(tài)地圖元素,錨點被表示為具有 個點的折線:
然后,所有地圖元素都可以用地圖實例特征 和錨點折線 表示,其中 是錨點折線的數(shù)量。
Sparse Tracking。對于跟蹤,我們遵循 Sparse4Dv3 的 ID 分配過程:一旦實例的檢測置信度超過閾值 ,它就會鎖定到目標(biāo)上并分配一個 ID,該 ID 在整個時間傳播過程中保持不變。這種跟蹤策略不需要任何跟蹤約束,從而為稀疏感知模塊提供了優(yōu)雅而簡單的對稱設(shè)計。
并行運動規(guī)劃器(Parallel Motion Planner)
如圖 4 所示,平行運動規(guī)劃器由三部分組成:自我實例初始化、時空交互和分層規(guī)劃選擇。
Ego Instance Initialization: 與周圍智能體類似,自車由自我實例特征 和自我錨框 表示。雖然自我特征在以前的方法中通常是隨機初始化的,但我們認(rèn)為自我特征也需要豐富的語義和幾何信息來進(jìn)行規(guī)劃,類似于運動預(yù)測。然而,周圍智能體的實例特征是從圖像特征圖 中聚合出來的,這對于自車來說是不可行的,因為自車處于攝像頭的盲區(qū)中。因此,我們使用前置攝像頭的最小特征圖來初始化自我實例特征:
這樣做有兩個優(yōu)點:
- 最小特征圖已經(jīng)編碼了駕駛場景的語義上下文
- 密集特征圖作為稀疏場景表示的補充,以防存在一些黑名單障礙物,而稀疏感知無法檢測到這些障礙物。
對于自我錨點 ,可以自然地設(shè)置位置、尺寸和偏航角,因為我們知道自車的這些信息。對于速度,直接從地面真實速度初始化會導(dǎo)致自我狀態(tài)泄漏。因此,我們添加了一個輔助任務(wù)來解碼當(dāng)前的自我狀態(tài) ,包括速度、加速度、角速度和轉(zhuǎn)向角。在每一幀,我們使用上一幀的預(yù)測速度作為自我錨點速度的初始化。
Spatial-Temporal Interactions: 為了考慮所有道路智能體之間的高級交互,我們將自我實例與周圍智能體連接起來以獲得智能體級實例:
由于自我實例的初始化沒有時間線索,這對于規(guī)劃很重要,我們設(shè)計了一個大小為 的實例內(nèi)存隊列用于時間建模, 是存儲幀的數(shù)量。然后執(zhí)行三種類型的交互來聚合時空上下文:智能體時間交叉注意、智能體智能體自注意和智能體地圖交叉注意。在稀疏感知模塊的時間交叉注意中,當(dāng)前幀的實例與所有時間實例交互,我們將其稱為場景級交互。而對于這里的智能體時間交叉注意,我們采用實例級交互,使每個實例關(guān)注自身的歷史信息。
然后,我們預(yù)測周圍智能體和自車的多模態(tài)軌跡 和得分 , 和 是運動預(yù)測和規(guī)劃的模式數(shù), 和 是運動預(yù)測和規(guī)劃的未來時間戳數(shù), 是規(guī)劃的駕駛命令數(shù)。我們使用三種駕駛命令:左轉(zhuǎn)、右轉(zhuǎn)和直行。對于規(guī)劃,我們還從自我實例特征中預(yù)測當(dāng)前的自我狀態(tài)。
Hierarchical Planning Selection?,F(xiàn)在我們有了多模態(tài)規(guī)劃軌跡方案,為了選擇一個安全的軌跡,我們設(shè)計了一個分層規(guī)劃選擇策略。首先,我們選擇一個軌跡方案子集 ,對應(yīng)于高級命令 。然后,采用一種新穎的碰撞感知重新評分模塊來確保安全性。利用運動預(yù)測結(jié)果,我們可以評估每個規(guī)劃軌跡方案的碰撞風(fēng)險,對于碰撞概率高的軌跡,我們降低該軌跡的分?jǐn)?shù)。在實踐中,我們簡單地將碰撞軌跡的分?jǐn)?shù)設(shè)置為0。最后,我們選擇得分最高的軌跡作為最終的規(guī)劃輸出。
端到端學(xué)習(xí)(End-to-End Learning)
Multi-stage Training:SparseDrive 的訓(xùn)練分為兩個階段。在階段 1 中,我們從頭開始訓(xùn)練對稱稀疏感知模塊,以學(xué)習(xí)稀疏場景表示。在階段 2 中,稀疏感知模塊和并行運動規(guī)劃器一起訓(xùn)練,沒有模型權(quán)重凍結(jié),充分感受端到端優(yōu)化的好處。
Loss Functions:損失函數(shù)包括四個任務(wù)的損失,每個任務(wù)的損失可以進(jìn)一步分為分類損失和回歸損失。對于多模態(tài)運動預(yù)測和規(guī)劃任務(wù),我們采用贏家通吃策略。對于規(guī)劃,還有一個額外的回歸損失用于自我狀態(tài)。我們還引入深度估計作為輔助任務(wù),以增強感知模塊的訓(xùn)練穩(wěn)定性。端到端訓(xùn)練的整體損失函數(shù)為:
做的怎么樣?
我們的實驗是在 nuScenes 數(shù)據(jù)集上進(jìn)行的,該數(shù)據(jù)集包含 1000 個復(fù)雜的駕駛場景,每個場景持續(xù)約 20 秒。我們有兩個模型變體,它們僅在主干網(wǎng)絡(luò)和輸入圖像分辨率上有所不同。對于我們的小模型 SparseDrive-S,我們使用 ResNet50 作為主干網(wǎng)絡(luò),輸入圖像大小為 256×704。對于我們的基礎(chǔ)模型 SparseDrive-B,我們將主干網(wǎng)絡(luò)更改為 ResNet101,將輸入圖像大小更改為 512×1408。所有實驗均在 8 個 NVIDIA RTX 4090 24GB GPU 上進(jìn)行。
主要結(jié)果
我們與之前的最先進(jìn)的模塊化和端到端方法進(jìn)行了比較。在端到端方法中,我們的輕量級模型 SparseDrive-S 在所有任務(wù)中都超越了之前的 SOTA,而我們的基礎(chǔ)模型 SparseDrive-B 將性能界限又推向了更高一步。每個任務(wù)的主要指標(biāo)在表格中以灰色背景標(biāo)記。
Perception: 對于表 a 中的 3D 檢測,SparseDrive 實現(xiàn)了 49.6% 的 mAP 和 58.8% 的 NDS,與 UniAD 相比,mAP 和 NDS 分別顯著提高了 +11.6% 和 +9.0%。對于表 b 中的多目標(biāo)跟蹤,SparseDrive 實現(xiàn)了 50.1% 的 AMOTA,最低 ID 切換為 632,在 AMOTA 方面超過 UniAD +14.2%,ID 切換減少了 30.2%,顯示了跟蹤軌跡的時間一致性。對于在線建圖任務(wù),SparseDrive 的 mAP 為 56.2%,也比之前的端到端方法 VAD 高出 +8.6%。
Prediction:對于表 a 中的運動預(yù)測,SparseDrive 以 0.60m minADE、0.96m minFDE、13.2% MissRate 和 0.555 EPA 實現(xiàn)了最佳性能。與 UniAD 相比, SparseDrive 在 minADE 和 minFDE 上分別將誤差降低了 15.5% 和 5.9%。
Planning:對于表 b 中的規(guī)劃,在所有方法中,SparseDrive 實現(xiàn)了卓越的規(guī)劃性能,最低的 L2 誤差為 0.58m,碰撞率為 0.06%。與之前的 SOTA VAD 相比,SparseDrive 將 L2 誤差降低了 19.4%,碰撞率降低了 71.4%,證明了我們方法的有效性和安全性。
Efficiency:如表3所示,除了出色的性能之外,SparseDrive 在訓(xùn)練和推理方面也實現(xiàn)了更高的效率。與 UniAD 相比,在相同的主干網(wǎng)絡(luò)下,我們的基礎(chǔ)模型在訓(xùn)練中實現(xiàn)了 4.8 倍的速度提升,在推理中實現(xiàn)了 4.1 倍的速度提升。我們的輕量級模型在訓(xùn)練和推理方面分別可以實現(xiàn) 7.2 倍和 5.0 倍的速度提升。
消融研究
我們進(jìn)行了廣泛的消融研究,以證明我們設(shè)計選擇的有效性。我們使用 SparseDrive-S 作為消融實驗的默認(rèn)模型。
Effect of designs in Motion Planner。為了強調(diào)考慮預(yù)測和規(guī)劃之間相似性的重要性,我們設(shè)計了幾個特定的實驗,如表 4 所示。
ID-2 通過將預(yù)測和規(guī)劃的并行設(shè)計更改為順序順序,忽略了自車對周圍智能體的影響,導(dǎo)致運動預(yù)測和碰撞率的性能下降。ID-3 隨機初始化自我實例特征并將自我錨點的所有參數(shù)設(shè)置為 0。刪除自我實例的語義和幾何信息會導(dǎo)致 L2 誤差和碰撞率的性能下降。ID-4 將規(guī)劃視為確定性問題,并且只輸出一個確定的軌跡,導(dǎo)致最高的碰撞率。此外,ID-5 刪除了實例級智能體時間交叉注意力,將 L2 誤差嚴(yán)重降低至 0.77m。
Collision-Aware Rescore。在之前的方法中,采用了后優(yōu)化策略來確?;诟兄Y(jié)果的安全性。然而,我們認(rèn)為這種策略打破了端到端范式,導(dǎo)致 L2 誤差嚴(yán)重下降,如表 5 所示。此外,在我們重新實施的碰撞率指標(biāo)下,后優(yōu)化并沒有使規(guī)劃更安全,反而更危險。相比之下,我們的碰撞感知重新評分模塊將碰撞率從 0.12% 降低到 0.08%,L2 誤差幾乎沒有增加,顯示了我們方法的優(yōu)越性。
Multi-modal planning。我們對規(guī)劃模式的數(shù)量進(jìn)行了實驗。如表 6 所示,隨著規(guī)劃模式數(shù)量的增加,規(guī)劃性能不斷提高,直到 6 種模式飽和,再次證明了多模態(tài)規(guī)劃的重要性。
之后還能做什么?
結(jié)論。在這項工作中,我們探索了稀疏場景表示并回顧了端到端自動駕駛領(lǐng)域的任務(wù)設(shè)計。由此產(chǎn)生的端到端范例 SparseDrive 實現(xiàn)了卓越的性能和高效率。我們希望 SparseDrive 的出色表現(xiàn)能夠激勵社區(qū)重新思考端到端自動駕駛的任務(wù)設(shè)計,并促進(jìn)該領(lǐng)域的技術(shù)進(jìn)步。
未來工作。我們的工作仍然存在一些局限性。首先,我們的端到端模型的性能仍然落后于單任務(wù)方法,例如在線建圖任務(wù)。其次,數(shù)據(jù)集的規(guī)模不足以充分發(fā)揮端到端自動駕駛的潛力,開環(huán)評估不能全面代表模型性能。