Deep Hough Voting for 3D Object Detection in Point Clouds论文笔记
一、四个问题
- 如何解决该问题?
现有三维目标检测方法大多沿用二维检测流程:通过提取特征后再结合RPN(区域建议网络)进行处理。为了利用二维探测器中的架构,在实际应用中通常会将三维点云转换为常规网格(如体素网格或鸟瞰图),或者依赖二维图像中的检测结果来生成3D框;然而这种基于体素化或网格化的处理方式会导致信息细节的丢失。
在特征提取阶段虽然Point net++在3D分类和分割任务中取得了显著成果;但将其有效应用于3D检测仍有待深入研究;一种直观的方法是在Point net++输出特征后附加一个RPN(区域建议网络)来生成目标框;但这种方法效果欠佳主要是因为点云数据的稀疏性特点:在二维图像中物体中心周围都会有像素覆盖;而在三维空间中物体表面附近通常缺乏足够的点云数据;因此基于点云的目标检测网络难以在物体中心位置有效地学习场景的上下文信息;
目前三维目标检测技术主要存在以下两个关键问题:
一是通过网格化处理导致信息细节丢失;
二是由于点云数据的稀疏性特征,在目标中心区域难以获取有效的上下文信息。
用什么方法解决?
为了解决这一问题的研究者们提出了VoteNet算法。该算法通过将点云深度网络与基于深度的点集网络结合,并模拟了类似经典的霍夫投票机制。这种结合使得系统能够识别出位于物体中心附近的虚拟采样点,并通过对这些采样点进行分组和聚合来生成候选框。
效果如何? 在两大知名数据集上获得了最先进 3D 检测精度。采用纯几何信息而非依赖彩色图像的 VoteNet,在性能上超越了现有技术。
二.论文概述
1.霍夫投票
经典霍夫变换的思想:在参数空间内进行投票,投票得数高的就是要得到的值。
而在传统2D霍夫投票中,在已经有了一部分已经标注好的框和图片(或者feature)的前提下,2D霍夫投票将每一个框中的图片或者feature就当作直线检测中的点,框相对于物体中心点的offset就相当于要vote的参数。然后将其feature放入参数空间内,检索offset并且计算vote。
为了成功将vote机制引入到3D 点云中,作者提出了如下霍夫投票流程:
(1)Interest Points(即seed points):作者使用了一个PointNet++自适应提取seed points而不是手工提取seed points。
(2)Vote:作者先利用前一步PointNet++某一层的采样点作为seed points,然后利用逐点的MLP学习了每个点坐标以及特征的位移,并从它们的特征中生成vote。此外vote location可以通过特征向量进行扩充,从而实现更好的聚合。
(3)Vote aggregation:通过可训练的点云处理层实现,利用投票功能,网络可以筛选出低质量的vote,进行投票集成,作者使用最远点采样以及ball query的方式去聚合vote。
(4)Object proposals:boundary box的坐标、维度、朝向、语义类别都可以直接从聚合的特征中生成。
2.VoteNet结构

给定XYZ坐标系统的N个输入数据点形成的point cloud序列。
该序列将经过基于PointNet++架构的backbone网络采样处理。
在此过程中, 网络不仅提取各数据点的深度特征, 还进一步提升至c+维后输出M个子数据.
这些选中的M个子数据被定义为seed points.
每个选中的seed point独立地通过vote module生成其独特的投票信息.
随后对所有的投票信息进行分组并聚合.
整个系统可分为两个主要模块: 第一部分负责从原始数据中提取关键信息; 第二部分则用于对选中的seed points进行进一步处理.
最终输出彩色3D bounding boxes以标记物体边界.
该系统旨在实现对具有三维坐标的输入点云进行处理以生成投票信息,并将此任务主要包含两个关键阶段:首先通过主干网络提取空间信息;其次基于种子采样器完成Hough变换相关操作。
在第一阶段中:
系统采用PointNet++架构作为主干网络模型;
该模型由多个采样器模块与带有跳跃连接的传播层构成;
这些组件负责对输入点集进行编码并输出精简后的关键样本;
最终得到M个种子样本及其对应的3+C维特征表示。

在上一层初始化时生成了M×(3+C)个种子点,在每个种子点上分别学习其在三维空间中的偏移量Δx以及在特征空间中的偏移量Δy,并通过逐元素相加作用于主干网络输出(即作用于种子点所在的(3+C)维空间),从而更新种子点的位置及对应的特征表示。
考虑一个种子点集合S={s_i}其中s_i=[x_i; f_i];这里x_i代表三维空间中的坐标位置f_i表示C维特征向量;每一个种子点独立地经过一个共享的投票模块进行投票操作。
具体而言该投票模块采用多层感知机(MLP)架构来处理输入数据:输入为s_i的空间坐标位置x_i及其对应的特征向量f_i;经过MLP处理后输出新的位移信息Δx_i和Δf_i;最终得到的新特征向量v_i=[y_i; g_i]其中y_i=x_i+Δx_ig_i=f_i+Δf_i。
从上述过程可以看出所得到的新特征向量v实际上携带了相对于原始 seeds 的调整信息。
预测出的空间位移∆x由回归损失函数进行优化训练以获得最佳估计结果。

其中符号1[si on object]用于指示种子点si是否位于物体表面与否,而Mpos则代表该表面总共有多少个种子点.∆x∗i则是从seed point位置xi相对于其所属物体的边界框中心的真实偏移量.
2.2Object Proposal and Classifification from Votes
在上一部分中,经过vote之后(加上偏移)的点使得位于同一物体内的特征更加靠近,更易于聚类和学习上下文特征。在这一部分中,输入votes,得到proposal和分类。分为两个主要的步骤:通过抽样和分组对votes聚类;在每一个聚类中利用其聚合的特征回归proposal并进行分类
2.2.1Vote clustering through sampling and grouping
这一步中,作者参考pointnet++的方法,选择了一种简单的策略对votes聚类,即根据空间邻近度进行统一采样和分组。使用一个pointnet++的SA层进行特征的聚合。首先对于位移过后的seed,使用最远点采样随机采样K个点,再使用ball query去找寻neighbor并分组。通过这一步以后,就得到了K个cluster。
具体来看:从一组投票{vi=[yi;gi]}中,基于{yi}进行最远点采样,得到包含K个votes的子集{vik}。然后对每个vik进行ball query找到它的neighbor votes,就形成K个聚类。
2.2.2Proposal and classifification from vote clusters
对于每个vote cluster,把它看作一个小的点云,用一个pointnet网络来处理,最后得出每个vote cluster的feature。把这个feature里面的数据,分别看作:是否为物体的得分、bounding box参数、分类得分等信息,为5+2NH+4NS+NC个通道。
具体来看:作者采用共享的pointnet。给定一个votes聚类C={wi},其中wi=[zi;hi],zi为vote位置,hi为vote特征,聚类中心为wj。为了利用局部votes几何,需要先将votes位置转换成局部标准化坐标系。聚类中的所有votes坐标点经过归一化后被输入到一个类pointnet的网络MLP1进行独立处理。然后按通道最大池化为单特征向量,并传递到 MLP2融合各个votes的信息。

在输出的5 + 2NH + 3NS + NC个通道中
2.2.3Loss function

该段内容涉及基于曼哈顿距离(Manhattan距离)投票回归模型中所包含的各项损失函数(前面所述对seed points偏移量的监督损失),以及分类负样本或正样本、回归边界框(bounding box)以及语义分类相关的损失函数。具体来说,则分为以下几个组成部分:

针对bounding box中心、角度以及尺度等特征进行分类与回归处理。其中用于分类中心位置所采用的损失函数为Chamfer距离损失函数。
在损失计算过程中,在筛选出与真实目标 bounding box中心距离小于等于0.3米或大于等于0.6米的所有候选框后被划分为正样本与负样本。
其余候选框的目标预测结果不做额外惩罚处理。
仅对被归类为正样本的目标框进行所有损失计算,在此之外仅计算类别判别损失。
实验部分:作者首先在两个大规模的3D室内目标检测基准上与其最新方法对比了基于霍夫投票机制的目标检测器。随后作者通过分析实验来探讨投票机制的重要性并突出了其在紧凑性和效率方面的显著优势最后作者展示了该检测器的定性效果
