点云是一种重要的几何数据结构。 由于其不规则的格式,大多数研究人员将这些数据转换为常规3D体素网格或图像集合。 然而,这会使数据不必要地大量增加并导致问题。 在本文中,我们设计了一种直接消耗点云的新型神经网络,它很好地考虑了输入中点的置换不变性。 我们的网络名为PointNet,为从对象分类,部分分割到场景语义分析等应用程序提供统一的体系结构。 虽然简单,但PointNet非常高效和有效。 根据经验,它表现出与现有技术水平相当甚至更好的强劲表现。 从理论上讲,我们提供分析,以了解网络学到了什么,以及网络在输入扰动和腐败方面的稳健性。
1.简介
在本文中,我们探索了能够推理三维几何数据(如点云或网格)的深度学习架构。典型的卷积体系结构需要高度规则的输入数据格式,如图像网格或3D体素的格式,以便执行权重共享和其他内核优化。由于点云或网格不是常规格式,因此大多数研究人员通常将这些数据转换为常规3D体素网格或图像集合(例如视图),然后将其提供给深网络体系结构。然而,这种数据表示变换使得得到的数据不必要地大量增加同时还引入了可能模糊数据自然不变性的量化伪像。
出于这个原因,我们使用简单的点云专注于3D几何的不同输入表示 - 并命名我们生成的深网点PointNets。点云是简单而统一的结构,可以避免网格的组合不规则性和复杂性,因此更容易学习。然而,PointNet仍然必须尊重点云只是一组点并因此对其成员的排列不变的事实,这需要在网络计算中进行某些对称化。还需要考虑对刚性运动的进一步不变性。
我们的PointNet是一个统一的架构,直接将点云作为输入并输出整个输入的类标签或输入的每个点的每个点段/部件标签。我们网络的基本架构非常简单,因为在初始阶段,每个点的处理方式相同且独立。在基本设置中,每个点仅由其三个坐标(x,y,z)表示。可以通过计算法线和其他局部或全局特征来添加附加维度。
我们的方法的关键是使用单个对称函数,最大池。有效地,网络学习一组优化函数/标准,其选择点云的有趣或信息点并编码其选择的原因。网络的最终完全连接的层将这些学习的最优值聚合到如上所述的整个形状的全局描述符(形状分类)中或者用于预测每个点标签(形状分割)。
我们的输入格式很容易应用刚性或仿射变换,因为每个点都是独立变换的。因此,我们可以添加一个依赖于数据的空间变换器网络,该网络尝试在PointNet处理数据之前对数据进行规范化,以便进一步改善结果。
我们提供理论分析和对我们方法的实验评估。 我们表明我们的网络可以近似任何连续的集合函数。 更有趣的是,事实证明我们的网络学习通过一组稀疏的关键点来概括输入点云,这些关键点根据可视化大致对应于对象的骨架。 理论分析提供了理解为什么我们的PointNet对输入点的小扰动以及通过点插入(异常值)或删除(丢失数据)的损坏具有高度鲁棒性。
在从形状分类,零件分割到场景分割的许多基准数据集中,我们通过实验将PointNet与基于多视图和体积表示的最新方法进行比较。 在统一的架构下,我们的PointNet不仅速度更快,而且还具有与现有技术相当甚至更好的性能。
我们工作的主要贡献如下:
•我们设计了一种新颖的深网络架构,适用于消耗3D中的无序点集;
•我们展示了如何训练这样的网络来执行3D形状分类,形状部分分割和场景语义分析任务;
•我们对方法的稳定性和效率进行了全面的经验和理论分析;
•我们演示了网络中所选神经元计算出的3D特征,并对其性能进行了直观的解释。
通过神经网络处理无序集合的问题是一个非常普遍和基本的问题 - 我们希望我们的想法也可以转移到其他领域。
2.相关工作
点云功能点云的大多数现有功能都是针对特定任务手工制作的。点特征通常编码点的某些统计特性,并且被设计为对某些变换不变,这些变换通常被分类为内在的[2,24,3]或外在的[20,19,14,10,5]。它们还可以归类为本地特征和全局特征。对于特定任务,找到最佳特征组合并非易事。
深入学习3D数据3D数据具有多种流行表示形式,从而导致各种学习方法。体积CNN:[28,17,18]是在体素形状上应用3D卷积神经网络的先驱。然而,由于数据稀疏性和3D卷积的计算成本,体积表示受其分辨率的限制。 FPNN [13]和Vote3D [26]提出了处理稀疏性问题的特殊方法;但是,他们的操作仍处于稀疏数量,因此处理非常大的点云具有挑战性。多视图CNN:[23,18]尝试将3D点云或形状渲染为2D图像,然后应用2D转换网对它们进行分类。通过精心设计的图像CNN,这一系列方法在形状分类和检索任务方面取得了主导作用[21]。然而,将它们扩展到场景理解或其他3D任务(例如点分类和形状完成)是非常重要的。光谱CNN:一些最新的作品[4,16]在网格上使用光谱CNN。然而,这些方法目前被限制在诸如有机物体之类的歧管网格上,并且如何将它们扩展到诸如家具之类的非等距形状并不明显。基于特征的DNN:[6,8]首先通过提取传统的形状特征将3D数据转换为矢量,然后使用完全连接的网络对形状进行分类。我们认为它们受到所提取特征的表示能力的约束。
无序集的深度学习
从数据结构的角度来看,点云是一组无序的向量。 虽然大多数深度学习工作都集中在常规输入表示,如序列(语音和语言处理),图像和体积(视频或3D数据),但在点集的深度学习中并没有做太多工作。
Oriol Vinyals等人最近的一项研究[25]研究了这个问题。 他们使用具有注意机制的读进程编写网络来使用无序输入集,并显示他们的网络具有对数字进行排序的能力。 但是,由于他们的工作重点是泛型集和NLP应用程序,因此缺少几何体在集合中的作用。
3.问题陈述
我们设计了一个深度学习框架,直接使用无序点集作为输入。 点云表示为一组3D点{Pi | i = 1,...,n},其中每个点Pi是其(x,y,z)坐标的矢量加上额外的特征通道,如颜色,法线等。为简单和清晰起见,除非另有说明,否则我们只 使用(x,y,z)坐标作为我们的点的通道。
对于对象分类任务,输入点云要么直接从形状采样,要么从场景点云预分割。 我们提出的深度网络输出所有k个候选类别的k分数。 对于语义分割,输入可以是用于部分区域分割的单个对象,或者来自用于对象区域分割的3D场景的子体积。 我们的模型将为n个点和m个语义子类别中的每一个输出n×m个分数。
4.关于点集的深度学习
我们网络的体系结构(第4.2节)的灵感来自Rn(第4.1节)中的点集属性。
4.1。 Rn中点集的性质
我们的输入是来自欧氏空间的点的子集。
它有三个主要属性:
•无序。与图像中的像素阵列或体积网格中的体素阵列不同,点云是一组没有特定顺序的点。换句话说,消耗N个3D点集的网络需要对N不变!数据馈送顺序中输入集的排列。
•各点之间的互动。这些点来自具有距离度量的空间。这意味着点不是孤立的,相邻点形成一个有意义的子集。因此,模型需要能够捕获附近点的局部结构,以及局部结构之间的组合相互作用。
•转型中的不变性。作为几何对象,点集的学习表示应该对某些变换不变。例如,一起旋转和平移点不应该修改全局点云类别,也不应该修改点的分段。
4.2。 PointNet架构
我们的完整网络架构在图2中可视化,其中分类网络和分段网络共享很大一部分结构。请阅读管道的图2标题。
我们的网络有三个关键模块:最大池层作为聚合来自所有点的信息的对称函数,局部和全局信息组合结构,以及两个对齐输入点和点特征的联合对齐网络。
我们将在下面的单独段落中讨论这些设计选择背后的原因。
无序输入的对称函数为了使模型对输入排列不变,存在三种策略:1)将输入排序为规范顺序; 2)将输入视为训练RNN的序列,但通过各种排列来增加训练数据; 3)使用简单的对称函数来聚合来自每个点的信息。这里,对称函数将n个向量作为输入,并输出对输入顺序不变的新向量。例如,+和*运算符是对称二进制函数。
虽然排序听起来像一个简单的解决方案,但在高维空间中实际上并不存在稳定的排序w.r.t.一般意义上的点扰动。这可以通过矛盾很容易地显示出来。如果存在这样的排序策略,则它定义高维空间和1d实线之间的双射映射。不难看出,要求排序是稳定的,因为点扰动等同于要求该图在尺寸减小时保持空间接近度,这是在一般情况下无法实现的任务。因此,排序不能完全解决排序问题,并且由于排序问题仍然存在,网络很难从输入到输出学习一致的映射。如实验中所示(图5),我们发现直接在排序点集上应用MLP表现不佳,但稍微好于直接处理未排序的输入。
使用RNN的想法将点集视为顺序信号,并希望通过用随机置换序列训练RNN,RNN将变得对输入顺序不变。然而,在“OrderMatters”[25]中,作者已经表明顺序确实很重要,不能完全省略。虽然RNN对于具有小长度(数十个)的序列的输入排序具有相对良好的鲁棒性,但是难以扩展到数千个输入元素,这是点集的常见大小。根据经验,我们还表明基于RNN的模型的表现不如我们提出的方法(图5)。
我们的想法是通过对集合中的变换元素应用对称函数来近似在点集上定义的一般函数:
根据经验,我们的基本模块非常简单:我们通过多层感知器网络来近似h,并通过单个变量函数和最大池函数的组合来近似h。 通过实验发现这很好。 通过h的集合,我们可以学习一些f来捕获集合的不同属性。
虽然我们的关键模块看起来很简单,但它具有有趣的属性(参见5.3节)并且可以在一些不同的应用程序中实现强大的性能(参见第5.1节)。 由于我们模块的简单性,我们也能够提供第4.3节中的理论分析。
本地和全球信息聚合
上面部分的输出形成一个向量[f1,... 。 。 ,fK],这是输入集的全局签名。我们可以在形状全局特征上轻松训练SVM或多层感知器分类器以进行分类。但是,点分割需要本地和全球知识的组合。
我们的解决方案可以在图2中看到(分段网络 -
工作)。在计算全局点云特征向量之后,我们通过将全局特征与每个点要素连接起来将其反馈到每点要素。然后我们基于组合点特征提取新的每点特征 - 这次每点特征知道本地和全局信息。
通过这种修改,我们的网络能够预测依赖于局部几何和全局语义的每个点数量。例如,我们可以准确地预测每点法线(图中的补充),验证网络能够汇总来自该点的本地邻域的信息。在实验环节中,我们还表明我们的模型可以在形状部分分割和场景分割方面实现最先进的性能。
联合对齐网络如果点云经历某些几何变换(例如刚性变换),则点云的语义标记必须是不变的。因此,我们期望我们的点集的学习表示对这些变换是不变的。
一种自然的解决方案是在特征提取之前将所有输入集对齐到规范空间。 Jaderberg等。 [9]介绍了空间变换器通过采样和插值对齐2D图像的想法,通过在GPU上实现的专门定制的层实现。
与[9]相比,我们的点云输入形式使我们能够以更简单的方式实现这一目标。我们不需要发明任何新图层,也不会像图像情况那样引入任何别名。我们通过迷你网络(图2中的T-net)预测仿射变换矩阵,并直接将该变换应用于输入点的坐标。迷你网络本身类似于大型网络,由点独立特征提取,最大池化和完全连接层的基本模块组成。关于T-net的更多细节在补充中。
这个想法可以进一步扩展到特征空间的对齐。我们可以在点要素上插入另一个对齐网络,并预测要素转换矩阵以对齐来自不同输入点云的要素。然而,特征空间中的变换矩阵具有比空间变换矩阵高得多的维度,这极大地增加了优化的难度。因此,我们在softmax训练损失中增加了一个正则化项。我们将特征变换矩阵约束为接近正交矩阵:
Lreg =∥I-AAT∥2F,(2)
其中A是由迷你网络预测的特征对齐矩阵。正交变换不会丢失输入中的信息,因此是期望的。我们发现通过添加正则化项,优化变得更加稳定,我们的模型实现了更好的性能。
4.3。理论分析
通用近似我们首先展示了我们的神经网络对连续集函数的通用逼近能力。通过设置函数的连续性,直观地,对输入点集的小扰动不应该极大地改变函数值,例如分类或分段分数。
正式地,令X = {S:S⊆[0,1] m和| S | = n},f:X→R是X wrt到Hausdorff距离dH(·,·)的连续集合函数,即εε> 0,∃δ> 0,对于任何S,S'∈X,如果dH (S,S')<δ,然后| f(S)-f(S')| <ε。我们的定理说,在最大汇集层给定足够的神经元时,f可以由我们的网络任意近似,即(1)中的K足够大。定理1.假设f:X→R是连续集函数w.r.t Hausdorff距离dH(·,·)。 ∀ε> 0,∃连续函数h和对称函数g(x1,...,xn)=γ◦MAX,这样对于任何S∈X,
其中x1,...,xn是S任意排序的元素的完整列表,γ是连续函数,MAX是矢量max运算符,它将n个向量作为输入并返回元素最大值的新向量。
这个定理的证明可以在我们的补充材料中找到。关键的想法是,在最坏的情况下,网络可以通过将空间划分为相等大小的体素来学习将点云转换为体积表示。然而,在实践中,网络学习了一种更智能的探测空间的策略,正如我们将在点函数可视化中看到的那样。
瓶颈尺寸和稳定性从理论上和实验上我们发现,我们网络的表现力受到最大汇集层的维度的强烈影响,即(1)中的K.在这里,我们提供了一个分析,它还揭示了与模型稳定性相关的属性。
我们将u = MAX {h(xi)}定义为fxi∈S的子网
它将[0,1] m中的点集映射到K维向量。以下定理告诉我们输入集中的小损坏或额外噪声点不太可能改变我们网络的输出:
我们解释这个定理的含义。 (a)如果CS中的所有点都被保留,则f(S)保持不变直至输入损坏;它也没有变化,额外的噪音点高达NS。 (b)表示CS仅包含有限数量的点,由(1)中的K确定。换句话说,f(S)实际上完全由小于或等于K个元素的有限子集CS S来确定。因此,我们将CS称为S和K的临界点集合,即f的瓶颈维数。
结合h的连续性,这解释了我们的模型w.r.t点扰动,腐败和额外噪声点的鲁棒性。类似于机器学习模型中的稀疏性原理,可以获得稳健性。直觉上,我们的网络学会通过一组稀疏的关键点来总结一个形状。在实验部分中,我们看到关键点构成了对象的骨架。
5.实验
实验分为四个部分。首先,我们展示PointNets可以应用于多个3D识别任务(第5.1节)。其次,我们提供了详细的实验来验证我们的网络设计(第5.2节)。最后,我们可视化网络学习的内容(第5.3节)并分析时间和空间的复杂性(第5.4节)。
5.1。应用
在本节中,我们将展示如何训练我们的网络来执行3D对象分类,对象部分分割和语义场景分割1.尽管我们正在开发一种全新的数据表示(点集),但我们能够实现可比较甚至是在几个任务的基准测试中表现更好。
3D对象分类我们的网络学习可用于对象分类的全局点云功能。我们在ModelNet40 [28]形状分类基准上评估我们的模型。来自40个人造物体类别的12,311个CAD模型分为9,843个用于训练,2,468个用于测试。虽然以前的方法专注于体积和多视图图像表示,但我们是第一个直接处理原始点云的方法。
我们根据面部区域在网格面上均匀地采样1024个点,并将它们标准化为单位球体。在训练期间,我们通过沿着上轴随机旋转物体并通过具有零均值和0.02标准偏差的高斯噪声来抖动每个点的位置来实时增加点云。
在表1中,我们将我们的模型与之前的工作以及使用MLP对从点云提取的传统特征(点密度,D2,形状轮廓等)的基线进行比较。我们的模型在基于3D输入(体积和点云)的方法中实现了最先进的性能。由于只有完全连接的层和最大池,我们的网络在推理速度方面获得了很强的领先优势,并且可以在CPU中轻松并行化。我们的方法和基于多视图的方法(MVCNN [23])之间仍然存在一个小的差距,我们认为这是由于丢失了可以通过渲染图像捕获的精细几何细节。
三维物体零件分割
零件分割是一项具有挑战性的细粒度3D识别任务。给定3D扫描或网格模型,任务是将零件类别标签(例如,椅子腿,杯柄)分配给每个点或面。
我们评估来自[29]的ShapeNet零件数据集,其中包含16个类别的16,881个形状,总共注释了50个零件。大多数对象类别标有两到五个部分。地面实况注释标记在形状上的采样点上。
我们将部分细分制定为每点分类问题。评估指标是分数上的mIoU。对于类别C的每个形状S,计算形状的mIoU:对于类别C中的每个零件类型,计算地面实体和预测之间的IoU。如果groundtruth和预测点的并集是空的,则将部分IoU计为1.然后我们对类别C中的所有部件类型的IoU进行平均以获得该形状的mIoU。为了计算该类别的mIoU,我们对该类别中的所有形状采用mIoU的平均值。
在本节中,我们将我们的分割版本PointNet(图2的修改版本,分割网络)与两种传统方法[27]和[29]进行比较,这两种方法都利用了逐点几何特征和形状之间的对应关系,以及我们自己的3D CNN基线。有关3D CNN的详细修改和网络架构,请参阅补充说明。
在表2中,我们报告每个类别和平均IoU(%)分数。在大多数类别中,我们观察到平均IoU改善的平均值为2.3%,并且我们的净值超过了基线方法。
我们还对模拟的Kinect扫描进行了实验,以测试这些方法的稳健性。对于ShapeNet零件数据集中的每个CAD模型,我们使用Blensor Kinect Simulator [7]从六个随机视点生成不完整的点云。我们使用相同的网络架构和培训设置对完整形状和部分扫描进行PointNet培训。结果表明,我们的平均IoU仅损失5.3%。在图3中,我们提供了完整和部分数据的定性结果。可以看出,虽然部分数据相当具有挑战性,但我们的预测是合理的。
场景中的语义分割
我们的部分分割网络可以很容易地扩展到语义场景分割,其中点标签变为语义对象类而不是对象部分标签。
我们在Stanford 3D语义分析数据集[1]上进行实验。该数据集包含来自6个区域的Matterport扫描仪的3D扫描,包括271个房间。扫描中的每个点都使用13个类别(椅子,桌子,地板,墙壁等杂乱加上)的语义标签之一进行注释。
为了准备训练数据,我们首先按房间分割点,然后将房间样品分成1m×1m的区域。我们训练我们的PointNet分段版本进行预测
每个块中的每个点类。每个点由一个9-dim矢量XYZ,RGB和关于房间的归一化位置(从0到1)表示。在训练时,我们会在每个模块中随机抽取4096个点。在测试时,我们测试所有点。我们遵循与[1]相同的协议,使用k-fold策略进行训练和测试。
我们使用手工制作的点特征将我们的方法与基线进行比较。基线提取相同的9维局部特征和另外三个特征:局部点密度,局部曲率和法线。我们使用标准MLP作为分类器。结果显示在表3中,其中我们的PointNet方法明显优于基线方法。在图4中,我们显示了定性分割结果。我们的网络能够输出平滑的预测,并且对缺失点和遮挡具有鲁棒性。
基于我们网络的语义分割输出,我们进一步构建了一个3D对象检测系统,使用连接组件进行对象提议(详见补充说明)。我们将比较表4中先前的最新方法。前一种方法基于滑动形状方法(具有CRF后处理),其中SVM在局部几何特征和体素网格中的全局房间上下文特征上训练。我们的方法在报告的家具类别上大大超过了它。
5.2。建筑设计分析
在本节中,我们通过对照实验验证我们的设计选择。我们还展示了我们网络的超参数的影响。
与备选顺序不变方法的比较
如第4.2节所述,至少有三种消耗无序设置输入的选项。我们使用ModelNet40形状分类问题作为测试床来比较那些选项,以下两个控制实验也将使用此任务。
我们比较的基线(如图5所示)包括未分类和排序点上的多层感知器作为n×3阵列,将输入点视为序列的RNN模型,以及基于对称函数的模型。我们实验的对称操作包括最大池,平均池和基于注意的加权和。注意方法类似于[25]中的注意方法,其中从每个点特征预测标量分数,然后通过计算softmax对分数进行标准化。然后,在归一化分数和点特征上计算加权和。如图5所示,max-pooling操作通过大的获胜余额实现了最佳性能,这证实了我们的选择。
输入和特征转换的有效性
在表5中,我们展示了输入和特征转换(对齐)的积极影响。有趣的是,最基本的架构已经取得了相当合理的结果。使用输入转换可提高0.8%的性能。正规化损失是高维变换工作所必需的。通过结合转换和正则化项,我们实现了最佳性能。
稳健性测试
我们展示了PointNet,虽然简单有效,但对各种输入损坏都很稳健。我们使用与图5的最大池网络相同的架构。输入点被标准化为单位球体。结果如图6所示。
至于缺失点,当缺少50%的点时,精度仅下降2.4%和3.8%w.r.t。最远和随机输入采样。如果在培训期间看到这些,我们的网络对异常点也很强。我们评估了两个模型:一个训练有(x,y,z)坐标的点;另一个(x,y,z)加上点密度。即使20%的点是异常值,网络也具有超过80%的准确度。图6右侧示出了网对点扰动的鲁棒性。
5.3。可视化PointNet
在图7中,我们对一些样本形状S可视化临界点集CS和上界形状NS(如在Thm 2中所讨论的)。两个形状之间的点集将给出完全相同的全局形状特征f(S)。
从图7中我们可以清楚地看到,临界点集CS,即最大池特征的贡献,总结了形状的骨架。上限形状NS示出了最大可能的点云,其给出与输入点云S相同的全局形状特征f(S).CS和NS反映了PointNet的稳健性,意味着丢失一些非关键点不会改变全局形状签名f(S)。
通过网络转发边长2立方体中的所有点并选择其点函数值(h1(p),h2(p),···,hK(p))为否的点p来构造NS。大于全局形状描述符。
5.4。时空复杂性分析
表6总结了我们的PointNet分类的空间(网络中的参数数量)和时间(浮点运算/样本)复杂性。我们还将PointNet与先前工作中基于体积和多视图的一组代表性架构进行了比较。
虽然MVCNN [23]和Subvolume(3D CNN)[18]实现了高性能,但PointNet在计算成本方面的订单效率更高(以FLOP /样本测量:分别为141x和8x效率更高)。此外,就网络中的#param而言,PointNet比MVCNN更具空间效率(参数减少17倍)。此外,PointNet的可扩展性更高 - 它的空间和时间复杂度为O(N) - 输入点数量的线性。然而,由于卷积在计算时间上占主导地位,因此多视图方法的时间复杂度在图像分辨率上正在增长,而基于体积卷积的方法随着体积大小而立方体增长。
根据经验,PointNet能够在Tensor-Flow上使用1080X GPU处理点云分类(大约1K对象/秒)或语义分段(大约2个房间/秒),每秒处理超过一百万个点,显示出巨大的潜力实时应用程序。
六,结论
在这项工作中,我们提出了一种直接消耗点云的新型深度神经网络PointNet。我们的网络提供了一系列3D识别任务的统一方法,包括对象分类,部分分割和语义分割,同时在标准基准测试中获得与现有技术相当或更好的结果。我们还提供理论分析和可视化,以了解我们的网络。
确认。作者非常感谢三星GRO资助,ONR MURI N00014-13-1-0341资助,NSF资助IIS-1528025,谷歌研究奖,Adobe公司的礼物和NVIDIA的硬件捐赠。