PointNet++论文阅读

整体读后感:
文章相对于PointNet还是有比较大的改进的
两个关键点:## 标题
1.针对PointNet中网络只学习了全局特征而忽略了局部特征,从而影响了在细粒度模式和复杂场景问题中的通用性。文章提出了一种新的分层结构“强制”网络学习局部特征。
2.针对点云扫描数据存在的密度不均匀的问题,提出了MSG(Multi-Scale Grouping)和MRG(Multi-Resolution Grouping),用在Grouping层。
其中第一点最关键对模型的精度贡献比较大,第二点则是使得网络的鲁棒性更强。

下面针对两个关键点分别记录一下论文的细节:

网络结构

针对如何让网络能更好的学习到局部特征的问题,文章认为可以利用空间距离(metric space distances),将一个点云划分成很多“小点云”,然后提取这些“小点云”的特征,然后把提取出来的特征作为一个整体再进行划分提取,通过不断重复这样一个过程(如图所示,这个过程通过SA(set abstraction)结构实现),提取到的特征感受野越来越大,直到最后聚合成一个描述整个点云特征的特征向量,用于分类、分割等任务。
体会这整个过程,是不是发现很类似于二维CNN中提取图像特征的过程,通过不断地卷积,得到越来越大的感受野,聚合到更大的特征。

(这里有自己的一点感受,不知道对不对:对于二维CNN来说,卷积核也是二维的,并且通常采用比图片像素小很多的卷积核,以一种滑动卷积核的形式对图片进行卷积,其实这样的操作过程就使得网络从浅层(局部)特征一步步得到全局特征。而对于PointNet中使用的MLP,输入的是点的三维坐标,每层的神经网络都是对整体的三维点坐标进行操作,最后提取到的自然就是全局的特征,而少了一些局部特征(细节))

所以,通过这种划分点云的方式“强制”网络学习局部特征。

PointNet++论文阅读
两个要解决的问题:
1.如何对点云进行划分
2.如何利用特征提取器获取不同区域的局部特征
这两个问题实际上是相关的,要想通过特征提取器来对不同的区域进行特征提取,需要每个分区具有相同的结构。

  • 划分点云的方法
    本文使用邻域球的方式进行划分,即首先选取质点,然后以质点为中心选取一些近邻点作为一个区域。选取质点的方法本文采用的是FPS(farthest point sampling,最远点采样),近邻点的选取方法为,选取以质点为中心一定半径范围内数量上限为K的点划分为一个区域,还可以采用KNN的方法。
    其中,质点的数量与球半径和K的选取都是人为指定的。
    稍微解释一下FPS:选择点集中与剩余所有点的距离最大的点。
  • 提取特征的方法
    本文使用了PointNet作为特征提取器。

SA模块:

  • Sampling layer
    主要是对输入点进行采样,在这些点中选出若干个中心点
  • Grouping layer
    是利用上一步得到的中心点将点集划分成若干个区域,这一层使用Ball query方法生成N’个局部区域,根据论文中的意思,这里有两个变量 ,一个是每个区域中点的数量K,另一个是球的半径。这里半径应该是占主导的,会在某个半径的球内找点,上限是K。球的半径和每个区域中点的数量都是人指定的。这一步也可以使用KNN来进行,而且两者的对于结果的影响并不大。
    PointNet++论文阅读
  • PointNet layer
    是对上述得到的每个区域进行编码,变成特征向量。需要注意的一点是,在输入到网络之前,会把该区域中的点变成围绕质点的相对坐标。

每层的输入是 N x (C+d),其中N是输入点的数量,d是坐标维度,C是特征维度。输出是N’*(d + C’),其中N’是输出点的数量,d是坐标维度不变,C’是新的特征维度。

针对非均匀点云的处理方法

扫描产生的数据有可能存在密度不均匀的情况,如下图:
PointNet++论文阅读
这一点与CNN是不同的,CNN中数据都是均匀分布,并且研究表明,采用小的卷积核可以提升网络的性能,但这在点云数据上正好相反,如果采用小的采样半径,会因为采样不足而学习不到有效的特征。(试想一下,把一个点云放大,我们只能看到一个个点,根本不知道整体是什么)

针对这种情况,本文提出了两种方法解决不均匀点云数据中的采样问题。
PointNet++论文阅读

  • MSG,Multi-scale Grouping
    图(a)是一种简单而有效的多尺度模式捕获方法是应用不同尺度的分组层,然后根据PointNets提取每个尺度的特征。将不同尺度的特征串联起来,形成多尺度特征。
    这个方法就是将不同半径得到的采样点连接起来。毫无疑问,这样在计算上是昂贵的,因为它为每个质心点在大范围的邻域上运行PointNet。特别是,由于质心点的数量在最低层通常非常大,因此时间代价非常大。

  • MRG,Multi-resolution Grouping
    图3 (b)中,某一区域在某种程度上的特征是两个向量的串联。利用集合抽象层,将较低层次Li−1的每个子区域通过SA得到的特征聚合得到一个向量(图左)。另一个向量(右)是使用PointNet直接对局部区域的所有原始点进行处理得到的特征。

(我觉得这两种方法有点类似于CNN中的图片金字塔(MSG)和FPN中的横向连接思想(MRG))

具体的实验细节不记录,很多细节的地方没有仔细去想,有必要的话以后会仔细再看一遍,读一下源码。(文中有任何不对的地方还请大佬们指正。)

相关文章: