PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation . Charles R. Qi* Hao Su* Kaichun Mo Leonidas J. Guibas.斯坦福大学.CVPR 2017

目录

摘要

1. 引言

2. 相关工作

2.1. Point Cloud Features:

2.2. Deep Learning on 3D Data:

2.3. Deep Learning on Unordered Sets:

3. 问题描述

4. PointNet

4.1. 在Rn上点集的属性

4.2. PointNet架构

4.2.1. Symmetry Function for Unordered Input

4.2.2. Local and Global Information Aggregation

4.2.3. Joint Alignment Network

4.3. 理论分析

4.3.1. Universal approximation

4.3.2. Bottleneck dimension and stability

5. 实验

5.1. 应用

5.1.1. 3D Object Classification

5.1.2. 3D Object Part Segmentation

5.1.3. Semantic Segmentation in Scenes

5.1.4. 3D目标检测

5.1.5. 在点云中检索模型

5.1.6. Shape Correspondence

5.2. 架构设计分析

5.2.1. Comparison with Alternative Order-invariant Methods

5.2.2. Effectiveness of Input and Feature Transformations

5.2.3. Robustness Test

5.2.4. Effects of Bottleneck Dimension and Number of Input Points

5.2.5. MNIST Digit Classification

5.2.6. Normal Estimation

5.2.7. Segmentation Robustness

5.2.8. Network Generalizability to Unseen Shape Categories

5.3. 可视化PointNet

5.3.1. Classification Visualization

5.3.2. Segmentation Visualization

5.3.3. Scene Semantic Parsing Visualization

5.3.4. Point Function Visualization

5.4. Time and Space Complexity Analysis

5.5. PointNet与VoxNet的比较

6. 总结

摘要

点云是一种重要的几何数据结构。由于点云不规则的特点,大多数研究人员将点云数据转换成规则的3D体素网格或图像集合。然而使得数据量变得很大,并导致一些问题。在本文设计了一种直接输入点云的新型神经网络,它很好地考虑了输入点云的排列不变性。称为PointNet,为目标分类(object classification)、零件分割(part segmentation)到场景语义解析(scene semantic parsing)这些应用提供了统一的架构。尽管架构很简单,但PointNet非常高效、有效。PointNet达到了SOTA。本文提供理论上的分析,以理解网络已经学习到什么,以及为什么网络对输入扰动和破坏是鲁棒的。

1. 引言

本文探索了能够对35格式,如图像或3D体素格式,以便执行权重共享和卷积核优化。由于点云或mesh不是一种规则的格式,大多数研究人员通常会将这些数据转换成规则的3D体素网格或图像集合(如视图),然后才能输入到深度学习架构。但是这种数据表示的转换会使得数据变得(不必要的)臃肿,还会引入quantization artifacts(这可能会掩盖数据的自然不变性)。各种3D数据表示:

本文将重点放在3D几何的不同输入表示——点云上,并将设计的网络命名为“PointNets”。点云是简单而统一的结构,它避免mesh的组合不规则性和复杂性,因此更容易学习。但是点云只是点的集合,因此网络需要对点云元素的排列是不变的,这需要在网络计算中进行某些对称。另外,点云刚体运动的不变性也需要考虑。

PointNet是一个统一的架构,它直接将点云作为输入,输出要么是整个类别标签,要么是每个输入点的分割/零件标签。网络的基本架构非常简单,在初始阶段,每个点都被完全独立地处理。在最简单的情况下,点云中的每个点仅由三个坐标(x,y,z)表示,而其它额外的维度可以通过计算法线和其他局部或全局特征来添加。

PointNet的关键是使用一个对称函数——最大池化。该网络有效地学习了一组优化函数/标准,这些函数/标准选择点云中有趣的或有信息的点,并进行编码。最终全连接层将这些学习到的最优值聚合到上面提到的整个形状(将用于分类的点云称为shape)的全局描述符(形状分类)或用于预测每个点标签(形状分割)。

输入数据很容易应用欧式变换或仿射转换,每个点都独立转换。因此可以添加一个依赖数据的空间变换器网络,在PointNet处理数据之前对数据进行规范化(canonicalize),从而进一步改善结果。

