PointNet:Deep Learning on Point Sets for 3D Classification and Segmentation

PointNet:Deep Learning on Point Sets for 3D Classification and Segmentation
PointNet:3D点集分类与分割深度学习模型
摘要总结:
1.点云是一个重要的数据结构,所以有研究的必要。
2.点云有自己本身的特性,也就是 irregular format(格式不规则),之前的研究人员都想将其转化为一种立体模型,但是这恰恰是丢失了其本身的特性。
机器学习,先要提取信息,之后再将提取到的信息进行分析得出结果。我个人理解这里有一个问题就是中间提取的信息的好坏很难评价。不如直接将提取的信息和分析信息交给一个深度学习模型。
类比起来,这里虽然我们得到的结果很好评价,直接看像不像一个立体形状就行了。但是,在这个转化为立体图形的过程中,可能会丢失一些没注意到的信息。所以这个文章直接从点云出发,到各种具体的应用。
(上面内容都是我一开始阅读的感受,读完之后我又有了下面的感受:)
这里提出的natural invariances(本身的特性),主要是指的旋转的时候其本身不会发射变化,文章正是利用这个性质想到了对称函数使用的必要性,并在实验中产生了很好的效果。
3.另外会引入很多不必要的复杂
这个转化为三维的过程中结构变得更加复杂,所以我们的模型在处理这些输入的过程中,就需要更多地参数,也就引发更多地参数调整,也就需要更多的数据集
4.文章提出了一种从点云开始一步到位的模型
刚开始阅读的时候这里我是没有读懂的,(阅读全文之后明白)这个特点应该指的是,相比于之前的模型还需要额外进行结构的提取,这里只需要从点云开始就能获得最终的效果。

介绍总结:
1.简单易学,我理解的原因是不需要使用对于点图的专有的人工处理。
2.同时也要注意到点云是一个点集,因为其排列的不变性,所以要在计算的时候做出一定的均衡。
3.还需要考虑刚性运动的进一步不变性。
这里提出的刚体不变性是争对于点的特征
4.文章提出的PointNet可以解决三种常见问题:1.整张图片一个大标签 2.图片的每个像素有一个标签 3.图片的每一部分信息有一个标签。
我理解这个大约可以解决大部分问题,例如:现在比较火的图像识别、语义分割。
5.PointNet结构很简单,因为在一开始的时候这个系统中的每个点是单独运算的。
刚读到这里的时候我觉得什么迷惑,应该是使用了某种非线性操作来完成操作的,因为线性操作完全可以用一个n*n的线性层,那样效果更好。
读完全文之后,我理解到这里平等是真的平等,一开始的操作都是针对一个点坐标在进行处理,并没有牵涉到其他点坐标。
6.我们的基础输入当中,只需要(x,y,z)三个输入,更多维度的信息都是网络自动帮我们填充的。
7.PointNet的前几层可以提取出一些特殊的点,这些点富含信息,并且可以依据提取出他的原因对其进行编码。并且试验表明这些点往往恰好集中在物体的边界上面,同样的这也可以在理论上解释为什么网络有较好的抗干扰能力。
8.最后使用一个全连接层(fully connected layers)来输出结果
9.支持刚性变换和仿射变换,所以我们可以做一些预处理
我理解一下这里就是说我们可以提前使用仿射变换对我们收集的不太好的数据进行一定的处理,或者也许我们也可以用这个特性做一些数据增强,来解决我们实际应用当中收集的数据效果不好的情况。
10.论文说试验证明了这个PointNet是可以拟合任何连续的set函数。
11.这个网络比其他的网络训练的速度快、精确度要好。
我觉得这个效果快的主要原因是这个东西结构比较简单,参数可能比较少,所以速度快。

Problem Statement 问题描述
1.输入点的情况:这里所有的点都是三维坐标,也就是(x,y,z)
2.对象识别输入图片的情况:可以是直接传进来一张图片,也可能是之前用对象追踪等的东西提前分割的图片
3.语义分割输入图片的情况:可能是整个对象,也可能是整个环境的一小部分,这个小部分包含一个对象
4.对象识别输出的情况:输出k个类的分数,我理解这个分数应该是softmax层的输出,也就是实际上使各个分类的概率。
5.语义分割的输出情况:输出的是m*n也就是m个点,每个点n个输出,应该每个点的输出都是一个softmax,也就是各个分类的概率。

Deep Learning on Point Sets
1.点云的特点
无序性:也就是说这个点的先后顺序和实际上是什么无关
旋转无关性:给予一个点云一个旋转,所有的x , y , z 坐标都变了,但是代表的还是同一个物体
因此对于普通的PointNet,如果先后输入同一个但是经过不同旋转角度的物体,它可能不能很好地将其识别出来。在论文中的方法是新引入了一个T-Net网络去学习点云的旋转,将物体校准,剩下来的PointNet只需要对校准后的物体进行分类或者分割即可。
我理解这里是作了这里特殊需要的数据增强,这里需要传入一定量增强之后的数据,因此文章提出来一种新的网络T-Net,因此对于普通的PointNet,如果先后输入同一个但是经过不同旋转角度的物体,它可能不能很好地将其识别出来。在论文中的方法是新引入了一个T-Net网络去学习点云的旋转,将物体校准,剩下来的PointNet只需要对校准后的物体进行分类或者分割即可。
所谓的T-Net也就是下面这个原来的图片中所展示的部分。
在这里插入图片描述

