『写在前面』
点云深度学习基石,一举统一了点云深度学习的整体框架,即以原始点云作为输入,输出点集或各个点的类别信息。
作者机构:Charles R. Qi等,Stanford University
文章标题:《PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation》
论文出处:CVPR 2017
目录
摘要
对一个点集而言,因为集合具有无序性,所以具有置换不变性。
处理点云数据的一个难点在于如何应对点集的无序性,在此之前,大多研究者会选择构建3D体素网络或图像集合来规范数据。
PointNet的一个突出贡献在于搭建了一个可以很好应对点集无序性的网络。
1 介绍
为了能够运行权值共享和其他内核优化算法,一种较直观的做法就是构建图像网格或3D体素网络,但是在量化过程中难免会引入量化误差。
PointNet接受原始点云作为输入,通过网络来调整对称性。同时还考虑了刚性物体的旋转不变性,因为输入的是原始点云,做变换很方便,所以加入了一个空间变换网络(STN)来自适应地对点集进行旋转。
PointNet模型结构中的一个大功臣是单对称函数-MaxPooling。作者认为,一个有效的网络可以学习到一个函数来自动挑选出最有价值的点,并为这些点编码更丰富的特征信息,最后可以将高层特征通过FC层映射到全局(分类任务)或各点(分割任务)上。
直观来说,PointNet通过学习一组稀疏的关键点来概括表示输入点集,通过可视化这些关键点,作者发现它们大多对应于输入点集对象的骨架。实验证明,PointNet对于离群点和缺失值具有较高的鲁棒性。
3 问题描述
输入:点集
其中,表示一个点的特征向量,一般包含其坐标信息
,以及可能还有颜色信息、法线向量等等。
对分类任务,网络输出对应每个类别的得分;对分割任务,网络返回 大小的feature map,表示对应
个点各点在
个类别上的得分。
4 点集深度学习
4.1 点集特点
无序性
一个大小为的点集最多会有
种不同的排列顺序,网络需要能够适应这种变化。
点与点的关系
点集往往存在于一定的度量空间中,这就意味着点和点之间是相互关联的。直观地,距离越近的点可能具有更加相近的属性。网络需要具有捕捉点集局部特征和全局特征的能力。
旋转不变性
如果对点集整体进行旋转平移等操作,不会影响其组成对象所属类别,同样更不会影响其中各点表示的含义。
4.2 PointNet结构
PointNet模型结构如下图所示。其中,主要包含3个关键模块:
- 作为对称函数,用以聚合点集信息的最大池化层;
- 用以融合局部信息和全局信息的结构;
- 两个联合对齐网络,分别用以对齐输入点集和点集特征。
对称函数处理无序输入
为了处理输入的无序性,有三条路线可以走:
- 强行排序
- 随意变换顺序,然后输进RNN学习
- 使用对称函数映射
什么是对称函数?简单来说,就是与输入顺序无关的函数,也就是满足交换律的函数,比如常用的加法和乘法都是对称的。
对第一条路,排序看起来是一件容易的事,但实际在高维空间中根本不存在稳定的排序方法。可以这样理解,若真的存在这样的排序方法,那么等同于定义了一个从一维空间到高维空间的双射,同时还要稳定,对点扰动鲁棒,即在高维空间中的轻微扰动不应该影响其在一维空间中的排序,可以想象一般情况下这种操作几乎不可能实现。
对第二条路,RNN的一个弊端在于很难处理过长的输入序列,而对点集来说,一般都在百、千甚至更高的数量级上,对RNN来说是很大的。
本文提出,第三条路是正道。作者的想法是通过在变换后的元素上运行一个对称函数来近似一个对称的集合函数。
其中,是一个集合函数,将一个点集合映射到实数域;
是将
维向量映射到
维向量的函数;
是对称函数,将
个
维向量映射到实数域。这个思想在实现上很简单,作者使用MLP来近似估计
,使用一个单变量函数和最大池化函数组成的复合函数来近似估计
。
局部信息和全局信息融合
基于上述分析,我们可以得到一个提取到一个多维向量,也就是点集的全局信息(高层特征)。对于分类任务而言,我们可以简单地训练一个SVM或一个MLP来进行分类预测。
但对于分割任务,只利用全局信息是不够的,还需要结合局部信息(低层特征)。本文提出的改进方法是将全局信息拼接到每一个对应点上,然后再继续提取各点的特征,这样每个点的特征就融合了全局信息和局部信息。
联合对齐网络
通过嵌入一个小型网络T-NET来对输入点集进行仿射变换以解决输入点集旋转不变问题。
这一想法可以进一步应用在对后续提取到的点集特征的对齐上,但是特征空间的变换矩阵比几何空间的变换矩阵具有更高的维度,这使得优化难度变大。因此,在训练阶段softmax损失中添加了一个正则化项,以约束特征变换矩阵接近正交矩阵,理论上正交变换不会丢失信息,具体正则化项表示为:
4.3 理论分析
4.3.1 通用近似
作者首先分析了本文提出的模型为什么能够以一种通用的形式去近似任意连续集合函数。类比二维平面中的连续函数,集合函数的连续性意味着即使输入集合有小幅扰动,输出函数值也不应该剧烈变化。
集合函数的连续性定义
设
是定义在豪斯多夫距离空间的一个集合函数,连续性这样定义:对于任意
,都存在一个
,使得对于任意集合
,如果
,则
.
作者提出,只要在最大池化层给出足够的神经元,那么这样的连续集合函数可以由PointNet层任意近似。
定理1表述
设
是定义在豪斯多夫距离空间的一个连续集合函数,对于任意
,都存在一个连续函数
和一个对称函数
,使得对于任意无序集合
,满足
其中,MAX(·)就是最大池化层,它将返回输入向量中的最大元素。
4.3.2 瓶颈尺寸和稳定性
理论和试验结果均表明,PointNet层的表示能力与MaxPooling层的维度有关。本文给出了一个定理,以证明输入点集的小扰动或引入一定量的噪声点,不会改变网络输出。
定理2表述
令
,即
,则原集合函数可以表示为
.那么以下表述成立:
a)对于任意
,都存在
,如果
,则
;
b)
.
怎么理解
a)只要保证
中的点都被保留,则
值保持不变,并且能够忍受加入额外的噪声点,直到达到
;
b)
只包含有限数量的点,且点数上限为
.
换言之,
完全由一个包含少于等于
个元素的有限子集
来确定。
定理2证明
此定理的证明相对比较容易理解,在确定了关键点集后,只要在此基础上添加的点经过
映射后得到的值都较小,那么就会被MaxPooling过滤,也就不会进一步的影响
的输出了。
被称为
的关键点集,
被称为
的瓶颈维度。结合
的连续性,这很好地解释了PointNet模型的鲁棒性,如对点集的扰动、缺失点、噪声点等。
直观上而言,PointNet旨在通过学习一组稀疏关键点来概括输入点集信息。
5 实验
5.1 实验数据分析
普适性地解决了点云分类、物体部分分割、场景语义分割任务,且基本都有较大幅度的精度提升,具体参考paper。
5.2 模型结构分析
证明MaxPooling在处理无序输入时的有效性
证明T-Net在处理旋转不变上的有效性
鲁棒性测试
5.3 PointNet可视化
这部分比较有意思,作者可视化了一下4.3.2中提到的关键点集,即可视化了可以描述一个原始点云的点集下界和上界,如下图所示。第一行是输入点云,第二行是关键点集,第三行是点集上界。关键点集理论上其实就是经过PointNet模型后的输出。而点集上界的获取是通过对原始点云上采样,取每个输入点的边长为2的立方体内的所有点,合并输入网络,运行前向计算,然后留下所有经过映射后数值小于相应全局特征值的点,即不会改变MaxPooling输出值的点。
可以看出,关键点集基本概括了输入形状的框架结构,而点集上界基本就是将形状密集填充后的结果,这与人的感官一致。
5.4 时空分析
相比构建三维网格的种种方法,PointNet不论是在参数量还是计算量上都大幅度减小。
理论上,PointNet的计算复杂度为.即与输入点集的数量线性相关。