3D点云论文翻译《PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation》

论文链接:https://arxiv.org/abs/1612.00593

代码链接:

官方源码(tensorflow版)

pytorch复现版本

Abstract

        点云是一种重要的几何数据结构。由于其格式不规则,大多数研究人员将这些数据转换为规则的3D体素网格或图像集合。但是这会使数据变得庞大,进而导致一些问题。在本文中,我们设计了一种新型的神经网络,它可以直接使用点云并且很好地利用了点云的置换不变性(permutation invariance)。我们的网络名为PointNet,为从对象分类、部分分割到场景语义解析的应用程序提供了统一的体系结构。虽然简单,但PointNet非常高效。从实验上看,它显示出与最先进模型相当甚至更好的强大性能。从理论上讲,我们对理解网络学到了什么以及为什么网络在输入干扰和破坏方面是鲁棒的提供了分析。

3D点云论文翻译《PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation》_第1张图片

  图1 PointNet的应用程序。提出了一种新的深度网络架构,它使用原始点云(点集),而不进行体素化或渲染。它是一个统一的体系结构,学习全局和局部点特征,为许多3D识别任务提供了一个简单、高效和有效的方法。

1.Introduction

        在本文中,我们探索了能够推理三维几何数据(如点云或网格)的深度学习体系结构。经典的卷积架构输入数据格式的规则较为严格,比如图像网格或3D体素,以便执行权值共享和其他内核优化。由于点云或网格不是规则格式,大多数研究人员通常会将这类数据转换为规则的3D体素网格或图像集合(例如视图),然后再将它们送入深网架构。然而,这种数据表示的转换使生成的数据变得庞大——同时还引入了量化工件,可能会掩盖数据的自然不变性。

        因此,我们将重点放在使用简单点云的3D几何的不同输入表示上,并将我们的深度网络命名为PointNets。点云是简单统一的结构,避免了组合不规则性和网格的复杂性,因此更容易被学习。然而点云仍然要考虑的是点云只是点的集合,因此不受其成员排列的影响,需要在网络计算中实现某种对称性。也需要考虑刚性运动的进一步不变性。

        Pointnet是一个统一的体系结构,它直接将点云作为输入,并为整个输入输出类标签,或为输入的每个点输出每个点段/部分标签。网络基本架构非常简单,因为在初始阶段,每个点都是相同且独立地处理的。在基本设置中,每个点仅由它的三个坐标(x, y, z)表示。可以通过计算法线和其他局部或全局特征来增加额外的维度。

        我们方法的关键是使用单一对称函数,即最大池化。网络有效地学习一组优化函数/标准,选择点云中值得注意的(interesting)或有信息(informative)的点,并编码其选择的原因。网络最后的全连接层将这些学习到的最优值聚合到整个形状的前文所述的全局描述中(形状分类)或用于预测每个点标签(形状分割)。

        我们的输入格式很容易应用于刚性或仿射变换,因为每个点都独立变换。因此,我们可以添加一个依赖于数据的空间转换网络,可以在PointNet处理数据之前规范化数据,从而进一步改进结果。

        我们对方法进行了理论分析和实验评估,证明pointnet(vanilla)网络可以任意逼近集合上的对称函数。更有趣的是,我们的网络学会了通过一组稀疏的关键点来总结输入点云,根据可视化,这大致对应于对象的整体外观(skeleton)。理论分析提供了一种理解,为什么pointnet对输入点的小扰动以及通过点插入(异常值)或删除(丢失数据)造成的破坏具有高度鲁棒性。

        在从形状分类、部分分割到场景分割的许多基准数据集上,我们通过实验将PointNet与基于多视图和体积表示的先进方法进行比较。在统一的架构下,PointNet不仅速度快得多,而且表现出与先进方法相当甚至更好的强大性能。

        本文的工作主要贡献如下:

        1.设计了一种适合于使用三维无序点集的新型深网结构;

        2.展示了如何训练pointnet网络来执行3D形状分类、形状部分分割和场景语义解析任务;

        3.对我们方法的稳定性和效率提供了完善的经验和理论分析;

        4.举例说明由网络中选定的神经元计算出的三维特征,并为其性能发展出直观的解释。

        用神经网络处理无序集的问题是一个非常普遍和基本的问题,我们希望我们的想法也能转移到其他领域。

2.Related Work

