PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metric Space

PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metric Space

Abstract

在深度学习关于点云数据的研究中,PointNet 作了一个很好的尝试。但是,PointNet 的设计依然存在缺陷,PointNet 难以捕获度量空间中点的局部结构,这限制了它的细粒度识别和对复杂场景的泛化能力。本文中,原作者在 PointNet 的基础上,引入了一个分层神经网络,将 PointNet 循环作用于输入点集。针对采样密度不均的问题,作者使用了自适应的组合来自多个尺度的特征的方法,,使网络具有很好的鲁棒性。作者的实验表明,本文提出的 PointNet++ 在一些 3D 点云的基准测试中,表现明显优于现有最优模型。

1、Introduction

自动驾驶车辆装备的 3D 扫描仪获得的数据是一种几何点集,通常采样得到的点集是密度不均匀的,这导致在均匀密度上训练的网络其泛化能力会大大降低。而且作为集合,这样的数据必须对其成员的排列顺序具有不变性。

PointNet 的基本思想是学习每个点的空间编码,然后将所有单个点特征聚合到全局特征中。出于这一设计,PointNet 难以捕获由度量(metric)引起的点的局部结构,而局部结构对卷积架构的成功有重要意义。我们知道 CNN 使用规则是输入,在不同层应用不同的卷积核,逐层次地提取特征,更深的层拥有更大的感受野。通过层次结构抽象特征能够使网络在未知数据上具有更好的泛化能力。

PointNet++ 对此做了改进。其思想很简单,首先通过底层空间的距离度量将点集划分为若干个局部区域,使用 PointNet 在这些局部区域中进行特征提取。再以这些提取到的局部特征为单位,重复此过程,逐层抽象以产生更高级别的特征,直到获取整个点云集合的全局特征。

PointNet++ 的设计需要解决两个问题:如何对点集进行局部划分(sampling&grouping),以及如何通过局部**特征提取器(PointNet)**来抽象点集或局部特征。

针对第一个问题,如何对点集进行局部划分。我们可以将每个局部区域视作一个球体,其包括质心和半径两个参数。为了使选取的局部区域均匀地覆盖整个集合,作者使用 **Farthest Point Sampling(FPS,最远点采样)**来选择质心。对于半径的选择,由于输入点集的不均匀性,作者假设输入点集在不同区域具有不同的密度(这也更符合真实的数据)。因此,PointNet++ 的输入与 CNN 的输入非常不同,CNN 的输入可以看作是在具有均匀密度的常规网格上定义的数据(image 作为输入其逐像素之间是均匀的)。在 CNN 中,局部区域的概念是通过 kernel 引入的,局部区域的大小就对应于 kernel 的大小。因此,半径就类似与 CNN 中使用的不同的步长(stride),而半径的选择需要依赖于(考虑)输入数据和具体的度量。由于是以每个局部区域为单位进行特征提取,所以半径的大小也决定了感受野的大小。作者仅以经验表明,虽然在 CNN 中较小的卷积核尺寸得到的效果越好,而在点云数据中该结论是相反的。由于采样不足,较小的领域可能包含太少的点,这可能不足以让 PointNet 鲁棒地提取信息(在 query ball 中,半径0.1,近邻点64个,knn中k也是64,使用的是同样的参数nsample)。

(在CNN中,使用卷积核在某个局部做卷积,与在 PointNet++ 中使用 PointNet 对某个点的局部区域做特征提取,有点类似)

针对第二个问题,我们已经知道 PointNet 能够高效地对无序的点云数据进行特征提取,而且对输入数据有很好的鲁棒性。PointNet++ 中以 PointNet 作为局部特征提取器,将 PointNet 作为一个基础的模块,将局部点(特征)抽象为更高层次的表示。可以理解为 PointNet++ 分层地对输入中的局部特征应用 PointNet 进行特征提取。

本文的其他贡献还有:在训练期间使用 dropout,利用多个尺度的邻域进行特征提取,使网络自适应的对不同尺度下检测到的模式进行加权,并根据输入数据组合多尺度特征。

2、Problem Statement

假设一个X = (M, d)的离散空间
M ⊆ R n M ⊆ R^n MRn
是输入点云的集合,d 是指距离度量(metric space),我们的目的是学习一个函数 f,以 X 作为输入,让 f 可以实现分类(给每个X一个label)或者分割(对M中的每个点分配一个label)

3、Method

3.1 PointNet 回顾:一个通用连续的近似函数(A Universal Continuous Set Function Approximator)

PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metric Space_第1张图片

PointNet 的问题在于缺乏捕获不同尺度下局部区域的上下文信息。

3.2 层级的点云特征提取(Hierarchical Point Set Feature Learning)

PointNet 使用单个最大池化来聚合全局特征,而 PointNet++ 引入了层级结构,分层地使用 PointNet 来聚合特征,抽象出越来越大的局部区域,在更高层的特征具有更大的感受野。

层级结构主要由多个 Set Abstraction(SA) 组成,每层都对输入点集进行抽象与特征提取。SA 的输入为 N *(D+C),N为点的数目,D为坐标维度,C为点特征的维度。SA的输出为 N‘(D+C’),N‘为采样后的点的数目,D为坐标维度,C’为概括局部上下文(局部区域信息)的特征向量。

SA 层中包括:

  • 采样层 sampling:选取局部区域(local region)的中心点,使用 FPS(最远点采样)。每次从剩余点集中选择一个距已选中心点最远的点,相较于随机选取中心点,FPS 在选取同样数量的中心点时,对点集覆盖得更好。

  • **分组层 grouping:**找到中心点附近的 k 个近邻点,组成多个local points region。输入为 N *(D+C)输入的点集以及 N‘ * D 点集中心的坐标。输出为成组的点集 N’ * K * (D+C),K代表每个中心点的邻近点数。(表示N个点,D维坐标,C维额外特征)

    选取近邻点的方法有两种:ball query 方法查找中心点某个半径范围内的所有点,默认使用点半径0.1和近邻点数64。KNN 方法计算中心点到其他点的距离,排序后取前 K 个点。与 KNN 相比,层

  • 特征提取层 PointNet:使用 mini-pointnet 对每个 local points region 进行特征提取(编码为特征向量)。输入是 N‘ * K (D+C)的 N’ 个局部区域,输出为N‘ *(D+C)为对每个局部区域的中心及其邻域内的( K 个)点进行特征提取与抽象后的结果。

    PS:每个局部区域中的点都会根据其中心点的坐标进行归一化。

非均匀采样密度下鲁棒的特征学习(Robust Feature Learning under Non-Uniform Sampling Density)

点云数据中不同区域有不同的密度,在高密度区域学习到的特征难以泛化到稀疏的相同区域。而在稀疏区域学到的模型又难以捕获精细的局部结构,而且在低密度区域由于采样不足难以学到局部模式,应该扩大局部区域。作者为此提出了密度自适应的 PointNet 层,当输入的采样密度改变时,组合来自不同尺度区域的特征。因而,PointNet++ 也可以视作是一种带有自适应密度的层级 PointNet

这种自适应密度的方法使得每个 SA 结构能够从多个尺度在局部区域提取特征,并根据局部点密度智能地组合它们,由 SA 中的 grouping 层实现。

对于如何在 grouping 层中组合局部区域并组合来自不同尺度的特征,作者提出了两种方法:Multi-Scale Grouping (MSG)Multi-Resolution Grouping (MRG)

PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metric Space_第2张图片

  • MSG:使用不同尺度的 grouping layers,让 PointNet 对不同尺度分别提取特征,再把从不同尺度得到的特征组合起来。

    还引入了一个“random input dropout”,以一个随机的概率从输入中丢弃数据点。具体的,从[0-p]的均匀分布中随机一个值θ,其中p<=1,对于每个点,以θ的概率随机丢弃。在训练阶段,设置p为0.95,避免生成空的点集。以此为网络引入不同稀疏性和均匀性(密度)的训练集,增加网络对不同稀疏性、密度的数据的鲁棒性,在测试阶段使用全部的点集。

  • MRG:上述 MSG 的计算代价较高,因为对每个局部区域都要在多个尺度下运行 PointNet,尤其是在比较低的层级中心点(局部区域)的数目比较多,计算量更大。MRG 的方法能够根据数据点的分布进行自适应

    在上图 b 中,第 i 层的特征包括两个向量:左边的一个是使用 SA 从低一层(i-1层)的局部区域提取的特征,右边的一个是通过使用单个 PointNet 直接处理本地区域中的所有原始点获得的。

    当局部区域的密度较低时,第一个向量可能不如第二个向量可靠,因为第一个向量的局部区域包含更稀疏的点并且更多地受到采样不足的影响。在这种情况下,第二个向量应该具有更高的权重。

    当局部区域的密度较高时,第一个向量能够提供更精细的信息,因为它具有在较低层级递归检查更高分辨率的能力(具有更大的感受野)。

    MRG 相比 MSG,计算效率更高,因为避免了在较低层级的大尺度邻域(局部区域)间的特征抽取,而这需要巨大的计算量。

Seg 任务中 SA 的特征传播(Point Feature Propagation for Set Segmentation)

在 SA 层中,原始数据是经过采样的,而在分割任务中,需要获得每个原始点(all origin points)的特征。一个办法是始终将所有点作为所有局部区域的中心来进行采样(特征提取),这无疑会导致巨大的计算量。另一个方法是将特征从子采样点传播到原始点。

作者采用了一种基于距离的插值跳跃连接的分层传播策略。具体的,在一个 FP 层中,将点特征从Nl * (D+C)传播到Nl-1,其中Nl-1>=Nl,表示第l层 SA 层的输入和输出尺寸。通过在Nl-1个坐标处插入Nl个点的特征值 f 来实现特征传播。插值方法使用的是基于k个最近邻的逆距离加权平均。

公式如下:在这里插入图片描述

其中默认p=2,k=3。然后,Nl-1个点上的插值特征与来自SA层的跳跃连接点特征相连。组合后的特征经过一个单位 PointNet(unit pointnet,类似于CNN中的1 * 1卷积)。然后应用一些共享的全连接层和 ReLU 层来更新每个点的特征向量。插值过程会持续直到获得了和原始数据相同大小的点集。

(FP层作用是更新插值和跳跃链接连接的特征。)

4、Experiments

使用的数据集包括:MNIST、ModelNet40(40个类别的CAD模型,9843训练集2468测试集,使用1024个点)、SHREC15(50个类别1200个形状,每个类别包含24种形状,在这个数据集上使用了5折交叉验证)、ScanNet(主要是室内场景,1201训练集312测试集)

分类(Point Set Classification in Euclidean Metric Space)

PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metric Space_第3张图片

with normal是指使用面法线作为附加的点特征。在 ModelNet40 数据集上默认使用 1024 个点,也实验过使用5000个点来提高表现。所有点都经过零均值的处理。PointNet(vanilla)是没有使用 T-net 的版本。在ModelNet40上,即使使用相同的点(1024)和特征(只使用 XYZ 坐标),PointNet++ 的表现也好明显好于 PointNet,作者观察到基于点集的方法甚至可以实现与成熟的图像 CNN 更好或相似的性能。

PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metric Space_第4张图片

因为直接从现实世界采样的数据可能会有不规则采样的问题,为了实现对采样密度变化的鲁棒性,除了使用 dropout ,还在 MSG 中选择多个尺度下的点的近邻,并通过适当地加权来学习平衡描述性和鲁棒性。

左图是对点云进行随机 dropout,右图的曲线显示了我们的密度自适应策略在处理非均匀密度方面的优势。dropout 的意思是在训练期间随机丢掉输入数据,给数据制造一些稀疏性以及不均匀的密度,否则训练是在均匀的集点上进行的,同时验证模型对不规则(密度不均)、稀疏数据的鲁棒性。

试验结果显示,针对采样密度的多样性,MSG+DP 和 MRG+DP 的方法具有很好的鲁棒性。PointNet对密度的变化相当鲁棒,因为它专注于全局抽象而不是细节。与此同时,因为细节的丢失也让它的表现弱于 PointNet++。SSG(single scale grouping)无法推广到稀疏采样密度,而 SSG+DP 在稀疏数据上的表现有明显的提升,这也验证了随机 dropout 对模型应对稀疏数据的鲁棒性有很好的效果。

语义场景标注的点集分割(Point Set Segmentation for Semantic Scene Labeling)

作者在场景语义分割任务上验证了本文所提方法也适用于大规模的点云分析。该任务的目的是给室内场景中的点预测语义标签。作者验证了所训练的模型对采样密度变化的鲁棒性。表明 MRG 对采样密度变化更加鲁棒,因为它能够在采样稀疏时自动切换到描绘较粗粒度的特征。

作者把模型的鲁棒性归因于密度自适应的层级结构(density adaptive layer),这一方法的关键在于引入了分层特征学习捕获不同尺度的几何特征。这对于理解多个层次的场景和标记各种尺寸的对象非常重要。另外,相比较基于体素的方法,PointNet++ 直接使用点云数据,避免了额外的量化误差。

非欧几里德度量空间中的点集分类(Point Set Classification in Non-Euclidean Metric Space)

一个好的分类器应该能够对同一个物体的不同姿势进行正确识别,这就需要**内在结构(intrinsic structure)**的知识,内在结构对非刚体形状的分类非常重要。作者表示仅仅使用 XYZ 坐标或者 3 维欧式空间都不是好的选择,因为仅仅以 XYZ 坐标作为特征不足以揭示内在结构,并且容易受到姿势变化的影响。

首先,作者认为使用测地距离相比使用欧几里德距离更好。欧几里得邻域可能包括远离表面的点,当物体发生非刚性变化时,该邻域可能会发生显着变化(欧几里得距离容易受到非刚体变换的影响)。这给权重共享带来了困难,因为局部结构可能组合得非常复杂。但是表面上的测地邻域摆脱了这个问题,能够提高学习的效率。

其次,作者认为沿着表面的测地距离能够自然地引入度量空间。首先构造由成对测地距离引起的度量空间,然后获得近似测地距离的嵌入矩阵。 接下来,提取该度量空间中点的内在特征,包括 WKS,HKS 和多尺度高斯曲率。使用这些特征作为输入,然后根据基础度量空间对点进行采样和分组。通过这种方式,对于一个形状,网络能够学会捕获其不受特定姿势影响的多尺度的内在结构。

作者通过实验表明,在这个度量空间中使用 PointNet++ 能够捕获基础点集的内在结构。此外,使用非欧几里德度量空间内在特征的方法在所有数据上实现了最佳性能。
PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metric Space_第5张图片

5、Related work

在 3D 度量空间中应用深度学习有几种流行的表示形式:体素网格和几何图形,但是他们都没有明确考虑采样密度不均的问题。

从度量空间采样的点通常是有噪声的并且采样密度不均,这会影响点的特征提取并导致难以学习。一个关键问题是为点的特征选择合适的尺度。与之前的其他方法相比,本文提出的方法不仅要学习提取点的特征并且学习如何平衡多个特征尺度。在本文中,作者针对从度量空间中采样的点,在模型设计中考虑基础距离度量(underlying distance metric),并使用分层特征学习的方法,取得了不错的效果。

6、Conclusion

在本文中,作者提出了一种强大的神经网络架构,用于处理在度量空间中采样的点集。PointNet++ 分层地处理输入点集,能够有效的学习关于距离度量的分层特征。

在将来,有必要思考如何通过在每个局部区域共享更多计算来加快所提出网络的推理速度,特别是对于 MSG 和 MRG 层,以及如何将本文的工作应用于更高维度的空间。

补充Supplement

A、论文中网络架构的细节,包括数据处理和模型训练

首先对描述网络架构的符号做一个约定:
S A ( K , r , [ l 1 , . . . , l d ] ) SA(K,r,[l_1, ..., l_d ]) SA(K,r,[l1,...,ld])
表示一个SA(set abstraction)层,其中带有k个局部区域,球半径为r,使用d个全连接层的PointNet,每层的宽度为Li。
S A ( [ l 1 , . . . l d ] ) SA([l_1 , ...l_d ]) SA([l1,...ld])
表示这是一个全局SA层(global set abstraction level),将集合转换为单个向量
S A ( K , [ r ( 1 ) , . . . , r ( m ) ] , [ [ l 1 ( 1 ) , . . . , l d ( 1 ) ] , . . . , [ l 1 ( m ) , . . . , l d ( m ) ] ] ) SA(K,[r^{(1)}, ...,r^{(m)}],[[l_1^{(1)} , ..., l_d^{(1)}],...,[l_1^{(m)},...,l_d^{(m)}]]) SA(K,[r(1),...,r(m)],[[l1(1),...,ld(1)],...,[l1(m),...,ld(m)]])
代表使用m个尺度的MSG
F C ( l , d p ) FC(l,dp) FC(l,dp)
代表宽度为l的全连接层,dp为dropout_ratio
F P ( l 1 , . . . , l d ) FP(l_1 , ..., l_d) FP(l1,...,ld)
代表一个宽度为d的特征传播层,除了最后一层是预测分数的层,其他全连接层都应用batch normalization和ReLU

接着来看网络架构:

  • SSG with K number of categories

S A ( 512 , 0.2 , [ 64 , 64 , 128 ] ) → S A ( 128 , 0.4 , [ 128 , 128 , 256 ] ) → S A ( [ 256 , 512 , 1024 ] ) → SA(512, 0.2, [64, 64, 128]) → SA(128, 0.4, [128, 128, 256]) →SA([256, 512, 1024]) → SA(512,0.2,[64,64,128])SA(128,0.4,[128,128,256])SA([256,512,1024])

F C ( 512 , 0.5 ) → F C ( 256 , 0.5 ) → F C ( K ) F C(512, 0.5) → F C(256, 0.5) → F C(K) FC(512,0.5)FC(256,0.5)FC(K)

  • MSG
    S A ( 512 , [ 0.1 , 0.2 , 0.4 ] , [ [ 32 , 32 , 64 ] , [ 64 , 64 , 128 ] , [ 64 , 96 , 128 ] ] ) → SA(512, [0.1, 0.2, 0.4], [[32, 32, 64], [64, 64, 128], [64, 96, 128]]) → SA(512,[0.1,0.2,0.4],[[32,32,64],[64,64,128],[64,96,128]])

    S A ( 128 , [ 0.2 , 0.4 , 0.8 ] , [ [ 64 , 64 , 128 ] , [ 128 , 128 , 256 ] , [ 128 , 128 , 256 ] ] ) → SA(128, [0.2, 0.4, 0.8], [[64, 64, 128], [128, 128, 256], [128, 128, 256]]) → SA(128,[0.2,0.4,0.8],[[64,64,128],[128,128,256],[128,128,256]])

    S A ( [ 256 , 512 , 1024 ] ) → F C ( 512 , 0.5 ) → F C ( 256 , 0.5 ) → F C ( K ) SA([256, 512, 1024]) → F C(512, 0.5) → F C(256, 0.5) → F C(K) SA([256,512,1024])FC(512,0.5)FC(256,0.5)FC(K)

  • MRG
    B r a n c h 1 : S A ( 512 , 0.2 , [ 64 , 64 , 128 ] ) → S A ( 64 , 0.4 , [ 128 , 128 , 256 ] ) Branch 1: SA(512, 0.2, [64, 64, 128]) → SA(64, 0.4, [128, 128, 256]) Branch1:SA(512,0.2,[64,64,128])SA(64,0.4,[128,128,256])

    B r a n c h 2 : S A ( 512 , 0.4 , [ 64 , 128 , 256 ] ) Branch 2: SA(512, 0.4, [64, 128, 256]) Branch2:SA(512,0.4,[64,128,256])

    B r a n c h 3 : S A ( 64 , 128 , 256 , 512 ) / / 使 用 所 有 原 始 点 Branch 3: SA(64, 128, 256, 512) //使用所有原始点 Branch3:SA(64,128,256,512)//使

    B r a n c h 4 : S A ( 256 , 512 , 1024 ) Branch 4: SA(256, 512, 1024) Branch4:SA(256,512,1024)

    分支1和2会连接起来并送入分支4,然后分支3的输出和分支4连接,之后送入如下的全连接层用于分类
    F C ( 512 , 0.5 ) → F C ( 256 , 0.5 ) → F C ( K ) F C(512, 0.5) → F C(256, 0.5) → F C(K) FC(512,0.5)FC(256,0.5)FC(K)

  • Network for semantic scene labeling
    S A ( 1024 , 0.1 , [ 32 , 32 , 64 ] ) → S A ( 256 , 0.2 , [ 64 , 64 , 128 ] ) → SA(1024, 0.1, [32, 32, 64]) → SA(256, 0.2, [64, 64, 128]) → SA(1024,0.1,[32,32,64])SA(256,0.2,[64,64,128])

    S A ( 64 , 0.4 , [ 128 , 128 , 256 ] ) → S A ( 16 , 0.8 , [ 256 , 256 , 512 ] ) → SA(64, 0.4, [128, 128, 256]) → SA(16, 0.8, [256, 256, 512]) → SA(64,0.4,[128,128,256])SA(16,0.8,[256,256,512])

    F P ( 256 , 256 ) → F P ( 256 , 256 ) → F P ( 256 , 128 ) → F P ( 128 , 128 , 128 , 128 , K ) F P (256, 256) → F P (256, 256) → F P (256, 128) → F P (128, 128, 128, 128, K) FP(256,256)FP(256,256)FP(256,128)FP(128,128,128,128,K)

    最后两个FP层使用0.5的dropout

  • Network for semantic and part segmentation
    S A ( 512 , 0.2 , [ 64 , 64 , 128 ] ) → S A ( 128 , 0.4 , [ 128 , 128 , 256 ] ) → S A ( [ 256 , 512 , 1024 ] ) → SA(512, 0.2, [64, 64, 128]) → SA(128, 0.4, [128, 128, 256]) → SA([256, 512, 1024]) → SA(512,0.2,[64,64,128])SA(128,0.4,[128,128,256])SA([256,512,1024])

    F P ( 256 , 256 ) → F P ( 256 , 128 ) → F P ( 128 , 128 , 128 , 128 , K ) F P (256, 256) → F P (256, 128) → F P (128, 128, 128, 128, K) FP(256,256)FP(256,128)FP(128,128,128,128,K)

    最后两个FP层使用0.5的dropout

  • 分类模型中添加了N (0, 0.01)的高斯噪声、随机旋转物体来做数据增强

  • ScanNet Experiment Details

    语义分割时,从初始场景中生成一个1.5 * 1.5 * 3的立方体,保持立方体中≥2%的体素被占用,≥70%的表面体素具有有效的注释。在测试阶段,同样将测试场景分成较小的立方体,首先对立方体中的每个点进行标签预测,然后在同一场景的所有立方体中合并标签预测。如果一个点从不同的立方体获得不同的标签,就使用多数投票法来获得最终的点标签预测。

  • SHREC15 Experiment Details

    在训练和测试阶段都从每个形状中随机选择1024个点,为了生成输入的内在特征,分别提取100维WKS,HKS和多尺度高斯曲率,导致每个点成为一个300维的特征向量。然后使用PCA将特征维度降到64。使用8维嵌入来模拟测地距离(用于描述我们的非欧几里德度量空间,同时选择局部区域)

