Deep hough voting for 3D object detection in point clouds
1.背景信息
1.输入数据:点云
2.解决问题:3D目标检测(bounding box)
3.亮点
(1) 直接处理裸点云(深度点集网络)
(2) 采用霍夫投票,抑制噪声
通过将裸点云输入到PointNet++中,可以采样一个seed points的集合并且从他们的features中生成votes。这些votes are targeted to 到达对象中心, 最终,所有的投票都将聚集在3D目标的中心点附近。
2.方法
2.1 霍夫投票
1.传统的霍夫投票用于2D图像上目标检测方法:
(1)建立image patches(or their features) 与 他们所在中心点之间的offsets的对应关系,生成codebook
(2)在推理阶段,选择感兴趣的点,从codebook中找到对应的offsets,然后计算投票(投票指的是offset from seed point)
(3)目标boundary通过将votes聚类在一起生成的centorid返回到原来的位置来描绘。
2. 深度霍夫投票
提出几点有用的改进:
(1)兴趣点的描述和选择通过一个深度神经网络来生成。
(2)通过网络学习生成votes,而不再使用codebook。
(3)通过点云处理层进行投票集成。
(4)目标proposals包括:定位,维度,方向甚至语义分类标签,可以直接通过集成特征来生成。
2.2 VoteNet结构
整个网络分两个部分:(1)处理已经存在的点,生成votes(2)处理虚拟的点(votes)去propose和classify目标。
1. 在点云中学习vote
主要两步:
(1)通过backbone(PointNet++)网络学习点云特征和进行点云采样
输入N个点(XYZ 3维),输出M个seed点,维度是3+C(XYZ+C维特征向量)。每个seed点将会生成一个vote。
(2)从seed点中学习霍夫投票。
voting module:
f
i
f_{i}
fi–>
d
e
l
t
a
x
i
deltax_{i}
deltaxi and
d
e
l
t
a
f
i
delta f_{i}
deltafi
然后生成
y
i
=
x
i
+
d
e
l
t
a
x
i
y_{i}=x_{i}+delta x_{i}
yi=xi+deltaxi,
g
i
=
f
i
+
d
e
l
t
a
f
i
g_{i}=f_{i}+delta f_{i}
gi=fi+deltafi,这就是生成的vote
2.从votes中生成目标proposal and classification
(1)通过采样和分组进行vote聚类
思路是朴素的,在votes集合中,通过FPS在
y
i
y_{i}
yi这个3D欧几里得空间上选择K个vote聚类中心点
(在
y
i
y_{i}
yi上FPS会把那些不是聚类中心的点也选进来吧,这样生成的proposal直觉上是有问题的,为什么不用meanshift之类的聚类方法确定K个点呢???)。 然后通过遍历所有的votes,每个点与第k个vote聚类中心点的距离小于一定阈值r,则被归为这个vote聚类中心点所在的group中。这样一共生成了K个vote聚类。
(2)从votes聚类中proposal和classification
利用一个通用的点集学习网络 (shared PointNet) 集成投票然后生成目标proposals,相比于传统的直接溯源来确定目标boundary,这种学习的方法,作者说可以更好的处理点云中只有部分目标点(因为相机只能扫描一个物体的表面)的场景。
通过公式2, proposal
p
p
p 是一个多维向量(objectness分数、bounding box参数、语义分类分数)
(3) Loss function
loss = objectness loss + bounding box estimation loss + semantic classification loss
监督 objectness scores for votes 要么是接近ground truth 目标中心点,要么是远离任何中心。 作者将这些从votes中生成的proposals看作是positive 和negative的proposals。
对于positive proposals,会根据最近的ground truth bounding box进一步监督bounding box estimation 和 class prediction
具体实验和实现细节略。
3.读后感
1. 这篇文章最重要的一个思想是Hough vote, 这种投票的方法越来越多的被应用到3D 图像处理中,因为它对噪声不敏感。
2. PointNet++ 是本文VoteNet的backbone, 本篇文章实际上可以看作是PointNet、PointNet++在3D目标检测方面的应用型文章。
3. 我理解的Offsets 与 votes 本质上思想是相似的, 利用相对信息而不是绝对信息是3D图像处理的主流。
4. FPS采样K个点作为聚簇中心,这个方法我觉得不是那么合理,可以采用Meanshift之类的聚类方法来确定聚簇中心。