2017-NIPS-PointNet++:Deep Hierarchical Feature Learning on Point Sets in a Metric Space
1. 摘要
这篇文章[1]是 PointNet 的改进版。PointNet 是直接将神经网络用于点云数据处理的先锋,虽然 PointNet 在 3D 任务上取得不错的效果,但其还是存在不足。PointNet 忽略了点云数据间的空间局部结构,从而不能很好地识别更细粒度的模型,也不能很好地泛化到复杂的场景。PointNet++ 则针对这个问题,在 PointNet 基础上引入了层级式的嵌套结构来捕获局部特征。此外,真实的点云数据采集往往是不均匀的(因为采样时是从传感器点状发出信号的,自然离传感器近的采样密度高,远的密度低),而这会导致在均匀采样的点云数据集下训练的模型性能产生明显下降。作者在 PointNet++ 中提出了一种新的针对集合数据的学习层,其可以自适应地结合不同尺度下学习到的特征。广泛的实验数据显示 PointNet++ 可以有效且鲁棒地学习到深层的点云数据集合特征,在 3D 点云任务上达到了超越已有的 SOTA 性能。
2. 引言
作者强调了一下点云数据的特殊性,即其作为集合数据的无序性。而另一方面,点云数据中的点之间还存在局部的相邻信息,这种结构信息在不同区域会展现非常不同的属性,比如不同区域的密度不同。
之前的 PointNet 主要是学习了一种时空编码,然后将每个点的特征汇聚成全局特征。PointNet 并没有考虑到在度量空间下,点与点之间局部相邻信息。但从 CNN 的发展来看,空间局部信息是非常用用的。CNN 通过一层层的卷积,逐步扩大感受野,从而能够捕获到多分辨率的层级信息。
受感于 CNN,作者将这种层级结构引入到 PointNet 中,设计出了 PointNet++。PointNet++ 的主要思想为:
- 首先将点云数据按距离度量划分成交叠的若干区域;
- 然后通过从小邻域内的几何结构中提取出局部特征;
- 再将逐级将局部特征扩大,直到得到全局特征。
PointNet++ 的设计需要解决两大痛点:
- 一是如何对点云数据在度量空间中进行划分;
- 另一是如何通过局部特征学习器学习到局部特征。
在本文中,作者选择 PointNet 作为局部特征学习器。而对于点云集合划分,作者提出先使用最远点采样(FPS, Farthest Point Sampling)算法得到一些中心点,然后以这些中心点为球心画球,使得所有的球能覆盖整个点云集合。现在问题便转移到如何确定合适的球大小。在 CNN 中,对于每一个卷积层,级联小的核已被证实可以提升 CNN 的性能。但对于点云数据, 作者发现球的半径还是越大越好,因为小的半径可能只包含少数点,导致采样缺失过多,无法让 PointNet 有效地学习到局部结构信息。
作者指出,PointNet++ 的一大贡献点在于:PointNet++ 在多尺度下利用了相邻点信息,使得学习更鲁棒且细粒度。同时,作者对输入层使用了 Dropout,使得 PointNet++ 可以自适应地学习到不同密度下的权重模式。
3. 模型
3.1 分类
PointNet++ 的整体架构如下图所示:
PointNet++ 主干网络主要分为三部分:
- 采样层(Sampling Layer):给定输入点 ,使用最远点采样(FPS)得到一个中心点子集 。相对于随机采样,在固定采样点数时,FPS 采样能够更好地覆盖整个点集。
- 聚合层(Grouping Layer):给定输入特征 ,且采样中心点坐标集为 ,聚合层的输出为 。其中, 为对每个中心点取其相邻的点数。
- PointNet 层:给定输入特征 ,每个中心点都会聚合其相邻 个点的信息,故输出为 。
对于 PointNet 层,作者这里并不是直接使用原版的 PointNet[2],而是在其基础上加入了多尺度信息。原版的 PointNet 是在单尺度下进行局部特征的学习,然而当局部点云数据密度比较小时,可能由于采样的缺乏而无法学习到任何有效的特征信息。因此,作者提出在 PointNet 层基础上,对其输入进行密度自适应,主要有两种方法:
-
MSG(Multi-scale grouping):在进入 PointNet 前先对特征进行多尺度拼接聚合;
-
MRG(Multi-resolution grouping):MSG 在大尺度时计算复杂度太大,作者提出可以使用两级分辨率聚合来作为 MSG 的替代。
为了模拟在不同密度的点云数据下进行训练,从而增强 PointNet++ 的鲁棒性和泛化性,作者提出对输入的点云数据进行随机 Dropout 操作。具体为对每一个点云训练数据,设定一个 Dropout 率 ,。为了避免点云数据 Dropout 成空集,作者这里取 。这样,点云密度的不同稀疏性(由 引入)和不均匀性(由 Dropout 本身的随机性引入)就都被模拟出来了。
3.2 分割
虽然引入多尺度可以更好的聚合局部特征,但同时由于采样导致每一级 Set Abstraction 层都会导致输出特征数量减少,无法直接用到分割任务上。一种简单粗暴的方式是完全采样 + 全局聚合,即对每个点都将其他所有点的信息拿过来聚合,但这种方式复杂度过高。于是作者提出一种基于插值和 Shortcut 的层级传播策略(本质是一种上采样方法),如上文模型架构图所示。
-
插值层(Interpolation Layer):可以看作是聚合层(Grouping Layer)的逆操作。假定输入为 ,输出为 ,则对于 中的每个点,都会将其在 中的邻近的 个点的信息传播过来,具体的插值即为对这 个点的特征进行加权平均,如下公式所示。同时,还会将对应的 Set Abstraction 中的聚合层的输出拿过来(Shortcut)进行拼接。
-
点对点 PointNet 层(Unit PointNet):类似于 卷积层。
4. 实验
4.1 数据集
作者在四个数据集上进行了实验:
4.2 基于欧拉距离度量的分类任务
作者在 2D MNIST 数据集和 3D ModelNet40 数据集上进行了实验,分类结果基本达到了 SOTA,而且也验证了 PointNet++ 在不同的点云采样密度下的鲁棒性。下图中 SSG 表示单尺度聚合层(相对于 MSG)。
4.3 场景分割
作者基于 Scannet 框架[3],对比了 3DCNN[4]、PointNet 和 PointNet++ 网络的性能。
4.4 基于非欧距离度量的分类任务
非刚性形状分类就是一类非欧距离度量的分类任务。比如, 和 应当分为一类,即使 和 在欧氏距离上更近。
作者在 SHREC15 数据集上进行了实验,分类准确度也是超出了当时 SOTA 的 DeepGM 好几个点。
4.5 时空复杂度
5. 结论
PointNet++ 主要在 PointNet 的基础上考虑了点与点之间的空间信息,引入多尺度层级结构,在多尺度下进行局部信息的聚合。此外,PointNet 还针对点云数据的非均匀密度采样进行了研究,提出了 MSG 和 MRG 的解决方案,并对输入引入随机 Dropout 层来模拟非均匀密度采样。
未来,如何降低模型的时空间复杂度是一个值得研究的方向。
附录
- Qi, C. R., Yi, L., Su, H., & Guibas, L. J. (2017). Pointnet++: Deep hierarchical feature learning on point sets in a metric space. Advances in neural information processing systems, 30. ↩
- Qi, C. R., Su, H., Mo, K., & Guibas, L. J. (2017). Pointnet: Deep learning on point sets for 3d classification and segmentation. In Proceedings of the IEEE conference on computer vision and pattern recognition (pp. 652-660). ↩
- A. Dai, A. X. Chang, M. Savva, M. Halber, T. Funkhouser, and M. Nießner. Scannet: Richly-annotated 3d reconstructions of indoor scenes. arXiv preprint arXiv:1702.04405, 2017. ↩
- J. Bruna, W. Zaremba, A. Szlam, and Y. LeCun. Spectral networks and locally connected networks on graphs. arXiv preprint arXiv:1312.6203, 2013. ↩
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!