由图可以看出,由于点云的旋转非常的简单,只需要对一个N × D 的点云矩阵乘以一个D × D的旋转矩阵即可,因此对输入点云学习一个3 × 3 的矩阵,即可将其矫正;我们可以看到这样的话,其实是对原来的物体进行一个仿射变换,也就是原来的情况将被仿射变换一次。
在这里插入图片描述

先把每个点单独映射到一个单独的更高维的空间,在这个更高维的空间再做对称性操作,因为这个更高维的空间可能是一个冗余的空间,通过冗余可以避免信息的丢失,在对称操作后依然可以保持点云信息,再通过另外一个网络γ消化信息从而得到点云的特征。其中讲h赋予每一个点,每一个点都做从低维到高维的映射。(mlp:多层感知器;max:max pooling为最大池化函数作为对称函数)
在这里插入图片描述

第一个部分:
下面这个部分是为了旋转原来的图片,将这个图片转的正过来,其实这里不一定真的可以旋转过来,这里只是让其向着正确的方向靠拢。输入n个点,且每个点作为三维具有x,y,z.
在这里插入图片描述

点云是一种非常适合做几何变换的数据,在点云中做矩阵的乘法。上图中做一个输入的几何变化,通过一个变化网络生成一个3×3的矩阵做变换。
第二个部分:
这里我们是使用线性全连接层来扩大我们的特征,主要是防止之后最大池化的时候损失的太多
在这里插入图片描述

上图我们用mlp将每个点投影到64维的高维空间,然后在64维的高维空间中再次做变换到64维的高维空间.
第三个部分
这里主要是对新得到的高纬度的信息再进行一次矫正。再尝试将其转正。
在这里插入图片描述

第四个部分
这个部分,就是对每个点坐标,再进行一次扩展,让每个点的维度更高。还是使用线性全连接层。
在这里插入图片描述

然后再次利用mlp(多层感知器)将64维的高维空间映射到1024维的更高维空间
第五个部分
这里就是直接得到了一个全局的特征集合,之后再接上一个网络,让输出顺利完成。
在这里插入图片描述

然后在这1024的高维空间中可以做对称性的操作,由最大池化函数实现,从而得到global feature全局特征,然后继续处理全局特征通过级联的全连接网络最后生成k个output scores的分类。
以上对于点云进行的是点云的分类网

如何对点云进行分割呢?
分割其实可以定义为对每一个点的分类问题,若知道对于每一个点的分类问题,则可以进行对点的分割。当然通过全局坐标无法对每一个点进行分割,我们可以把局部的特征,单个点的特征和全局的特征结合起来,实现分割的功能。我们可以把全局的特征进行重复的,相当于单个点在全局特征进行n次检索。比如单个点在全局中处于哪个位置,那么单个点就处于是哪个类。

部分综述
点集的特点总结:
1.无序性性,点集是一个点的集合,本身应当是没有顺序的,但是我们的输入总是有一个先后顺序。
2.点之间的相互作用,点集中的每个点会受到周边的点的影响,所以我们需要让点可以和周围的点融合,我觉得这个大约是卷积的意思,只是这里的点不是有序的结构,所以我们不能使用卷积。
3.变换下的不变性:大约就是说这个图我们翻转或是一定情况下的仿射,图的类别不应当发生变化,每个点的语义分割也不应该发生变化。
模型结构总结:
介绍了模型的三个组成部分:
1.最大池化层作为一个对称函数来聚合所有点的信息,(这个最大池化层很好找)其实这里最大池化层才是全文模型的核心。
2.一个局部和全局的信息组合结构,加入了一个全连接层组对其进行处理,通过训练为加入的部分选定了一个合适的权重。
在这里插入图片描述

3.以及两个联合对齐网络来对齐输入点和点特征。(这里指的是T-Net)
在这里插入图片描述

对称函数的总结
文章提出来三种方法,但是比较起来还是最后这个好用
1)排列这个顺序?
因为排序之后相当于原先没有顺序的东西你给他们搞了个顺序,有了顺序他们就需要使用不同的参数进行处理,这样就增加了参数的个数。
我觉得这个可以这样理解,首先我们要排序一个点集,那么我们必须对每个点对应一个不同的数值,我们不难证明高维度的点的个数是一定大于数轴上点的个数的,所以将任意的三维空间的点直接映射到一维空间上(也就是映射到一个数轴上)显然不成立。
2)使用有序RNN,之后再增强数据,这样做好不好?这个过程会让数据集扩大阶乘倍,需要的计算量也将飞速上升,但是,最后的结果并不是提取了有用的信息,只是让RNN变得对于所有输入平衡了。
但是这里存在两个问题:
1.RNN自身很难做到对数据顺序的安全无感
2.RNN的使用范围有限
3)接下来文章又在理论上证明了自己模型的合理性。就是证明使用这种对称函数可以拟合任意的集合上的函数。

补充:
在这里插入图片描述

由图所示,当有50%的点丢失的时候,PointNet的精度仅仅受到2%的影响,VoxNet的精度丢失超过20%。由该图提出疑问为什么PointNet对数据的丢失具有鲁棒性?
由于原始点云构成三维形状,因为我们如上文有一个最大池化的操作,因为有些点的特征非常小,所以在经过最大池化后对全局特征并没有做任何贡献。那除过这些点把剩余的点称为关键点,将关键点保存之后,就可以把形状分类正确。所以这一部分解释了PointNet对数据的丢失不是很敏感即具有鲁棒性。

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值