0%

PointNet_用于点云的分类和分割深度学习

自动摘要: 摘要 点云是几何数据结构的一种重要类型。由于其不规则的格式,大多数研究人员将此类数据转换为常规3D体素网格或图像集合。然而,这使得数据不必要地庞大,并导致问题。在本文中,我们设计了一种新型的直 ……..

摘要

点云是几何数据结构的一种重要类型。由于其不规则的格式,大多数研究人员将此类数据转换为常规3D体素网格或图像集合。然而,这使得数据不必要地庞大,并导致问题。 在本文中,我们设计了一种新型的直接使用点云数据的神经网络,它很好地遵循了点云的排列不变性。 我们的网络名为 PointNet, 提供从对象分类,部件分割,场景语义解析的应用程序的统一架构。虽然简单, 但PointNet 是高效并且有效的 ,经过实践证明, 他表现的效果超越当前的效果.。理论上,我们提供分析来理解网络学到了什么,以及为什么网络在针对输入数据干扰和丢失方面是稳健的。

1.介绍

在本文中,我们探索了能够推理三维几何数据 (如点云或网格) 的深度学习体系结构。典型的卷积架构需要高度规则的输入数据格式,如图像网格或3D体素格式,以便执行权重共享和其他内核优化。由于点云或网格不是常规格式,大多数研究人员通常将此类数据转换为常规3D体素网格或图像集合 (如:视图),然后将它们提供给深层网络架构。 然而,这种数据表示转换使得生成的数据产生了不必要的特征——同时也引入了量化噪声,掩盖了数据的自然不变性。因此,我们将重点放在使用简单点云的3D几何图形的不同输入表示上 ——并命名我们由此产生的深层网络PointNets. 点云是简单且统一的结构,可避免网格的组合不规则性和复杂性。因此更容易学习。然而,PointNet仍然必须尊重这样一个事实,即点云只是一组点,因此对其成员的排列不变,因此需要在网络计算中进行某些对称性,还需要考虑刚性运动的进一步不变性。
图1.PointNet的应用__我们提出了一种新的深层网络架构,它使用原始点云 (一组点) 而不进行体素化或渲染. 它是一个学习全局和局部点特征的统一架构,为许多3D识别任务提供了简单、高效和有效的方法。


我们的PointNet是一个统一的体系结构,它直接将点云作为输入,并为整个输入输出类标签,或为每个输入点输出每个点段/部分标签。 我们网络的基本架构非常简单,因为在初始阶段,每个点都被相同且独立地处理。在基本设置中,每个点仅由其三个坐标 (x,y,z) 表示,可以通过计算法线和其他局部或全局特征来添加其他维度。我们方法的关键是使用单对称函数,最大池化。网络有效地学习了一组优化函数/标准,这些优化函数/标准选择了点云中有趣或信息丰富的点,并对选择它们的原因进行了编码。网络的最后的全连接层将这些学习到的最佳值聚合到如上所述的整个形状的全局描述符中 (形状分类) 或用于预测每个点的标签 (形状分割)。我们的输入格式很容易应用刚性或仿射变换,因为每个点是独立变换。因此,我们可以添加一个数据相关的空间transform 变换网络,试图在PointNet处理数据之前对数据进行规范化,以便进一步改善结果。 我们提供了我们的方法的理论分析和实验评估。我们证明了我们的网络可以接近任何连续的集合函数。更有趣的是,事实证明,我们的网络通过一组稀疏的关键点来学习总结输入点云,这些关键点大致对应于可视化对象的框架。 理论分析提供了一个理解,为什么我们的PointNet对输入点的小扰动以及通过点插入 (异常值) 或删除 (缺失数据) 造成的损坏具有高度鲁棒性。在从形状分类、部分分割到场景分割的许多基准数据集上,我们将我们的PonintNet与基于多视图和体素表示的最先进方法进行了实验比较。在统一的架构下,我们的PointNet不仅速度更快,而且表现出色,甚至比现有技术效果更好。我们工作的主要贡献如下: • 我们设计了一种新颖的深度网络架构,适合在3D中使用无序点集; • 我们展示了如何训练这样的网络来执行3D形状分类、形状部分分割和场景语义解析任务; • 我们对该方法的稳定性和效率进行了全面的实证和理论分析。• 我们阐述了由网络中选定的神经元计算的3D特征,并对其性能进行了直观的解释。


通过神经网络处理无序集的问题是一个非常普遍和基本的问题——我们期望我们的想法也可以转移到其他领域。 他们的操作仍然是稀疏的,