B、展示实验结果

​ 包括分割模型的性能、近邻点选择方法的分析、模型对采样的随机性和时空复杂度的敏感性。

  • Semantic Part Segmentation

    该任务是为每个点预测一个标签,使用IoU作为评价准则,取所有类的平均值(mIoU),训练期间使用 cross entropy 作为最小化的损失函数。

    作者将模型取得优异表现的原因归功于:MSG 在多尺度领域选择上的灵活性、多个 SA 层实现的逐层特征提取。并且 SA 层的操作和图像中的卷积操作非常相似,并且不需要执行昂贵的特征分解,这些使我们的方法更适合大规模点云分析。作者的实验也证明了分层特征学习对于精细语义理解的重要性。

PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metric Space_第6张图片

  • 近邻选择方法的比较:KNN & ball query

    论文中使用的是基于某个半径 r 的 ball query,作者也实验了基于 KNN 的近邻搜索。同时也比较了不同的 r 和 k。当采样密度比较均匀时,ball query 的方法要比 KNN 稍好一点(slightly better)。作者推测在非常不规则的点集中,KNN 的泛化能力会变得更差。

    作者在其实验中也观察到,稍大一点的半径有助于提高性能,因为能捕获更丰富的局部模式。

    PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metric Space_第7张图片

  • 随机性在最远点采样中的影响(Effect of Randomness in Farthest Point Sampling)

    首先,FPS 具有随机性,采样结果也受初始采样点的影响。作者实验了模型对这种随机性的敏感性,当特征存在2.1%的标准偏差时,测试精度只有0.17%的标准偏差,对于采样的随机性还是比较鲁棒的。

在这里插入图片描述

  • 时间和空间复杂度

    作者的实验环境是单卡GTX1080,batch_size 8,TensorFlow1.1,计算前向时间(forward time)来衡量时间复杂度

PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metric Space_第8张图片

尽管 MSG 的方法在非规则采样的数据上有很好的表现,但是由于它需要进行多尺度的特征提取,其前向计算的时间复杂度两倍于 SSG 并且空间复杂度更高。

相比 MSG,MRG 在时间复杂度上表现更好,因为它使用跨层的区域,但是也使其空间复杂度两倍于MSG。

总体上看,PointNet++ 中提出的方法相较于带有 T-net 的 PointNet,在空间复杂度上都有更好的表现,但是由于分层特征提取,时间复杂度也数倍于PointNet。

我的实验

classification(ModelDet40)

  • 训练集
    PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metric Space_第9张图片

  • 验证集
    PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metric Space_第10张图片

part segmentation(ShapeNet)

  • 训练集
    PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metric Space_第11张图片

    最后一个epoch上的表现

  • 验证集

PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metric Space_第12张图片

在验证集上,rocket、earphone的mIoU较低(低于0.7),这些类的样本数目都比较少

参考资料

pointnet与pointnet++详解

pointnet++初读

知乎pointnet++

pointnet++

你可能感兴趣的:(读书笔记)