PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation论文综述(17)

PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation论文综述(17)

  1. 为什么要做这个研究(理论走向和目前缺陷) ?
    处理3D数据一般都要先把不规律的点云数据或者网格(meshes)数据转化为规律的体素数据或者图片数据,但是这样做回导致数据冗余(voluminous)??而引发问题。如果是直接以点云数据作为输入的话,会使网络更容易学习

  2. 他们怎么做这个研究 (方法,尤其是与之前不同之处) ?
    应用对称函数max pooling来解决数据无序的问题;提出T-net用于预测变换矩阵(变坐标系,做标准化之用);证明了 mlp+maxpooling+一个连续函数 可以拟合任何集合函数;局部信息(每个点提取出来的各层特征)+全局信息+分类网络得出one-hot向量(如果有)融合用于做语义分割;增加一个正则化项使得第二个T-net预测出的变换矩阵尽量接近正交矩阵;

  3. 发现了什么(总结结果,补充和理论的关系)?
    参数量小,计算量小,但是计算速度就一定快吗?没给出事实依据。准确率比的其他基于体素的方法(即3DCNN)要高,但是比基于多视角图片的检测要差。
    可做3D目标分类,语义分割

这文章写的也太长了,看了好几天!
摘要:点云是一类重要的几何数据结构,但是由于不规则,大部分研究者都是先把点云数据转化为规整的3D体素网格或者图像集合。但是这样会导致数据冗余或者导致问题。故本文设计了一种新型的神经网络结构直接以点云数据作为输入,这个网络还能够保证输入点的置换不变性。可用于分类,分割,场景语义解析。

注:
1、 多层感知机就是深度神经网络,里面的每一层就是全连接层。
2、 集合函数是指对整个集合内的元素先后顺序变化所得的结果无关的这个函数。

1 引言
通常,卷积需要非常规整的输入数据格式,比如图像网格、3D体素,这是为了实现权重共享以及其他的卷积核优化。因为点云或者曲面(mesh)格式并不规整,研究者都是把他们转化为3D体素或者图像集合(多视角图片),然后再投入到深度神经网络中计算。这样转化会导致两个问题:
一是数据量变大,二是引入的量化操作(quantization artifacts)会使得数据的自然不变性(natural invariance)变得模糊
点云数据结构简单且统一,能够避免网格(mesh)组合的不规律性和复杂性,因此更容易学习。但pointNet还是要考虑这样一个问题,即点云只是一系列无序的点,成员之间具有对称不变性,即各个点在文件中的排列是先出现还是后出现对最后的结果没影响,因此在网络计算中要保证对称不变性。还有其他的刚体运动的不变性也需要考虑。
PointNet以点云数据作为输入,输出的是整个输入数据的类别标签(分类)或者是每个输入点类别标签或者类别部件标签。网络的基本结构很简单,因为在初始阶段每个点都分别用相同的处理办法,在基本设置里,每个点都只用三个维度,即(x,y,z)坐标表示,如果要计算法线(normal)或者其他局部或者全局特征,其他维度的特征也可以加上。
我们的方法的中的一个关键处理就是运用了一个简单的对称函数,即max pooling。网络能够高效学习一个优化函数,这个函数能够选择有效的或者有信息的点云中的点,并且编码挑选这些点作为关键点的理由。最终的全连接的层能够把这些学习到的最优的值聚集成可以描述整个形状的全局描述符(目标分类),或者是能够预测每个点的分割(语义分割)。
我们的输入数据能够很简单的应用刚性或者仿射变换,因为每个都是进行的独立变换。因此可以在PointNet之前加一个数据独立的空间变换网络,这个网络能够对数据进行规范化,以便更好的提升结果。
我们对此方法提供了理论分析和实验评估,表明此网络能够拟合任何集合函数(set function),更有趣的是, 我们的网络把输入的点云数据总结成一个稀疏的点集,这个点集大概反映着目标的轮廓。这也说明了为甚么此网络对点云的扰动(异常值)或缺失(丢失部分数据)有很强的鲁棒性。
Pointnet在各个任务上如形状分类、部件分割、和场景分割都表现出和多视角方法、体素方法差不多甚至更好的性能,而且速度更快。

