視覺BEV基本原理和方案解析

高德技術發表於2023-11-16

BEV(Bird’s-Eye-View)是一種鳥瞰檢視的感測器資料表示方法,它的相關技術在自動駕駛領域已經成了“標配”,紛紛在新能源汽車、晶片設計等行業相繼量產落地。BEV同樣在高德多個業務場景使用,例如:高精地圖地面要素識別車道線拓撲構建車端融合定位中都扮演了重要角色。如圖1‑1所示:

圖1‑1 BEV在高德應用場景(僅列舉部分)a)高精底圖 b)地面要素識別 c)車道線拓撲構建[1] d)車端融合定位(BEV特徵和底圖匹配)[2]

本文分享的內容主要包括兩個部分:視覺BEV基本原理、方案解析。

1.BEV基礎

1.1.引言

如圖1‑2所示,BEV具有如下優勢:

1) BEV檢視尺度變化小。在PV空間(即透檢視,類似通常行車記錄儀所採集的車輛前檢視)中,物體近大遠小,物體的大小和類別、遠近都有關,而在BEV空間中,物體的大小隻和類別有關;

2) BEV空間是決策友好空間。BEV空間更接近3D真實空間的平面空間,而PV空間是真實物理世界在透視投影下的檢視,以圖1‑2的車道線舉例,在真實世界中平行的兩條車道線,在BEV空間下還是平行的,在PV空間卻是相交的。相比之下,BEV空間下的資訊能更方便地被下游規控模組理解和使用。

本章將介紹BEV基礎知識。首先介紹BEV的核心**“視角轉換模組”的基本原理**,包括2D->3D和3D->2D兩種路線,然後介紹BEV使用的魔法“可形變模組”,最後介紹BEV方案中常用的損失函式

圖1‑2 BEV空間和PV空間的影像視覺化,a) BEV空間 b) PV空間

1.2.視角轉換

如1.1所述,在BEV空間下進行資料處理和操作具有尺度變化小、決策友好的優勢,但原始的影像資料是在PV空間下的,如何將PV空間的資料轉換到BEV空間或者是3D空間(有3D空間下的資料,將其拍扁就能轉到BEV空間)呢?這就是視角轉換模組要乾的事。

1.2.1. 2D->3D轉換模組

2D->3D轉換模組基本思想是從2D畫素或者特徵出發去找3D空間下的對應表示,類似深度估計。下面介紹主流的2D->3D轉換方法。

LSS(Lift-Splat-and-Shot)[3]是主流的2D->3D轉換方法,如圖1‑3所示,Lift指對各相機的影像顯式地估計特徵點的深度分佈,得到包含影像特徵的視錐(點雲);Splat——結合相機內外參把所有相機的視錐(點雲)分配到BEV空間的網格中,對每個格子中的多個視錐點進行pooling計算,形成BEV特徵圖;Shoot——用task head處理BEV特徵圖,輸出感知結果。最後將C維的特徵和D維的深度分佈做外積,得到每個深度下的特徵,深度機率越大,對應特徵響應就越強。

圖1‑3 LSS示意,每個特徵點生成系列離散深度點,再為深度點生成特徵[3]

Pseudo-LiDAR是另一種2D->3D轉換方法,如圖1‑4所示,相比LSS為特徵點預測一系列離散深度,Pseudo-LiDAR直接預測深度圖,每個畫素都有且僅有一個深度。

圖1‑4 Pseudo-LiDAR示意,預測深度圖,根據原始影像和深度圖對映至3D空間[4]

1.2.2. 3D->2D轉換模組

3D->2D轉換模組基本思想是根據3D點查詢對應的2D特徵,類似3D空間投影到PV空間。下面介紹主流的3D->2D轉換方法。

如圖1‑5所示,將3D參考點根據成像原理投影到PV空間獲取對應影像特徵的方式可以認為是顯式對映,這裡的參考點可以使用預設的BEV空間的參考點,也可以使用網路生成。

圖1‑5 顯式對映[5]

相比顯式對映,隱式對映不再透過投影對映,而是讓網路自己學特徵和3D座標的對映。如圖1‑6所示,它先生成視錐空間下的一系列點,再轉換到3D空間下,然後將提取的影像特徵和3D點傳入encoder,encoder處理後輸出的就是帶有3D座標資訊的特徵。

