赞
踩
这是笔者看3D检测的第二篇文章,第一篇是18年CVPR的VoxelNet,这一篇同样是18年的CVPR,第一作者就是PointNet和Pointnet++的作者,这一篇算是后续作品。二三作者也是大佬,分别是Wei Liu(SSD,DSSD),Hao Su。
参考知乎的回答
这么做的好处在于:(1)舍弃了global fusion,提高了检测效率;并且通过2D detector和3D Instance Segmentation PointNet对3D proposal实现了逐维(2D-3D)的精准定位,大大缩短了对点云的搜索时间。
(2)相比于在BEV(Bird’s Eye view)中进行3D detection,F-PointNet直接处理raw point cloud,没有任何维度的信息损失,使用PointNet能够学习更全面的空间几何信息,特别是在小物体的检测上有很好的表现。
(3)利用成熟的2D detector对proposal进行分类(one-hot class vector,打标签),起到了一定的指导作用,能够大大降低PointNet对三维空间物体的学习难度。
这里引入的
invariances of 3D data
这个特性,在文章Pointnet 中有提及,含义是点云具有无序性,点云是一个集合,对数据的顺序是不敏感的。而一般的voxel方式强行给点加入了坐标信息。
提出了一个悬而未解的问题:如何表达3D点云和采用何种结构。
how to represent point cloud and what deep net architectures to use for 3D object detection remains an open problem.
目前的处理方法:
那么如何提出精准的候选框:
- We propose a novel framework for RGB-D data based3D object detection called Frustum PointNets.
- We show how we can train 3D object detectors under our framework and achieve state-of-the-art performance on standard 3D object detection benchmarks。
- We provide extensive quantitative evaluations to validate our design choices as well as rich qualitative results for understanding the strengths and limitations of our method
这里的 occlusion patterns 是个什么意思,这里稍微查看了一下参考文献39的内容。大致的意思就是先通过遮挡住自己不想要的图像部分,提取目标(车辆)的部分进行3D CAD建模。
Computation cost for those method is usually quite high due to the expensive cost of 3D convolutions
and large 3D search space.
吹一下自己的工作,pointnet ,并且表示这是第一篇采用pointnet做检测的文章。
RGB-D相机的depteh数据是以点云的形式储存的,同时会存在着3D点到2D RGB相机的转换矩阵,因此视锥就可以从2D区域再加上一个转化得到。每个对象由一个class和一个amode 3D bbox决定。amode box会框出这么一个物体范围,尽管物体可能出现遮盖或者被裁剪。一个Box由7个维度表示: [ c x , c y , c z , h , w , l , θ ] [c_x,c_y,c_z,h,w,l,\theta] [cx,cy,cz,h,w,l,θ]表示。
我们的方法包括三个部分:
大致的流程是:(1)我们首先利用2D CNN detector来提出2D区域并对其内容进行分类。(2)将2D转化到3D 视锥proposals(3)假设视锥中含有的点的个数是 n × 3 n \times 3 n×3,经过一个实例分割网络得到 m × 3 m \times 3 m×3的点,也就是 amodal 3D.(4)再采用一个T-NET对Amodal 3D Box进行预测,使其和标准的3D Box质心大致在一个位置上。
第一步,根据2D box 和转化关系我们可以得到视锥。第二步,收集在这个视锥下的所有点,根据视锥可以有很多不同的朝向,这会导致在点云的palcement上有很大的变化。第三步,我们将它们朝向中心视图旋转来归一化视锥,这会使得视锥的中心轴和相机平面正交。这个旋转可以增强我们这个方法的旋转不变性。这一部分操作叫做a frustum proposal generation。下图(a),(b)表示。
一些可以考虑的通过2D iMage获取3D location的方法:
上图左图是一个人的2D候选框,右图是llidar数据中的鸟视图,我们看到有很多的建筑物的点自行车的点。这导致我们对这个行人做box回归有很大的问题。
作者考虑到一个先验知识物体在3D场景中是自然分离的,这比在2Dimage上做分割可是要简单一些,因为2D上并不是邻近的物体可能在像素上也是很接近的。所以作者采取了做实例分割的方式。类似于Mask-R-CNN对候选区域中的像素点的二分类,我们的方法是基于PointNet的分割网络,在视锥中进行分割。
进一步说,作者预测的是残差(大家不都这样的嘛),并且在3D mask coordinates 中预测的3D bbox的中心。上上个图的图©表示。
3D Instance Segmentation PointNet.
上面说的方法采用的是基于pointnet的方法;就是在一整个视锥的点云中分出需要的那个对象。这里我们的一个视锥中只有一个需要的对象,对每一个点进行分类,要么是object要么是无关的。我们的segmentation PointNet 就是学习分类属于object和occlusion and clutter。
同样我们使用来自2D分割上的先验知识,假设这个是一个行人分割,我们会告诉3D这是一个行人,它再根据几何形状去分割这些点云。特别地,我们采用one-hot编码的方式编码分类的类别。
经过分割,感兴趣的点会被提取出来,也就是文章所说的"masking";下面我们也同样的标准化坐标,这样同样是为了提高算法对旋转的不变性。 在我们的实现中,我们通过按质心减去XYZ值,将点云转换为局部坐标 。上上图表示了©.请注意,我们故意不对点云进行缩放,因为部分点云的边界球大小可能会受到viewpoint的极大影响,并且点云的实际大小有助于框大小估计。
作者说出来一个很关键的点,旋转对齐对点云的学习非常重要,文章上述了两种坐标旋转都是很重要的,其重要程度可以表现在如下:
文章上述的两个转换分被对应着:frustum rot和 mask centralize。(可以借鉴)
输入为3D mask coordinate,这个模块预测3DBBOX的旋转,使用的是基于pointnet的回归网络。
尽管已经根据中心点对齐了分割后物体点,我们依然发现最原始的mask的坐标帧(c表示)依旧和amodel centre远远不一样。因此,我们建议使用轻量级回归PointNet(T-Net)来估计整个物体的真实中心,然后变换坐标,使预测的中心成为原点。
T-Net的结构和训练方式和pointnet一样的,可以理解为一个STN;和STN不一样在于这个T-Net有一个直接的监督,而STN没有。我们明确监督我们的翻译网络,以预测从masking坐标原点到真实物体中心的中心残差。
box回归预测amode bbox(即使是部分,也要框出全部来),网络结构和pointnet很相似,但是输出是3D bbox的参数。我们采用预测“residual”的方式对中心坐标进行预测。这个box残差的预测来自之前 T-Net和masked points’ centroid的残差组合。作者定义了
N
S
NS
NS个size的模板和
N
H
NH
NH个angel bins。最后要预测所用category不同size的参数,也就是
3
×
N
S
3\times NS
3×NS个残差对
h
,
l
,
w
;
h,l,w;
h,l,w;
N
H
NH
NH个朝向角度对
θ
\theta
θ;最后网络的输出是:
3
+
4
×
N
S
+
2
×
N
H
3 + 4 × NS + 2 × NH
3+4×NS+2×NH个参数。
稍微理解一下含义。
上述的3个网络:
虽然我们的3D边界框参数化非常紧凑且完整,但学习并未针对最终3D box精度进行优化 - 中心,大小和朝向都有单独的损失项。想象一下中心和大小准确预测但航向角度偏离的情况 - 具有地面实况框的3D IoU将由角度误差支配。理想情况下,所有三个术语(中心,大小,朝向)应联合优化,以实现最佳3D bbox估计(在IoU度量下)。
因此作者提出了一下新的损失项
c
o
r
n
e
r
−
l
o
s
s
corner -loss
corner−loss:
L
corner
=
∑
i
=
1
N
S
∑
j
=
1
N
H
δ
i
j
min
{
∑
k
=
1
8
∥
P
k
i
j
−
P
k
∗
∥
,
∑
i
=
1
8
∥
P
k
i
j
−
P
k
∗
∗
∥
}
L_{\text {corner}}=\sum_{i=1}^{N S} \sum_{j=1}^{N H} \delta_{i j} \min \left\{\sum_{k=1}^{8}\left\|P_{k}^{i j}-P_{k}^{*}\right\|, \sum_{i=1}^{8}\left\|P_{k}^{i j}-P_{k}^{* *}\right\|\right\}
Lcorner=i=1∑NSj=1∑NHδijmin{k=1∑8∥∥∥Pkij−Pk∗∥∥∥,i=1∑8∥∥∥Pkij−Pk∗∗∥∥∥}
corner -loss是预测框和地面实况框的八个角之间的距离之和。 由于角位置由中心,大小和方向共同决定,corner -loss能够使这些参数的多任务训练正规化。
我们在预先会定义
N
S
×
N
H
NS ×NH
NS×NH个anchors,其中
N
S
NS
NS表示size,而
N
H
NH
NH表示的是角度
这里的
P
k
i
j
P_k^{ij}
Pkij含义表示为:
为避免翻转航向估算造成大的损失,我们进一步说明
计算从翻转的地面实况框到角落的距离(
P
k
∗
∗
P^{ **}_ k
Pk∗∗),并使用原始和翻转的最小值。
δ
i
j
\delta_{ij}
δij:如下,也就是一个用于attention机制的意思。
δ i j \delta_{ij} δij , which is one for the ground truth size/heading class and zero else wise, is a two-dimensional mask used toselect the distance term we care about
这里是 code
代码复现主要两点内容:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。