引言
传统的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 A2A2A2A2。
四、领域专家
Raquel Urtasun,Uber ATG, University of Toronto
Xiaogang Wang,Chinese University of *
Shuran Song,Columbia University
Charles Ruizhongtai Qi,Facebook Artificial Intelligence Research (FAIR)
Hao Su,UC San Diego
Xiaozhi Chen,DJI
备注:本博客会定期更新;如有错误请随时指正。
</div>
<link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-e9f16cbbc2.css" rel="stylesheet">
</div>