本文提供了理论分析和实验评估。证明了网络可以近似任意连续的集合函数。网络通过一组稀疏的关键点来学习总结一个输入点云,根据可视化大致对应目标的骨架。理论分析提供了一个理解为什么PointNet对输入点云的小扰动以及通过点插入(外点)或点删除(缺失数据)的破坏具有高度鲁棒性。

在形状分类(shape classification)、零件分割(part segmentation)到场景分割(scene segmentation)的基准数据集上,将PointNet与基于多视图(multi-view)和体积表示(volumetric representations)的最先进方法进行了比较。PointNet不仅速度快得多,而且表现出与现有技术相当甚至更好的强大性能。

主要工作贡献如下:

ü 设计了一种新的深度网络体系结构,适合于在三维空间中直接输入无序点集;

ü 展示了如何训练这样的网络来执行3D形状分类、形状零件分割和场景语义分析任务;

ü 对该方法的稳定性和有效性进行了深入的实证和理论分析;

ü 举例说明由网络中选定的神经元计算出的3D特征,并对其性能做出直观的解释。

通过神经网络处理无序集合的问题是一个非常普遍和基本的问题——希望PointNet的思想也能转移到其他领域。

2. 相关工作

2.1. Point Cloud Features

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

2.2. Deep Learning on 3D Data:

3D数据有多种流行的表示方式,这出现了各种学习方法。

Volumetric CNNs是将3D卷积神经网络应用于体素化形状的先驱。然而,由于数据的稀疏性和三维卷积的计算成本,体积表示( volumetric representation)受到其分辨率的限制。FPNN[13]和Vote3D[26]提出了处理稀疏性问题的特殊方法;然而,他们的操作仍然是在稀疏的体积上,处理非常大的点云是具有挑战性的。

Multiview CNNs: 试图将3D点云或形状渲染到2D图像中,然后应用2D卷积神经网络对其进行分类。通过精心设计的图像CNN,这一系列方法在形状分类和检索任务上取得了显著的性能。然而难以扩展到场景理解或其他3D任务,如point classfication和shape completion是很重要的。

Spectral CNNs:一些最新的研究[4,16]在mesh上使用了Spectral CNN。然而,这些方法目前限制在流形网格(manifold meshes)上,如有机对象,并不是很明显如何扩展到非等长形状,如家具。

Feature-based DNNs:首先通过提取传统的形状特征将三维数据转化为向量,然后利用全连接网络对形状进行分类。它们受到所提取特征的表示能力的限制。

2.3. Deep Learning on Unordered Sets

从数据结构的角度来看,点云是向量的无序集合。深度学习的大部分工作都集中在规则输入表示上,如序列(在语音和语言处理中)、图像和volumes(视频或3D数据),在点集深度学习方面还没有做多少工作。Oriol Vinyals等人[25]最近的一项工作对这个问题进行了研究。它们使用带有注意机制的读-处理-写网络来使用无序输入集,并显示它们的网络具有对数字排序的能力。然而,由于他们的工作集中在通用集合和NLP应用上,在集合中缺乏几何的作用。

3. 问题描述

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

对于目标分类任务,输入点云要么直接从形状(shape)中采样,要么预先从场景点云中分割。本文提出的深度神经网络为所有k个类别输出k个分数。对于语义分割任务,输入对象可以是单个对象进行部分区域分割,也可以是三维场景中的一个子对象进行对象区域分割。PointNet将为每n个点和每m个语义子类别输出n×m个分数。

4. PointNet

PointNet的灵感来自于Rn中的点集属性。

4.1. 在Rn上点集的属性

PointNet的输入是欧几里得空间中点的子集,有三个主要特性:

无序性(Unordered):与图像中的像素阵列或体素栅格(volumetric grids)中的体素阵列不同,点云是一组没有特定顺序的点。换句话说,一个输入N个点的3D点集的网络需要在数据输入顺序上对输入集的N!种排列保持不变。

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

