本文同步于微信公众号: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的方法进行大致分类。对于每一类方法的代表性方法,本博客会慢慢进行介绍。