基于深度学习方法的点云算法3——PointNet++(点云分类分割)


请点点赞,会持续更新!!!
基于深度学习方法的点云算法1——PointNetLK(点云配准)
基于深度学习方法的点云算法2——PointNet(点云分类分割)
基于深度学习方法的点云算法4——PCT: Point Cloud Transformer(点云分类分割)


摘要

按设计,PointNet无法捕获由度量空间点所产生的局部结构,限制了其识别细粒度模式的能力以及对复杂场景的推广能力。本文介绍了一种分层神经网络(hierarchical neural network),它将点网PointNet归地应用于输入点集的嵌套划分。通过利用度量空间距离(metric space distances),本文设计的网络能够在不断增加的上下文范围内学习局部特征。进一步观察到,点集通常以不同的密度采样,这导致在均匀密度上训练的网络的性能大大降低,本文提出了新的**集学习层(set learning layers)**来自适应地组合来自多个尺度的特征。实验表明,PointNet++网络能够高效、稳健地学习深层点集特征。特别是,在具有挑战性的3D点云基准测试中,取得了明显优于最新技术(SOTA)的结果。


一、Introduction

对点云数据的特性进行分析
作者的关注点是几何点集的分析,它是欧几里德空间中点的集合。 一种特别重要的几何点集类型是由3D扫描仪捕获的点云,例如,从自动驾驶车辆捕获的点云。这种集合对其元素的排列具有不变性 (排列不不变性) 。除此之外,距离度量定义了可能具有不同属性的局部邻域。 例如,在3D扫描中不同位置的点的密度和其他属性可能不一致,密度变化可能来自透视效果、径向密度变化、运动等。

PointNet的缺陷
PointNet的基本思想是学习每个点的空间编码,然后将所有单独的点特征聚合为全局点云特征。根据其设计,PointNet不捕获由度量所引起的局部结构。然而,利用局部结构对卷积体系结构的成功至关重要。CNN将在规则网格上定义的数据作为输入,并能够沿着多分辨率层次结构以越来越大的比例逐步捕获特征。在较低水平,神经元的感受野较小,而在较高水平,神经元的感受野较大。沿着层次结构的抽象局部模式的能力可以更好地泛化到未知的情况。

PointNet++的主要思想
设计了一种称为PointNet++的分层神经网络,以分层方式处理在度量空间中采样的一组点。PointNet++的总体思想很简单。首先根据基础空间的距离度量将点集划分为重叠的局部区域。与CNN相似,从划分好的小邻域中提取局部特征,捕捉精细的几何结构;这些局部特征进一步分组得到更大的单元,并进行处理以生成更高级别的特征。重复这个过程,直到我们获得整个点集的特征。

PointNet++要解决的两个问题
PointNet++的设计必须解决两个问题:如何生成点集的分区,以及如何通过局部特征学习器抽象点集局部特征。这两个问题是相关的,因为点集的划分必须跨分区生成公共结构,以便可以共享局部特征学习器的权重,就像在卷积的卷积核的滑动一样。我们选择PointNet作为局部特征学习器(解决了第二个问题)。正如这项工作所证明的,PointNet是一种有效的体系结构,可以处理无序的点集以进行语义特征提取。此外,该体系结构对输入数据损坏具有鲁棒性。作为一个基本构建块,PointNet将局部点集或特征抽象为更高级别的表征。PointNet++在输入集的嵌套分区上的递归采用PointNet。

如何划分重叠的分区
仍然存在的一个问题是如何生成点集的重叠分区。每个分区被定义为基础欧氏空间中的一个邻域球,其参数包括质心位置和尺度。为了均匀覆盖整个集合,通过最远点采样(farthest point sampling,FPS)算法在输入点集中选择质心。与以固定步幅扫描空间的体积CNN相比,我们的局部感受野同时依赖于输入数据和度量,因此更高效。(解决了第一个问题

邻域球的尺寸选择问题
然而,由于特征尺度的纠缠和输入点集的非均匀性,决定局部邻域球的适当尺度是一个更具挑战性但又很有趣的问题。假设输入点集在不同区域具有可变密度,这与实际数据相符。因此,我们的输入点集与CNN输入非常不同,CNN输入可以看作是在均匀恒定密度的规则网格上定义的数据。在CNN中,与局部分区尺寸相对应的是卷积核的大小。使用较小的内核有助于提高CNN的能力。然而,我们在点集数据上的实验为这一规则提供了反证。由于采样不足,小邻域可能由太少的点组成,这可能不足以允许PointNet可靠地捕获特征。

重要贡献是多尺度
本文的一个重要贡献是,PointNet++利用多尺度的邻域来实现鲁棒性和细节捕获。该网络在训练过程中借助随机的输入丢失,学习由不同尺度检测到的自适应加权特征,并根据输入数据组合多尺度特征。实验表明,PointNet++能够高效、稳健地处理点集。特别是,在具有挑战性的3D点云基准测试中,获得了明显优于最新技术(SOTA)的结果。


二、Problem Statement

假设 X = ( M , d ) X=(M,d) X=(M,d)是一个度量继承自欧氏空间 R n R^n Rn的离散度量空间,其中 M M M属于 R n R^n Rn是点集, d d d是距离度量。除此之外,此外,欧氏空间中M的密度并非处处均匀。 我们聚焦于学习集函数 f f f,它将 X X X作为输入(以及每个点的附加特征),并生成能将 X X X重新分类的语义信息。 在实践中,这样的 f f f可以是将标签分配给 X X X的分类函数(分类任务),也可以是将每个点的标签分配给 M M M中的每个成员的分割函数(分割任务)。


三、 Method

本文的工作可以看作是PointNet的扩展,为PointNet添加了层次结构。我们首先回顾PointNet(第3.1节),然后介绍具有层次结构的PointNet的基本扩展(第3.2节)。最后,我们提出了我们的PointNet+,它甚至能够在非均匀采样点集中稳健地学习特征(第3.3节)。

3.1 Review of PointNet: A Universal Continuous Set Function Approximator

给出一个无序的点集 x 1 , x 2 , . . . x n {x_1,x_2,...x_n} x1,x2,...xn ,r然后可以定义一个集函数 f : x − > R f:x->R f:x>R将一个点集映射为一个向量。
在这里插入图片描述
集函数 f f f关于点的排列具有不变性,并且它可以逼近任何的连续函数。 h h h的响应可以被认为是点的空间编码。
PointNet在一些基准测试中取得了令人印象深刻的性能。然而,它缺乏在不同尺度上捕获本地上下文的能力。在下一节中,我们将介绍一个层次化的特征学习框架来解决这个限制。

3.2 Hierarchical Point Set Feature Learning

PointNet使用单个max pooling操作来聚合整个点集,PointNet++则构建了点的层级化分组,并沿着层次结构逐步抽象出越来越大的局部区域。
PointNet++由多个集合抽象(set abstraction)层组成(图2)。在每一个级别上,对一组点进行处理和抽象,以生成具有较少元素的新的集合。集合抽象层由三个关键层组成:采样层(Sampling layer)、分组层(Grouping layer)和PointNet层(PointNet layer)。采样层从输入点中选择一组点,定义为局部区域的质心。然后分组层通过在质心周围找到“相邻”点来构造局部区域集。PointNet 层使用mini-PointNet将局部区域的特征编码为特征向量。
集合抽象层将 N × ( d + C ) N×(d+C) N×(d+C)矩阵作为输入,该矩阵来自具有d维坐标和C维点特征的N个点。它输出一个 N ′ × ( d + C ′ ) N'×(d+C') N×(d+C)矩阵,由 N ′ N' N个具有d维坐标的子采样点和总结本地上下文的新 C ′ C' C维特征向量组成。下面介绍集合抽象层的各个层。

Sampling layer
采用迭代最远点采样法(farthest point sampling ,FPS)进行采样。与随机采样相比,在给出相同数量的质心点时,可以更好的覆盖整个点集,与扫描数据分布不可知的向量空间的CNN不同,本文的采样策略以数据相关的方式生成感受野。