圖1‑6 隱式對映[6]

1.3. 可形變模組

要介紹的可形變模組有兩種,可形變卷積可形變注意力,可形變模組的作用更容易透過可形變卷積理解,所以先介紹可形變卷積。

可形變卷積是在卷積的基礎上新增offset得到的,如圖1‑7最左邊的a) 所示,普通卷積透過人工設計的pattern整合pattern內取樣點的資訊,其pattern設計好後就是固定的,可形變卷積,如圖1‑7 b) 所示,可以計算出每個取樣點的offset,取樣點+offset才是真實的取樣點,使得卷積的pattern形式更加靈活,且一定程度上可學習。

圖1‑7 可形變卷積示意,a) 普通卷積 b) 可形變卷積[7]

如圖1‑8所示,注意力機制需要透過Q (query) 找到K (key),獲得K的資訊,這個過程也存在可變形的操作空間,讓網路自己學習參考點的偏移量。

圖1‑8 可變形注意力示意[8]

1.4. 損失函式

損失函式大部分與任務相關,且大同小異,這裡集中介紹下後續方案解析需要用到的一些共性的損失函式。

Box Loss (包圍盒損失函式) 是目標檢測常用的幾何損失函式,常採用L1 Loss的形式:

Focal Loss是交叉熵損失函式的擴充,常用於分類問題。普通交叉熵損失函式在正負樣本不均衡時表現不佳,因此引入平衡交叉熵。另外普通交叉熵損失函式對於難例無法重點學習,因此引入難例聚焦。最終形式為:

2. 視覺BEV方案解析

2.1. 引言

第一章的內容為第二章的方案解析打下知識基礎,接下來第二章主要解析具有代表性的視覺BEV方案,主要根據視角轉換模組的型別對方案進行分類,首先介紹2D->3D的代表性方案,然後介紹3D->2D的代表性方案。

2.2. 2D->3D代表性方案解析

2D->3D的代表性BEV方案有BEVDetBEVDepth,下面我們逐一介紹。

2.2.1. BEVDet

3D目標檢測跟蹤由基於PV空間的方法主導,BEV語義分割跟蹤由基於BEV空間的方法主導,那麼PV空間和BEV空間哪個更適合做自動駕駛感知呢?是否可以在同一的框架下做這些任務?作者為了回答這兩個問題,提出瞭如圖2‑1所示的基於BEV空間的3D目標檢測框架,BEVDet。BEVDet主要由四個部分組成,分別為影像特徵編碼器,視角轉換模組,BEV特徵編碼器,檢測頭。

圖2‑1 BEVDet框架[9]

影像特徵編碼器(Image-view Encoder)使用2D Backbone網路,如ResNet、SwinTransformer等,對輸入的多視角影像做多尺度特徵提取,得到多尺度特徵。

視角轉換模組(View Transformer)對輸入的多視角影像特徵使用LSS進行離散深度分佈預測,獲得3D視錐特徵。

3D視錐特徵經過pooling操作拍扁到BEV空間,BEV特徵編碼器(BEV Encoder)對BEV空間下的特徵做多尺度特徵提取,得到BEV特徵。

最後送入檢測頭進行3D目標檢測,分類監督使用的損失函式為Focal loss,包圍盒監督使用的損失函式為L1 loss。

2.2.2. BEVDepth

作者實驗發現LSS估計的深度替換成隨機值影響不大,而採用真值深度對指標提升很大,因此得出LSS估計深度不準的結論,如圖2‑2所示,在沒有明確的深度監督的情況下,很難輸出準確,泛化性強的深度感知結果,要想獲得更好的檢測結果,需要更準的深度,因此引入深度監督訓練深度子網路。

圖2‑2 LSS的深度預測結果和BEVDepth的深度預測結果的對比[10]

圖2‑3是BEVDepth的框架,也能大致分為影像特徵編碼器,視角轉換模組,BEV特徵編碼器,檢測頭四個部分。影像特徵編碼模組大同小異,後續不再展開說明。

圖2‑3 BEVDepth框架[10]