Point Cloud Features(点云的特征)

         大多数现有的点云特征都是针对特定任务手工制作的。点的特征通常编码点的某些统计属性,并被设计成对某些变换不变,这些变换通常被分类为内在的[2,24,3]或外在的[20,19,14,10,5]。它们也可以分为局部特征和全局特征。对于一个特定的任务,找到最优的特征组合并是一件困难的事情。

Deep Learning on 3D Data(基于3D数据的深度学习)

         3D数据有多种常用的表示方式,有各种学习方法。Volumetric CNNs:[28,17,18]是将三维卷积神经网络应用于体素化形状的先驱。然而,由于点云数据稀疏性和三维卷积的计算成本高,体积表示受到分辨率的限制。FPNN[13]和Vote3D[26]提出了处理稀疏性问题的特殊方法; 但是这些方法仍然是稀疏的,处理非常大的点云对这些方法来说是一个挑战。Multiview CNNs: [23, 18]尝试将3D点云或形状渲染成2D图像,然后应用2D卷积网络对其进行分类。在已经成熟的2DCNNs下,这一系列方法在形状分类和检索任务上取得了领先的性能[21]。然而,比较困难的是将它们扩展到场景理解或其他3D任务,如点分类和形状完成。Spectral CNNs:一些最新的工作[4,16]在网格上使用了光谱cnn。然而,这些方法目前仅限于有机物体等流形网格,如何尚不明确如何将它们扩展到非等距形状(如家具)。Feature-based DNNs: [6, 8]首先通过提取传统形状特征,将三维数据转化为矢量,然后利用全连接网络对形状进行分类。我们认为这种方法受到提取特征表示能力的限制。

Deep Learning on Unordered Sets(基于无序集的深度学习)

         从数据结构的角度来看,点云是一组无序的向量。大多数深度学习的工作都专注于常规的输入表示,如序列(在语音和语言处理中)、图像和卷(视频或3D数据),但在点集的深度学习方面做的工作并不多。

         Oriol Vinyals等人最近的一项工作[25]研究了这个问题。他们使用一个带有注意机制的读-处理-写网络来使用无序的输入集,并表明他们的网络有对数字排序的能力。由于他们的工作主要集中在泛型集和NLP应用上,因此缺乏几何在集合中的作用。

3.Problem Statement

        我们设计了一个直接使用无序点集作为输入的深度学习框架。点云表示为一组3D点\begin{Bmatrix} P_{i}|i=1,...,n \end{Bmatrix}其中每个点Pi都是其(x, y, z)坐标的向量,加上额外的特征通道,如颜色,法线等。为了简单明了,除非另有说明,只使用(x, y, z)坐标作为点的通道。

        对于对象分类任务,输入点云要么直接从形状采样,要么从场景点云预先分割。深度网络为所有k个候选类输出k个得分。对于语义分割,输入可以是单个对象进行局部区域分割,也可以是来自3D场景的子体进行对象区域分割。模型将为n个点中的每一个点和m个语义子类别中的每一个类别输出n*m个得分。

3D点云论文翻译《PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation》_第2张图片

 图2。PointNet架构。分类网络以n个点为输入,进行输入和特征转换,然后通过最大池化聚合点特征。输出是k个类的分类分数。分割网络是分类网络的扩展。它将全局和本地特征连接起来,并按分值输出。“mlp”代表多层感知器,括号中的数字是层的大小。Batchnorm用于ReLU的所有层。在分类网中,最后一个mlp使用Dropout层。

4.Deep Learning on Point Sets

        网络架构(第4.2节)的灵感来自于Rn(第4.1节)中的点集的性质。

4.1Properties of Point Sets in Rn(Rn中点集的性质)

        模型的输入是欧氏空间中点的子集,它有三个主要特性:

        无序性。与图像中的像素数组或体积网格中的体素数组不同,点云是一组没有特定顺序的点。换句话说,换句话说,一个使用N个3D点集的网络面对N!种数据输入顺序排列的输入集应该是不敏感的。

        点之间的相互作用。这些点来自一个距离度量空间。这意味着点不是孤立的,相邻的点形成一个有意义的子集。因此,模型需要能够从附近的点捕获局部结构,以及局部结构之间的组合相互作用。

        变换不变性。作为一个几何对象,学习到的点集表示对于某些变换应该是不变的。例如,同时旋转和平移点不应该修改全局点云类别或点的分割。

