基於深度學習的3D目標檢測綜述-Deep Learning-Based 3D Detection: A Review

引言

傳統的2D目標檢測,是得到目標物體的類別,以及圖像平面內的包圍盒,因此包含的參數爲類別c,包圍盒的中心(x,y),長寬(length, width)。

而3D檢測的任務是得到目標物體的類別(Classification)以及帶朝向的3D包圍盒(Oriented 3D Bounding Boxes),因此,其包含類別c,位置(x, y, z),size(length, widith, height),以及朝向(a, b, c)。在無人車應用中,車輛及行人等都是在地面上,因此,其朝向只有一維,即只有偏航角yaw。

一、數據輸入

數據類型包括2D的RGB圖像,2.5D的RGB-D圖像以及3D的點雲,他們各有特點。

RGB Image: RGB圖像像素可以很高,捕捉到更多的細節,但是缺乏3D信息;優點是可以使用當前比較成熟的CNN算法;

Depth Image: Depth圖像具有3D信息,相對稠密,但受傳感器影響大。Depth圖像可以結合相機內參轉換爲3D的Point Cloud,因此其既可以使用傳統CNN,也可以使用基於Point Cloud的DNN;

Point Cloud: Point Cloud具有精確的3D信息,但太過稀疏。Point Cloud可以有不同的表現形式,a.進行體素化(voxelize): 這樣可以使用3D CNN網絡;b.原始點雲(raw): 直接針對Point Cloud使用針對點雲的DNN,例如PointNet,PointNet++,PointCNN等;對於無人車,其Point Cloud採集時將激光傳感器放置在車頂環繞360度掃描,因此,可以拼接一圈圖像生成一個長條形的 c.前視圖(Front View);如果從上往下看,可以對垂直空間進行劃分,得到多層 d.鳥瞰圖(Bird Eye View, BEV),之後可以使用傳統CNN。

總的來說,可以結合多種模態的數據,設計各種算法結構,完成3D檢測。

二、方法分類

根據輸入的數據類型,可以將當前進行3D Detection的方法進行大致分類。對於每一類方法的代表性方法,本博客會慢慢進行介紹。

2.1 基於單目圖像的方法:

這類方法主要包括兩類,一類是擴展2D檢測的方法;一類是先估計3D信息再進行3D檢測的方法。這類方法只根據2D信息迴歸3D信息,效果並不好,其效果一般都不如基於3D信息的方法。然而,這類方法的巨大優勢就是速度快,在無人車應用中,Tesla和Apollo中,使用的是基於單目的算法進行3D檢測。

2.1.1 擴展2D檢測的方法

在傳統2D Detection的基礎上,額外迴歸出物體的3D BBox。

代表性方法:

2019:
[ArXiv] Monocular 3D Object Detection and Box Fitting Trained End-to-End
[ArXiv] Monocular 3D Object Detection via Geometric Reasoning on Keypoints
[ArXiv] Accurate Monocular 3D Object Detection via Color-Embedded 3D Reconstruction for Autonomous Driving

2.1.2 先估計深度再檢測的方法

另一類是對RGB圖像估計其Depth,進而得到pseudo LiDAR的數據,再基於3D的方法檢測3D物體。

代表性方法:

2019:
[CVPR] Pseudo-LiDAR from Visual Depth Estimation: Bridging the Gap in 3D Object Detection for Autonomous Driving

2.2 基於純點雲的方法:

這類方法主要包括兩類,將點雲轉換成voxel的方法,和將點雲轉換成鳥瞰圖(BEV)的方法。由於進行3D檢測絕大多數和3D信息有關,因此這類方法能夠得到很好的結果。

2.2.1 點雲轉化成voxel的方法:

這類方法最直接,但通常比較耗時;

代表性方法:

2019:
[ArXiv] Part-A2 Net: 3D Part-Aware and Aggregation Neural Network for Object
[ArXiv] STD: Sparse-to-Dense 3D Object Detector for Point Cloud
[ArXiv] Deep Hough Voting for 3D Object Detection in Point Clouds [code]
[CVPR] PointPillars: Fast Encoders for Object Detection from Point Clouds
[CVPR] PointRCNN 3D Object Proposal Generation and Detection from Point Cloud [code]
2018:
[CVPR] PIXOR: Real-time 3D Object Detection from Point Clouds
[CVPR] VoxelNet: End-to-End Learning for Point Cloud Based 3D Object Detection
2016:
[CVPR] Deep Sliding Shapes for Amodal 3D Object Detection in RGB-D Images [code]

2.3 基於融合的方法:

這類方法對2D輸入和3D輸入進行有效的融合,以實現效果的提升。由於可以進行組合的方式多種多樣,不易進行劃分。大致來講,可以分爲Cascade Fusion 和 Parallel Fusion兩類。基於融合的方法效果一般而言是非常好的;但是,設計較好的網絡結構,對以上信息進行有效融合是十分不易。

2.3.1 Cascade Fusion

這種方式是一種串聯的方式,一般是先進行2D的操作,再將結果拿去結合3D數據進行檢測。代表性方法是Frustum-PointNets,先進行2D目標檢測,得到對應的Frustum Point Cloud,再在3D空間進行目標分割和包圍盒迴歸。

代表性方法:

2018:
[CVPR] Frustum PointNets for 3D Object Detection from RGB-D Data [code]

2.3.2 Parallel Fusion

這類方法中,多源信息進行了融合,可以在算法的早期或後期,也可以同時早期和後期等。

a. Early Fusion

這類方法在前期進行融合,也即將多源信息先進行融合得到聯合的信息,之後對聯合的信息進行DNN等特徵提取工作。

代表性方法

2017:
[CVPR] Multi-View 3D Object Detection Network for Autonomous Driving [code]

b. Late Fusion

這類方法是對多源信息進行特徵抽取,最後融合成一個全局的特徵,迴歸出物體的3D包圍盒信息。

代表性方法

2018:
[IROS] Joint 3D Proposal Generation and Object Detection from View Aggregation
[CVPR] PointFusion: Deep Sensor Fusion for 3D Bounding Box Estimation
[ICRA] A General Pipeline for 3D Detection of Vehicles

c. Dense Fusion

這類方法中,一般在前期進行信息融合,以得到潛在的3D BBox Proposals,之後在後期再進行特徵的融合,進而回歸出3D包圍盒信息。

代表性方法

2019:
[CVPR] Multi-Task Multi-Sensor Fusion for 3D Object Detection
2018:
[ECCV] Deep Continuous Fusion for Multi-Sensor 3D Object Detection

三、數據集及方法比較

3.1 數據集

Kitti:目前進行無人駕駛的標準數據集,大部分算法都會在其上進行對比。
SUN RGB-D:是室內的數據集,包含常見室內物體的類別,2Dmask和3D BBox等信息。

3.2 算法比較

以KITTI數據集爲準,在對比網站上,截止2019年08月22日,在car這一類上,表現最好的是Part A2A^2

四、領域專家

Raquel Urtasun,Uber ATG, University of Toronto
Xiaogang Wang,Chinese University of Hong Kong
Shuran Song,Columbia University
Charles Ruizhongtai Qi,Facebook Artificial Intelligence Research (FAIR)
Hao Su,UC San Diego
Xiaozhi Chen,DJI

備註:本博客會定期更新;如有錯誤請隨時指正。

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