PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation
作者:
注:
两个原因对我而言阅读难度大:(1)CVPR顶刊,水平高--我菜,(2)斯坦福的作者,英语母语 。翻译的很认真,大家花些时间可以看看啦。欢迎留言以及不定期更新
pointnet.pytorch代码运行效果见另一篇:深度学习(六):pointnet.pytorch环境配置与学习_biter0088的博客-CSDN博客_shapenetcore
目录:
PointNet:用于 3D 分类和分割的点集的深度学习
Abstract
1 Introduction
2 Related Work
3 Problem Statement
4 Deep Learning on Point Sets
4.1 Properties of Point Sets in Rn(Rn中点集特性)
4.2 PointNet Architecture
4.3 Theorical Analysis
5 Experiment
5.1 Applications
5.2. Architecture Design Analysis
5.3. Visualizing PointNet
5.4. Time and Space Complexity Analysis
6. Conclusion
References
参考:
点云是一种重要的几何数据结构。由于其不规则的格式,大多数研究人员将此类数据转换为规则的 3D 体素网格或图像集合。但是,这会使数据变得不必要地庞大(voluminous)并导致问题。在本文中,我们设计了一种直接消耗点云的新型神经网络,它很好地尊重了输入中点的排列不变性(the permutation invariance)。我们的网络名为 PointNet,为从对象分类(obejct classification)、部分分割(part segmentation)到场景语义解析(scene semantic parsing)的应用提供了统一的架构。虽然简单,但 PointNet 非常高效且有效。从经验上看,它表现出与现有技术相当甚至更好的强大性能。从理论上讲,我们提供分析以了解网络学到了什么以及为什么网络在输入扰动(input perturbation)和损坏(corruption)方面是稳健的。
图 1. PointNet 的应用。 我们提出了一种新颖的深度网络架构,它使用原始点云(点集)而无需体素化或渲染。 它是一个统一的架构,可以同时学习全局和局部点特征,为许多 3D 识别任务提供简单、高效和有效的方法。
在本文中,我们探索了能够推理 3D 几何数据(例如点云或网格)的深度学习架构。典型的卷积架构需要高度规则的输入数据格式,如图像网格(mesh)或 3D 体素(3D voxels),以便执行权重共享(weight sharing)和其他内核优化(kernel optimizations)。由于点云或网格不是常规格式,因此大多数研究人员通常将此类数据转换为常规 3D 体素网格或图像集合(例如视图),然后再将它们输入深度网络架构。然而,这种数据表示转换使生成的数据变得不必要地庞大,同时还引入了可能掩盖数据自然不变性(natural invariances)的量化失真(quantization artifacts)。
出于这个原因,我们专注于使用简单的点云,为3D几何数据提供不同输入表示--并将我们生成的深度网络命名为 PointNets。点云是简单而统一(unfied)的结构,避免了组合的不规则性和网格的复杂性,因此更容易学习。然而,PointNet 仍然必须尊重这样一个事实,即点云只是一组点,因此对其成员的排列不变需要在网络计算中进行某些对称化(symmetrizations)。还需要考虑刚性运动(rigid motions)的进一步不变性。
我们的 PointNet 是一个统一的架构(unified architecture),它直接将点云作为输入,并为整个输入输出类别标签(class labels)或为输入的每个点输出每个点的段/部分标签(per point segment/part labels)。我们网络的基本架构非常简单,因为在初始阶段,每个点都被相同且独立地处理。在基本设置中,每个点仅由其三个坐标 (x, y, z) 表示。可以通过计算法线(normals)和其他局部或全局特征来添加额外的维度(dimensions)。
我们方法的关键是使用单一的对称函数(symmetric function),即最大池化max pooling。网络有效地学习了一组优化函数/标准(optimization functions/criteria),这些优化函数/标准可以选择点云中有趣或信息丰富的点,并对它们的选择原因进行编码。网络的最终全连接层将这些学习到的最优值(these learnt optimal values)聚合(aggregate)到上面提到的(形状分类,shape classification)整个形状的全局描述符(global descriptor)中,或用于预测每个点的标签(形状分割,shape sgementation)。
我们的输入格式很容易应用刚性或仿射变换(rigid or affine transformations),因为每个点都是独立变换的。因此,我们可以添加一个依赖于数据(data-dependent)的空间变换器网络(spatial transformer network),使用该网络尝试在 PointNet 处理数据之前对数据进行规范化(canonicalize),从而进一步提升效果。
我们对我们的方法提供理论分析(theoretical analysis)和实验评估(experimantal evaluation)。我们证明我们的网络可以逼近任何连续的集合函数(set function)。更有趣的是,事实证明我们的网络学会通过一组稀疏的关键点来概括输入点云,根据可视化可以看出这些关键点大致对应于物体的骨架。理论分析让我们理解为什么PointNet对输入点的小扰动以及通过点插入(异常值,outliers)或删除(丢失数据)的损坏具有高度健壮性。
在从形状分类、部分分割到场景分割的许多基准数据集上,我们通过实验将我们的 PointNet 与基于多视图(multi-view)和体积(volumetric)表示的最先进方法进行比较。在统一架构下,我们的 PointNet 不仅速度快得多,而且表现出强大的性能,与最先进的水平相当甚至更好。
我们工作的主要贡献如下:
• 我们设计了一种新颖的深度网络架构,适用于在 3D 中处理无序点集;
• 我们展示了如何训练这样的网络来执行 3D 形状分类、形状部分分割和场景语义解析任务;
• 我们对我们方法的稳定性和效率进行了全面的实证和理论分析;
• 我们描述了网络中由选定神经元计算的3D 特征,并对其性能进行了直观的解释。
神经网络处理无序集的问题是一个非常普遍和基本的问题——我们希望我们的想法也可以转移到其他领域。
Point Cloud Features(点云特征) 大多数现有的点云特征都是针对特定任务手工制作的。点特征通常对点的某些统计属性进行编码,并被设计为对某些转换(certain transformations)保持不变,这些转换通常分为内在的 [2, 21, 3] 或外在的 [18, 17, 13, 10, 5]。它们也可以分为局部特征和全局特征。对于特定任务,找到最佳特征组合并非易事。
Deep Learning on 3D Data(3D数据的深度学习) 3D 数据具有多种流行的表示形式,导致了各种学习方法。体积CNN(Volumetric CNNs):[25、15、16] 是将 3D 卷积神经网络应用于体素化形状(voxelized shapes)的先驱。然而,由于数据稀疏性(data sparsity)和3D卷积的计算成本,体积表示(volumetric representation)受到其分辨率的限制。FPNN [12] 和 Vote3D [23] 提出了处理稀疏问题的特殊方法;然而,他们的操作仍然在稀疏的体积上,处理非常大的点云对他们来说是一个挑战。多视图CNNs(Multiview CNNs):[20, 16] 尝试将3D点云或形状渲染为2D图像,然后应用2D卷积网络对它们进行分类。通过精心设计的图像 CNNs,这一系列方法在形状分类(shape classification)和检索任务(retrieval tasks)中取得了主导性能[19]。但是,将它们扩展到场景理解(scene understanding)或其他3D任务并非易事,例如点分类和形状补全(point classification,shape completion)。光谱CNNs(Spectral CNNs):一些最新作品 [4, 14] 在网格上使用光谱 CNN。然而,这些方法目前受限于诸如有机物体之类的多种网格(manifold meshs),而且并不清楚如何将它们扩展到诸如家具之类的非等距形状(non-isometric shapes)。基于特征的DNNs(Feature-based DNNs):[6, 8] 首先将 3D 数据转换为向量,通过提取传统的形状特征,然后使用全连接网络对形状进行分类。我们认为它们受到提取特征的表示能力(representation power)的限制。
Deep Learning on Unorderd Sets(无序集的深度学习) 从数据结构的角度来看,点云是一组无序的向量。但是深度学习中的大多数工作都集中在常规输入表示上,如序列(sequences)(在语音和语言处理中)、图像和体素(volumes)(视频或 3D 数据),在点集的深度学习方面并没有做太多工作。
Oriol Vinyals 等人最近的一项工作 [22] 研究了这个问题。他们使用带有注意力机制(attention mechanism)的读-处理-写网络(read-process-write network)来处理无序的输入集,并表明他们的网络具有对数字进行排序的能力。然而,由于他们的工作侧重于泛型集合(generic sets)和 NLP 应用,缺乏在几何中的作用。
我们设计了一个直接使用无序点集作为输入的深度学习框架。一个点云表示为一组3D点 {Pi | i = 1, ..., n},其中每个点 Pi是其 (x, y, z) 坐标加上额外特征通道(如颜色、法线等)的向量。为简单起见,除非另有说明,否则我们仅使用 (x, y, z) 坐标作为我们点的通道。
对于对象分类任务,输入点云要么直接从形状中采样,要么从场景点云中预分割(pre-segmented)。我们提出的深度网络为所有 k 个候选类别(candidate classes)输出 k 个分数(scores)。对于语义分割,输入可以是用于部分区域分割(part region segmentation)的单个对象,也可以是用于对象区域分割(object region segmentation)的3D场景的子体积(sub-volume)。我们的模型将为n个点和m个语义子类别(segmentic subcategories)中输出 n × m 个分数。
我们的输入是来自欧几里得空间(Euclidean space)的点的子集。它具有三个主要属性:
• 无序(Unordered)。 与图像中的像素阵列或体积网格中的体素阵列不同,点云是一组没有特定顺序的点。换句话说,一个处理N个3D点集的网络需要对N!个输入集数据馈送顺序的排列(permutations)保持不变。
• 点之间的相互作用(Interaction among points)。 这些点来自具有距离度量(distance metric)的空间。这意味着点不是孤立的,并且相邻点形成一个有意义的子集。因此,模型需要能够从附近的点捕捉局部结构,以及局部结构之间的组合相互作用。
• 变换下的不变性(Invariance under transformations)。作为一个几何对象,点集的学习表示应该对某些变换是不变的。例如,旋转和平移点都不应该修改全局点云类别,也不应该修改点的分割。
我们的完整网络架构如图2所示,其中分类网络和分割网络共享大部分结构。请阅读图2的标题以了解流程(pipeline)。
图2 PointNet Architecture.分类网络将n个点作为输入,应用输入和特征变换,然后通过最大池化聚合点特征。输出是 k 个类别的分类分数。分割网络是分类网络的扩展。它连接全局和局部特征并输出每点分数。“mlp”代表多层感知器,括号中的数字是层大小。Batchnorm 用于所有带有 ReLU 的层。Dropout 层用于分类网络中的最后一个 mlp。
我们的网络具有三个关键模块:最大池化层作为一个对称函数来聚合来自所有点的信息、一个局部和全局信息组合结构、以及两个对齐输入点和点特征的联合对齐网络(joint alignment networks)。
我们将在下面的单独段落中讨论这些设计选择背后的原因。
Symmtry Function Unordered Input(无序输入的对称函数) 为了使模型对输入排列保持不变,存在三种策略:1)将输入排序为规范顺序(canonical order);2)将输入视为一个序列来训练RNN,并且通过各种排列来扩充训练数据; 3)使用一个简单的对称函数来聚合来自每个点的信息。这里,一个对称函数将n个向量作为输入,并输出一个对输入顺序不变的新向量。例如,+ 和 * 运算符是对称二元函数。
虽然排序(sorting)听起来像是一个简单的解决方案,但实际上在高维空间中一般不存在关于(w.r.t.翻译为“关于”)点扰动稳定的排序。这很容易用矛盾来证明。如果存在这样的排序策略,它将定义一个高维空间和一维实线之间的双射映射(bijection map),这是矛盾的。不难看出,要求一个关于(w.r.t)点扰动稳定的排序相当于要求该地图在维度减少时保持空间接近性(spatial proximity),这是一般情况下无法完成的任务。因此,排序(sorting)并不能完全解决排序问题(ordering issue),而且随着排序问题的持续存在,网络也很难学习从输入到输出的一致映射。如实验所示(图 5),我们发现直接在已排序的点集上应用 MLP 表现不佳,尽管比直接处理未排序的输入要好一些。
使用 RNN 的想法将点集视为顺序信号,并希望通过使用随机排列的序列训练 RNN,来使RNN 将变得对输入顺序保持不变。然而,在“OrderMatters”[22] 中,作者已经表明,顺序确实很重要,不能完全省略(totally omitted)。虽然 RNN 对小长度(几十个)序列的输入排序具有相对较好的鲁棒性,但很难扩展到到点集常见大小的数千个输入元素。根据经验,我们还表明基于 RNN 的模型的性能不如我们提出的方法(图 5)。
我们的想法是通过对集合中的变换元素(transformed elements)应用对称函数来近似定义在点集上的一般函数:
根据经验,我们的基本模块非常简单:我们通过多层感知器网络(multi-layer perception network)来近似h,通过单个变量函数和max池化函数的组合来近似g。通过实验发现这很有效。通过一个h的集合,我们可以学习到多个f来捕捉集合的不同属性。
虽然我们的关键模块看起来很简单,但它具有有趣的属性(参见第5.3节)并且可以在一些不同的应用程序中实现强大的性能(参见第5.1节)。由于我们模块的简单性,我们还能够提供4.3节中的理论分析。
Local and Global Information Aggregation(本地和全球信息聚合) 上述部分的输出形成一个向量 [f1 , . . . , fK],这是输入集的全局签名(global signature)。我们可以轻松地在形状全局特征上训练 SVM 或多层感知器分类器进行分类。然而,点分割(point segmentation)需要结合局部和全局知识。我们可以通过一种简单而高效的方式来实现这一点。
我们的解决方案可以在图2(分割网络)中看到。在计算出全局点云特征向量后,我们通过将全局特征与每个点特征连接起来将其反馈给每个点特征。然后我们基于组合的点特征提取新的每点特征——这时每点特征包含局部和全局信息。
通过这种修改,我们的网络能够预测依赖于局部几何(local geometry)和全局语义(global semmantics)的点数量。例如,我们可以准确地预测每个点的法线(在补充图中),验证网络能够从点的局部邻域总结信息。在实验环节,我们还展示了我们的模型可以在形状部分分割(shape part segmentation)和场景分割方面实现最先进的性能。
Joint Alignmentr Network(联合校准网络) 如果点云经过某些几何变换,例如刚性变换(rigid transformation),则点云的语义标记必须是不变的。因此,我们期望我们的点集学习到的表示对这些转换是不变的。
一个自然的解决方案是在特征提取之前将所有输入集与规范空间(canonical space)对齐。Jaderberg等人[9] 介绍了空间变换器(spatial transformer)的思想,通过在 GPU 上实现的专门定制的层通过采样和插值来对齐 2D 图像。
与 [9] 相比,我们的点云输入形式允许我们以更简单的方式实现这一目标。我们不需要发明任何新层,也没有像图像案例中那样引入别名(alias)。我们通过迷你网络(图 2 中的 T-net)预测仿射变换矩阵(affine transformation),并将该变换直接应用于输入点的坐标。迷你网络本身类似于大网络,由点独立特征提取、最大池化和全连接层等基本模块组成。有关 T-net 的更多详细信息在补充中。
这个想法也可以进一步扩展到特征空间的对齐。我们可以在点特征上插入另一个对齐网络,并预测一个特征变换矩阵(feature transformation matrix)来对齐来自不同输入点云的特征。 但是,特征空间中的变换矩阵比空间变换矩阵的维数要高得多,大大增加了优化的难度。 因此,我们在我们的 softmax 训练损失中添加了一个正则化项(regularization term)。 我们将特征变换矩阵约束为接近正交矩阵(orthogonal matrix):
其中 A 是迷你网络预测的特征对齐矩阵。 正交变换不会丢失输入中的信息,因此是理想的。 我们发现,通过添加正则化项,优化变得更加稳定,我们的模型实现了更好的性能。
Universal approximation(普遍近似) 我们首先展示了我们的神经网络对连续集合函数的普遍逼近能力。直观来说,通过集合函数的连续性,对输入点集的小扰动不应该大大改变函数值,例如分类或分割分数。
这个定理的证明可以在我们的补充材料中找到。 关键思想是,在最坏的情况下,网络可以通过将空间划分为相等大小的体素来学习将点云转换为体积表示。然而,在实践中,网络学习了一种更智能的策略来探测空间,正如我们将在点函数可视化中看到的那样。
Bottleneck dimension and stability(瓶颈尺寸和稳定性) 从理论上和实验上,我们发现我们网络的表达能力受到最大池化层的维度维度(即(1)中的 K)的强烈影响。 在这里,我们提供了一个分析,该分析还揭示了与我们模型的稳定性相关的属性。
结合 h 的连续性,这解释了我们的模型对点扰动、破坏和额外噪声点的鲁棒性。 鲁棒性类似于机器学习模型中的稀疏性原理。 直观地说,我们的网络通过一组稀疏的关键点来学习总结一个形状。 在实验部分,我们看到关键点形成了物体的骨架。
实验分为四个部分。 首先,我们展示了 PointNets 可以应用于多个 3D 识别任务(第 5.1 节)。 其次,我们提供了详细的实验来验证我们的网络设计(第 5.2 节)。 最后,我们可视化网络学习的内容(第 5.3 节)并分析时间和空间复杂度(第 5.4 节)。
在本节中,我们将展示如何训练我们的网络以执行 3D 物体分类(3D object classification)、物体部分分割(object part segmentation)和语义场景分割(semantic scene segmentation)1。尽管我们正在研究一种全新的数据表示(点集),我们也能够在多个任务的基准测试中实现可比甚至更好的性能。
(注1:补充材料中包含更多应用示例,例如基于对应和点云的 CAD 模型检索。)
3D Object Classification(3D 目标分类) 我们的网络学习用于对象分类的全局点云特征。我们在 ModelNet40 [25] 形状分类基准上评估我们的模型。ModelNet40有来自 40 个人造物体类别的 12,311 个 CAD 模型,其中用于训练的有9,843个,用于测试的有2,468个。但是以前的方法专注于体积和多视图图像表示,我们是第一个直接处理原始点云的方法。
我们根据面面积(face area)对网格面上的 1024 个点进行均匀采样,并将它们归一化为一个单位球体。 在训练期间,我们通过沿上轴随机旋转对象并通过具有零均值和 0.02 标准差的高斯噪声来抖动每个点的位置,从而动态(on-the-fly,动态、即时)地增加点云。
在表1中,我们将我们的模型与前人的工作以及我们自己使用MLP的baseline在从点云中提取的传统特征(点密度、D2、形状轮廓等)上进行了比较。我们的模型在基于 3D 输入(体积和点云)的方法中实现了最先进的性能。只有完全连接的层和最大池化,我们的网络在推理速度上获得了强大的领先优势,并且也可以在 CPU 中轻松并行化。我们的方法和基于多视图的方法(MVCNN [20])之间仍然存在小的差距,我们认为这是由于丢失了渲染图像(rendered images)可以捕获的精细几何细节(geometry details)。
表1 在ModelNet40上的分类结果。在基于3D输入的深度网络中,我们的网络性能最好
(注:part我理解可翻译为部分、零件、部件,如Part Segmentation我理解为部分分割,Object Part Segmentation我理解为物体零件分割)
3D Object Part Segmentation(3D物体零件分割) 部分分割(part segmentation)是一项具有挑战性的细粒度(fine-grained) 3D 识别任务。给定 3D 扫描或网格模型,任务是为每个点或面分配部分类别标签(part category label)(例如椅子腿、杯柄)。
我们评估了来自[26]的 ShapeNet 零件数据集,其中包含来自16个类别共16,881个形状,总共注释了50种零件。大多数物体类别都标有两到五个零件标签。 真值注释标记在形状上的采样点上。
我们将部分分割制定为每点分类问题。评估指标是点的平均交并比(mIoU)。对于类别 C 的每个形状 S,计算形状的 mIoU:对于类别 C 中的每个零件(形状)类型,计算 groundtruth 和预测之间的 IoU。 如果 groundtruth 和预测点的并集(union)为空,则将零件IoU(part IoU) 计为 1。然后我们对类别 C 中的所有零件(形状)类型的 IoU 进行平均,以获得该形状的 mIoU。 为了计算类别的 mIoU,我们取该类别中所有形状的 mIoU 的平均值。
在本节中,我们将我们的分割版本 PointNet(图2中分类网络的修改版本,分割网络)与两种利用了逐点(point-wise)几何特征和形状之间对应关系的传统方法[24]和[26],以及我们自己的3D CNN baseline进行比较。有关 3D CNN 的详细修改和网络架构,请参阅补充。
在表 2 中,我们报告了每个类别和平均 IoU (%) 分数。我们观察到 2.3% 的平均 IoU 改进,并且我们的网络在大多数类别中都超过了baseline方法。
表2 在ShapeNet零件数据集上的分割结果.度量单位是平均交并比(%)。我们比较了两种传统的方法[24]和[26],以及我们提出的一种3D全卷积网络基线。我们的PointNet方法在mIoU达到了最先进的水平。
我们还对模拟的 Kinect 扫描(Kinetic scans)进行了实验,来测试这些方法的稳健性。对于 ShapeNet 零件数据集中的每个 CAD 模型,我们使用 Blensor Kinect Simulator [7] 从六个随机视角生成不完整的点云。我们使用相同的网络架构和训练设置在完整的形状(complete shapes)和部分扫描(partial scans)上训练我们的 PointNet。结果表明,我们只损失了 5.3% 的平均 IoU。在图 3 中,我们给出了完整数据和部分数据(complete and partial data)的定性结果。可以看出,虽然部分数据(partial data)相当具有挑战性,但我们的预测是合理的。
图3 部分/零件分割的定性结果.我们对所有 16 个对象类别的 CAD 零件分割结果进行可视化。 我们展示了部分模拟 Kinect 扫描(左块)和完整 ShapeNet CAD 模型(右块)的结果。
Semantic Segmentation in Scenes(场景中的语义分割) 我们的部分分割网络可以很容易地扩展到语义场景分割,其中点标签成为语义物体(semantic object classes)类别而不是物体零件标签(object part labels)。
我们在斯坦福 3D 语义解析数据集(semantic parsing dataset)[1]上进行实验。该数据集包含来自6个区域(包括 271 个房间)的Matterport 扫描仪的3D扫描。扫描中的每个点都用来自13个类别(椅子、桌子、地板、墙壁等加上杂乱)的语义标签之一进行注释。
为了准备训练数据,我们首先按房间分割点,然后将房间采样成面积为 1m x 1m 的块。我们训练我们的 PointNet 分割版本来预测每个块中的每个点类。每个点由 XYZ、RGB 和房间的归一化位置(normalized locations,从 0 到 1)的 9 维向量表示。在训练时,我们在每个块中随机即时抽取 4096 个点。在测试时,我们对所有点进行测试。我们遵循与[1]相同的协议,去使用 k-fold 策略进行训练和测试。
我们将我们的方法与使用手工点特征(handcrafted point features)的baseline进行比较。baseline提取相同的 9 维局部特征和三个附加特征:局部点密度、局部曲率和法线。我们使用标准 MLP 作为分类器。结果如表 3 所示,我们的 PointNet 方法明显优于baseline方法。在图 4 中,我们展示了定性的分割结果。我们的网络能够输出平滑的预测,并且对缺失点和遮挡(occlusions)具有鲁棒性。
基于我们网络的语义分割输出,我们进一步构建了一个使用连接组件进行目标提议(object proposal,详见本翻译的“参考”)的 3D 目标检测(object detection)系统。我们在表 4 中与之前最先进的方法进行了比较。之前的方法是基于滑动窗口(a sliding shape method)(使用 CRF 后处理),并使用支持向量机在体素网格中的局部几何特征(local geometric features)和全局空间上下文特征(global room context features)上进行训练的方法。我们的方法在报告的家具类别上大大优于它。
表3 场景语义分割结果.指标是 13 个类别(结构和家具元素加上杂乱)的平均 IoU 和基于点计算的分类精度
表4 场景中3D目标检测结果。指标是在3D体积中计算阈值为IoU 0.5的平均精度。
图 4. 语义分割的定性结果。 第一行是带颜色的输入点云。 底行是在与输入相同的相机视角中显示的输出语义分割结果(在点上)。
在本节中,我们通过控制实验验证我们的设计选择。 我们还展示了我们网络的超参数(hyperparameters)的影响。
Comparison with Alternative Order-invariant Methods(与其他顺序不变方法的比较)如第 4.2 节所述,至少有三个选项可用于处理无序数据集的输入。 我们使用 ModelNet40 形状分类问题作为测试平台(test bed)来比较这些选项,以下两个对照实验也将使用此任务。
我们比较的baseline(如图 5 所示)包括将未排序和排序点作为 n×3 数组的多层感知器、将输入点视为序列的 RNN 模型以及基于对称函数的模型。我们实验的对称操作包括最大池化、平均池化和基于注意力的加权和。注意方法类似于 [22] 中的方法,其中从每个点特征预测一个标量分数,然后通过计算 softmax 值对点之间分数进行归一化(the score is normalized across points by computing a softmax)。然后根据归一化分数和点特征计算加权和。如图 5 所示,max-pooling 操作以较大的获胜幅度实现了最佳性能,这验证了我们的选择。
图 5. 实现顺序不变性的三种方法。 应用于点的多层感知器 (MLP) 由 5 个隐藏层组成,神经元大小为 64、64、64、128、1024,所有点共享一个 MLP 副本。 靠近输出的 MLP 由大小为 512,256 的两层组成。
Effectiveness of Input and Feature Transformations(输入和特征转换的有效性)在表 5 中,我们展示了输入和特征转换(用于对齐)的积极影响。有趣的是,最基本的架构已经取得了相当合理的结果。使用输入转换可以提高 0.8% 的性能。正则化损失(regularization loss)是高维变换工作所必需的。通过结合变换和正则化项(regularization term),我们实现了最佳性能。
表 5. 输入特征变换的影响。 指标是在ModelNet40 测试集上的整体分类准确率。
Robustness Test(稳健性测试) 我们展示了我们的 PointNet,虽然简单但是有效,可以对对各种输入损坏具有鲁棒性。我们使用与图 5 的最大池化网络相同的架构。输入点被归一化为一个单位球体(a unit sphere)。结果如图 6 所示。
至于缺失点,当缺失 50% 的点时,准确率在最远和随机的输入采样分别仅下降 2.4% 和 3.8% 。我们的网络对异常点也很健壮,如果它在训练期间看到了异常点。我们评估了两个模型:一个在具有 (x, y, z) 坐标的点上训练; 另一个在 (x, y, z) 加上点密度。 即使 20% 的点是异常值,网络的准确率也超过 80%。图 6 右侧显示了网络对点扰动的鲁棒性。
图 6.PointNet 稳健性测试。 指标是 ModelNet40 测试集上的整体分类准确率。 左:删除点,最远意味着以最远采样对原始 1024 个点进行采样。 中:插入,异常值均匀地分散在单位球面上。 右:扰动,分别向每个点添加高斯噪声。
图 7. 临界点和上限形状。 虽然临界点共同确定给定形状的全局形状特征,但任何落在临界点集和上限形状之间的点云都会给出完全相同的特征。 我们对所有图形进行颜色编码以显示深度信息。
表 6 总结了我们的分类 PointNet 的空间(网络中的参数数量)和时间(浮点运算/样本)复杂度。我们还将 PointNet 与前人工作中一组具有代表性的基于体素和多视图的架构进行了比较。
虽然 MVCNN [20] 和 Subvolume (3D CNN) [16] 实现了高性能,但 PointNet 在计算成本方面的效率更高(以 FLOPs/样本衡量:效率分别提高了 141 倍和 8 倍)。此外,就网络中的#param 而言,PointNet 比 MVCNN 更节省空间(参数少 17 倍)。此外,PointNet 更具可扩展性(scalable)——它的空间和时间复杂度为 O(N)——与输入点的数量成线性关系。然而,由于卷积在计算时间中占主导地位,多视图方法的时间复杂度在图像分辨率上成正比增长,而基于体素卷积的方法随着体积大小成三次方(cubically)增长。
经验表明,PointNet 在 TensorFlow 上使用 1080X GPU 每秒能够处理超过 100 万个点用于点云分类(大约 1K 个目标/秒)或语义分割(大约 2 个房间/秒),显示出巨大的实时应用潜力 .
表 6. 用于 3D 数据分类的深度架构的时间和空间复杂度。 PointNet(vanilla)是没有输入和特征转换的分类PointNet。 FLOP 代表浮点运算。 “M”代表百万。 Subvolume 和 MVCNN 对来自多个旋转或视图的输入数据使用池化,没有它们的话的性能要差得多。
在这项工作中,我们提出了一种直接消耗点云的新型深度神经网络 PointNet。我们的网络为许多 3D 识别任务提供了统一的方法,包括物体分类、部分分割和语义分割,同时在标准基准上获得与现有技术相当或更好的结果。我们还提供理论分析和可视化来理解我们的网络。
致谢。 作者非常感谢三星 GRO 赠款、ONR MURI N00014-13-1-0341 赠款、NSF 赠款 IIS-1528025、Google 重点研究奖、Adobe 公司的礼物和 NVIDIA 的硬件捐赠的支持。
pointnet自己的网站:PointNet
pointnet代码:https://github.com/charlesq34/pointnet
普林斯顿modelnet官网:http://modelnet.cs.princeton.edu/
Hausdorff distance(豪斯多夫距离):是描述两组点集之间相似程度的一种量度,它是两个点集之间距离的一种定义形式,参考链接:Metric评价指标-图像分割之豪斯多夫距离(Hausdorff distance ) - 知乎
深度学习中的baseline可理解为对照组、基准线,参考链接:深度学习中的baseline怎么理解? - 知乎
Object Propossal(OP)的基本思路是在图像上找到一些潜在的目标,而不是穷举!然后将这些潜在的目标输入目标识别模型进行分类,参考链接:Object Proposal(OP)综述_guoyunfei20的博客-CSDN博客_object proposal
quantization artifacts翻译参考:https://zhuanlan.zhihu.com/p/73572874,进网页搜索关键词
@meng