PointNet++论文导读
- 主要改进
- 网络结构:
- 非均匀采样下的特征学习的鲁棒性
- 利用点特征传播处理数据集分割
论文链接:https://arxiv.org/abs/1612.00593
主要改进
PointNet的基本思想是学习每个点的空间编码,然后将所有单个点的特征聚合成一个全局点云标签,这种设计,导致PointNet不会获取点云集合的局部特征;
针对局部特征提取,PointNet++先通过空间欧氏距离将点集划分为重叠的局部区域,从小领域中提取局部特征,然后向前递归将局部特征进一步组成更大的单元,组成更高层次的特征,重复这一过程直到得到整个点集的特征;
Pointnet++中关键的两个问题:如何划分子集,以及如何设计局部特征提取层来抽象子集得到局部特征;论文中给出的方法为通过PointNet网络来实现局部特征的提取,通过基于欧式距离作为半径的领域聚类来划分neighborhood ball(邻域球),然后通过最远点采样(FPS)算法得到子集中的骨干点(centroids);
点云密度较低的地方,可能会导致骨干点提取不足够,进而导致局部特征无法提取;论文中还对比了CNN网络中小的卷积核更有助于提取局部特征,有助于提高CNN网络的能力,但是在点云数据中,由于采样不足,小邻域可能包含的点太少,导致PointNet不能够获取正确的特征;
论文的一个重要贡献是PointNet++在多个尺度上利用邻域来实现鲁棒性和细节捕获。在训练过程中借助于随机输入dropout,网络根据输入数据学习自适应地对不同尺度检测到的模式进行加权,并结合多尺度特征。实验表明,PointNet++能够高效、鲁棒地处理点集。特别是,在具有挑战性的3D点云基准测试中获得了明显优于最先进的结果;
网络结构:
PointNet++的层次结构由许多抽象层次组成;在每个层次上,一组点被处理和抽象,以产生一个元素更少的新集合。集合抽象层由三个关键层组成:采样层、分组层和PointNet层。采样层从输入点中选择一组点,定义局部区域的质心。分组层然后通过寻找质心周围的“邻近”点来构建局部区域集。PointNet层使用mini-PointNet将局部区域模式编码为特征向量;
集合抽象层以N × (d + C)矩阵作为输入,该矩阵由N个坐标为d-dim、点特征为C-dim的点组成。它输出一个N0 × (d + c0)矩阵,包含N0个子采样点,坐标为d-dim,新的c0 -dim特征向量总结了局部上下文;
采样层:使用最远点采样法(FPS)提取骨干点,相较于随机采用,在采样数目相同的情况下可以更好的覆盖数据集;
分组层:该层的输入是一个大小为N × (d + C)的点集和一组大小为N0 × d的质心的坐标。输出是大小为N0 × K × (d + C)的点集组,每组对应一个局部区域,K为质心点的邻域点数。注意,K在组之间是不同的,但是后续的PointNet层能够将灵活数量的点转换为固定长度的局部区域特征向量;球查询查找在查询点半径内的所有点(在实现中设置了K的上限)。另一种范围查询是K个最近邻(kNN)搜索,它可以找到固定数量的3个相邻点。与kNN相比,球查询的局部邻域保证了固定的区域尺度,从而使局部区域特征在空间上更具可泛化性,这对于需要局部模式识别的任务(如语义点标记)是首选;
PointNet层:在这一层中,输入是数据大小为N0×K×(d+C)的N0个点的局部区域;输出中的每个局部区域由其质心和编码质心邻域的局部特征抽象。输出数据量为N0 × (d + c0);首先将局部区域内点的坐标转换为相对于质心点的局部坐标系,使用PointNet作为局部模式学习的基本构建块。利用相对坐标与点特征相结合的方法可以捕获局部区域的点对点关系;
非均匀采样下的特征学习的鲁棒性
点集在不同区域的密度不均匀是很常见的。这种不均匀性给点集特征学习带来了巨大的挑战。在密集数据中学习到的特征可能无法推广到稀疏采样区域。因此,稀疏点云训练的模型可能无法识别细粒度的局部结构。
理想情况下尽可能仔细地检查一个点集,以捕获密集采样区域中最精细的细节。然而,在低密度地区,这种近距离检查是被禁止的,因为采样不足可能会破坏局部模式。在这种情况下,应该在更大的范围内寻找更大规模的模式。为了实现这一目标,提出了密度自适应的PointNet层,当输入采样密度发生变化时,这些层学习组合来自不同尺度区域的特征。把具有密度自适应点网层的分层网络称为PointNet++。
每个抽象级别包含单个尺度的分组和特征提取;在PointNet++中,每个抽象层提取局部模式的多个尺度,并根据局部点密度智能组合。在局部区域分组和不同尺度特征组合方面,我们提出了以下两种类型的密度自适应层:
多尺度分组(MSG):如图3 (a)所示,捕获多尺度模式的一种简单而有效的方法是应用不同尺度的分组层,然后根据PointNets提取每个尺度的特征。将不同尺度的特征串联起来,形成多尺度特征;
训练网络学习一种结合多尺度特征的优化策略。这是通过随机放弃每个实例的随机概率输入点来完成的,称之为随机输入Dropout。具体来说,对于每个训练点集,从[0;P],其中P≤1。对于每个点,以概率θ随机丢弃一个点。在实践中,设置p = 0:95以避免产生空点集。在这样做的过程中,为网络提供了各种稀疏性(由θ引起)和不同均匀性(由dropout中的随机性引起)的训练集。在测试期间,保留所有可用的分数。
多分辨率分组(MRG):上面的MSG方法在计算上是昂贵的,因为它在每个质心点的大规模邻域上运行本地PointNet。特别是,由于质心点的数量通常在最低水平相当大,时间成本是显著的。
提出了一种替代方法,避免了这种昂贵的计算,但仍然保留了根据点的分布特性自适应聚合信息的能力。在图3 (b)中,某一级Li区域的特征是两个向量的串联。通过使用集合抽象级别从较低级别Li−1总结每个子区域的特征,得到一个向量(图左)。另一个向量(右)是通过使用单个PointNet直接处理局部区域中的所有原始点而获得的特征。
单尺度分组(SSG):每层单尺度分组的精简PointNet++,不能推广到稀疏采样密度,而SSG+DP通过在训练时间随机剔除点来修正这个问题
当局部区域的密度较低时,第一个向量的可靠性可能不如第二个向量,因为计算第一个向量的子区域包含更稀疏的点,并且更容易受到采样缺陷的影响。在这种情况下,第二个向量的权重应该更高。另一方面,当局部区域的密度很高时,第一个向量提供了更精细的细节信息,因为它具有在较低水平上以更高分辨率递归检查的能力。与MSG相比,该方法避免了在最低层次上对大规模邻域进行特征提取,计算效率更高。
这里对比论文中给出的处理ModelNet40分类和Shapenet部件分割的结果可以看出:MSG+DP的处理效果无论分类还是分割都取得了最好的效果;
利用点特征传播处理数据集分割
在集合抽象层,对原始点集进行次采样。然而,在语义点标注等集合分割任务中,需要获得所有原始点的点特征。一种解决方案是在所有的抽象层中抽取所有的点作为质心,但是这样会导致较高的计算成本。另一种方法是将特征从下采样点传播到原始点。
采用基于距离的插值和跨层跳过链接的分层传播策略。在特征传播层中,将点特征从Nl × (d + C)点传播到Nl−1点,其中Nl−1和Nl (Nl≤Nl−1)是集合抽象层l的输入和输出的点集大小。通过在Nl−1点的坐标处插值Nl点的特征值f来实现特征传播。在许多插值选择中,使用基于k个最近邻的逆距离加权平均(默认情况下使用p = 2, k = 3)。然后将Nl−1个点上的插值特征与来自集合抽象级别的跳过链接点特征连接起来。然后将连接的特征通过“单位点网”传递,这类似于cnn中的一对一卷积。几个共享的全连接层和ReLU层被应用于更新每个点的特征向量。重复这个过程,直到将特征传播到原始的点集。