关键贡献:
1、 设计能够处理无序点云数据的新颖网络
2、 展示这样的网络如何实现3d形状分类、部件分割和场景语义分割。
3、 为这个方法的稳定性和高效性提供经验和理论分析。
4、 展示了网络中部分神经元计算出的3d特征是什么,并为其性能做直观解释。
本文的方法对于处理无序数据集的方法非常通用。

2 相关工作
点云特征
大多数现有点云特征(模型参数)都是针对特定任务手工设计的,这些点云特征往往编码点集的某些统计特性,而且对某些内部或外部的变换具有鲁棒性。点云特征也可以被分为内部特征或外部特征,对于特定任务,想要手工找到最优的点云特征很难。

3d数据上的深度学习
3d数据有很多表征,导致有很多学习方法:
体素CNN:这种方法受限于数据稀疏性以及3d卷积的计算量。FPNN和Vote3D提出了解学数据稀疏性的问题,但是仍是在稀疏数据上操作,如果实在很大数据集上就很麻烦了。

多视角CNN:即把3D点云数据转换为多张2D的图片,然后应用卷积进行分类。这类方法在形状分类任务和检索任务中效果很好,但是在场景理解、点分类和形状补全任务上就不行了。
光谱cnn:仅限于应用有机物体,在非等距形状的物体如家具上就不能用了。
特征DNN:先把3D数据转化为向量,然后提取形状特征,然后利用全连接网络来分类形状。其分类的准确度受限于提取的形状特征的表现力。

无序数据集上的深度学习
从数据结构的角度来说,点云是一组无序的向量,然而大多数现有的在深度学习上的工作处理都是有序输入表征,如序列(语音)、图像和立体(视频和3D数据),在点云数据处理上并没有很多深度学习方法。

3 问题描述
点云数据就是一系列无序的点,每个点是一个向量,这个向量中包含(x,y,z)以及颜色、法线等信息,本文除非特别说明,一般只用到(x,y,z)这三个通道。
对于目标分类任务,输入的点云数据要么是直接从形状中采样得到或者从一个场景点云数据集中预分割出来的。网络为K个候选类别中的每一个都输出一个得分。

对于语义分割任务,输入数据可以是单个物体的点云数据以供部件分割任务,或者是三维场景中的子部分以供目标区域分割(场景中的每一个物体单独分割出来,而不需要把每个物体的各个部件还单独拿出来)。网络为输入的n个点中的每一个点都输出m个得分,m代表候选类别数。
4. 点集上的深度学习
4.1 n维点集的特性
输入时欧式空间上的点集的子集,它有三条主要特性:
无序:图像上的像素或者体积网格中的体素都是规则排列的,但是点云是无序的,也就是说,如果输入的是N个点云里的点,设计的网络必须对这N个点共计N!种排列顺序具有不变性。
点之间的相互作用:点云中的点靠距离度量,即点之间并不是分离的,相邻的点组合能够构成一个目标。故网络应能够根据邻近的点特征捕获局部结构,以及局部结构之间的不合作用。
变换的不变性:网络应该能够对立体物体的刚性变换(平移和变变向)具有不变性,也就是说不管物体经过何种变换,网路对他所提出的特征应该是不变的,例如整体的旋转和平移所有的点,分类和分割的结果应该是不变的。

4.2 pointnet网络架构
如下图:
在这里插入图片描述
分类网络和分割网络共享一部分结构。
模型中有三个关键模块:
作为对称函数来聚集所有的点的信息的max pooling层。
1个局部和全局信息混合的结构。
2个联合对齐网络(T-net),来对齐输入的点和点的特征。

应用于无序输入的对称函数(max pooling)
为使模型对输入数据的扰动具有不变性,有三种策略:
1) 将输入排序
2) 应用RNN网络,通过排列进行增强对输入扰动的不变性。
3) 用一个简单的对称函数,这个对称函数可以输入n个向量,然后输出一个新的向量,这个向量对输入向量的顺序具有不变性,例如+和*运算的结果就跟数据的先后顺序无关。

排序不可行。可通过找矛盾证明,排序相当于把一个高维空间的数据映射为一个一维空间的数据,然后在一维空间上才能进行比较大小进行排列,不难看出,这就要求随着高维空间的维数的降低,映射成的一维数据的大小应该是不变的,这个任务很难完成,网络很难学习从一个变化维度的输入到固定输出的一致映射。
实验也表明如果把MLP(多层感知机)直接应用排好序的点上时,效果也不怎么样,但是会轻微的比不排序的效果好些。
用RNN的方法也不行。因为已经有论文证明输入数据的顺序对rnn的性能有影响,而且通过不断变换输入序列的顺序来训练rnn以期rnn对输入数据的顺序有鲁棒性,这种方式只有在输入数据比较少时才有效,输入数据很大时,就没什么用了,而点云数据就是这种大数据。

本文的方法就是应用一个对称函数。
在这里插入图片描述
上式中g是一个单变量函数和对称函数max pooling的组合,作用是输入n个k维向量,输出一个一维的数。
h是一个多层感知机,作用是把一个n维向量(比如一个点的x,y,z三个维度)变为一个k维向量。
由于h的不同(多层感知机的参数不同,输出的维度不同),f就不同,这样f就可以捕获到输入的不同特性。

局部与全局信息聚合
上述公式的输出组合成一个向量[f1, . . . , fK],这是一个对整个输入的全局表征,然后可以训练一个SVM或者多层感知机分类器来分类。然而如果是做语义分割即对每个输入点进行分类的话,就需要局部和全局信息进行整合。
整合的方法非常简单,就是把每个点的计算出来的特征向量与全局向量连接在一块组成一个新的向量,对这个这样,每个点的特征既能看到全局信息又能看到局部信息。下图红圈内即为聚合部分的结构:
在这里插入图片描述
联合对齐网络(就是求一个改变坐标系变换矩阵的网络T-net):
如果对点云数据进行了刚性变换,那么它的语义信息应该是不变的。
一种解决方式就是在进行特征提取之前就把所有的输入数据集对齐到一个标准的空间。
有人通过采样和插值的方法来对齐2d图片。
作者觉得这样不好,需要创建新的层、新的概念。作者采用一个小网络(T-net)预测一个仿射变换矩阵,然后直接把这个仿射变换矩阵应用到点的坐标上实现空间变换。这个小网络本身与大网络很相似,先对每个点进行特征提取(用同样的卷积核),然后max pooling,然后是全连接层输出一个仿射变换矩阵。
上面提到是对每个输入点进行相同变换(实际就是改变坐标系,使点尽可能位于空间坐标系的原点附近,使得后面更容易学习特征),这个思想也可以应用于特征空间,即对每个输入点所提取到的特征在进行一次变换,
只不过这个变换不再是应用于3维(x,y,z)点坐标上了,而是应用于一个高维特征,这就极大地增加了优化的难度,于是就在损失函数中加入了一个正则化项,这个正则化项的作用就是使得变换矩阵尽量接近于正交矩阵。这个正则化项如下:
在这里插入图片描述
上式A就是T-net预测出来的变换矩阵。

4.3理论分析
通用拟合
首先证明了神经网络对连续集合函数都有拟合能力,由于集合函数是连续的,所以对输入点集的一个小的扰动不应该对函数值(分类或者分割得分)有很大的改变。
正式地,
集合x中的每个元素是m维的向量,向量中的每个值要么是1要么是0,并且每个向量的模都是1.
在这里插入图片描述
对于X中的任意两个元素S,S’(都是m维向量),如果这两个元素只是有很小的差异,即Hausdorff距离很小,dH(S, S’) < δ,那么他们各自输入到集合函数得到的输出值差异也应该很小
在这里插入图片描述
只要神经元的数目K(把空间分成的份数)足够大,这个函数f很容易拟合出来。

定理1
在这里插入图片描述
表达的意思就是任意一个Hausdorff上的集合函数可以用:
对集合中的每个元素都用同一个多层感知机求出一个值->所有求出的值中找一个最大值->对这个最大值应用一个连续函数
这样一个过程来拟合,证明略。
对于上述集合函数,最差的情况就是学习的网络试图通过把空间划分为相等大小的体素来把点云数据集转换为一个体积表达,但是实际上,网络会采取更加智能的策略来探测空间。

