Frustum PointNets for 3D Object Detection from RGB-D Data
1.背景
3D的运用以及逐渐广泛,但是之前大多数的工作是将3D书转化为2D的数据或者对3D数据进行体素化处理,这样就失去了3D数据的一些空间特征以及其他的特性。
参考之前2D的工作,可以通过检测框的移动从而来进测出目标物体的位置。但是对于3D数据而言检测框这样移动检测所带来得计算量是巨大的。因此本文利用成熟的2D检测技术,通过2D检测器检测出物体位置在进行投影,然后再对投影后的进行分割和目标检测。
2.模型介绍
模型主要分为三个部分:frustum proposal、3D instance segmentation和3D amodal bounding box estimation。
首先利用2D CNN物体探测器来提出2D区域并对其内容进行分类。然后通过投影矩阵将2D区域提升到3D。给定平截头体中的点云(
n
×
c
n \times c
n×c,具有
n
n
n个点和
x
x
x个通道的
X
Y
Z
XYZ
XYZ,每个点强度等),同每个点的二元分类来对对象实例进行分段。基于分割的对象点云(
m
×
c
m\times c
m×c),轻量级回归PointNet(T-Net)通过平移进行点的对齐,使得质心接近中心。最后进行amodal 3D边框估计。
2.1 frustum proposal
利用已知的相机投影矩阵,可以将2D的边界框提升到平截头体,然后对提升的平截头体中的点云进行收集形成平截头体点云。如上图Figure 4 所示,,平截头体可以朝向不同的方向,导致点云的放置的方向对于检测的干扰是极大的。因此可以通过平截头体朝向中心视图来进行归一化处理,使得平截头体的中心轴线与图像平面正交。
2.2 3D instance segmentation
给定2D的图像区域以及对应的3D平截头体,可以使用几种方法来获得对象的3D位置:
- 使用2D直接从深度图回归到3D对象位置。但是由于可能存在前置遮挡物原因,会严重影响分割的准确度。而由于物体在空间中是自然分离的,因此在3D中对物体进行分割是更加自然和容易的。
- 在3D点云进行实例分割。网络在平截头体中采用点云并且预测每个点的概率分数,该分数表示该点属于感兴趣对象的可能性。而在论文中规定每个视锥体仅包含一个感兴趣的对象。并且在向量尾部加上热向量编码,补充说明具体体系结构的细节。
在进行3D实例分割之后,提取被分类为感兴趣的点,随后对其进行进一步的标准化来增强算法的平移不变性。并且在这一过程中不进行点云缩放(部分点云的边界球大小会受到视点的极大影响,并且点云实际大小有助于估计框大小)。
2.3 3D amodal bounding box estimation
在得到分割的对象点之后,利用PiontNet和变换网络来估计3D对象的边界框。而预测的数据为中心(
c
x
,
c
y
,
c
z
c_x,c_y,c_z
cx,cy,cz),尺寸(
h
,
w
,
l
h,w,l
h,w,l)和航向角(
θ
\theta
θ)。
首先利用T-Net进行3D质心居中化,使得预测的中心成为原点。对于盒子的大小和航向角度,使用分类和回归公式的混合。接着通过Box Estimation输出的最终bounding box的维度为3+4xNS+2xNH。其中3代表中心点的残差回归,是接在T-Net回归之后的;NS代表不同size的archor个数,每一个archor有四个维度;NH代表不同朝向的archor,每一个archor有两个参数,分别为置信度和朝向角。
2.4 loss function
损失函数由三个网络构成:
总结
本文主要采用了一个新的角度,从2D层面上对3D进行分析,先用已经成熟的2D进行目标对象的定位,再采用平截头体进行3D点云点数据的采集,最后通过PoinNet网络进行目标对象的语义分割和目标检测。