4.2PointNet Architecture(PointNet架构)

        完整网络架构如图2所示,其中分类网络和分割网络共享很大一部分结构。请阅读图2网络架构的说明。

        PointNet网络有三个关键模块:最大池化层作为一个对称函数,聚合来自所有点的信息,一个局部和全局信息组合结构,以及两个T-Net,对齐输入点和点特征。

        将在下面的单独段落中讨论这些设计选择背后的原因。

Symmetry Function for Unordered Input(无序输入的对称函数)

        为了使模型满足对输入的排列不变性,有三种策略:1)将输入按规范顺序排序; 2)将输入作为一个序列来训练RNN,通过各种排列来增加训练数据; 3)使用一个简单的对称函数来聚合每个点的信息。在这里,一个对称函数以n个向量作为输入,并输出一个不受输入顺序影响的新向量。例如,+和*操作符是对称二进制函数。

         虽然排序听起来像是一个简单的解决方案,但在高维空间中,实际上不存在一般意义上稳定的w.r.t.点扰动排序。这很容易通过矛盾法来证明。如果存在排序策略,它定义了高维空间和一维实线之间的双射映射。不难看出,要求w.r.t点扰动的排序是稳定的,相当于要求该映射在维数降低时保持空间接近性,而这在一般情况下是无法实现的任务。因此,排序并不能完全解决问题,而且由于排序问题持续存在,网络很难学习从输入到输出的一致映射。正如实验(图5)所示,我们发现直接在排序的点集上应用MLP的性能很差,尽管略优于直接处理未排序的输入。

         使用RNN的思想是将点集视为一个序列信号,并希望通过随机排列序列训练RNN,使RNN对不同输入顺序的输出结果保持不变。然而,”OrderMatters”[25]中,作者已经表明,顺序确实很重要,不能完全忽略。尽管RNN对于小长度(几十个)序列的输入排序具有较好的鲁棒性,但它很难扩展到数千个输入元素,而这是点集的常见大小。在实验中,我们也证明了基于RNN的模型的性能不如我们提出的方法(图5)。

        我们的想法是通过在点集中变换的元素上应用一个对称函数来近似定义在点集中的一般函数:

f(\{ {x_1},...,{x_n}\} ) \approx g(h({x_1}),...,h({x_n}))

        其中f:{2^{​{^N}}} \to \mathbb{R},h:\mathbb{R}{^N} \to {\mathbb{R}^K},g:\mathbb{R}\underbrace {​{^K} \times \cdot \cdot \cdot \times \mathbb{R}{^K}}_n \to \mathbb{R}是一个对称函数。

        根据经验,我们的基本模块非常简单:我们通过多层感知器网络近似h函数,通过单变量函数和最大池函数的组合近似g函数。实验证明,这种方法效果良好。通过h函数的集合,我们可以学习一些f来捕捉集合的不同属性。

        虽然我们的关键模块看起来很简单,但它具有有趣的属性(见第5.3节),并且可以在一些不同的应用程序中实现强大的性能(见第5.1节)。由于我们的模块的简单性,我们也能够像第4.3节那样提供理论分析。

Local and Global Information Aggregation(局部信息和全局信息聚合)

        上面部分的输出形成了一个向量[f1,…, fK],是输入集的全局信息。我们可以很容易地训练支持向量机或多层感知器分类器对形状的全局特征进行分类。然而,点分割需要结合本地和全局知识。我们可以通过一种简单而高效的方式实现这一点。

        解决方案如图2(分割网络)所示。在计算全局点云特征向量后,通过将全局特征与每个点特征连接,将其反馈给每个点特征。然后根据组合的点特征提取新的点特征——这次的点特征同时感知局部和全局信息。

        通过这个修改,我们的网络依赖于局部几何和全局语义能够预测每个点的数量。例如,我们可以准确地预测每个点的法线(补充图),验证网络能够获取来自点局部邻域的信息。在实验中还证明了我们的模型在形状部分分割和场景分割方面具有最优秀的性能。

