一、概览
论文地址:https://arxiv.org/ftp/arxiv/papers/2003/2003.09644.pdf
代码下载:https://github.com/charlesq34/pointnet2
论文框架:
研究目的:
增强 PointNet 识别细粒度模式的能力和对复杂场景的泛化能力,使其能够能够高效、稳健地学习深层点集特征。
解决方法:
- 递归应用PointNet的分层神经网络来对输入点集进行嵌套划分。
- 在训练过程中借助随机输入丢失,学习对不同尺度上检测到的模式进行自适应加权,并根据输入数据对多尺度特征进行组合。
研究贡献:
- PointNet++在多个尺度上利用邻域来实现健壮性和细节捕捉,在学习关于距离度量的分层特征方面是有效的。
- 针对非均匀点采样问题,提出了两个新的集合抽象层,根据局部点密度智能聚合多尺度信息。
实验数据集: MNIST、ModelNet40、SHREC15、ScanNet
二、相关工作
分层特征学习的思想已经非常成功。在所有的学习模型中,卷积神经网络是最突出的模型之一。然而,卷积不适用于具有距离度量的无序点集,这是我们工作的重点。
Pointnet 和 Order matters 研究了如何将深度学习应用于无序集合。但它们忽略了基础距离度量,即使只有一个点集。因此,它们无法捕获点的局部上下文,并且对全局集合转换和归一化敏感。在这项工作中,我们以从度量空间中采样的点为目标,并通过在设计中显式地考虑潜在的距离度量来解决这些问题。
从度量空间中采样的点通常带有噪声,并且采样密度不均匀。这影响了点特征的有效提取,给学习带来了困难。其中一个关键问题是为点特征设计选择合适的比例尺。以前,在几何处理领域或摄影测量和遥感领域,已经开发了几种方法来解决这一问题。与所有这些工作不同的是,我们的方法学会了以端到端的方式提取点特征和平衡多个特征尺度。
在3D度量空间中,除了点集,还有几种流行的深度学习表示法,包括体积网格和几何图。然而,在这些工作中,都没有明确地考虑到抽样密度不均匀的问题。
三、本文方法
3.1 分层点集特征学习
虽然PointNet使用单个最大合并操作来聚合整个点集,但我们的新体系结构建立了点的分层分组,并沿着层次逐步抽象越来越大的局部区域。
我们的层次结构由多个 set abstraction(这里不知道怎么翻译合适) 组成。在set abstraction,对一组点进行处理和抽象,以产生具有较少元素的新集合。set abstraction 由三个关键层组成:采样层、分组层和 PointNet 层。采样层从定义局部区域质心的输入点中选择一组点。然后,分组图层通过查找质心周围的“相邻”点来构建局部区域集。PointNet层使用迷你PointNet将局部区域模式编码为特征向量。
一个 set abstraction 以一个 矩阵作为输入,该矩阵来自具有 维坐标和 维特征的 个点。它输出一个 矩阵,这个矩阵具有 个 维坐标的二次采样点和总结局部上下文的新 维的特征向量 。
采样层
给定输入点 ,我们使用迭代最远点采样(FPS)来选择点 的子集,使得 是相对于其余点距离集合 最远的点。与随机采样相比,在质心数目相同的情况下,该算法对整个点集的覆盖率更高。与扫描数据分布不可知的向量空间的CNN不同,我们的采样策略通过依赖于数据的方式生成 感受野(receptive fields)。
分组层
该层的输入是大小为 的点集和一组大小为 的质心的坐标。输出是大小为 的点集的组,其中每组对应于一个局部区域, 是质心点邻域中的点数。这里, 因组而异,但是随后的 PointNet 层能够将不同数量的点转换成固定长度的局部区域特征向量。
在卷积神经网络中,像素的局部区域由在特定曼哈顿距离内使用数组索引的像素 曼哈顿距离 组成,这个特定的曼哈顿距离就是核大小。在从度量空间采样的点集中,点的邻域由度量距离来定义。
PointNet 层
在这一层中,输入的是数据大小为 的点的 个局部区域。输出中的每个局部区域从它的质心和编码质心邻域的局部特征中提取。输出数据大小为 。
首先将局部区域中的点坐标转换成相对于质心点的局部框架:,其中 ,,其中 是质心的坐标。我们使用 PointNet 作为局部模式学习的基本构建模块,通过使用相对坐标和点特征,我们可以捕获局部区域内的点对点关系。
3.2 非均匀采样密度下的鲁棒特征学习
如前所述,点集在不同区域的密度不均匀是很常见的。这种不均匀性给点集特征学习带来了巨大的挑战。在密集数据中学习的特征可能不会推广到稀疏采样区域。因此,为稀疏点云训练的模型可能无法识别细粒度的局部结构。
理想情况下,我们希望尽可能仔细地检查某个点集,以捕捉密集采样区域中的最精细细节。然而,这种近距离检查在低密度区域是被禁止的,因为局部特征可能会因采样不足而被破坏。在这种情况下,我们应该在更大的范围内寻找更大规模的特征。为了实现这一目标,我们提出了密度自适应PointNet层(如下图),当输入采样密度改变时,该层学习合并来自不同尺度区域的特征。我们称我们的具有密度自适应 PointNet 层的分层网络为PointNet++。
在PointNet++中,每个 set abstraction 提取多个尺度的局部模式,并根据局部点密度进行智能组合。通过对局部区域进行分组,结合不同尺度的特征,我们提出了两种密度自适应层,如上所示。
3.2.1 多尺度分组(MSG)
如上图(a)所示,捕捉多尺度模式的一个简单而有效的方法是应用不同尺度的分组图层,然后根据相应的 PointNet 来提取每个尺度的特征。连接不同尺度的特征以形成多多尺度特征。
我们对网络进行训练,学习一种优化策略,将多尺度特征结合起来。这是通过为每个实例分配的随机概率随机丢弃输入点来实现的,我们称之为随机输入丢弃(random input dropout)。具体地说,对于每个训练点集合,我们从 中选择一个均匀抽样的丢弃率 ,其中 。对于每个点,我们以概率 随机丢弃。在实践中,我们设置 以避免生成空点集。在这样的过程中,我们给网络提供了各种稀疏性(由 引起)和不同均匀性(由丢弃的随机性引起)的训练集。测试期间,我们保留所有可用的分数。
3.2.2 多分辨率分组(MRG)
上面的MSG方法非常耗费计算资源,因为它为每个质心点在大规模的邻域中运行局部PointNet。具体地说,由于质心点的数量通常相当大,因此时间成本很大。在这里,我们提出了另一种方法,它避免了这种昂贵的计算,但仍然保留了根据点的分布属性自适应聚合信息的能力。在上图(b)中,某一级别的区域 的特征是两个矢量的串联。一个矢量(图中左侧)是通过使用 set abstraction 从较低级别 汇总每个子区域的特征来获得的。另一个矢量(右)是通过使用单个 PointNet 直接处理局部区域中的所有原始点而获得的特征。
当局部区域的密度较低时,第一向量可能比第二向量更不可靠,因为在计算第一向量时的子区域包含更稀疏的点,并且出现更多的采样不足。在这种情况下,第二个向量的权重应该更高。另一方面,当局部区域的密度较高时,由于第一向量具有在较低级别递归地以较高分辨率进行检查的能力,因此第一向量有更精细细节的信息。
与MSG方法相比,该方法避免了在最低层进行大规模邻域特征提取,计算效率更高。
3.3 用于集合分割的点特征传播算法
在集合抽象层中,对原始点集进行二次采样。然而,在集合分割任务中,如语义点标注,我们希望获得所有原始点的点特征。一种解决方案是始终将所有点采样为所有设置的抽象级别中的质心,但这会导致较高的计算成本。另一种方法是将特征从次采样点传播到原始点。
我们采用基于距离的插值和跨级跳过链接的分层传播策略。在特征传播层中,我们将点特征从 点传播到 点,其中 和 是 set abstraction level 输入和输出的点集大小。我们通过在 点的坐标上插值 点的特征值 来实现特征传递。在众多插值选择中,我们使用基于 近邻的反距离加权平均(下面公式中默认 )。然后,将 点上的插值特征与 set abstraction 中的跳过链接点特征连接起来。再将拼接的特征通过一个“单元 PointNet”,这类似于 CNNs 中的逐个卷积。应用几个共享全链接和 ReLU 层来更新每个点的特征向量。重复该过程,直到我们将特征传递到原始点集。