本文同步于微信公众号:3D视觉前沿,欢迎大家关注。
传统的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的方法进行大致分类。对于每一类方法的代表性方法,本博客会慢慢进行介绍。
这类方法主要包括两类,一类是扩展2D检测的方法;一类是先估计3D信息再进行3D检测的方法。这类方法只根据2D信息回归3D信息,效果并不好,其效果一般都不如基于3D信息的方法。然而,这类方法的巨大优势就是速度快,在无人车应用中,Tesla和Apollo中,使用的是基于单目的算法进行3D检测。
在传统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
另一类是对RGB图像估计其Depth,进而得到pseudo LiDAR的数据,再基于3D的方法检测3D物体。
2019:
[CVPR] Pseudo-LiDAR from Visual Depth Estimation: Bridging the Gap in 3D Object Detection for Autonomous Driving
这类方法主要包括两类,将点云转换成voxel的方法,和将点云转换成鸟瞰图(BEV)的方法。由于进行3D检测绝大多数和3D信息有关,因此这类方法能够得到很好的结果。
这类方法最直接,但通常比较耗时;
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]
这类方法对2D输入和3D输入进行有效的融合,以实现效果的提升。由于可以进行组合的方式多种多样,不易进行划分。大致来讲,可以分为Cascade Fusion 和 Parallel Fusion两类。基于融合的方法效果一般而言是非常好的;但是,设计较好的网络结构,对以上信息进行有效融合是十分不易。
这种方式是一种串联的方式,一般是先进行2D的操作,再将结果拿去结合3D数据进行检测。代表性方法是Frustum-PointNets,先进行2D目标检测,得到对应的Frustum Point Cloud,再在3D空间进行目标分割和包围盒回归。
2018:
[CVPR] Frustum PointNets for 3D Object Detection from RGB-D Data [code]
这类方法中,多源信息进行了融合,可以在算法的早期或后期,也可以同时早期和后期等。
这类方法在前期进行融合,也即将多源信息先进行融合得到联合的信息,之后对联合的信息进行DNN等特征提取工作。
2017:
[CVPR] Multi-View 3D Object Detection Network for Autonomous Driving [code]
这类方法是对多源信息进行特征抽取,最后融合成一个全局的特征,回归出物体的3D包围盒信息。
2018:
[CVPR] PointFusion: Deep Sensor Fusion for 3D Bounding Box Estimation
[ICRA] A General Pipeline for 3D Detection of Vehicles
这类方法中,一般在前期进行信息融合,以得到潜在的3D BBox Proposals,之后在后期再进行特征的融合,进而回归出3D包围盒信息。
2019:
[CVPR] Multi-Task Multi-Sensor Fusion for 3D Object Detection
2018:
[IROS] Joint 3D Proposal Generation and Object Detection from View Aggregation
[ECCV] Deep Continuous Fusion for Multi-Sensor 3D Object Detection
Kitti:目前进行无人驾驶的标准数据集,大部分算法都会在其上进行对比。
SUN RGB-D:是室内的数据集,包含常见室内物体的类别,2Dmask和3D BBox等信息。
以KITTI数据集为准,在对比网站上,截止2019年08月22日,在car这一类上,表现最好的是Part A 2 A^2 A2。
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
Jiaya jia, CUHK
Xiaozhi Chen,DJI
备注:本博客会定期更新;如有错误请随时指正。