赞
踩
论文翻译
归纳梳理
代码复现
代码分析
——————————————————————
论文原文:https://arxiv.org/pdf/1612.00593.pdf
——————————————————————
点云是一种重要的几何数据结构。由于其无序性,大部分研究把这种数据转换成了有序的3D体素网格或者图片集合。然而,这会使数据不必要地大量增加,并导致问题。在本文中,我们设计了一种直接处理点云的新型神经网络,这种网络很好的考虑了输入中的点的有序性。PointNet,这种神经网络为物体分类、部分分割和场景语义分析提供了统一的结构。虽然简单,但PointNet十分高效且有效。根据经验,这种神经网络表现出了和现有技术水平相当甚至更好的强劲表现。从理论上,我们为解释这种网络学习到了什么和为什么这种网络能够对输入数据的扰动和损坏保持高度鲁棒性进行了分析。
本文我们探索了能够处理3D几何数据(eg.点云、网格)的深度学习模型。典型的卷积结构要求高度规则的输入数据格式(eg.图片网格、3D体素数据),这是为了实现权重分享和其他核函数优化。由于点云和网格都不是有序的格式,大部分研究通常在把这些数据转换成有序的3D体素网格或者图片集合(eg.视图)后,再把数据喂给深度网络模型。然而,这种数据表示转换会使结果数据不必要地大量增加,同时也会引入能模糊数据自然不变性的量化伪像。
因此,我们使用简单的点云专注3D几何不同的输入表示,并命名生成的深度网络为PointNets。点云是简单且统一的结构,能够避免网格的组合不规则性和复杂性,因此更容易学习。然而,PointNet仍然需要重视这样一个事实,点云只是一组点,因此对其成员的排列不变性需要在网络计算中进行某些对称化操作。而更进一步的刚性运动的不变性也需要考虑。
PointNet是一个统一的模型,直接将点云作为输入,同时输出整个输入的类标签或者输入的的每个点块/部分的标签。该模型的基础构架非常的简单,因为在初始阶段,每个点的处理方法完全相同且独立。在基础设置中,每个点仅用它的三个坐标( x , y , z x,y,z x,y,z)来表示。额外维度可以通过计算法线和其他局部或者全局特征来添加得到。
我们这个方法的关键在于使用单个对称函数,最大池。网络有效地学习一组优化函数/准则,选择点云中感兴趣的或者含有信息的点并编码其选择的原因。网络最终的全连接层把这些学习到的最优值聚合到如上所述的整个形状的全局描述符(形状分类)上或者用于预测每个点标签(形状分割)。
我们的输入格式很容易应用刚性或者仿射变换,因为每个点都是独立变换的。因此我们能够增加一个依赖数据的空间变换网络,该网络会在PointNet处理数据前对数据进行规范化,以便进一步改善结果。
我们提供了该方法的理论分析和实验评估。我们展示了我们的网路可以近似任何连续的集合函数。更有趣的是,事实证明我们的网络通过学习一组稀疏的关键点来概括一个输入点云,这些关键点根据可视化大致对应物体对象的骨架。理论分析对为什么PointNet对输入点的小的扰动以及通过插入(异常点)或删除(错误点)造成的损坏具有高度鲁棒性提供了解释。
在形状分类、部分分割、场景分割的许多基准数据集中,我们通过实验将PointNet和基于多视图和体积表示的最先进方法进行了对比。在统一的构架下,PointNet不仅在速度上更快,同时也表现出了和现有技术相当甚至更好的性能。
我们工作的主要贡献如下:
通过神经网络处理无序集合的问题是一个非常普遍和根本的问题,我们希望我们的想法也可以应用到其他领域。
点云特征 点云大部分的现有特征都是针对特定任务手工制作的。点的特征通常编码点的某些统计特性,并且被设计成对于某些变换是不变的,这些变换通常被划分为内在的或外在的。它们还可以归类为局部特征和全局特征。对于特定任务,找到最优的特征组合并非易事。
3D数据的深度学习 3D数据具有多种流行的表示形式,从而有各种学习方法。Volumetric CNNs: 是在体素形状上应用3D卷积神经网络的先驱。然而,由于数据的稀疏性和3D卷积的计算成本,体积表示受到其分辨率的限制。FPNN 和 Vote3D提出了处理稀疏性问题的特殊方法;然而,他们的操作仍然是在稀疏的体积上,处理非常大的点云对他们来说是一种挑战。Multiview CNNs: 试图将3D点云或形状渲染成2D图像,然后应用2D卷积神经网络对它们进行分类。通过精心设计的图像CNN,这一系列方法在形状分类和检索任务方面取得了主导作用。然而,将它们扩展到场景理解或其他3D任务(eg.点分类、形状完成)上时表现很普通。Spectral CNNs: 最近的一些工作在网格上使用了光谱CNN。然而,这些方法目前受限于流形网格(eg.有机物体),而且如何将它们扩展到非等距形状(eg.家具)上并不明显。Feature-based DNNs: 首先通过提取传统的形状特征将3D数据转换成向量,然后使用全连接网络对形状进行分类。我们认为它们受限于所提取特征的表示能力。
无序集的深度学习 从数据结构的角度来说,点云是无序的向量集合。当大部分深度学习工作集中在规则输入表示,如序列(eg.语音和语言处理)、图像和体积(eg.视频、3D数据)上时,很少有在点集上做深度学习工作的。
Oriol Vinyals等人最近的一项工作研究了这个问题,他们使用具有注意机制的读-处理-写网络来处理无序输入集,同时展示他们的网络具有对数字进行排序的能力。然而,由于他们的工作重点是泛型集合NLP应用,因此缺少了几何体在集合中的作用。
我们设计了一个深度学习框架,直接使用无序点集作为输入。点云表示为一组3D点{ P i ∣ i = 1 , . . . , n P_{i} | i =1,...,n Pi∣i=1,...,n},其中每个点的 P i P_{i} Pi是其坐标( x , y , z x,y,z x,y,z)的向量加上额外的特征通道,例如颜色、法线等,除非另有说明,我们只使用坐标( x , y , z x,y,z x,y,z)作为我们点的通道。
对于对象分类任务,输入点云要么直接从形状采样,要么从场景点云中预分割。我们提出的深度网络输出所有 k k k个候选类别的 k k k分数。对于语义分割,输入可以是用于部分区域分割的单个对象,或者是用于对象区域分割的3D场景的一个子体积。我们的模型将为 n n n个点和 m m m个语义子分类中的每一个输出 n × m n×m n×m分数。
我们网络的构架的灵感来自 R n \mathbb{R}^n Rn 中的点集的属性。
我们的输入是来自欧式空间的点的子集。它有三个主要属性:
我们整个网络的结构都在图2中展示出来了,其中分类网络和分割网络占据了结构中的很大一部分。请阅读图2流程图的标题。
我们的网络有三个关键模块:
我们将在下面的单独段落中讨论这些设计选择背后的原因。
无序输入的对称函数
为了使模型对输入排序不变,存在三种策略:1)将输入排序为规范顺序;2)将输入看作训练RNN的序列,但其通过各种排列来增加训练数据;3)用一个简单的对称函数来聚类每个点的信息。这里,对称函数将 n n n个向量作为输入,同时输出一个对输入顺序不变的新向量。例如, + + +和 ∗ * ∗操作符是对称二元函数。
尽管排序听起来像是一个简单的解决方法,但谈及到一般意义上的点的扰动时,在高维空间中实际上并不存在稳定的排序。这可以很容易地通过矛盾来显示。如果这样一种排序策略存在,那么它定义了高维空间和 1 d 1d 1d实线之间的双向映射。不难看出,谈及点扰动时要求排序的稳定等同在维度降低时保持映射在空间上的接近度,这在一般情况下是无法实现的任务。因此,排序并不能完全解决排序问题,而且因为排序问题的存在,网络很难学习到一致的从输入到输出的映射。如实验(图5)中所示,我们发现直接在排序点集上应用多层感知机变现不好,但稍微比直接处理无序输入要好。
使用RNN的想法是将点集作为顺序信号,并希望用随机置换序列训练RNN,这样RNN将会变得和输入顺序无关。然而,在“OrderMatters”中,作者已经证明顺序确实很重要而且无法完全被忽略。尽管RNN对于具有小长度(数十个)的序列的输入排序已经具有相对良好的鲁棒性,但是很难扩展到成千上万的输入元素上,而这是点集的很常见的规模。根据实验,我们也证明了基于RNN的模型表现的并不如我们所提出来的方法(图5)。
我们的想法是通过对集合中转换元素应用对称函数来近似在点集上定义的一般函数:
(1) f ( { x 1 , . . . , x n } ) ≈ g ( h ( x 1 ) , . . . , h ( x n ) ) ,
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。