PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation
点云是一种重要的几何数据结构类型。由于其不规则的格式,大多数研究人员将此类数据转化为常规的三维体素网格或图像集合。然而,这使数据变得不必要的庞大,并导致了一些问题。在本文中,我们设计了一种新型的神经网络,它直接消耗点云,很好地考虑了输入中点的排列不变性。我们的网络被命名为PointNet,为从物体分类、部件分割到场景语义解析等应用提供了一个统一的架构。虽然简单,但PointNet是非常高效和有效的。
在本文中,我们探讨了能够对点云或网格等三维几何数据进行推理的深度学习架构。典型的卷积架构需要高度规则的输入数据格式,如图像网格或三维体素的格式,以执行权重共享和其他内核优化。由于点云或网格的格式并不规则,大多数研究人员在将这些数据送入深度网架构之前,通常会将其转换为规则的三维体素网格或图像集合(如视图)。然而,这种数据表示方式的转换使产生的数据变得不必要的庞大——同时也引入了量化的假象,可能掩盖了数据的自然不变性。
提出了一个直接用点云作为输入数据的网络
然而,点网仍然必须尊重这样一个事实,即点云只是一个点的集合,因此对其成员的排列组合是不变的,这就需要在网络的计算中进行某些对称。还需要考虑对刚性运动的进一步不变性。
PointNet是一个统一的架构,它直接将点云作为输入,并输出整个输入的类别标签或输入的每个点的分段/部分标签。我们网络的基本架构出奇地简单,因为在初始阶段,每个点都是相同的、独立的处理。在基本设置中,每个点仅由其三个坐标(x、y、z)表示。额外的维度可以通过计算法线和其他局部或全局特征来添加。
我们的方法的关键是使用一个单一的对称函数,max pooling。网络高效地学习了一组优化函数/标准,选择了点云中有趣的或信息丰富的点,并对其选择的原因进行编码。网络的最终全连接层将这些学习到的最优值汇总到上述整个形状的全局描述符中(形状分类)或用于预测每个点的标签(形状分割)。
我们的输入格式很容易应用刚性或仿生变换,因为每个点都是独立变换的。因此,我们可以添加一个与数据相关的空间变换器网络,试图在PointNet处理数据之前将其规范化,以便进一步改善结果。
主要贡献如下:
用神经网络处理无序集合的问题是一个非常普遍和基本的问题-——我们期望我们的想法也能转移到其他领域。
PointNet的应用如下图所示
classification:分类,给定一个形状,预测它的类别。
part segmentation:零件分割,给定一个形状,分割出它的不同零部件。
semantic segmentation:语义分割,给定一个场景,对它进行语义分割,即分割出不同类别,比如人,车,桌子等等。
instance segmentation:实例分割,和语义分割相似,在语义分割的基础上进一步精确分割,能分割出同一类别中的不同实例,比如人这一类别中不同的人。
点云特征 大多数现有的点云特征是针对特定任务手工制作的。点特征通常对点的某些统计属性进行编码,并被设计为对某些变换不敏感,这些特征通常被分为内在的或外在的。它们也可以被分为局部特征和全局特征。对于一个特定的任务,要找到最佳的特征组合并非易事。
三维数据的深度学习 三维数据有多种流行的表现形式,导致了各种学习的方法。
无序集上的深度学习 从数据结构的角度来看,点云是一个无序的向量集。虽然深度学习的大多数工作都集中在常规的输入表示上,如序列(在语音和语言处理中)、图像和体积(视频或三维数据),但在点集的深度学习方面没有做太多工作。
我们设计了一个直接使用无序点集作为输入的深度学习框架。点云表示为一组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个分数。对于语义分割,输入可以是用于部分区域分割的单个对象,也可以是用于对象区域分割的3D场景的子体。我们的模型将为n个点和m个语义子类别中的每一个输出n×m个分数(每个点属于每个物体类别的概率)。
我们的输入是来自欧几里得空间的点的子集。它有三个主要特性:
PointNet网络架构如下图所示,分类网络和分割网络共享很大一部分结构。
我们的网络有三个关键模块:作为对称函数的最大池化层,用于聚合来自所有点的信息;局部和全局信息组合结构;以及两个联合对齐网络,用于对齐输入点和点特征。
无序输入的对称函数
为了使模型对输入置换保持不变,存在三种策略:1)将输入按规范顺序排序;2) 将输入视为训练RNN的序列,通过各种排列来增加训练数据;3) 使用一个简单的对称函数来聚合每个点的信息。这里,对称函数将n个向量作为输入,并输出一个与输入顺序不变的新向量。例如,+和∗运算符是对称二元函数。
我们的想法是通过在点集中的变换元素上应用对称函数来近似点集中定义的一般函数。
经验上,我们的基本模块非常简单:我们通过多层感知器网络来近似h,通过单变量函数和最大池函数的组合来近似g。实验表明,这一方法效果良好。通过h的集合,我们可以学习一些f来捕获集合的不同属性。
局部和全局信息聚合
我们的解决方案如上面网络架构图(分段网络)所示。在计算全局点云特征向量之后,我们通过将全局特征与每个点特征连接起来,将其反馈给每个点特征。然后,我们基于组合的点特征提取新的逐点特征-这一次,逐点特征知道局部和全局信息。
联合对齐网络
如果点云经历某些几何变换(例如刚性变换),则点云的语义标记必须是不变的。因此,我们期望点集的学习表示对这些变换是不变的。
我们不需要发明任何新的层,也不需要像图像中那样引入别名。我们通过迷你网络(图2中的T-net)预测仿射变换矩阵,并将该变换直接应用于输入点的坐标。小型网络本身类似于大型网络,由点独立特征提取、最大池和完全连接层等基本模块组成。
在这项工作中,我们提出了一种直接消耗点云的新型深度神经网络PointNet。我们的网络为许多三维识别任务提供了统一的方法,包括对象分类、部分分割和语义分割,同时在标准基准上获得了与现有技术相同或更好的结果。我们还提供理论分析和可视化,以了解我们的网络。