Grouping layer
该层的输入是一个大小为 N × ( d + C ) N×(d+C) N×(d+C)的点集和一组大小为 N ′ × d N'×d N×d的质心的坐标。输出是一组大小为 N ′ × K × ( d + C ′ ) N'×K×(d+C') N×K×(d+C)的点集,其中每组对应于一个局部区域,K是质心点邻域中的点数。请注意,K在不同的组中有所不同,但后续的点网层能够将灵活数量的点转换为固定长度的局部区域特征向量。
在卷积神经网络中,像素的局部区域由阵列索引位于像素特定曼哈顿距离(核大小)内的像素组成。在从度量空间采样的点集中,点的邻域由度量距离定义。
Ball查询查找到查询点的半径范围内的所有点(在实际实现中设置了K的上限)。 另一种范围查询是K最近邻(kNN)搜索,它查找固定数量的相邻点。与kNN相比,ball query的局部邻域保证了固定的区域范围,从而使局部区域特征在空间上更具泛化性,这是局部模式识别(例如语义点标记)任务的首选。

**PointNet layer **
在这一层中,输入的是数据大小为 N ′ × K × ( d + C ′ ) N'×K×(d+C') N×K×(d+C) N ′ N' N个局部区域。输出中的每个局部区域都由其质心和对质心邻域进行编码的局部特征抽象出来。输出数据大小为 N ′ × ( d + C ′ ) N'×(d+C') N×(d+C)

3.3 Robust Feature Learning under Non-Uniform Sampling Density

如前所述,点集在不同区域的密度不均匀是很常见的。这种非均匀性给点集特征学习带来了重大挑战。在密集数据中学习的特征可能不会推广到稀疏采样区域。因此,为稀疏点云训练的模型可能无法识别细粒度的局部结构。
理想情况下,希望尽可能近距离地检查点集,以捕获密集采样区域中的最佳细节。然而,因为局部模式可能会因取样不足而损坏,因此不能在低密度区域进行此类近距离检查。在这种情况下,我们应该在更大的范围内寻找更大尺度的特征。为了实现这一目标,提出了密度自适应PointNet层(density adaptive PointNet layers ),当输入采样密度发生变化时,该层可由组合来自不同尺度区域的特征。将具有密度自适应点网层的层次网络称为PointNet++。
在这里插入图片描述
Multi-scale grouping (MSG)
捕获多尺度特征的一种简单但有效的方法是,应用具有不同尺度的分组层,然后利用PointNet提取每个尺度的特征。将不同比例的特征连接(Concatenate)起来,形成多尺度特征。
训练网络学习一种优化策略来结合多尺度特征。这是通过以每个实例的随机概率随机丢弃输入点来实现的,称之为随机输入丢弃(random input dropout)。具体地说,对于每个训练点集,我们从[0,p]中均匀抽样选择一个丢弃率θ,其中p≤ 1。对于每个点,随机丢弃一个概率为θ。实际上,我们将p设置为0.95以避免生成空点集。在此过程中,我们为网络提供了各种稀疏性(由θ引起)和不同均匀性(由丢弃中的随机性引起)的训练集。在测试过程中,保留所有可用点。

Multi-resolution grouping (MRG)
上面的MSG方法计算成本很高,因为它在大尺度邻域中为每个质心点运行局部PointNet。特别是,由于质心点的数量在最低级别通常相当大,因此时间成本非常大。
提出了一种替代方法,避免了如此昂贵的计算,但仍然保留了根据点的分布特性自适应聚合信息的能力。在上图(b)中,某个级别 L i L_i Li的区域的特征是两个向量的串联。使用集合抽象层(set abstraction layer)汇总每个较低级别的 L i − 1 L_{i-1} Li1子区域的特征,获得一个向量(左)。另一个向量(右)是通过使用单个PointNet直接处理局部区域中的所有原始点获得的特征。
当局部区域的密度较低时,左向量可能不如右向量可靠,因为计算左向量时的子区域包含更稀疏的点,并且更容易受到采样不足的影响。在这种情况下,右向量的权重应该更高。另一方面,当局部区域的密度较高时,左向量则可以提供更精细的细节信息,因为它具有在较低级别以较高分辨率递归检查的能力。

3.4 Point Feature Propagation for Set Segmentation

在集合抽象层,对原始点集进行二次抽样。然而,在语义点标记等集合分割任务中,我们需要获取所有原始点的点特征。一种解决方案是在所有集合抽象级别中始终将所有点作为质心进行采样,但这会导致较高的计算成本。另一种方法是将特征从子采样点传播到原始点。

我们采用基于距离的插值跨级别跳跃链接的分层传播策略。在特征传播层,我们将点特征从 N l × ( d + C ) N_l×(d+C) Nl×(d+C)点传播到 N l − 1 N_{l−1} Nl1点,其中 N l − 1 N_{l−1} Nl1 N l N_l Nl N l − 1 < N l N_{l−1}<N_l Nl1<Nl) 是集合抽象层 l l l的输入和输出的点集大小。

在这里插入图片描述


4 Experiments

Datasets
在四个数据集上进行评估,从2D对象(MNIST)、3D对象(ModelNet40刚性对象、SHREC15非刚性对象)到真实3D场景(ScanNet)。目标分类通过准确性进行评估。语义场景标注通过平均体素分类准确率进行评估 。

