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

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,

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章