2.相关工作

  • 点云特征
    • 大多数针对特定任务的点云现有特性都是人工制作的。点特征通常编码点的某些统计特性,并且被设计成对某些变换不变,这些变换通常被分类为内在 [2,24,3] 或外在 [20,19,14,10,5]。它们也可以分为本地特征和全局特征。对于特定任务,找到最佳特征组合并非易事。
  • ** 3D数据深度学习**
    • 3D数据具有多种流行的表示形式,导致了各种学习方法.
      • Volumetric (体素) CNNs: [28,17,18] 是在体素化形状上应用3D卷积神经网络的先驱。然而,由于3D卷积的数据稀疏性和计算成本,体积表示受到其分辨率的限制. FPNN [13] 和 Vote3D [26] 提出了处理稀疏问题的特殊方法,然而,他们的操作仍然是稀疏的,对他们来说处理非常大的点云是一个挑战。
      • Multiview(多视图)CNNs: [23, 18] 尝试将3D点云或形状渲染为2D图像,然后应用2D conv网络对其进行分类。利用精心设计的图像CNNs,这一系列方法在形状分类和检索任务中获得了主导性能 [21]。然而,将它们扩展到场景理解或其他3D任务 (如点分类和形状修复) 是困难的.
      • Spectral (光谱)CNNs: 一些最新作品 [4,16] 在网格上使用光谱CNNs。然而,这些方法目前被限制在流形网格上,如有机物体,如何将它们扩展到非等距形状,如家具,将获得较差的效果。
      • Feature-based(基于特征) DNNs:[6,8] 首先将3D数据转换为向量, 通过提取传统形状特征,然后使用全连接的网络对形状进行分类。我们认为它们受到提取特征的表示能力的限制。
      • 从数据结构的角度对无序集进行深度学习,点云是一组无序的向量。虽然大多数深度学习工作侧重于常规输入表示,如序列 (在语音和语言处理中),图像和体素(视频或3D数据),在点集的深度学习中没有做太多工作。

Oriol Vinyals等人最近的一项工作 [25] 调查了这个问题。他们针对无序的输入集使用具有注意力机制的读写网络,并表明他们的网络具有对数字进行排序的能力。 然而,由于他们的工作侧重于通用集合和NLP应用,因此缺乏几何在集合中的作用。

3.问题陈述

我们设计了一个直接使用无序点集作为输入的深度学习框架。 点云表示为一组3D点{Pi | i = 1, …, n},其中每个pi是其 (x,y,z) 坐标加上额外特征通道 (如颜色,法线等) 的向量。为了简单明了,除非另有说明,我们只使用 (x,y,z) 坐标作为我们点的通道。 对于对象分类任务, 输入点云可以直接从形状采样,也可以从场景点云预分割。 我们提出的深度网络输出所有k候选类的k分数. 用于语义分割, 输入可以是单个目标进行区域分割,也可以是三维场景的子体进行区域分割。

4.点集深度学习

我们的网络架构(下面第2节)的灵感来自于
(下面第1节)中的点集的性质。


  1. 中点集的属性
    • 我们的输入是来自欧几里得空间的点的子集。它有三个主要属性:
    • 无序
      • 与图像中的像素阵列或体素网格中的体素阵列不同,点云是一组没有特定顺序的点。换句话说,使用N个3D点集的网络需要对保持不变,按数据输入顺序排列输入集。
    • 点之间的相互作用
      • 这些点来自具有距离度量的空间。这意味着点不是孤立的,相邻的点形成一个有意义的子集。因此,该模型需要能够从附近点捕获局部结构,以及局部结构之间的组合相互作用。
    • 变换下的不变性
      • 作为一个几何对象,学习的点集表示应该对某些变换保持不变。 例如,旋转和平移所有点不应修改全局点云类别,也不应该分割点。
  2. ** PointNet 架构**
    • 我们的完整网络架构在图2中可视化,其中分类网络和分割网络共享很大一部分结构。请阅读图2的标题。

    • 我们的网络有三个关键模块:

      • 最大池化层作为对称函数,用于聚合来自所有点的信息、
      • 局部和全局信息组合结构
      • 两个对齐输入点和点特征的联合对齐网络。
    • 我们将在下面的单独段落中讨论这些设计选择背后的原因

      • 无序输入的对称函数——为了使输入排列的模型不变,存在三种策略:
          1. 将输入排序为规范顺序;
          1. 将输入视为训练RNN的序列,但通过各种排列来增加训练数据;
          1. 使用一个简单的对称函数来聚合来自每个点的信息。
    • 这里,对称函数将n个向量作为输入,并输出一个对输入顺序不变的新向量。 例如,+ 和 * 运算符是对称二进制函数

    • 虽然排序听起来像一个简单的解决方案,在高维空间中,实际上不存在点扰动和稳定的顺序。这很容易通过矛盾反证法表现出来。 如果存在这样的排序策略,它将定义高维空间和1维实数之间的双向映射直线。 不难看出,要求点扰动的次序是稳定的,相当于要求该映射在维数减少时保持空间邻近性,这是在一般情况下无法实现的任务。 因此,排序不能完全解决顺序问题,并且由于排序问题仍然存在,网络很难学习从输入到输出的一致映射。如实验 (图5) 所示,我们发现直接在排序的点集上应用MLP表现不佳,尽管比直接处理未排序的输入略好。

由5个神经元大小为64、64,128、1024的隐藏层组成,所有点共享MLP的单个副本。靠近输出的MLP由两层组成,大小为512,256”)

  • 使用RNN的思想认为点集是一个序列信号,希望通过使用随机排列的序列来训练RNN,使RNN对输入顺序保持不变。然而,在“OrderMatters(顺序问题)”[25]中,作者证明了顺序确实很重要,不能完全忽略 。虽然RNN对小长度 (几十个) 序列的输入排序具有相对较好的鲁棒性,但很难缩放到数千个输入元素,这是点集的常见大小。根据经验,我们还表明,基于RNN的模型的性能不如我们提出的方法 (图5)。
  • 我们的想法是通过对集合中的变换元素应用对称函数来近似定义在点集中的一般函数:

,
为对称函数
-

  • 根据经验,我们的基本模块非常简单: 我们通过多层感知器网络近似
    ,通过单个变量函数和最大池函数的组成近似
    的收集,我们可以学习许多
    的参数来捕获集合的不同属性。
  • 虽然我们的关键模块看起来很简单, 它具有有趣的特性 (请参阅第5.3节),并且可以在一些不同的应用中有不错的表现 (请参阅第5.1节)。由于我们模块的简单性,我们还能够提供第4.3节中的理论分析。
  • 局部与全局信息聚合
    • 上述部分的输出形成一个向量
      ,这是输入集的全局特征.。我们可以很容易地在形状全局特征上训练SVM或多层感知器分类器进行分类。然而,点云分割需要局部和全局知识的结合。我们可以通过一种简单而高效的方式来实现这一点。
    • 我们的解决方案见图2 (分割网络)。 在计算了全局点云特征向量之后,我们通过将全局特征与每个点特征连接起来,将其反馈给每个点特征。然后,我们基于组合的点特征提取新的点特征,这次点特征同时了解本地和全局信息。
    • 通过这种修改,我们的网络能够预测依赖于局部几何和全局语义的每个点的数量。例如,我们可以准确地预测每个点的法线 (补充章节中的图),验证网络能够从点的局部特征中总结信息。 在实验阶段,我们还展示了我们的模型可以在形状部分分割和场景分割上实现上拥有不错的性能表现。
  • 联合对齐网络
    • 如果点云经历某些几何变换 (如刚性变换),则点云的语义标记必须不变。因此,我们期望由我们的点集学习的表示对于这些转换是不变的。

    • 一个自然的解决方案是在特征提取之前将所有输入集对齐到规范空间。 Jaderberg et al. [9] 介绍了空间transformer的思想,通过采样和插值来对齐2D图像,通过在GPU上实现的特定定制层来实现

    • 我们的点云的输入形式使我们能够以更简单的方式实现这一目标[9]. 我们不需要创造任何新的图层,也不需要像在图像情况下那样引入别名。我们通过微型网络 (图2中的T-net) 预测仿射变换矩阵,并将该变换直接应用于输入点的坐标。小型网络本身类似于大型网络,由点独立特征提取、最大池和完全连接层的基本模块组成。有关T-net的更多详细信息,请参见补充

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

    • 其中A是由微型网络预测的特征对齐矩阵。正交变换不会丢失输入中的信息,因此需要,我们发现,通过添加正则化项,优化变得更加稳定,并且我们的模型获得了更好的性能。

  1. 理论分析
  • 全局逼近
    • 我们首先展示了我们的神经网络对连续集函数的全局逼近能力。通过集合函数的连续性,直观地说,对输入点集的小扰动不应极大地改变函数值,例如分类或分割分数。
    • 形式上, 假设
      是在
      上的一个关于豪斯多夫距离
      的连续集函数
      • 我们的定理表明,如果在最大池层有足够多的神经元,

可以由我们的网络任意逼近,即
在公式(1)中足够大。

  • 定理1:
    • 其中


中任意有序元素的完整列表,
是一个连续函数,
是向量max运算符,它将n个向量作为输入并返回元素最大值的新向量。

  • 这个定理的证明可以在我们的补充材料中找到。关键思想是,在最坏的情况下,网络可以通过将空间划分为大小相等的体素,学会将点云转换为体积表示。 然而,在实践中,网络学会了一个更聪明的策略来探测空间,正如我们将在点函数可视化中看到的那样。
  • 维度限制和稳定性
    • 理论上和实验上,我们发现我们的网络的表达能力强烈地受到最大池化层的维数的影响,即K 在公式(1)中。在这里,我们提供了一个分析,这也揭示了与我们的模型稳定性相关的属性。

    • 定义
      的子网络,
      的子网络将
      中的点集映射到 k 维向量。下面的定理告诉我们,输入集中的微小损坏或额外的噪声点不太可能改变我们网络的输出:

    • 定理2:

      • 假设
        ,
      • 那么:
    • 我们解释了该定理的含义。

      • (a)表明:如果保留

所有点数,则
直到输入错误,都是保持不变的,在额外的噪声达到
之前,它本身也时不变。
- (b) 表明:
的瓶颈维度。

  • 结合
    的连续性,这解释了我们的模型关于点扰动、错误和额外噪声点的鲁棒性。与机器学习模型中的稀疏性原理类似,获得了鲁棒性。直观地,我们的网络通过一组稀疏的关键点来学习总结形状。在实验部分,我们看到关键点形成了物体的骨架。

5.实验

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