瓶颈维度和稳定性
max pooling层的维度k( 为便于理解,k可以类比为把(0,1)区间分成的份数,max pooling是从所有点在每一份上所得的值中取一个最大值)很显著影响网络的性能。
定义一个f的子网络 u =MAX{h(xi)}, 其中元素xi属于集合S。
在这里插入图片描述
其作用相当于把一个点集映射为一个K维的向量,其中每个点是本来是3维的向量,经过多层感知机后变成了K维的向量,这个K就代表把每个点分成了K份。
定理2:
在这里插入图片描述
上述定理中Cs代表包含集合S中的关键元素的集合,这个集合的维度小于等于集合S的维度(即K),那么就存在比较冗余的包含集合Cs的集合,同时包含于更冗余的集合Ns的集合T,使得集合T经过集合函数的运算得出的结果等于集合S的运算结果。这就说明,即使集合S经过冗余的变换,比如加了些噪音,也不会影响最终的运算结果,反过来一个比较冗余输入点集去掉一部分冗余点也不会影响最后的输出,这就证明了模型的稳定性。
所谓关键元素,即对生成最后的全局向量有用的点,即这个所拆分得到的K维向量中,某些值非常大,作为了下一步求全局向量的输入。

5 实验
5.1 应用
3D目标分类
在这里插入图片描述
每个点云的输入都在物体表面采样1024个点,然后把他们归一化到一个单位球面上??
训练时,通过随机的旋转上轴以及加上高斯噪声(均值0,标准差0.02)来进行数据增强。
我们的方法速度很快,并且比3D输入(体素、点云)的其它方法好很多。但是比多视角输入(MVCNN)的性能还有差距,推测是由于缺少几何细节(打乱的几何空间结构),但是图片会有。

3D 目标部件分割
部件分割是一个很有挑战的3D识别任务。
在这里插入图片描述
还做了对输入点集进行部分删减的对比实验,分割效果如下图:
在这里插入图片描述
场景语义分割
实际上是部件分割的变种表达。
在这里插入图片描述
在这里插入图片描述
5.2 架构设计分析
与其他顺序不变的方法(排序,rnn)的比较。
在这里插入图片描述
发现还是对称函数类效果比较好,且用maxpooling这种对称函数最好。

输入的有效性和特征变换
用两次变换矩阵比较好,单独对高维向量应用变换,无论是否有正则化,结果都变差。
在这里插入图片描述
下图展示了丢失输入点(随机和不随机),加异常点,对现有点加扰动的影响。
在这里插入图片描述
5.3可视化pointnet
最初的形状集合,关键点集合,上界点集合如下,说明即使丢失了一部分非关键点也部分影响最后的分类、分割结果:
在这里插入图片描述
5.4 时间和空间复杂度分析
空间复杂度:网络的参数量
时间复杂度:浮点数操作/采样
也比较与其他网络(基于体素和多视角方法)的时间和空间复杂度
在这里插入图片描述
6结论
提出pointnet,可直接以点云数据作为输入。可应用于3D目标分类,部件分割,场景语义分割。

附录:
T-net网络结构跟整个pointnet很像。
第一个T-net:
每个点(x,y,z)输入到同一个多层感知机(3* 64, 64128, 1281024), 这样每个点都得到一个11024的输出,n个点的输出聚合起来就得到一个n1024的输出->再元素对应地应用maxpooling, 得到11024的输出->再加两个全连接层(1024512, 512256),得到一个1256的向量。->推测再加一个2569的全连接层,使得输出的向量成为一个33的变换矩阵->对这个变换矩阵归一化

第二个T-net:
跟第一个T-net很类似,不过最后输出的是64*64的矩阵,具体怎么做没说??然后这个输出矩阵会作为正则项加入到损失函数中,权重0.001。

pointnet分割网络
原来的分割网络结构:
在这里插入图片描述
改进后的分割网络结构:
连接了很多层的局部特征(类似残差),又加了一个one-hot向量表示这个输入点云数据的类别(不是点的类别)。
在这里插入图片描述

3D CNN分割网络基准

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值