單目3D目標檢測之入門(1)
一、單目3D目標檢測
1. 3D目標檢測領域有哪些任務和方法?
為了更直觀,我畫了一個思維導圖,點擊鏈接后,注意需要切換一下思維導圖狀態。
在3D目標檢測領域,根據輸入信息的不同,大致可分為三類方法。
Point Cloud-based Methods (基于點云來做)
Multimodal Fusion-based Methods(點云和圖像的融合)
Monocular/Stereo Image-based Methods(單目/立體圖像的方法)
首先,基于點云的經典方法,比如VoxelNet(2018年)、PointPillars(2019年)、PointRCNN(2019年)等。
這類方法都是直接在點云數據上進行特征的提取和RPN操作,將2D目標檢測中的網絡結構和思想遷移到3D點云中。
點云和圖像的融合方法是當前3D目標檢測的主流。比較經典的算法有,2018年的MV3D、Frustum PointNets、2019年的Pseudo-LiDAR、2020年的PointPainting等算法。
這里的Pseudo-LiDAR(也叫為激光雷達)這篇文章對后來的單目3D目標檢測領域的發展起到了促進的作用。
這里使用了雙目圖像來生成深度圖,根據深度圖得到點云數據,再進行目標檢測任務。
Stereo Image-based方法中,主要是基于雙目圖像的3D目標檢測,這一領域我不太了解,以后再做補充。
單目3D目標檢測我是2021年剛接觸的,比較出色的單目3D檢測方法主要有:Mono3D PLiDAR、AutoShape、MonoRCNN、CaDDN等。
而在單目3D目標檢測領域,又可細分為三類方法。關于單目3D目標檢測的分類翻譯自CaDNN這篇文章
直接法(Direct Methods)
所謂直接法就是直接從圖像中估計出3D檢測框,也無需預測中間的3D場景表示[9,52,4,32]。
更進一步的說就是,直接法可以結合2D圖像平面和3D空間的幾何關系來輔助檢測[53,12,40,3]。
例如,可以在圖像平面上估計出某對象的關鍵點,以幫助使用已知幾何結構構建3D box[33,29]。[M3D-RPN][M3D-RPN: monocular 3D region proposal network for object detection. ICCV, 2019.][3]
引入深度感知卷積,它按行劃分輸入并學習每個區域的no-shared kernels,以學習3D空間中位于相關區域的特定特征。
可以對場景中的物體進行形狀估計,從而理解三維物體的幾何形狀。
形狀估計可以從3D CAD模型的標記頂點中被監督[5,24],或從LiDAR掃描[22],或直接從輸入數據以自我監督的方式[2]。
直接法的缺點是檢測框直接從2D圖像中生成,沒有產生明確的深度信息,相對于其它方法,定位性能較差。
基于深度的方法(Depth-Based Methods)
該方法先利用深度估計網絡結構來估計出圖像的像素級深度圖,再將該深度圖作為輸入用于3D目標檢測任務,[論文][Deep ordinal regression network for monocular depth estimation. CVPR, 2018.]。
將估計的深度圖與原圖像結合,再執行3D檢測任務的論文有許多[38,64,36,13]。
深度圖可以轉換成3D點云,這種方法被稱為偽激光雷達(Pseudo-LiDAR)[59],或者直接使用[61,65],或者結合圖像信息[62,37]來生成3D目標檢測結果。
基于深度的方法在訓練階段將深度估計從三維目標檢測任務中分離,導致還需要學習用于三維檢測任務的次佳的深度地圖。
如何理解上邊這句話呢?**對于屬于感興趣的目標的像素,應該優先考慮獲取精確的深度信息,而對于背景像素則不那么重要,如果深度估計和目標檢測是獨立訓練的,則無法捕捉到這一屬性。
**所以將深度估計和目標檢測任務融合成一個網絡,效果會不會更好呢?
基于網格的方法(Grid-Based Methods)
基于網格的方法通過預測BEV網格表示(BEV grid representation)[48,55],來避免估計用做3D 檢測框架輸入的原始深度值。
具體來說,OFT[48]通過將體素投射到圖像平面和采樣圖像特征來填充體素網格,并將其轉換為BEV表示。
多個體素可以投影到同一圖像特征上,導致特征沿著投影射線重復出現,降低了檢測精度。
2. 什么是單目3D目標檢測?
推薦參考博客:
單目3D目標檢測論文筆記 3D Bounding Box Estimation - 知乎
ICCV 2021 | 悉尼大學&商湯提出GUPNet:單目3D目標檢測新網絡
*博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。