5.1 应用在本节中,我们将展示如何训练我们的网络以执行3D对象分类、对象部分分割和语义场景分割。即使我们正在开发一种全新的数据表示 (点集),我们仍能够在多个任务的基准上实现可比甚至更好的性能。

  • 3D对象分类
    • 我们的网络学习可用于对象分类的全局点云功能。我们在ModelNet40 [28] 形状分类基准上评估了我们的模型。有来自40个人造物体类别的12,311个计算机辅助设计模型,分为9,843个用于训练,2,468个用于测试。虽然以前的方法侧重于体素和多视图图像表示,但我们是第一个直接研究原始点云的方法。
    • 我们根据面积对网格面上的1024个点进行均匀抽样,并将其归一化为单位球面。在训练过程中,我们通过沿着上轴随机旋转物体并且用一个零平均值和0.02标准差的高斯噪声抖动每个点的位置来增加动态点云。
    • 在表1中,我们将我们的模型与以前的作品以及使用MLP提取自点云 (点密度、D2、形状轮廓等) 的传统特征的基线进行了比较。我们的模型在基于3D输入 (体素和点云) 的方法中获得了最先进的性能。只有完全连接的层和最大池,我们的网络在推理速度上获得了很大的领先,并且可以很容易地在CPU中并行化。我们的方法与基于多视图的方法 (MVCNN [23]) 之间仍有很小的差距,我们认为这是由于渲染图像可以捕获的精细几何细节的丢失。
      输入 视图 准确性(分类平均分) 准确性(总分)
      SPH [11] 网格 - 68.2 -
      3DShapeNets [28] VoxNet [17] Subvolume [18] 体素体素体素 11220 77.383.086.0 84.785.989.2
      LFD [28] MVCNN [23] 图片图片 1080 75.590.1
      Ours baseline Ours PointNet 点云点云 -1 72.686.2 77.489.2

表1:基于ModelNet40上的分类结果,我们的网络在3D输入深度网络中实现了最先进的技术。

  • 3D对象部分分割
    • 部分分割是一项具有挑战性的细粒度3D识别任务,给定一个3D扫描或网格模型,任务是分配部分类别标签(如椅腿,杯柄)到每个点或面上。
    • 我们对来自 [29] 的ShapeNet部分数据集进行评估,该数据集包含来自16个类别的16,881个形状,总共注释了50个部分。 大多数对象类别都标有两到五个部分。基准(GT)注释被标记在形状的采样点上。
    • 我们将部分分割定义为逐点分类问题。评价指标是点上的mIoU。对于C类中的每个形状S,计算形状的mIoU:对于C类中的每个零件类型,计算根据基准与预测之间的差距。如果基准与预测点的并集为空,则将IoU部分计算为1。然后我们平均 C 类中所有零件类型的 IoU 以获得该形状的 mIoU。 为了计算类别的 mIoU,我们取该类别中所有形状的 mIoU 的平均值。
    • 在本节中,我们将分割版本PointNet(图2的修改版本,分割网络)与两种传统方法[27]和[29]进行比较,这两种方法都利用了逐点几何特征和形状之间的对应关系,以及我们自己的3D CNN基线。有关3D CNN的详细修改和网络架构,请参见补充说明。
    • 在表2中,我们报告了每个类别和平均IoU(%) 得分。我们观察到2.3% 的平均IoU改善,在大多数类别中,我们的方法优于基线方法。
      平均值 飞机 背包 帽子 汽车 椅子 听筒 吉他 刀具 灯具 笔记本电脑 摩托车 马克杯 手枪 火箭 滑板 桌子
      形态数 2690 76 55 898 3758 69 787 392 1547 451 202 184 283 66 152 5271
      Wu [27] - 63.2 - - - 73.5 - - - 74.4 - - - - - - 74.8
      Yi [29] 81.4 81.0 78.4 77.7 75.7 87.6 61.9 92.0 85.4 82.5 95.7 70.6 91.9 85.9 53.1 69.8 75.3
      3DCNN 79.4 75.1 72.8 73.3 70.0 87.2 63.5 88.4 79.6 74.4 93.9 58.7 91.8 76.4 51.2 65.3 77.4
      Ours 83.7 83.4 78.7 82.5 74.9 89.6 73.0 91.5 85.9 80.8 95.3 65.2 93.0 81.2 57.9 72.8 80.6

表2: ShapeNet部分数据集的分割结果。度量是点云的mIoU(%)。我们与两种传统方法 [27] 和 [29] 以及我们提出的3D全卷积网络基线进行了比较。我们的pointnet方法在mIoU是最优的。

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

  • 场景中的语义分割

    • 我们的部分分割网络可以很容易地扩展到语义场景分割,其中点标签变成语义对象类而不是对象部分标签。
    • 我们在斯坦福3D语义解析数据集 [1] 上进行了实验。数据集包含来自6个区域 (包括271个房间) 的Matterport扫描仪的3D扫描。扫描中的每个点都用13个类别 (椅子、桌子、地板、墙壁等加上杂物) 中的一个语义标签进行注释。
    • 为了准备训练数据,我们首先按房间划分点,然后将样品室分成面积为1米乘1米的块。我们训练我们的PointNet细分版本来预测每个块中的每个点类。每个点由XYZ、RGB的9-dim矢量和房间的归一化位置 (从0到1) 表示。在训练时,我们在每个区块中随机采样4096个点。在测试时间,我们对所有点进行测试。我们遵循与 [1] 相同的协议使用k-fold策略进行训练和测试。
    • 我们将我们的方法与使用人工制作的点特征的基线进行比较。基线提取相同的9维局部特征和三个附加特征:局部点密度、局部曲率和法线。我们使用标准MLP作为分类器。结果如表3所示,其中我们的PointNet方法明显优于基线方法。在图4中,我们展示了定性分割结果。我们的网络能够输出平滑的预测,并且对缺失点和遮挡具有鲁棒性。
      平均 IoU 总分
      Ours baseline 20.12 53.19
      Ours PointNet 47.71 78.62

