BEV系列一:BEV介紹和常用BEV算法簡介

什麼是BEV?

鳥瞰視角(Bird's Eye View,簡稱BEV)是一種從上方觀看對象或場景的視角,就像鳥在空中俯視地面一樣。在自動駕駛和機器人領域,通過傳感器(如LiDAR和攝像頭)獲取的數據通常會被轉換成BEV表示,以便更好地進行物體檢測、路徑規劃等任務。BEV能夠將復雜的三維環境簡化為二維圖像,這對於在實時系統中進行高效的計算尤其重要。

BEV的優勢

  1. 簡化的視角: BEV將三維空間簡化為二維,這樣可以在計算和存儲上節省大量資源。
  2. 視覺效果: BEV提供瞭一種獨特的視覺效果,使得場景中的物體和空間關系更加清晰可見。
  3. 方便處理: 在BEV中處理物體檢測、跟蹤和分類等任務相較於直接在原始3D數據中處理要簡單得多。
  4. 便於融合和下遊任務處理:與lidar融合更為方便,對下遊路徑規劃控制等任務也更友好。通用坐標系
  5. 尺度一致:相機檢測會出現近大遠小的情況,BEV同類目標尺度差異幾乎沒有,更容易學習特征尺度一致性。

BEV誕生前方案

在多個相機上獨立地執行檢測感知任務,隨後將這些獨立感知結果融合在一起,這是一項極具挑戰的任務。每個相機具有獨特的視野和觀察結果,這使得整個系統的復雜性大大增加。在實際應用中,由於各種因素的影響,單個相機的檢測結果可能並不準確,例如物體可能被截斷,或者由於環境因素如光線、陰影等的影響,使得識別結果出現誤差。深度估計的誤差也是一個需要解決的重要問題。由於攝像頭視角、解析度和其他因素的影響,深度估計的結果可能會有所偏差。在將多個相機的檢測結果進行融合時,如果深度估計存在誤差,可能會導致融合結果產生沖突,這使得融合任務變得更加困難。此外,圖像檢測的輸出對於自動駕駛的後續任務並不友好。

總之,由於圖像檢測的結果可能受到環境、光照、遮擋等因素的影響,可能會出現誤檢或漏檢等問題。其次,圖像檢測的結果通常是二維的,而自動駕駛需要的是三維空間中的精確位置和方向信息。

BEV常用算法

BEVFormer:2D相機圖片->2DBEV圖片

BEVFormer是一種基於Transformer的網絡結構,其在BEV上應用自註意力機制進行特征提取。它不僅可以處理點雲數據,還可以處理圖像數據。相比於傳統的CNN,BEVFormer能夠更好地捕捉長距離的依賴關系。

解決的問題:多個視覺攝像頭,分別提取特征後如何聚合呢?

本質:投影映射得到高維特征空間表示

方法簡述:將每個相機的圖片特征根據內參外參投影到預先設置的BEV網格中,然後通過transformer進行空間與時間上的特征融合。輸出BEV的特征圖。(簡單來說,將預設的BEV網格中每個點作為query,3D投影到各個圖片特征的2D位置,然後用可變形註意力去學習采樣附近的一些重要點特征,獲得註意力權重以及BEV網格該點處的特征)

bevformer先聚合時序信息,再聚合空間信息,因為前面時刻BEV有很多信息相當於要充分利用先驗知識,在此基礎上再繼續融合當前幀的特征,從而構建當前BEV重復多次(6次)得到最後的BEV空間特征。

LSS:2D圖片->3D空間

方法簡述:將二維圖像特征生成3D特征(這一步對應論文中的Lift操作,涉及到深度估計),然後把3D特征“拍扁”得到BEV特征圖(這一步對應論文中的Splat),最終在BEV特征圖上進行相關任務操作(這一步對應於Shooting)。具體來說,二維圖像特征生成3D特征這一步使用瞭“視錐”點雲的操作,如下圖所示。

正常來說,一個像素點是一個C層的特征。但是,lift處理後的一個像素點是D*C的一個特征圖。D是不同距離的特征。conv卷成D+C維度,D送去獲得深度,C為新特征。然後二者外積獲得D*C維度。

上面簡單來說,就是預測瞭一個深度值分佈D,以及提取的特征c,然後將兩種進行外積操作,實現瞭增維操作。Splat(拍扁)操作則是使用瞭一種特殊的“求和池化”操作(z累加,壓平),實現降維。最後的Shooting,則是將預測的一組軌跡投射出來,選取最優的軌跡作為預測結果。

對比BEVFormer:LSS部署比bevformer更好, 可解釋性強,但是會被前置條件限制(類似卷積會被局部性 、權值共享 、平移不變性限制,而註意力機制全靠自己學習,沒有被限制),bevformer對3D柵格更友好。

2D->3D: ①LSS離散深度估計,②偽點雲連續深度估計

學習課程

這裡推薦一下深藍學院的BEV感知課程,深藍學院的課程對博主的學習有很大的幫助,裡面資料總結得很全面,感興趣的同學也可以看一下。BEV最關鍵的點,2D3D轉換、OCC(占據柵格)、E2E(端到端)、Map、部署、甚至自動標註都是有的,非常不錯,大傢也可以參考這個路徑去學習。

BEVDET

偏工業化,沒有新建立的模塊。用的都是成熟的框架,很多模塊可以替換。證明BEV的可行性。

流程:

① 圖像特征:resnet+FPN

②View transformer:LSS(對每個像素位置進行離散深度估計,從2D圖像到3D空間)

③BEV encoder:resnet+FPN。(對BEV空間進行提取BEV特征)

問題:

①過擬合非常嚴重,原因是原始圖像的增廣如裁剪,基本不會對BEV空間造成影響。(BEV的數據量比圖像少,也容易過擬合)因此需要再View transformer後面也進行數據增強。包括翻轉、旋轉、縮放等。

增強方法:

②小目標NMS容易沒有IOU交集,解決方法使用scaling擴大,擴大IOU,再縮放回原始尺寸。

BEVDet4D

BEVDet4D是一種針對4D LiDAR數據的目標檢測算法。它不僅考慮瞭空間信息,還考慮瞭時間信息,從而能夠更好地處理動態場景。也就是在BEVDet的基礎上,增加瞭時序信息。

A:align D:Detach C:concat

時序信息有輔助作用,能提高檢測性能。

問題是,前一幀的BEV特征,和此時幀的BEV特征能直接相加嗎?答案是不行,因為車會運行,直接相加會出現兩個不同位置同一車的特征。所以需要做空間對齊。先對齊,後concat能解決這個問題。

預測目標在相鄰幀之間的平移而非直接預測速度,這樣任務轉化為預測目標在相鄰兩幀中的移位,這可根據BEV特征圖的差異來測量。

為瞭得到和當前幀對齊的歷史幀的特征,計算當前幀每一個像素點的在歷史幀中的位置,然後把歷史幀中該位置的特征填到當前幀這個像素中。因為要計算的是當前幀像素點在歷史幀中的位置,所以坐標變換是當前幀坐標到歷史幀坐標的變換

對齊的時候需要區分自車、運動車輛、靜止車輛。把前一幀的BEV特征根據自車運動信息與當前幀的BEV特征對齊。

結論:直接concat性能下降,加入R&T對齊後提高,數據增強提點明顯

BevFusion

BevFusion是一種多傳感器融合技術,它可以將來自不同傳感器(如LiDAR和相機)的數據融合到一個統一的BEV表示中。BevFusion的優點在於它能夠結合多種傳感器的優點,從而在物體檢測和跟蹤任務中取得更好的性能。

  1. 相機端采用BEV算法生成BEV特征,如bevformer、LSS
  2. LIDAR端用3D卷積提取BEV特征,與相機端特征concat起來。
  3. 采用通道註意力,全局池化+1*1卷積表示相機端和LIDAR端特征的權重比。

BevFusion動態融合模塊,通道註意力,全局池化+1*1卷積表示相機端和LIDAR端特征的權重比。三種不同的融合方式

DETR3D

DETR:優雅的2D目標檢測算法。DETR3D,與DETR的思想一致,直接在多視角圖片上進行3D檢測。采用將object query 經過transformer獲得3D參考點,然後投影到圖像,提取特征獲得3D檢測框。

DETR3D是一種用於重建圖像連續深度的方法,與傳統的離散深度分佈不同。它的核心方法是圍繞連續深度預測展開,通過先預測深度圖,然後利用原始圖像和深度圖將其映射到3D點雲空間。

DETR3D的過程可以總結如下:

  1. 深度圖預測:首先,使用DETR3D模型對輸入圖像進行處理,預測出連續的深度圖。這個深度圖表示瞭圖像中每個像素點的深度值。
  2. 3D點雲映射:接下來,使用原始圖像和預測的深度圖,將圖像中的像素點映射到3D點雲空間。通過計算每個像素點的3D坐標,可以得到一組表示場景中物體位置的點雲數據。
  3. 3D到2D的BEV空間構建:在3D點雲空間中,通過將點雲投影到圖像平面上,構建瞭一個稱為Bird's Eye View(BEV)空間。BEV空間是在俯視圖中觀察場景時所看到的視角,它提供瞭一種更直觀的場景表示方式。
  4. 2D圖像特征查詢:DETR3D使用預先設定的object query,這是一組表示物體的特征向量。這些特征向量類似於錨點,用於查詢圖像中與之匹配的物體特征。
  5. 特征提取:通過使用transformer模型,將object query轉換為參考點(3D box的中心點坐標),然後將這些參考點投影到圖像像素上。接下來,提取圖像中與參考點相對應的目標特征。

最終,DETR3D輸出的目標特征可以用於物體檢測、定位和跟蹤等任務,以實現對場景中物體的全面理解和分析。這種基於連續深度預測和3D點雲的方法使得DETR3D在處理圖像和場景中的物體時能夠更準確地捕捉到深度信息,並提供更豐富的視覺理解能力。

簡單來說,BEV轉換流程:①輸入是多視角圖像特征以及預先設定的object query(比如300個256維,是一個embedding的向量,意義類似anchor,隨機初始化找物體)②object query通過transformer生成reference points(3d參考點,也就是3d box的中心點坐標),③將點投影到圖像像素,④圖像特征提取,⑤輸出目標特征

匈牙利二分圖匹配方法,將gt和檢測框進行一一匹配。與detr相同。

PETR

在DETR3D上進行改進,認為其存在的問題:參考點索引圖像特征不準確,投影到圖像位置會有偏差。另外,參考點投影到圖像特征來更新object query不充分, 對全局特征考慮不完整。並且采樣過程比較復雜。

改進方法:2D特征+3D編碼,獲得瞭3D特征。省略瞭采樣和投影的過程。

簡單來說,即為增加一個3D坐標生成器,將相機視錐空間的點離散為W*H*D並投影到3D空間中。將3D的位置編碼到2D圖片的特征中。通過FC到相同的通道數。

PETRV2

改進:①時序(對齊方式,隱式的對齊,用前一幀的位置和此時的位置供網絡學習) ②多任務頭。

BEVDepth

BEVDepth是一種基於深度學習的深度估計算法。它將點雲數據投影到BEV,然後利用CNN預測每個像素的深度信息。BEVDepth的優點在於它能夠產生高質量的深度圖,這對於導航和物體檢測等任務非常有用。

2D->3D目前的缺點,深度不可靠。①沒有明確的深度監督。②網絡無法利用相機的內外參數,無法有效推斷像素深度。③深度估計網絡額外耗費時間。解決方法:引入深度監督,內外參數。

核心:深度網絡。輸入圖像特征和相機參數。輸出圖像特征和深度分佈。將相機的參數擴維,視為加權特征。輸出深度分佈。

並且,深度監督來源於點雲投影的深度,來輔助深度估計網絡的訓練。外參有偏差,導致點雲深度有偏差,因此引入Depth refinement 網絡來校準。獲得BEV特征。

總結

鳥瞰視角(BEV)在自動駕駛和機器人領域發揮著重要的作用。通過將復雜的三維環境簡化為二維圖像,BEV能夠幫助我們更好地理解場景,更高效地進行計算。目前,有許多算法都是基於BEV進行設計的,包括BEVFormer、LSS、BEVDET等。這些算法各有優勢,選擇哪種算法取決於具體的任務和場景。

往期相關文章

求求你們別學瞭:點雲3D目標檢測總結

求求你們別學瞭:圖像2D目標檢測總結

求求你們別學瞭:端到端自動駕駛綜述

求求你們別學瞭:視覺transformer:VIT, swin transformer,DETR等

求求你們別學瞭:多傳感器前融合和後融合

赞(0)