視角轉換模組的核心是深度估計,深度估計網路DepthNet的框架如圖2‑4所示,首先使用MLP對相機內參進行特徵化,然後用SE (Squeeze-and-Extraction) 對影像特徵進行通道加權,然後經過3個殘差塊以及可形變卷積,得到深度。深度再與影像特徵進行外積,得到3D視錐特徵。

圖2‑4 深度估計網路框架[10]

相機和用於監督的點雲之間的外參可能不準,內參也可能不準,都會導致深度估計有偏,因此BEV特徵編碼器引入深度修正對3D視錐特徵的深度進行修正,然後進行高效體素池化獲得BEV特徵。

檢測頭所使用的損失函式和BEVDet是一致的,不做贅述。深度監督使用的損失函式為二分類交叉熵。

2.3. 3D->2D代表性方案解析

前面介紹的2D->3D的方案始終繞不過深度估計,深度估計難免會引入誤差,換個思路,先有3D點,再根據3D點找2D特徵的方式無需進行深度估計,避免了這部分誤差。3D->2D的代表性方案有Detr3D、BEVFormer和PETR。

2.3.1. Detr3D

如圖2‑5所示,Detr3D是Detr在3D目標檢測的擴充套件,也是使用query進行特徵獲取,然後進行檢測。Detr3D的影像特徵編碼器大同小異,不再贅述。

圖2‑5 Detr3D框架[5]

特徵轉換模組首先使用object query生成3D參考點,將參考點投影到PV空間獲取影像特徵,獲取到的影像特徵能進一步最佳化物體的3D表徵,得到物體的3D特徵。

將特徵送入檢測頭進行目標檢測,可以得到一系列的檢測結果。普遍地,大家會用NMS等後處理方式獲得最終用於Loss計算的檢測結果,如圖2‑6所示,Detr3D繼承了Detr的做法,採用雙邊圖匹配獲得與真值一一對應的檢測結果。損失函式與前面所述並未本質差異,不做贅述了。

圖2‑6 雙邊圖匹配獲得與真值一一對應的檢測結果[11]

2.3.2. BEVFormer

行車過程有天然的時序特點,當前幀看到的車道線,在後續幾幀大機率也是存在且可見的,如何利用這個時序特點是前述方案沒有考慮的。BEVFormer引入時序資訊進一步增強BEV的檢測能力。BEVFormer的影像特徵編碼模組和前述大同小異,不做贅述。

BEVFormer的核心是中間的BEV特徵編碼模組,BEV特徵編碼模組的核心是時序自注意力(Temporal Self-Attention)和空間交叉注意力(Spatial Cross-Attention),時序注意力是為了利用歷史幀BEV特徵增強當前幀BEV特徵,空間交叉注意力則是為了從影像特徵獲取資訊。

圖2‑7 BEVFormer框架[12]

具體地,BEVFormer的時序自注意力首先利用車輛運動資訊將當前幀BEV特徵和歷史幀BEV特徵進行對齊,然後再使用自注意力融合兩者資訊,由於車輛運動資訊可能不準,不同時刻周圍的可利用資訊分佈也不一致,所以具體使用的是圖2‑8所示的可變形注意力機制。

圖2‑8 時序可變形自注意力[12]

BEVFormer的空間交叉注意力首先為每個格子在Z方向上取樣4個值,得到一個格子上的4個參考點,然後與影像特徵進行交叉注意力,獲得影像特徵。如圖2‑9所示,這裡的交叉注意力也採用可變形注意力機制。

圖2‑9 空間可變形交叉注意力[12]

損失函式的計算和Detr3D一致,不再贅述。

2.3.3. PETR

3D->2D的方案一般都需要將參考點投影到PV空間,再取影像特徵,PETR避免了複雜的3D->2D轉換及特徵取樣,直接讓網路自己學習2D-3D的對映。PETR的框架如圖2‑10所示,包括影像特徵編碼器、3D座標生成器、3D特徵編碼器(3D Position Encoder)、3D特徵解碼器和檢測頭。影像特徵編碼器大同小異,不再贅述。

圖2‑10 PETR框架[6]

3D座標生成器生成視錐空間的一系列3D點,具體地,首先將相機視錐空間離散成大小為的網格,網格中的每一點用表示。3D空間中一個點用表示。透過相機內外參可以將相機視錐空間轉換到3D空間中。最後再進行歸一化。

