OccNet
https://github.com/OpenDriveLab/OccNet
Scene as Occupancy
- 提出了一種新的場景表示方法, 利用環視攝像頭,采用級聯和時序體素編碼的方式來重建三維Occ場景。
Method
1)提出的OCCNet首先重建占據描述符,目標是為支持下游任務獲取一個代表性的占據描述符。OCCNet采用了級聯的方式(解碼過程被分為多個階段,每個階段都負責恢復特定的信息),通過多個級聯階段的迭代,從鳥瞰圖特征中解碼3D占據特征。 2)使用了基于體素的時間自注意力和空間交叉注意力來恢復高度信息,并結合了可變形的3D注意力模塊以提高效率。
-
Reconstruction of Occupancy
OccNet使用Voxel尺度上的特征,但如果僅使用BEV特征,則無法充分恢復高度信息;但如果直接使用體素特征,則需要消耗大量算力。OccNet則在兩者間尋求一個平衡點,先通過BEVFormer的encoder得到帶有時序信息的BEV特征,再通過級聯的decoder恢復3D占據特征。
不同層級的decoder負責恢復不同高度尺度的信息。
將前一幀的特征通過當前幀的參數進行變換,對于典型的自注意力機制,每一個query都需要與所有的key和value進行匹配,在3D特征下,這需要消耗大量的算力。因此,OccNet引入了可變形的3D注意力模塊,從而大大降低了計算量。 -
Exploiting Occupancy on Various Tasks
有了細粒度的3D場景表征,就可以應用于各種下游任務:
- 分割場景補全: 使用L1 Loss 和 Focal Loss來完成類別不平衡的場景補全任務
- 3D目標檢測: 基于BEVFormer,將Occ重新投影到BEV視角,并使用query-based檢測頭進行3D目標檢測
- BEV 語義分割: 基于ST-P3, 與三D目標檢測一樣,地圖表征和語義分割是通過 BEV 特征預測的。BEV 分割頭包括用于地圖表示的可駕駛區域頭和車道頭,以及用于語義分割的車輛分割頭和行人分割頭。
- 運動規劃:對于運動規劃任務,感知結果都可以轉換為BEV分割的形式,所有形式的結果都可以以0,1的形式表示。進一步就可以用于安全代價函數的計算中。
Experiment
OpenOcc
數據集真值的生成步驟:
- 根據帶標簽的物體點和部分背景點生成占位數據,其中黑點表示中間幀的未知背景點。
- 根據生成的占用率數據標注部分未知背景點。
- 去除其余被視為噪聲的未知背景點。
- 對占用率數據進行后處理,以確保場景的完整性,如填補紅色虛線框內的空洞。