4.1 Point Set Classification in Euclidean Metric Space

我们对从2D(MNIST)和3D(ModleNet40)欧氏空间采样的点云进行分类,评估我们的网络。MNIST图像将转换为数字像素位置的二维点云。3D点云是从ModelNet40形状的网格表面采样的。默认情况下,MNIST使用512点,ModelNet40使用1024点。在表2中的最后一行,我们使用面法线作为额外的点特征,其中我们还使用更多的点(N=5000)来进一步提高性能。所有点集均归一化为零均值,且在一个单位球内。我们使用具有三个完全连接层的三级层次网络1。
在这里插入图片描述
在表1和表2中,我们将我们的方法与以前最先进的代表性方法进行了比较。请注意,表2中的PointNet(vanilla)是不使用转换网络(T-Net)的版本,这相当于我们的只有一个层级的分层网络。

4.2 Point Set Segmentation for Semantic Scene Labeling

为了验证我们的方法适用于大规模点云分析,我们还对语义场景标记任务进行了评估。目标是预测室内扫描点的语义对象标签。 3DCNN 在体素化扫描上使用完全卷积神经网络提供基线。它们完全依赖于扫描几何体,而不是RGB信息,并基于每个体素报告精度。为了进行公平的比较,我们在所有实验中删除了RGB信息,并将点云标签预测转换为体素标签。我们还与PointNet进行了比较。下图(蓝色条)中以每个体素为基础报告了精度。
在这里插入图片描述
PointNet++大大优于所有的基线方法。与 3DCNN相比,我们直接在点云上学习,以避免额外的量化误差,并进行数据相关采样,以实现更有效的学习。与PointNet相比,PointNet++引入了层次特征学习,并捕获了不同尺度下的几何特征。这对于理解多个级别的场景和标记不同大小的对象非常重要。在下图中可视化了示例场景标记结果。
在这里插入图片描述

4.3 Point Set Classification in Non-Euclidean Metric Space

在本节中,将展示对非欧几里德空间的方法的可推广性。在非刚性形状分类中,一个好的分类器应该能够将下图中的(a)和(c)正确分类为同一类别,虽然它们在姿势上具有差异,因此这需要了解内在结构。SHREC15中的形状是嵌入在三维空间中的二维曲面。沿曲面的测地距离(geodesic distances)自然会产生一个度量空间。我们通过实验表明,在这个度量空间中采用PointNet++是捕获底层点集内在结构的有效方法。

在这里插入图片描述
对于每个形状,我们首先构造由成对测地距离诱导的度量空间。获得一个模拟测地距离的嵌入度量。接下来,我们在此度量空间中提取内在点特征,包括WKS、HKS和多尺度高斯曲率。我们使用这些特征作为输入,然后根据基础度量空间对点进行采样和分组。通过这种方式,我们的网络学习捕获不受形状特定姿势影响的多尺度内在结构。其他设计选择包括使用XYZ坐标作为点特征或使用欧几里德空间作为基础度量空间。

在这里插入图片描述
我们将我们的方法与表3中先前最先进的方法进行了比较。DeepGM提取测地矩作为形状特征,并使用堆叠稀疏自动编码器(stacked sparse autoencoder )来进一步整合这些特征以预测形状类别。我们使用非欧几里德度量空间和固有特征(intrinsic features)的方法达到了最佳性能,并且在很大程度上优于DeepGM。
比较我们方法的第一个和第二个设置,我们发现内在特征对于非刚性形状分类非常重要。XY Z特征无法揭示内在结构,并且受姿势变化的影响很大。比较我们方法的第二个和第三个设置,我们发现使用测地邻域比使用欧几里德邻域更有益。欧几里德邻域可能包含曲面上很远的点,当形状提供非刚性变形时,该邻域可能会发生显著变化。这给有效的权重分配带来了困难,因为局部结构可能会变得组合复杂。另一方面,曲面上的测地线邻域解决了这个问题,提高了学习效率。

4.4 Feature Visualization

在图8中,我们可视化了我们的分层网络的第一级内核所学习到的内容。我们在空间中创建了一个体素网格,并聚合了局部点集,这些点集在网格单元中激活特定神经元最多(使用了100个最高的示例)。保留投票率较高的网格单元,并将其转换回3D点云,该点云表示神经元识别的模式。由于模型是在主要由家具组成的ModelNet40上训练的,因此我们可以在可视化中看到平面、双平面、线、角等的结构。

在这里插入图片描述


Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