Joint Alignment Network(T-Net)

        如果点云经历了某种几何变换(如刚性变换),则点云的语义标记必须是不变的。因此,我们期望通过点集学到的表示对这些变换是不变的。

        自然能想到的解决方案是在特征提取之前将所有的输入集合对齐到一个规范的空间。Jaderberg等人引入了空间转换器的思想[9],通过采样和插值来对齐2D图像,在GPU上实现的一个专门定制的层来实现。

        与[9]相比,我们的点云输入形式允许我们以更简单的方式实现这一目标。我们不需要创建任何新的层,也不像图像那样引入别名。我们通过一个微型网络(图2中的T-Net)预测一个仿射变换矩阵,并直接将这个变换应用到输入点的坐标上。小网络本身类似于大网络,由点独立特征提取、最大池化和全连接层等基本模块组成。关于T-net的更多细节见附录。

        这个想法可以进一步扩展到特征空间的对齐。我们可以在点特征上插入另一个对齐网络,并预测一个特征转换矩阵来对齐来自不同输入点云的特征。然而,特征空间中的变换矩阵比空间变换矩阵有更高的维数,这大大增加了优化的难度。因此,我们在softmax训练损耗中增加了一个正则化项。我们将特征变换矩阵约束为接近于正交矩阵:

{​{\rm{L}}_{​{\rm{reg}}}} = ||{\rm{I - A}}{​{\rm{A}}^{\rm{T}}}||_{\rm{F}}^2

        其中A为小网络预测的特征对齐矩阵。而正交变换满足不会丢失输入中的信息的条件。我们发现,通过增加正则化项,优化变得更加稳定,我们的模型获得了更好的性能。

4.3 Theoretical Analysis(理论分析)