表3:场景语义分割结果。指标是13个类别(结构和家具元素加上杂乱)的平均IoU和按点计算的分类精度。


,显示在与输入相同的相机视点中。”)

  • 基于来自我们网络的语义分割输出,我们进一步使用连接组件来构建对象感知的3D对象检测系统(有关详细信息,请参阅补充)。我们与先前的最先进的方法比较表4.先前的方法基于滑动形状方法(带CRF后处理),SVMs在体素网格中的本地几何特征和全局室上下文功能上训练。我们的方法在家具类别有很大的优势。
    桌子 椅子 沙发 木板 均值
    实例数量 455 1363 55 137
    Armeni et al. [1] 46.02 16.15 6.78 3.91 18.22
    Ours 46.67 33.80 4.76 11.72 24.24

表4:场景中3D对象检测的结果。度量标准是在阈值IoU 0.5以3D体素计算平均精度

** 5.2架构设计分析**在本节中,我们通过对照实验验证我们的设计选择。我们还展示了网络超参数的影响。

  • 与其他顺序不变方法的比较
    • 正如在第4.2节中提到的,至少有三种选择可以使用无序集合输入。我们使用 modelnet40形状分类问题作为对这些选项进行比较的测试平台,下面的两个控制实验也将使用这个任务。
    • 我们与之比较的基线 (如图5所示) 包括未排序和排序点的多层感知器,如n × 3阵列,将输入点视为序列的RNN模型,以及基于对称函数的模型。 我们实验的对称运算包括最大池化、平均池化和基于注意力的加权和。注意方法类似于[25]中的方法,其中从每个点特征预测标量分数,然后通过计算softmax对分数进行归一化。然后根据标准化分数和点特征计算加权和。如图5所示,最大池化操作通过较大的分数,实现了最佳效果,这验证了我们的选择。


由5个神经元大小为64、64,128、1024的隐藏层组成,所有点共享MLP的单个副本。靠近输出的MLP由两层组成,大小为512,256”)

  • 输入和特征转换的有效性
    • 在表5中,我们展示了输入和特征转换 (用于对齐) 的积极影响。有趣的是,最基本的架构已经取得了相当合理的结果.。使用输入转换可将性能提升0.8%。正则化损失对于更高维度变换的工作是必要的。通过结合转换和正则化项,我们实现了最佳性能。
      变换 分数
      none 87.1
      input(3x3) 87.9
      feature(64x64) 86.9
      feature (64x64)+reg. 87.4
      both 89.2

表5.输入特征转换的效果。度量标准是modelnet40测试集的整体分类精度

  • 鲁棒性测试
    • 我们展示了我们的pointNet,虽然简单有效,但对各种输入损坏是稳健的。我们使用与图5的最大池网络相同的架构。输入点被标准化为一个单位球体。结果如图6所示。
    • 至于缺失点,当有50% 个点缺失时,最远输入采样精度仅下降2.4%;随机输入采样精度仅下降3.8%。如果我们的网在训练中出现过,它对异常值也很鲁棒。我们评估两个模型: 一个在坐标为 (x,y,z) 的点上训练; 另一个在 (x,y,z) 加上点密度上训练。即使20% 的点是异常值,网络的精度也超过80%。图6右图显示网对于点扰动是鲁棒的。

5.3 可视化PointNet在图7中,我们可视化了一些样本形状S的临界点集
和上限形状
,那些有助于最大合并特征的,总结了形状的骨架。上限形状

。构造
的方法是将边长为2的立方体中的所有点通过网络转发,并选择点函数值
不大于全局形状描述子的点

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