2D影像特徵和3D座標一起送入到3D特徵編碼器中,2D特徵進行卷積通道降維,3D座標進行位置編碼,然後將處理後的2D特徵和3D座標編碼整合,最後特徵展平。

圖2‑11 3D特徵編碼器[6]

3D特徵解碼器先在3D空間生成一系列隨機點,再透過MLP生成可學習的query,query在3D特徵中取特徵,最後使用檢測頭進行檢測。損失函式與Detr3D大同小異,不再贅述。

3. 總結展望

本文從BEV的基礎出發,介紹了視覺BEV具有代表性的方案。視覺BEV已經展現出強大的場景理解能力。但是還存在很多值得探索且有挑戰的方向[13]:

深度估計是BEV的核心,LSS、Pseudo-LiDAR、鐳射蒸餾、立體視覺或運動恢復結構等都是有前景的方向。

如何融合感測器的資訊也是至關重要的,使用Transformer的自注意力、交叉注意力融合不同模態的特徵已經被證明是個可行的方向。多模態中CLIP的文字-影像對也是個很有啟發的思路。

泛化性是深度學習亙古不變的話題和努力的方向,在一個裝置(資料)上訓練好的模型在另一個裝置(資料)表現是否一樣好。每個裝置都要付出訓練成本是讓人難以接受的。如何將模型和裝置解耦在未來一段時間都將是重要的研究方向。

大模型或者基礎模型已經在不同領域上取得令人印象深刻的結果,並一舉成為SOTA。在BEV感知中如何利用大模型中豐富的知識,在更多的任務上取得更好的效果,這將會逐步引起人們的重視。

4. 參考文獻

[1] Bencheng Liao, Shaoyu Chen, Xinggang Wang, et al. Maptr: Structured modeling and learning for online vectorized hd map construction[J]. arXiv preprint arXiv:2208.14437,2022,

[2] Yuzhe He, Shuang Liang, Xiaofei Rui, et al. EgoVM: Achieving Precise Ego-Localization using Lightweight Vectorized Maps[J]. arXiv preprint arXiv:2307.08991,2023,

[3] Jonah Philion and Sanja Fidler. Lift, splat, shoot: Encoding images from arbitrary camera rigs by implicitly unprojecting to 3d[A]. Springer: 194-210

[4] Yan Wang, Wei-Lun Chao, Divyansh Garg, et al. Pseudo-lidar from visual depth estimation: Bridging the gap in 3d object detection for autonomous driving[A]. 8445-8453

[5] Yue Wang, Vitor Campagnolo Guizilini, Tianyuan Zhang, et al. Detr3d: 3d object detection from multi-view images via 3d-to-2d queries[A]. PMLR: 180-191

[6] Yingfei Liu, Tiancai Wang, Xiangyu Zhang, et al. Petr: Position embedding transformation for multi-view 3d object detection[A]. Springer: 531-548

[7] Jifeng Dai, Haozhi Qi, Yuwen Xiong, et al. Deformable convolutional networks[A]. 764-773

[8] Xizhou Zhu, Weijie Su, Lewei Lu, et al. Deformable detr: Deformable transformers for end-to-end object detection[J]. arXiv preprint arXiv:2010.04159,2020,

[9] Junjie Huang, Guan Huang, Zheng Zhu, et al. Bevdet: High-performance multi-camera 3d object detection in bird-eye-view[J]. arXiv preprint arXiv:2112.11790,2021,

[10] Yinhao Li, Zheng Ge, Guanyi Yu, et al. BEVDepth: Acquisition of Reliable Depth for Multi-View 3D Object Detection[J]. Proceedings of the AAAI Conference on Artificial Intelligence,2023,37(2): 1477-1485

[11] Nicolas Carion, Francisco Massa, Gabriel Synnaeve, et al. End-to-end object detection with transformers[A].Springer: 213-229

[12] Zhiqi Li, Wenhai Wang, Hongyang Li, et al. Bevformer: Learning bird’s-eye-view representation from multi-camera images via spatiotemporal transformers[A].Springer: 1-18

[13] Hongyang Li, Chonghao Sima, Jifeng Dai, et al. Delving into the Devils of Bird's-eye-view Perception: A Review, Evaluation and Recipe[J]. arXiv preprint arXiv:2209.05324,2022,

相關文章