Universal approximation(万能近似)

        我们首先展示了我们的神经网络对连续集合函数的普遍逼近能力。由于集合函数的连续性,直观地说,对输入点集的一个小扰动应该不会对函数值产生很大的改变,比如分类或分割分数。

        形式上,设\chi = \{ {\rm{S:}}S \in {[0,1]^m}and|S| = n\}f:\chi \to \mathbb{R}是一个\chi上对于Hausdorff距离\[{d_H}( \cdot , \cdot )\]连续的函数,换句话说,\left| {f(S) - \gamma (\mathop {MAX}\limits_{​{x_i} \in S} \{ h({x_i})\} )} \right| < \varepsilon对于任意SS' \in \chi,if {d_H}(S,S') < \delta,then|f(S) - f(S')| < \varepsilon,定理表明,如果在最大池化层有足够的神经元,f可以被我们的网络任意近似。也就是说公式(1)中的K足够大。

3D点云论文翻译《PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation》_第3张图片

图3 定性结果的局部分割。我们可视化的CAD部分分割结果跨越所有16个对象类别。我们展示了部分模拟Kinect扫描的结果(左侧)和完整的ShapeNet CAD模型(右侧)。

定理1

        假设f:\chi \to \mathbb{R}是一个\chi上对于Hausdorff距离\[{d_H}( \cdot , \cdot )\]连续的函数,\forall \varepsilon > 0存在一个连续函数h和一个对称函数{\text{g}}({x_1},...,{x_n}) = \gamma \circ MAX对于S \in \chi都满足:

 \left| {f(S) - \gamma (\mathop {MAX}\limits_{​{x_i} \in S} \{ h({x_i})\} )} \right| < \varepsilon

        其中x1,…,xn是S中任意顺序的元素的完整集合,γ是一个连续函数,MAX是一个向量最大化算子,它接受n个向量作为输入,并返回一个元素最大值的新向量。

        这个定理的证明可以在我们的补充材料中找到。关键想法是,在最坏的情况下,网络可以学习将点云转换为体积表示,通过将空间划分为大小相等的体素。然而,在实践中,网络学习了一种更合适的策略来探测空间,正如我们将在点函数可视化中看到的那样。

Bottleneck dimension and stability(Bottleneck维度与稳定性)

         从理论和实验中,我们发现网络的表达性受到最大池化层维度的强烈影响,即公式(1)中的K。在这里,我们提供了一个分析,它还解释了与我们的模型的稳定性相关的属性。

        我们定义{\text{u}} = \mathop {MAX}\limits_{​{x_i} \in S} \{ h({x_i})\}为f的子网络,它将[0,1]m中的点集映射到k维向量。下面的定理告诉我们,输入集中的小损坏或额外的噪声点不太可能改变我们网络的输出:

定理2

         假设 {\text{u}}:\chi \to {\mathbb{R}^K}使得{\text{u}} = \mathop {MAX}\limits_{​{x_i} \in S} \{ h({x_i})\}andf = \gamma \circ u,则有:

         (a)\forall S,\exists {C_S},{N_S} \subseteq \chi ,f(T) = f(S)if{C_S} \subseteq T \subseteq {N_S};

         (b) |{C_S}| \leqslant K

         现在解释这个定理的含义。(a)公式表明:如果保留在Cs中的所有点,当输入有噪声的时候,f(S)的输出结果不变。当额外的噪声点达到NS时,它也是不变的。(b)表示CS只包含有限数量的点,由(1)中的K决定。(b)表示Cs只包含有限数量的点,由公式(1)中的K决定。换句话说,f(S)实际上完全由小于等于K个元素的有限子集CS⊆S决定。因此我们称Cs为S的临界点集,K为函数f的瓶颈维数。

         结合h的连续性,这解释了当存在点扰动,破坏和额外的噪声点时我们的模型的鲁棒性。 鲁棒性是通过类比机器学习模型中的稀疏性原理得到的。直观地说,我们的网络学会了通过一组稀疏的关键点来总结一个形状。在实验部分,我们看到关键点构成了一个物体整体结构。

3D点云论文翻译《PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation》_第4张图片

表1 ModelNet40上的分类结果。PointNet在深度网络中在3D输入中实现了最佳效果。

5. Experiment

         实验分为四个部分。首先,我们展示了PointNets可以应用于多个3D识别任务(第5.1节)。其次,我们提供了详细的实验来验证我们的网络设计(第5.2节)。最后,我们可视化了网络学习的内容(第5.3节),并分析了时间和空间复杂性(第5.4节)。

5.1 Applications(应用)

         在本节中,我们将展示如何训练我们的网络来执行3D对象分类、对象部分分割和语义场景分割。尽管我们正在研究一种全新的数据表示(点集),但我们能够在一些任务的基准测试上实现相当甚至更好的性能。

3D Object Classification(3D物体分类)

         PointNet网络学习全局点云特征,可以用于目标分类。在ModelNet40形状分类基准上评估我们的模型。有来自40个人造物体类别的12311个CAD模型,9843个进行训练,2468个进行测试。之前的方法主要关注体积和多视图图像表示,而我们是第一个直接在原始点云上工作的方法。之前的方法主要关注体积和多视图图像表示,而我们是第一个直接在原始点云上工作的方法。

         我们根据表面面积在网格面上统一采样1024个点,并将其归一化为一个单位球。在训练过程中,我们通过沿上轴随机旋转物体来动态增强点云,并用均值为零、标准差为0.02的高斯噪声抖动每个点的位置。

         在表1中,我们将我们的模型与之前的工作进行比较,并使用MLP对点云提取的传统特征(点密度、D2、形状轮廓等)进行基线比较。我们的模型在基于三维输入(体积和点云)的方法中取得了最先进的性能。由于只有全连接层和最大池化操作,我们的网络在推理速度上获得了强大的领先优势,并且可以很轻松地在CPU中并行化。由于只有完全连接的层和最大池,我们的网络在推理速度上获得了强大的领先优势,并且可以很容易地在CPU中并行化。我们的方法与基于多视图的方法(MVCNN)之间还有一个小的差距,我们认为这是由于丢失了可以被渲染图像捕获的精细几何细节。

3D点云论文翻译《PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation》_第5张图片

表2 ShapeNet零件数据集的分割结果。评价指标是点的mIoU(%)。我们将[27]和[29]两种传统方法和我们提出的三维全卷积网络基线模型进行了比较。我们的PointNet方法在mIoU中达到了最先进的水平。

3D Object Part Segmentation(3D物体局部分割)

         局部分割是一项具有挑战性的细粒度三维识别任务。给定一个3D扫描或网格模型,任务是为每个点或面分配局部类别标签(如椅子腿,杯子把手)。

         我们对来自ShapeNet零件数据集进行评估,该数据集包含来自16个类别的16,881个形状,总共注释了50个零件。大多数对象类别都标有两到五个部分。在形状上的采样点上标记了GT框。

         我们将部分分割表述为逐点分类问题。评价指标为积分mIoU。对于C类的每个形状S,计算该形状的mIoU: 对于C类中的每个零件类型,计算groundtruth和预测之间的IoU。如果groundtruth和预测点的并集为空,则将部分IoU计算为1。然后我们对C类所有零件类型的IoUs进行平均,得到该形状的mIoU。为了计算该类别的mIoU,我们取该类别中所有形状的mIoU的平均值。

         在本节中,我们将我们的分割版本PointNet(图2,分割网络的修改版本)与两种传统方法[27]和[29]进行比较,这两种方法都利用了点状几何特征和形状之间的对应关系,当然还有我们自己的3D CNN基线模型。3D CNN的详细修改和网络架构参见补充。

         在表2中,我们报告了每个类别和平均IoU(%)分数。我们观察到平均IoU改善了2.3%,在大多数类别中,我们的网络优于基线方法。

         我们还在模拟Kinect扫描上进行了实验,以测试这些方法的鲁棒性。对于ShapeNet零件数据集中的每个CAD模型,我们使用Blensor Kinect Simulator从六个随机视点生成不完全点云。我们用相同的网络架构和训练设置来训练PointNet的完整形状和部分扫描。结果显示,我们仅损失了5.3%的平均IoU。在图3中,我们在完整和部分数据上都给出了定性结果。可以看出,尽管部分数据相当具有挑战性,但我们的预测是合理的。

3D点云论文翻译《PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation》_第6张图片

表3 场景中语义分割的结果。评价指标是13个类别(structural and furniture elements plus
clutter)的平均IoU值,分类精度以点数计算。

3D点云论文翻译《PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation》_第7张图片 

表4 场景中三维物体检测的结果。评价指标是在3D体积中计算阈值IoU 0.5的平均精度。

3D点云论文翻译《PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation》_第8张图片

图4 语义分割的定性结果。最上面一行是带颜色的输入点云。最下面一行是输出的语义分割结果(点),显示在与输入相同的摄像机视点中。

Semantic Segmentation in Scenes(场景语义分割)

        PointNet局部分割网络可以很容易地扩展到场景语义分割,其中点标签成为语义对象类而不是对象部分标签。

        我们在Stanford 3D语义解析数据集上进行了实验。该数据集包含Matterport扫描仪在6个地区(包括271个房间)的3D扫描结果。扫描中的每个点都用13个类别(椅子、桌子、地板、墙壁等,再加上杂乱)中的一个语义标签进行标注。

        为了准备训练数据,我们首先按点对房间进行划分,然后将房间分成面积为1m * 1m的块。训练PointNet的分段版本来预测每个块中的每个点的分类。每个点都由9维的XYZ向量、RGB和房间的规范化位置(从0到1)表示。在训练时,在每个块中随机抽样4096个点并对所有点进行测试。遵循与[1]相同的协议,使用k-fold策略进行训练和测试。

        将我们的方法与使用手工提取的点特征的基线模型进行比较。基线模型提取了相同的9个模糊的局部特征和另外3个特征:局部点密度、局部曲率和法线。我们使用标准的MLP作为分类器。结果如表3所示,PointNet方法显著优于基线方法。在图4中,我们展示了定性的分割结果我们的网络能够输出稳定的预测结果,对点的缺失和闭塞是稳健的。

        基于我们网络的语义分割输出,我们进一步构建了一个使用连接组件进行对象候选的三维对象检测系统(详见补充)。我们将在表4中与之前的先进方法进行比较。之前的方法是基于基于局部几何特征和体素网格全局上下文特征的支持向量机训练的滑动形状方法(带有CRF后处理)。家具类别中,我们的方法比它表现得好很多。

5.2 Architecture Design Analysis

        在本节中,我们通过控制实验来验证我们的设计选择。我们还展示了网络超参数的影响。

Comparison with Alternative Order-invariant Methods(与其他顺序不变方法的比较)

        如第4.2节所述,至少有三种方式使用无序集输入。我们使用ModelNet40形状分类问题作为试验台来比较这些选项,下面两个对照实验也将使用这个任务。我们比较的基线模型(如图5所示)包括未排序点和排序点上的多层感知器(n×3阵列),将输入点视为序列的RNN模型,以及基于对称函数的模型。我们实验的对称操作包括最大池化、平均池化和基于注意的加权和。基于注意的方法类似于[25]中的方法,其中从每个点特征预测标量分数,然后通过计算softmax在点之间进行归一化。然后根据归一化分数和点特征计算加权和。如图5所示,maxpooling操作以很大的优势获得了最佳性能,这验证了我们的选择。

3D点云论文翻译《PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation》_第9张图片

图5 实现顺序不变的三种方法。应用于点上的多层感知器(MLP)由5个隐层组成,神经元大小分别为64、64、64、128、1024,所有点共享一个MLP。靠近输出的MLP由两层组成,大小为512,256。

3D点云论文翻译《PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation》_第10张图片

表5 输入特征变换的影响。评价指标是在ModelNet40测试集上的总体分类精度。

 Effectiveness of Input and Feature Transformations(输入和特征转换的有效性)

         在表5中,我们展示了我们的输入和特征转换(为了对齐)的积极效果。有趣的是,最基本的体系结构已经实现了相当合理的结果。使用输入转换可以提高0.8%的性能。正则化损失是高维变换工作所必需的。通过结合转换和正则化项,我们可以获得最佳性能。

Robustness Test(健壮性测试)

         PointNet虽然简单而有效,但对于各种类型的输入损坏是健壮的。我们使用与图5最大池网络相同的架构。输入点被归一化成一个单位球。结果如图6所示。

         对于缺失点,当有50%的缺失点时,在随机输入抽样的情况下,误差最大仅下降2.4%和3.8%。如果网络在训练过程中检测到离群点,它对离群点也很健壮。我们评估了两个模型:一个在(x, y, z)坐标的点上训练; 另一个是(x, y, z)加上点密度。即使有20%的点是异常值,该网络也有超过80%的准确性。图6右显示了该网络对点干扰具有鲁棒性。

3D点云论文翻译《PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation》_第11张图片

图6 PointNet健壮性测试。评价指标是ModelNet40测试集上的总体分类精度。左:删除点。最远的意思是用最远的抽样对原来的1024点进行抽样。中间:插入。在单位球内均匀分布的离群点。右:扰动。每个点单独加高斯噪声。

5.3 Visualizing PointNet

         在图7中,我们将一些样本形状S的临界点集Cs和上限形状Ns(理论2中所讨论)可视化。两个形状之间的点集将给出完全相同的全局形状特征f(S)。

         从图7中我们可以清楚地看到,贡献最大汇集特征的临界点集Cs构成了形状的整体外观。上限形状Ns说明了最大可能的点云,它提供了与输入点云S相同的全局形状特征f(S)。Cs和Ns反映了PointNet的鲁棒性,这意味着丢失一些非临界点并不会改变全局形状信息f(S)。

         Ns是通过网络转发一个边长为2的立方体中的所有点,并选择点函数值(h1(p),h2(p),…,hK(p))不大于全局形状描述符的点p来构造的。

3D点云论文翻译《PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation》_第12张图片

图7 临界点和上限形状。虽然临界点共同决定给定形状的全局形状特征,但位于临界点集和上限形状之间的任何点云都给出完全相同的特征。我们用颜色标记所有的数字来显示深度信息。

5.4 Time and Space Complexity Analysis

         表6总结了我们的分类PointNet的空间(网络中参数的数量)和时间(浮点操作/样本)复杂性。我们还将PointNet与以前工作中一组具有代表性的基于体积和多视图的体系结构进行比较。

         虽然MVCNN和Subvolume (3D CNN)实现了高性能,但PointNet在计算成本方面更高效(以FLOPs/样本衡量:效率分别提高了141倍和8倍)。此外,就网络中的#param而言,PointNet比MVCNN更节省空间(少17倍的参数)。更进一步讲,PointNet的可扩展性更强——它的空间和时间复杂度与输入点的数量呈O(N)线性关系。但由于卷积在计算时间上占主导地位,多视图方法的时间复杂度与图像分辨率成正比增长,而基于体积卷积的方法随体积大小成立方体增长。

         根据经验,PointNet能够在TensorFlow上使用1080X GPU每秒处理超过100万个点,用于点云分类(大约每秒1K个对象)或语义分割(大约每秒2个房间),显示出实时应用的巨大潜力。

3D点云论文翻译《PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation》_第13张图片

表6 三维数据分类深度体系结构的时空复杂性。PointNet(vanilla)是没有输入和特征转换的分类PointNet。FLOP代表浮点运算。“M”代表百万。Subvolume和MVCNN对来自多个旋转或视图的输入数据使用池化,如果没有池化,它们的性能会差很多。 

6. Conclusion

         在这项工作中,我们提出了一个新的深度神经网络PointNet可以直接输入点云。我们的网络为许多3D识别任务提供了统一的方法,包括目标分类、局部分割和语义分割,同时获得了与sota上的技术水平相当或更好的结果。我们也提供理论分析和可视化的理解我们的网络。

你可能感兴趣的:(3D点云,深度学习,计算机视觉,神经网络,机器学习,人工智能)