对变换的不变性(Invariance under transformations:对于一个几何对象,网络学习到的点集的表示对于某些变换应该是不变的。例如,同时旋转和平移点集不应该改变全局点云类别,也不应该改变点的分割。

4.2. PointNet架构

PointNet的整体架构如下图所示,其中分类网络和分割网络共享了很大一部分结构。

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

(1) 输入为一帧的全部点云数据的集合,表示为一个nx3的2d 张量,其中n代表点云数量,3对应xyz坐标。

(2) 输入数据通过T-Net学到一个3x3变换矩阵,再将该变换矩阵与输入数据相乘,相当于对输入点云进行欧式变换。这一步将数据进行对齐,用于保证模型对空间变换的不变性。

(3)  通过多次mlp对各点云数据进行特征提取后,再用一个T-Net对特征进行对齐,之后再进行mlp。

(4) 在特征的各个维度上执行max pooling操作来得到最终的全局特征。

(5) 对分类任务,将全局特征通过mlp来预测最后的分类分数;对分割任务,将全局特征和之前学习到的各点云的局部特征进行串联,再通过mlp得到每个数据点的分类结果。

4.2.1. Symmetry Function for Unordered Input

为了使模型对点云的输入顺序具有不变性,可选的方案有三种:

(1) 按规范顺序(canonical order)排序输入的点云;

(2) 将输入作为一个序列来训练RNN,但需要通过各种顺序来增加训练数据从而更好的训练RNN;

(3) 使用一个简单的对称函数来聚合每个点的信息。

这里选择第三个策略,对称函数取n个向量(每个向量是一个点,共n个点)作为输入,并输出一个对输入顺序具有不变性的新向量。例如,+和*运算符是对称二元函数。

首先讨论第一个方案,虽然排序听起来像是一个简单的解决方案,但在高维空间中实际上不存在关于点扰动的稳定排序。这可以用反证法很容易地证明。如果存在这样的排序策略,它定义了一个高维空间和一维实线之间的双射映射。不难看出,一个关于点扰动的稳定排序等价于要求该映射随着维度的减少而保持空间邻近性,这是在一般情况下无法实现的任务。因此,排序并不能完全解决排序问题,而且当排序问题持续存在时,网络很难学习到从输入到输出的一致映射。从实验中可以看出(图5),直接在排序后的点集上应用MLP的效果较差,虽然比直接处理未排序的输入要好一些。

然后讨论第二个方案,其思想是把点集看作一个序列信号,希望通过用随机排列的序列训练RNN,使RNN对输入顺序具有不变性。然而,在“OrderMatters”[25]中,作者已经表明顺序是重要的,不能完全忽略。虽然RNN对于小长度序列(几十个)的输入排序具有较好的鲁棒性,但很难将其扩展到数千个输入元素的点云。从实际来看,基于RNN的模型表现不如PointNet(图5)。

PointNet通过将对称函数应用于点集中转换后的元素来近似定义在点集上的一般函数:

对称函数的实现很简单: 用MLP来近似h,用单变量函数和最大池化函数的组合来近似g。实验证明这种方法很有效。通过h的集合,可以学习一些f来捕捉集合的不同性质。

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

4.2.2. Local and Global Information Aggregation

对称函数网络部分的输出是一个向量[f1,…,fK],是输入集的全局特征。可以根据形状的全局特征训练SVM或MLP分类器进行分类。

但是点云分割需要局部和全局信息的结合,解决方案如图2 (Segmentation Network)所示。在计算出全局点云特征向量后,将全局特征和每个点特征进行连接,得到组合的点特征,然后再提取新的点特征——得到的点特征既包含局部信息,也包含全局信息。

通过这种方式,网络能够预测每个点依赖于局部几何和全局语义的数量。例如,可以准确地预测每个点的法线(在补充材料),验证网络能够从点的局部邻域总结信息。在实验中也证明了模型在零件分割和场景分割方面取得了最先进的性能。

4.2.3. Joint Alignment Network

点云经过一定的几何变换(如刚体运动)后其语义标注必须是不变的。因此期望通过点集学习到的表示对于这些变换是不变的。

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

本文以点云作为输入的形式允许比[9]更简单的方式实现对齐,不需要创建任何新的图层,也不像在图像的情况下引入alias。而是通过一个mini-network(图2中的T-net)预测一个仿射变换矩阵,并直接将这个变换应用到输入点的坐标上。mini-network本身类似于大网络,由点无关特征提取、最大池化和全连接层等基本模块组成。

这种思想也可以进一步推广到特征空间的对齐,在点特征上插入另一个对齐网络,并预测一个特征变换矩阵来对齐来自不同输入点云的特征。然而,特征空间中的变换矩阵比空间变换矩阵的维数要高得多,大大增加了优化的难度。因此在softmax训练损失中添加了一个正则化项,将特征变换矩阵约束为接近正交矩阵:

其中,A是一个mini-network预测的特征对齐矩阵。正交变换不会丢失输入中的信息。通过加入正则化项,优化变得更加稳定,模型获得了更好的性能。

4.3. 理论分析

4.3.1. Universal approximation

这里首先证明了神经网络对连续集合函数的通用逼近能力(universal approximation ability)。由于集合函数的连续性,直观地说,对输入点集的一个小扰动不应该对函数值有太大的改变,例如分类或分割分数。

其关键思想是,在最坏的情况下,网络可以通过将空间划分为大小相等的体素,学会将点云转换为体积表示。然而,在实际中,网络学习了一个更聪明的策略来探测空间,正如我们将在点函数可视化中看到的那样。

补充:定理证明

4.3.2. Bottleneck dimension and stability

从理论和实验上可以发现,最大池化层的维数,即(1)中的K,对PointNet的表达能力有很大的影响。这里提供了一个分析,这也揭示了与PointNet的稳定性相关的属性。

定义u = MAX xi∈S {h(xi)}是f的子网络,f将[0,1]m中的点集映射到k维向量。下面的定理告诉我们,输入点云中的微小损坏或额外的噪声点不太可能改变PointNet的输出:

5. 实验

实验分为四个部分。

首先,展示PointNet可以应用于多个3D识别任务(第5.1节)。

第二,提供详细的实验来验证网络设计(第5.2节)。

第三,将网络学习的内容可视化(第5.3节),并分析时间和空间复杂性(第5.4节)。

5.1. 应用

在本节中将展示如何训练网络来执行3D对象分类、对象零件分割和语义场景分割。

5.1.1. 3D Object Classification

PointNet学习全局点云特征,可以用于对象分类。在ModelNet40[28]形状分类基准上评估PointNet。有来自40个人造目标类别的12311个CAD模型,分为9,843个用于训练,2,468个用于测试。以前的方法侧重于体积的(volumetric)和多视图表示,PointNet是第一个直接输入原始点云的方法。

根据 face area对mesh faces上的1024个点进行均匀采样,并将其归一化为一个单位球体。在训练期间,通过沿上轴随机旋转物体来增强点云,并通过均值为零和0.02标准偏差的高斯噪声来抖动每个点的位置。

在表1中比较了PointNet与以前的工作,以及本文设计的使用MLP从点云提取的传统特征 (point density, D2, shape contour etc.)的基线。PointNet在基于三维输入(体积和点云)的方法中取得了最先进的性能。由于只有全连接层和最大池化层,PointNet在推理速度上获得了强大的领先优势,并且可以很容易地在CPU上并行化。PointNet与基于多视图的方法(MVCNN[23])之间还有一个小的差距,本文认为这是由于丢失了渲染图像可以捕捉到的精细几何细节。

补充

第一个变换网络(transformation network)是一个mini-PointNet,以原始点云作为输入,回归输出一个3×3矩阵。它由每个点上的共享MLP(64,128,1024)网络(层输出大小为64,128,1024)、点间的最大池化以及输出大小为512、256的两个全连接层组成。输出矩阵初始化为单位矩阵。所有层,除了最后一个,都包含ReLU和批处理规范化。

第二个变换网络的结构与第一个相同,只是输出是一个64 × 64矩阵。矩阵也被初始化为单位矩阵。在softmax分类损失中加入一个正则化损失(权值0.001),使矩阵接近正交。

在最后一层输出维数为256的全连接层上,使用保留比例为0.7的dropout进行类别分数预测。BN的衰减率从0.5开始,逐渐提高到0.99。使用Adam优化器,初始学习率0.001,动量0.9,批量大小32。学习率每20轮除以2。使用TensorFlow和GTX1080 GPU在ModelNet上训练需要3-6小时来收敛。

5.1.2. 3D Object Part Segmentation

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

本文对来自[29]的ShapeNet零件数据集进行评估,该数据集包含16个类别的16,881个形状,共标注了50个零件。大多数目标类别都由两到五个部分组成。在形状(Shape)上的采样点上标注Ground truth。

PointNet将零件分割看作逐点分类问题。评价指标在点上为mIoU。对于C类中每个形状S,计算形状的mIoU:对于C类中的每一种部件类型,计算groundtruth和prediction之间的IoU。如果groundtruth和预测点的并集为空,则该零件IoU为1。然后对类别C中所有部件类型的IoUs进行平均,得到该形状的mIoU。为了计算该类别的mIoU,取该类别中所有形状的mIoU的平均值。在本节中,将分割版本PointNet(图2分割网络的修改版本)与[27]和[29]两种传统方法进行比较,这两种方法都利用了点几何特征和形状之间的对应关系,以及3D CNN基线。

在表2中报告每个类别和平均IoU(%)分数。观察到平均IoU改善了2.3%,PointNet在大多数类别中都超过了基线方法。

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

补充:PointNet Segmentation Network

分割网络是分类PointNet的扩展。对于每个点,将局部点特征(第二次变换网络的输出)和全局特征(最大池化的输出)连接起来。分割网络不使用dropout。训练参数与分类网络相同。

形状零件分割(shape part segmentation)任务中,为了获得最佳的性能,对基本的分割网络结构(本文见图2)做了一些修改,如图9所示。

网络中添加了one-hot向量,表示输入的分类,并将其与最大池化层的输出连接起来。还增加了某些层的神经元,并添加跳跃链接,收集不同层的局部点特征,并将它们连接起来,形成点特征输入到分割网络中。

[27] 和[29]独立处理每个目标类别,由于缺乏对某些类别的训练数据(形状的总数中的所有类别的数据集是第一行所示), 本文跨类别(使用一个one-hot向量输入指示类别)训练PointNet。为了进行公平的比较,在测试这两个模型时只预测给定特定对象类别的零件标签。

在ShapeNet部件数据集上训练模型大约需要6到12个小时,在斯坦福语义分析数据集上训练大约需要半天时间。

5.1.3. Semantic Segmentation in Scenes

零件分割网络可以很容易地扩展到语义场景分割,点标记成为语义对象类而不是目标零件标记。

在 Stanford 3D语义分析数据集[1]上进行实验。该数据集包含来自Matterport扫描仪的6个区域的3D扫描,包括271个房间。扫描中的每个点都用13个类别(椅子、桌子、地板、墙壁等加上杂物)中的一个语义标签进行注释。

为了准备训练数据,首先按房间分割点,然后将房间采样为面积为1m × 1m的块。训练PointNet的分割版本来预测每个块中的每个点类。每个点都由一个XYZ、RGB和房间归一化位置(从0到1)的9暗淡向量表示。在训练时,在每个区块中随机抽取4096个点。在测试时测试所有的点。这里遵循与[1]相同的方法使用k-fold策略进行训练和测试。

这里使用手工制作的点特征来比较PointNet和基线。基线提取相同的9- dim局部特征和另外三个特征:局部点密度、局部曲率和法线。使用标准MLP作为分类器。结果如表3所示,PointNet方法的性能明显优于基线方法。在图4中展示了定性分割的结果。PointNet能够输出平滑的预测,并对缺失点和遮挡具有鲁棒性。

补充:Baseline 3D CNN Segmentation Network

在ShapeNet零件分割实验中,将提出的分割版本PointNet与两种传统方法以及三维体积的CNN网络基线进行比较。在图10中展示了使用的基线三维体积CNN网络。将众所周知的3D CNN架构,如VoxNet[17]和3DShapeNets[28]推广为全卷积的3D CNN分割网络。

对于一个给定的点云,首先将其转换为分辨率为32 32 32的占用网格的体积表示。然后依次进行5次3D卷积运算,每一次运算的输出通道为32个,步长为1。每个体素的感受野为19。最后,在计算的特征图上附加一组核尺寸为1 × 1 × 1的3D卷积层序列,以预测每个体素的分割标签。ReLU和BN用于除最后一个层之外的所有层。

网络是跨类别训练的,然而为了与其他基准方法比较,目标类别是给定的,只考虑给定目标类别的输出分数。

5.1.4. 3D目标检测

基于语义分割,本文进一步构建了一个3D目标检测系统,使用连接组件进行目标建议(详情见补充)。在表4中比较了以前最先进的方法。该方法基于滑动形状法(带有CRF后处理),利用体素网格中的局部几何特征和全局房间上下文特征训练SVM。PointNet在家具类别上远远超过了它。

补充:目标检测

基于PointNet的语义分割结果和目标分类,构建了一个简单的三维目标检测系统。

使用带有分割分数的连通组件来获得场景中的目标建议(proposals)。从场景中的一个随机点出发,找到它的预测标签,使用BFS搜索附近具有相同标签的点,搜索半径为0.2 m。如果得到的聚类超过200个点(假设在1x1米的区域内有4096个点的样本),则该聚类的边界框被标记为一个对象建议。对于每个建议的目标,它的检测得分计算为该类别的平均得分。在评估之前,对面积/体积非常小的建议进行删减。对于桌子、椅子和沙发,如果腿与座位/表面分离,那么边界框将延伸到地板上。

观察到在一些房间(如礼堂)中,许多物体(如椅子)彼此靠近,连接的组件无法正确地分割出单个的物体。因此,利用分类网络,并使用滑动形状法来缓解椅子类的问题。为每个类别训练一个二值分类网络,并使用分类器进行滑动窗口检测。生成的框使用NMS修剪。由来自的建议连接组件和滑动形状被结合起来进行最终评估。

在图11中给出了目标检测的召回精度曲线。训练了6个模型,每个模型在5个区域进行训练,在左侧区域进行测试。在测试阶段,每个模型都在它从未见过的区域进行测试。所有六个区域的测试结果聚合在一起以生成PR曲线。

5.1.5. 在点云中检索模型

Point为每个给定的输入点云学习一个全局形状特征。我们期望几何形状相似的形状具有相似的全局特征。在本节中将在形状检索应用上测试这个猜想。更具体地说,对于来自ModelNet test split的每一个给定的查询形状,计算其由PointNet给出的全局特征(分数预测层之前的层的输出),并通过最近邻搜索在分割的训练中检索相似的形状。

5.1.6. Shape Correspondence

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

5.2. 架构设计分析

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

5.2.1. Comparison with Alternative Order-invariant Methods

正如第4.2节中提到的,至少有三种方案可以使用无序集合作为输入。使用ModelNet40形状分类问题作为比较这些选项的测试平台,以下两个控制实验也将使用这个任务。

比较的基线(如图5所示)包括未排序和排序点上的多层感知器,如n×3数组,将输入点视为序列的RNN模型,以及基于对称函数的模型。实验的对称运算包括最大池化、平均池化和基于注意力的加权和。注意力方法与[25]中的类似,从每个点特征预测一个标量分数,然后通过计算softmax对分数进行归一化。然后根据归一化分数和点特征计算加权和。如图5所示,maxpooling操作以较大的优势获得了最好的性能。

5.2.2. Effectiveness of Input and Feature Transformations

在表5中演示了输入和特征转换(为了对齐)的积极影响。

有趣的是,最基本的架构已经获得了相当合理的结果。使用输入转换可以提高0.8%的性能。为了实现高维变换,正则化损失是必要的。通过结合特征转换和正则化项获得了最好的性能。

5.2.3. Robustness Test

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

在缺失点方面,当缺失点达到50%时,按最远距离和随机输入抽样,准确率仅下降2.4%和3.8%。PointNet对外点也是稳健的,如果它在训练中看到了这些。评估两个模型:一个是在(x, y, z)坐标的点上训练的;另一个在(x, y, z)加上点密度。即使有20%的点是异常值,网子也有超过80%的准确率。图6右显示了网络对点扰动的鲁棒性。

5.2.4. Effects of Bottleneck Dimension and Number of Input Points

这里展示了模型的性能变化与第一个最大层输出的大小以及输入点的数量有关。在图15中,可以看到性能随着点数的增加而增长,但是在1K点左右达到饱和。最大层大小起着重要的作用,层大小从64增加到1024可以获得2 ~ 4%的性能增益。这表明我们需要足够的点特征函数来覆盖三维空间,以便区分不同的形状。

值得注意的是,即使有64个点作为输入(从网格上最远的点采样获得),PointNet也可以获得很好的性能。

5.2.5. MNIST Digit Classification

一个鲁棒测试实验是将PointNet应用于2D点云-像素集。将MNIST图像转换为2D点集,对像素值进行阈值设置,并将值大于128的像素(表示为图像中坐标为(x, y)的点)添加到集合中。使用256的集合大小。如果有大于256个像素点,则随机进行子样本;如果有更少的,用集合中的一个像素填充集合(由于max操作,用于填充的点不会影响结果)。

5.2.6. Normal Estimation

5.2.7. Segmentation Robustness

5.2.8. Network Generalizability to Unseen Shape Categories

5.3. 可视化PointNet

在图7中将一些样本形状S的critical point sets CS和upperbound shapes NS(如Thm2中讨论的)可视化。两个形状之间的点集将给出完全相同的全局形状特征f(S)。

从图7中可以清楚地看到,构成最大池化特征的critical point sets CS总结了形状的骨架。upper-bound shapes NS说明了与输入点云S具有相同全局形状特征f(S)的最大可能点云。CS和NS反映了PointNet的鲁棒性,即失去一些 non-critical点并不会改变全局形状特征f(S)。

NS的构造方法是将一个边长为2的立方体中的所有点输入到网络中,选取点函数值(h1(p),h2(p),...,hK(p))不大于全局形状描述子的点p。

5.3.1. Classification Visualization

5.3.2. Segmentation Visualization

5.3.3. Scene Semantic Parsing Visualization

5.3.4. Point Function Visualization

5.4. Time and Space Complexity Analysis

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

当MVCNN[23]和Subvolume (3D CNN)[18]实现高性能时,PointNet在计算成本上的效率更高(以FLOPs/sample衡量,效率分别提高了141x和8x)。另外,poinnet在网络中的#param方面比MVCNN的空间效率要高得多(参数少17倍)。此外,PointNet的空间和时间复杂度在输入点数量上是O(N)线性的,具有更强的可扩展性。然而,由于卷积占据了计算时间,多视角方法的时间复杂度直接随着图像分辨率的增加而增加,基于体积卷积的方法随着体积大小的增加而呈立方增长。

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

5.5. PointNet与VoxNet的比较

第5.2节鲁棒性测试中扩展了实验,以比较PointNet和VoxNet[17](volumetric表示的代表性架构)对输入点云中缺失数据的鲁棒性。两个网络在相同的训练测试分割1024个点作为输入。对于VoxNet,将点云体素化为32×32×32占用网格,并通过向上轴的随机旋转和抖动来增强训练数据。

在测试时,输入点按一定比例随机剔除。由于VoxNet对旋转很敏感,它的预测使用了一个点云的12个视点的平均值。如图8所示,可以看到PointNet对于缺失的点更加鲁棒。

当有一半的输入点缺失时,VoxNet的精度急剧下降,从86.3%降至46.0%,差异为40.3%,而PointNet的性能仅下降了3.7%。这可以通过PointNet的理论分析和解释来解释——它是学习使用一个critical points集合来总结形状,因此它对缺失的数据非常鲁棒。

6. 总结

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

PointNet论文笔记相关推荐

  1. Pointnet与Pointnet++论文笔记

    Pointnet与Pointnet++论文笔记 近期由于课题需要,研读了Pointnet系列文章,在此总结个人心得,并结合了部分博客进行阐述,不足之处希望各位批评指正,也欢迎各位同学来进行学习交流. ...

  2. Pointnet以及Pointnet++论文笔记

      Tips:写这篇Blog主要目的是在写的过程中加深对网络的理解,可能很多地方个人理解有偏差或者表述不明白.然后建议大家看了原论文再来看这个blog,这个Blog不是论文的翻译.有问题请留言或者qq ...

  3. PointNet学习笔记(一)—— 论文

    PointNet学习笔记(一)-- 论文 本文记录了博主在学习<PointNet: Deep Learning on Point Sets for 3D Clasification and Se ...

  4. 论文笔记:PRIN: Pointwise Rotation-Invariant Networks

    PRIN: Pointwise Rotation-Invariant Networks 1.四个问题 要解决什么问题? 使用特殊结构的神经网络来提取具有旋转不变性的点云特征. 用了什么方法解决? 提出 ...

  5. 论文笔记:3D-CVF(ECCV 2020)

    论文笔记:3D-CVF: Generating Joint Camera and LiDAR Features Using Cross-View Spatial Feature Fusion for ...

  6. 论文笔记,物体六自由度位姿估计,DenseFusion: 6D Object Pose Estimation by Iterative Dense Fusion

    论文笔记,物体六自由度位姿估计,DenseFusion: 6D Object Pose Estimation by Iterative Dense Fusion 链接 摘要 1,引言 2,模型 2.1 ...

  7. Robust Multi-Modality Multi-Object Tracking 论文笔记

    Robust Multi-Modality Multi-Object Tracking 论文笔记 为什么要做多模态融合的 MOT? Motivation Method 问题构造: 下面是详细介绍: 单 ...

  8. PointNet学习笔记(二)——支撑材料(理论证明)

    PointNet学习笔记(二)--支撑材料(理论证明) 这一部分记录了PointNet中两个定理的证明和博主的学习笔记.具体的定理可以参见论文学习笔记,这里仅给出证明.更新于2018.10.12. 文 ...

  9. ORB-SLAM3 论文笔记

    ORB-SLAM3 论文笔记 这篇博客 ORB-SLAM3系统 相机模型的抽象(Camera Model) 重定位的问题 图片矫正的问题 视觉惯性SLAM的工作原理 相关公式 IMU初始化 跟踪和建图 ...

最新文章

  1. IntelliJ IDEA 最常用配置,应用、永久激活
  2. 设置ASP.NET中的TextBox控件不缓存上次输入的信息
  3. boost::log::sinks::unlocked_sink用法的测试程序
  4. Scrapy运行中常见网络相关错误
  5. 按冯诺依曼提出的计算机类型,2011年12月24日计算机一级考试题目广西
  6. Linux工作笔记040---Centos8.2安装mysql5.7.18_已经测试成功
  7. loadrunner提高篇 - 关联技术的经典使用
  8. Surprise 使用本地数据
  9. (日常搬砖)windows下如何查看并导出文件夹目录
  10. 第3章第1讲算法与流程图
  11. 23. Linux 主机上的用户信息传递
  12. node createConnection connect 区别?
  13. ourdev 学习arm先看看,工具和软件分析
  14. 关于IE浏览器的一些思路
  15. go 学习笔记之咬文嚼字带你弄清楚 defer 延迟函数
  16. 0基础学软件测试工程师好学吗?
  17. python plot画图另存jpg_Python Plot+Bokeh画图并保存为图片或网页
  18. 2020平面设计新手入门技巧
  19. 使用exe4j把jar转换成exe文件时,报错java.lang.NoClassDefFoundError: org/eclipse/swt/widgets/Composite
  20. 【Java基础】Java基础题

热门文章

  1. 大学英语期末考计算机上答卷,英语期末考试质量分析
  2. 晶圆缺陷检测设备_KLA突破电子束晶圆缺陷检测瓶颈,将助EUV光刻机一臂之力
  3. 11 Django组件-分页器
  4. Educational Codeforces Round 39 G Almost Increasing Array
  5. 在Ubuntu1404的64bit版本下安装caffe
  6. BigPipe 大的页面分割成一个一个管道
  7. Html5 web本地存储
  8. [ActionScript 3.0] AS3.0 对象在一定范围随机显示不重叠
  9. FLUSH TABLES WITH READ LOCK 和 LOCK TABLES比较
  10. Report Style