5.4时间与空间复杂度分析表6总结了我们的分类PointNet的空间 (网络中参数的数量) 和时间 (浮点操作/样本) 复杂性。我们还将PointNet与先前工作中基于体素和多视图的体系结构的代表性集合进行了比较。 MVCNN [23]和 Subvolume (3dcnn)[18]实现了高性能,而 PointNet 在计算成本方面更有效率(以 flop/sample 衡量,分别提升141倍 和8倍 。此外,就网络中的参数量而言,PointNet比MVCNN节省更多空间 (参数少17倍)。此外,PointNet更具可扩展性,它的空间和时间复杂性是O(N) ,输入点的数量是线性的。 然而,由于卷积在计算时间上占主导地位,多视图方法的时间复杂度在图像分辨率上直接增长,基于体素卷积的方法随着体积大小而立体增长 根据经验,PointNet每秒能够处理超过100万个点的点云分类 (大约1k个对象/秒) 或语义分割 (大约2个房间/秒) 在tensorflow上使用GTX 1080 GPU,显示出实时应用的巨大潜力

参数量 FLOPs/sample
PointNet( 普通版) 0.8M 148M
PointNet 3.5M 440M
Subvolume[18] 16.6M 3633M
MVCNN[23] 60.0M 62057M

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

6.结论

在这项工作中,我们提出了一种新的深度神经网络PointNet直接使用点云。我们的网络为许多3D识别任务提供了统一的方法,包括对象分类、部分分割和语义分割,同时获得了与标准基准技术水平相当或更好的结果。我们还提供理论分析和可视化来理解我们的网络. 确认。作者非常感谢三星GRO基金,ONR MURI N00014- 13-1-0341基金,NSF基金IIS-1528025,谷歌Fo核心研究奖s的支持,来自Adobe公司的礼物和NVIDIA的硬件捐赠。

补充说明:

A 概述:

本文档为主要论文提供了额外的定量结果、技术细节和更多的定性测试实例。

  • B节中,我们扩展了鲁棒性测试,以比较PointNet和VoxNet在不完整输入上的差异。
  • C节中,我们提供了有关神经网络体系结构,训练参数的更多详细信息
  • D节中,我们描述了场景中的检测流程。
  • E节说明了PointNet的更多应用,
  • F节显示了更多的分析实验。
  • G节为我们关于PointNet的理论提供了证明。
  • H节中显示了更多的可视化结果

B PointNet和VoxNet的比较 (第5.2节):

 我们扩展了第5.2节鲁棒性测试中的实验,以比较PointNet和VoxNet [17] (体积表示的代表性架构) 对输入点云中缺失数据的稳健性。两个网络都在同一个分割训练集进行训练,输入1024个点。对于VoxNet,我们将点云体素化为32 × 32占用网格,并通过绕上轴随机旋转和抖动来增加训练数据。  在测试时,输入点以一定的比例随机退出。由于VoxNet对旋转很敏感,它的预测使用了来自12个视点的点云的平均得分。如图8所示,我们看到我们的PointNet对缺失点更加鲁棒。当一半的输入点丢失时,VoxNet的精度急剧下降,从86.3% 到46.0%,相差40.3%,而我们的PointNet的性能下降了3.7%。这可以通过我们的pointNet的理论分析和解释来解释 -- 它正在学习使用临界点的集合来总结形状,因此它对丢失的数据非常鲁棒。![](/images/1638867727439-1b0339a5-cfa6-47c5-b70d-cd637cfe3411.png)

图8. PointNet v.s.VoxNet [17] 关于不完整的输入数据。指标是ModelNet40测试集的总体分类精度。请注意,VoxNet使用12个平均视点,而PointNet仅使用点云的一个视图。显然,PointNet对缺失点具有更强的鲁棒性。

C 网络架构和训练详情 (第5.1节):

  • PointNet分类网络

    • 作为基本的体系结构已经在主要论文中进行了说明,在这里我们提供了有关联合对准/转换网络和训练参数的更多详细信息。
    • 第一个转换网络是一个微型PointNet,它以原始点云作为输入并回归到3 × 3矩阵。它由每个点的共享MLP (64,128,1024) 网络 (层输出大小为64,128,1024) 组成,归一化和两个完全连接的层的最大池,输出大小为512,256。输出矩阵初始化为单位矩阵。除最后一层外,所有层均包括ReLU和批处理规范化。除了输出是64 × 64矩阵外,第二转换网络与第一转换网络具有相同的架构。矩阵也被初始化为单位矩阵。 正则化损失 (权重为0.001) 被添加到softmax分类损失中,以使矩阵接近正交。
    • 在类分数预测之前,我们在最后一个完全连接的层(其输出维度为256)上使用保留比为0.7的 dropout层。 批量标准化的衰减率从0.5开始,并逐渐增加到0.99。我们使用adam优化器,初始学习率为0.001,变化量为0.9,批量大小为32。学习率每20个时期除以2。使用TensorFlow和GTX1080 GPU进行ModelNet培训需要3-6小时。
  • PointNet分割网络

    • 分割网络是分类pointnet的扩展。每个点的局部点特征(第二个转换网络后的输出)和全局特征(最大池的输出)连接在一起。分割网络不使用dropout。训练参数与分类网络相同。
    • 关于形状部分分割的任务,我们对基本分割网络架构进行了一些修改 (主要论文中的图2),以实现最佳性能,如图9所示。我们添加了一个指示输入类的one hot向量,并将其与最大池化层的输出连接起来。我们还增加了某些层中的神经元,并添加跳越链接以收集不同层中的局部点特征,并将它们连接起来,形成点特征输入到分割网络。
    • 而 [27] 和 [29] 独立处理每个对象类别,由于缺乏某些类别的训练数据 (数据集中所有类别的形状总数显示在第一行),我们跨类别训练pointNet(但使用one hot向量输入来指示类别)。为了进行公平的比较,在测试这两个模型时,我们只预测给定特定对象类别的部分标签。
    • 对于语义分割任务,我们在主要论文中使用了如图2所示的结构。
    • 在ShapeNet部分数据集上训练模型大约需要6到12个小时,在standford语义解析数据集上训练大约需要半天。
  • 基线3D CNN分割网络

    • 在ShapeNet部分分割实验中,我们将我们提出的分割版本PointNet与两种传统方法以及3D体素CNN网络基线进行了比较。在图10中,我们展示了我们使用的基线3D体素CNN网络。我们将著名的3D CNN结构(如VoxNet[17]和3DShapeNet[28])推广为完全卷积的3D CNN分割网络。
    • 对于给定的点云,我们首先将其转换为体素度量表示,作为分辨率为32×32×32的占用网格。然后,五个3D卷积操作,每个操作具有32个输出通道和1个步幅,依次应用于提取特征。每个体素的感受野为19。最后,将核大小为1 × 1 x 1 的3D卷积层序列附加到计算出的特征图中,以预测每个体素的分割标签.。除了最后一个图层,所有图层都使用了 ReLU 和 batch normalization。网络是跨类别训练的。但是,为了与给定对象类别的其他基线方法进行比较,我们仅考虑给定对象类别中的输出分数。

D 检测流程详情 (第5.1节)

基于语义分割结果和对象分类PointNet,构建了一个简单的三维对象检测系统。我们使用具有分割分数的连接组件来获得场景中的对象建议。从场景中的一个随机点开始,我们找到它的预测标签,并使用BFS搜索具有相同标签的附近点,搜索半径为0.2米。如果生成的簇具有200多个点(假设在1m×1m的区域中有4096个点采样),则簇的边界框将标记为一个对象。对于每个提议的对象,它的检测分数被计算为该类别的平均分数。在评估之前,对面积/体积极小的提案进行修剪。对于桌子、椅子和沙发,边界框延伸到地板,以防腿与座位/表面分开。 我们观察到,在一些房间,如礼堂,许多物体 (如椅子) 彼此靠近,其中连接的组件无法正确地分割出单个组件。因此,我们利用我们的分类网络并使用滑动形状方法来缓解椅子类的问题。我们为每个类别训练一个二进制分类网络,并使用分类器进行滑动窗口检测。 结果框通过非最大抑制进行修剪。来自连接组件和滑动形状的建议盒子被组合起来进行最终评估。在图11中,我们显示了用于对象检测的精度-召回曲线。我们训练了六个模型,其中每个模型都在五个区域进行训练,并在左侧区域进行测试。在测试阶段,每个模型都在它从未见过的区域进行测试。对所有六个区域的测试结果进行汇总,以生成PR曲线。

E 更多应用 (第5.1节)

  • ** 基于点云的3D模型检索**

    • 我们的 PointNet 为每个给定的输入点云学习一个全局形状签名。我们期望几何上相似的形状有相似的全局特征。在这一部分中,我们检验我们关于形状检索应用的猜想。更具体地说,对于模型网测试分割中的每个给定查询形状,我们计算其全局特征 (分数预测层之前的层的输出) 由我们的分类PointNet给出,并在由最近邻搜索分割的列车中检索相似的形状。结果如图12所示
  • 形状匹配

    • 在本节中,我们展示了PointNet学习的点特征可以潜在地用于计算形状对应关系。给定两种形状,我们通过匹配激活全局特征中相同维度的点对来计算它们的临界点集
      之间的对应关系。图13和图14显示了两个相似的椅子和桌子之间检测到的形状对应关系。


F 更多架构分析 (第5.2节)

  • 维度限制和输入点数量的影响
    • 在这里,我们展示了我们模型关于第一个最大层输出的大小以及输入点的数量的性能变化。在图15中,我们看到性能随着我们增加点数而增长,但是它在大约1k点饱和。 最大层大小起着重要的作用,将层大小从64增加到1024会导致2-4% 的性能提升。这表明我们需要足够的点特征函数来覆盖3D空间,以便区分不同的形状。值得注意的是,即使有64个点作为输入 (从网格上最远的点采样中获得),我们的网络也能实现不错的性能。

    • MNIST数字分类

      • 当我们专注于3D点云学习时,一个健全性检查实验是将我们的网络应用于2D点云-像素集。 要将MNIST图像转换为2D点集,设置阈值像素值并添加像素(表示为图像中具有 (x,y) 坐标的点),其值大于128的集合。我们使用设置大小为256。如果设置了超过256个像素,我们随机对其进行子采样; 如果少于,我们用集合中的一个像素填充集合 (由于我们的最大值操作,用于填充的该点不会影响结果)
      • 如表7所示,我们与包括多层感知器在内的一些基线进行比较,这些基线将输入图像视为有序向量,将输入视为从像素 (0,0) 到像素 (27,27) 的序列的RNN,以及普通版本的CNN。虽然在MNIST上表现最好的模型仍然是精心设计的CNNs (实现不到0.3% 的错误率),有趣的是,我们的PointNet模型可以通过将图像视为2D点集来实现合理的性能。
input error (% )
Multi-layer perceptron [22] vector 1.60
LeNet5 [12] image 0.80
Ours PointNet point set 0.78

表 7. MNIST分类结果。我们与其他深度架构的普通版本进行比较,以显示我们基于点集输入的网络在这个传统任务上获得了合理的性能。

  • ** 法线估计 **

    • 在 PointNet 的分割版本中,将局部点特征和全局特征连接起来,为局部点提供上下文,但是,目前尚不清楚这些上面是否通过这种级联学习。在这个实验中,我们通过展示我们的分割网络可以被训练来预测点法线来验证我们的设计,这是一个由点的邻域决定的局部几何属性。
    • 我们以监督的方式训练我们的分割PointNet的修改版本,以逼近到真实点的法线。我们只是改变分割PointNet的最后一层来预测每个点的正态向量。我们使用余弦距离的绝对值作为损失。
    • 图16: 将我们的PointNet法线预测结果(左列)与网格中的真实法线计算值(右列)进行了比较。. 我们观察到合理的正常重建。 我们的预测比真实值更平滑、更连续,基准包括某些区域的翻转正常方向。
  • 分割鲁棒性

    • 如第5.2节和第B节所述,我们的PointNet对数据损坏和分类任务的缺失点不太敏感,因为全局形状特征是从给定输入点云的临界点集合中提取的。在本节中,我们展示了对分割任务的稳健性。 基于每个点特征和学习的全局形状特征的组合来预测每个点部件标签。在图17中,我们说明了给定输入点云
      (最左边的一列) 的分割结果,临界点设置
  • **对不可见形状类别的网络泛化能力 **

    • 在图18, 我们对ModelNet或ShapeNet中不存在的不可见类别(脸、房子、兔子、茶壶)中的新形状的临界点集和表面形状进行可视化。 它表明学习的每点函数是可推广的。 然而,由于我们主要在具有大量平面结构的人造物体上进行训练,因此在新类别中重建的表面形状也包含更多的平面。

  • .

G 定理证明 (第4.3节)


可以通过组成一个对称函数和一个连续函数来任意近似。

  • 定理1
    • 假设
      和一个对称函数
      是一个连续函数,
      是一个向量运算符,以
      个向量作为输入并返回元素最大值的新向量,以此对于任何

      - ![](/images/c90c440c6180fff8bd9150dfda77644c.svg)
      
    • 其中

中按一定顺序提取的。

  • 证明:

,并定义一个辅助函数,该函数将一个点映射到它所在的间隔的左端:
-

     - ![](/images/ef75c604f236f2dc58150f737b9034e5.svg)

  - ![](/images/982edebf4ab7ca708485520d5bcb1fca.svg)


.
-

  - ![](/images/22663de9f01cd1f865a93ce7e312be07.svg)

其中占用向量映射到包含每个占用间隔左端的集合,则很容易证明:
-

     - ![](/images/a6e6f6e84b55b1f3dcebe09ff504a50f.svg)

顺序提取的。
-

  - ![](/images/981e3ddef6c0701c3896f076bfafbdd4.svg)

     - 注意:![](/images/ddc93dc1f5c2d2bf6b5b3f9647237c9d.svg)

     - ![](/images/de334ffe4fe881e66f858c2296a72327.svg)

     - 显然![](/images/d190640d5c92e03ed962838184e0e5c5.svg)

是对称函数

  • 定理2的证明。
    • 定义
      的子网络,
      中的点集映射到 k 维向量。下面的定理告诉我们,输入集中的小的损坏或额外的噪声点不太可能改变我们网络的输出:

    • 证明:

  - ![](/images/ea288050c5da01abf802ff63aa54175c.svg)

H 更多可视化

  • 分类可视化

    • 我们使用t-SNE[15]将来自分类PointNet的点云全局签名(1024维)嵌入到2D空间中。图20显示了ModelNet 40测试分割形状的嵌入空间。相似形状根据其语义类别聚集在一起。
  • 分割可视化

    • 我们在完整的CAD模型和模拟Kinect局部扫描上给出了更多的分割结果。我们还通过错误分析可视化故障案例。图21和图22显示了在完整的CAD模型及其模拟Kinect扫描中产生的更多分割结果。图23说明了一些故障情况。请阅读标题以进行错误分析。

说明了最常见的故障情况: 边界上的点被错误地标记。在示例中,桌子/椅子腿和顶部之间的交叉点附近的标签预测不准确。然而,大多数分割算法都受到此错误的影响。 ● (b) 显示外来形状的误差。例如,图中所示的吊灯和飞机在数据集中非常罕见。 ● (c)显示小部件可以被附近的大部件覆盖。例如,飞机的喷气发动机(图中的黄色)被错误地划分为机身(绿色)或机翼(紫色) ● (d) 显示了由形状部分的固有模糊性引起的误差。例如,图中两个表格的两个底部被分类为桌腿和桌脚 ([29] 中的其他类别),而真实值分割则相反。 ● (e)说明了部分扫描不完整所引入的错误。对于图中的两个大写字母,几乎有一半的点云丢失了。 ● (f) 显示当某些对象类别的训练数据太少,无法涵盖足够的种类时的失败案例。在这里显示的两个类别中,整个数据集中只有54个袋子和39个帽子。”)

  • 场景语义解析可视化
    • 我们在图24中给出了语义解析的可视化,其中我们显示了两个办公室和一个会议室的语义分割和对象检测的输入点云、预测和真实值。该区域和房间在训练集中是没有的。

。最后两行是带有边界框的目标检测,其中预测框来自基于语义分割预测的连接组件”)

  • 点函数可视化
    • 我们的分类pointNet计算K (在这个可视化中我们取K = 1024) 每个点的尺寸点特征,并通过最大池层将所有每个点的局部特征聚合为一个K维向量,形成全局形状描述符。 为了获得更多关于学习到的每点函数
      检测的见解,我们可视化了图19中给出高每点函数值
      的点
      。这种可视化清楚地表明,不同的点函数学习检测分散在整个空间中的各种形状的不同区域中的点。

    • ,当训练我们的PointNet时,它在空间上覆盖了我们的输入形状标准化的单位球体。在该图中,我们将所有h(p)> 0.5的点p可视化,其函数值由体素的亮度进行颜色编码。我们随机选择15个点函数,并可视化它们的激活区域。”)

欢迎关注我的其它发布渠道