这篇文章[1]主要提出了一种用于点云数据的神经网络模型,即 PointNet。点云在 3D 视觉中是一种重要的数据结构,其主要分为几何数据和属性数据。几何数据就是每个点的 x,y,zx,y,zx,y,z 坐标,而属性数据则是每个点的颜色等信息。这篇文章主要针对几何数据进行处理。由于 3D 点云这种不规则的数据格式,之前大多数深度学习方法都是将点云几何数据变换成规则的体素网格或者一系列 2D 图像的集合,但是这些方法的复杂度都太高,增加了很多不必要的计算。在这篇文章中,作者提出了一种新的用于处理点云几何数据的神经网络,它直接在点云数据上进行处理,并且很好地考虑了输入点的排列不变性。本文提出的 PointNet 模型,是一个统一的架构,可以用于各种点云任务,比如物体分类、语义分割等。虽然 PointNet 结构比较简单,但却是非常高效且有用的。从实验上来看,PointNet 展现出相当或超越 SOTA 的性能;从理论分析上来看,作者给出了 PointNet 的设计理念以及解释了 PointNet 为什么对扰动和噪声是鲁棒的。
传统的 CNN 架构都要求输入数据的格式是非常规则的,比如图像网络或者 3D 体素,从而实现权重共享和其他的核优化。由于点云数据是不规则的,因此以前的研究都是将点云数据转为规则的体素网格或者一系列 2D 图像的集合,然后输入网络进行处理。但这种方法会增加很多不必要的数据和计算。
针对这个原因,作者提出了直接使用点云数据的 PointNet。PointNet 是一个简单统一的点云处理模型,既避免了数据不规则也避免了转换成体素网格导致计算量大的问题,更容易进行学习。然而,PointNet 也必须考虑一个事实,即点云只是一系列点的集合,对于置换是不变的,因此在网络计算中需要一定的对称性。更进一步,关于刚体运动的不变性也需要被考虑到。
PointNet 直接接收点云数据作为输入,输出类别标签(分类)或者每个点的分割标签(分割)。PointNet 结构非常简单,每个点云数据在早期都是进行相同且独立的操作。在基础的设置下,点云的每个点都是表示为 (x,y,z)坐标;如果想要处理其它特征,则可以再增加其它的维度。
为了验证 PointNet 的有效性,作者提供了理论分析和实验评估。作者发现,PointNet 可以近似任一连续的集合函数。更有趣的现象是,PointNet 展现出可以学习到如何将输入点云总结为少数重要点的集合的能力,而这便对应了物体的粗糙轮廓。理论分析则给出了 PointNet 如此鲁棒的原因。在一系列的任务上,PointNet 不仅在性能上取得了 SOTA,而且推断速度也更快。这篇文章的主要贡献点有如下几点:
使用神经网络对无序的数据集合进行处理是一个广泛且基础的问题,作者希望他们提出的方法也能够很好地迁移到其他领域。
点云数据有以下三个主要特点:
PointNet 有三个重要的模块:
前面已经提到点云数据的特点,因此设计的神经网络需要对数据的顺序不敏感,一般有这几种方式:
然而,第一种方式只对 111 维数据有效,对更高维度的数据,无法给出一个有效的偏序关系来进行稳定排序;第二种方式虽然考虑了所有可能的顺序组合,但仍无法完全消除顺序的影响[2],而且当数据量过大时,所有顺序组合将大到不可接受的。
因此作者考虑第三种方法,使用简单的 Max Pooling 操作作为对称函数。
对于分割任务,除了要考虑全局信息,还要考虑局部信息的影响。因此,作者在分割网络中将局部信息和全局信息进行了聚合。具体做法就是,将 Max Pooling 得到的 1024 维全局特征,拼接到每一个 64 维的局部特征上,从而最终得到聚合特征 n×1088
对于语义分割任务,要求预测的标签对一定的几何变换是不变的,比如刚体变换。一种直接的方式是在对数据进行处理前先将其按照一定的规范进行对齐,比如对齐到一个规范的 x−y−z 坐标系中。而实现这种对齐的方式可以通过对数据进行变换得到,作者就提出增加一个网络分支 T-Net,专门用来预测得到这个变换矩阵,然后将这个变换矩阵和输入的点云数据或者中间的特征数据进行矩阵相乘,实现对齐。双对齐网络即对应于 PointNet 模型中的 Input Transform 和 Feature Transform。
对于特征的对齐,其存在的一个问题是,其维度过高,因此实际优化起来比较困难。为此,作者提出可以对特征的对齐矩阵进行限制,即强制其为正交矩阵: L_{r e g}=\left\|I-A A^{T}\right\|_{F}^{2}
令
是一个在X 的关于 Hausdorff 距离 d_H(\cdot, \cdot) 的连续函数。
这个定理主要说明的是,即使对 PointNet 增加一些输入扰动点,也不会影响其最终的结果。
对于这两个定理的证明,原论文在补充材料中给出了,但本人看的一头雾水(感觉好多地方有问题)……(如有看懂的小伙伴,还望不吝赐教~
作者为了验证 PointNet 的有效性,在 3D 物体分类、物体分割和语义分割任务上进行了实验。
其中,baseline 是使用手工设计特征的实验结果。
作者以消融实验的方式,分析了 PointNet 网络如此设计的理由。
作者对定理二给出了可视化展示,如下图所示:
作者和其它 3D 神经网络模型进行了复杂度对比, 如下图所示:
作者提出了一种能够直接处理点云数据神经网络 PointNet,其在 3D High Level 任务上都取得不错的结果。同时,作者对 PointNet 的设计给出了理论和实验上的分析。