PointNet<论文>

图1

PointNet的应用

1.点云图像的分类(整片点云是什么物体)

2.点云图像的部件分割(整片点云所代表的物体能拆分的结构)

3.点云图像的语义分割(将三维点云环境中不同的物体用不同的颜色区分开)

Robotic Grasping Detection with PointNet (Polycam实验+讲解)

补充

PointNet是一个统一的模型,直接将点云作为输入,同时输出整个输入的类标签或者输入的的每个点块/部分的标签。网络最终的全连接层把这些学习到的最优值聚合到如上所述的整个形状的全局描述符(形状分类)上或者用于预测每个点标签(形状分割)。

点云数据:直接使用无序点集作为输入。点云表示为一组3D点,其中每个点的Pi是其坐标(x , y , z)的向量加上额外的特征通道,例如颜色、法线等,除非另有说明,我们只使用坐标(x , y , z)作为我们点的通道。(注:有些点云数据可能是6个值, 除了三个坐标外, 还有nx,ny,nz构成法向量。)那么由N个点构成的一个点云数据其实就是一个Nx3的数组

我们的输入格式很容易应用刚性或者仿射变换,因为每个点都是独立变换的。因此我们能够增加一个依赖数据的空间变换网络,该网络会在PointNet处理数据前对数据进行规范化,以便进一步改善结果。

我们工作的主要贡献如下:

  • 我们设计了一个适用于处理3D无序点集的新型深度网络模型
  • 我们展示了如何训练这样的网络模型来执行3D形状分类、形状部分分割和场景语义分析任务
  • 我们对该方法的稳定性和效率进行了深入的验证和理论分析
  • 我们演示了网络中所选择神经元计算出的3D特征,并对其性能进行了直观的解释

我们的网络有三个关键模块:

  • 最大池层作为对称函数用于聚类所有点的信息
  • 组合局部信息和全局信息的结构
  • 两个对齐输入点和点的特征的联合对齐网络

点集\mathbb{R}^{n}​的深度学习

我们网络的构架的灵感来自\mathbb{R}^{n}​中的点集的属性。

\mathbb{R}^{n}​中的点集的属性 

我们的输入是来自欧式空间的点的子集。它有三个主要属性:

  1. 无序性:点云是一组没有特定顺序的点。点与点之间没有严格的顺序,如将两个点交换之后仍然表示同一个点云。【对称函数设计用于表征】
  2. 点之间的相互作用:虽然点云的点是离散的,但是却可以共同组成物体或者环境的轮廓。这意味着这些点不是孤立的,而且相邻的点形成一个具有意义的子集。因此模型需要能够捕获附近点的局部结构,以及局部结构之间组合的相互作用。【局部全局特征结合】
  3. 转换的不变性:对于几何对象,点集学习到的表示应该对某些变换具有不变性。例如,所有的旋转点和平移点都不能修改全局点云的类别或者点的分割。点云进行刚性变换(旋转平移)后,再进行输入,输出的分类或者是分割结果不变。【alignment network】

 1 三维数据

在这里插入图片描述

​三维数据的表述形式一般分为四种:

  1. 点云:由N个D维的点组成,当D = 3的时候,一般代表着( x , y , z )的坐标,当然也可以包括一些法向量、强度等别的特征。
  2. Mesh:由三角面片和正方形面片组成。
  3. 体素:由三维栅格将物体用0和1表征。
  4. 多角度的RGB图像或者RGB-D图像

2 PoinNet出现以前的点云深度学习模型

在PointNet出现以前,点云上的深度学习模型大致分为三类:

  1. Volumetric CNNs: 是在体素形状上应用3D卷积神经网络的先驱。然而,由于数据的稀疏性和3D卷积的计算成本,体积表示受到其分辨率的限制。————基于3D体素(3D voxel grids)模型:先将点云映射到体素空间上,3D体素数据格式可以直接通过3D卷积进行分类或者分割。但是对于3D体素格式来说任务效果以及计算量是取决于它的分辨率的
  2. Multiview CNNs: 试图将3D点云或形状渲染成2D图像,然后应用2D卷积神经网络对它们进行分类。————说往往会损失一些几何信息,比如遮挡。
  3. Spectral CNNs
  4. Feature-based DNNs: 首先通过提取传统的形状特征将3D数据转换成向量,然后使用全连接网络对形状进行分类。——————利用传统的人工点云特征分类

3 为什么使用点云

  1. 点云更接近于设备的原始表征(即雷达扫描物体直接产生点云)
  2. 点云的表达方式更加简单,一个物体仅用一个N × D 的矩阵表示

综上,点云数据在3D几何表示中作为一种重要的数据格式,它不存在着3D体素以及多视角投影遇到的那些问题。因此这篇文章提出了一种通用的用于处理点云数据的神经网络框架。

在这里插入图片描述

4 点云特性设计网络

好的网络需要根据点云特性来设计特定的网络。点云特性:置换不变性、旋转不变性

置换不变性:点的排序不影响物体的性质

在这里插入图片描述

​当一个N × D 在N的维度上随意的打乱之后,其表述的其实是同一个物体。网络设计就要考虑这一特性。 那么什么函数有这样的属性呢? 比如求max, 求和等等, 这些都是顺序无关的。因此针对点云的置换不变性,其设计的网络必须是一个对称的函数。我们经常看到的SUMMAX等函数其实都是对称函数。因此我们可以利用max函数设计一个很简单的点云网络,如下:

在这里插入图片描述在这里插入图片描述

但是这样的网络有一个问题,就是每个点损失的特征太多了,输出的全局特征仅仅继承了三个坐标轴上最大的那个特征,因此我们不妨先将点云上的每一个点映射到一个高维的空间(例如1024维),目的是使得再次做MAX操作,损失的信息不会那么多。

在这里插入图片描述

 此时我们发现,当我们将点云的每个点先映射到一个冗余的高维空间后,再去进行max的对称函数操作,损失的特征就没那么多了。由此,就可以设计出这PointNet的雏形,称之为PointNet(vanilla)。

要解决点云图像的分类和分割任务就是如何对点云数据进行特征提取:

 如果不进行MLP神经网络进行升维直接进行池化操作提取特征,那么n个点才提取到1个3个维度的特征(2,3,4),然后在进行K分类,似乎很不合理 ,损失特征太多了。所以在进行池化操作前要进行升维,让特征足够多。

如上图公式所示,h函数相当于升维操作,g函数为池化提取特征操作,y函数为分类操作。

我们通过多层感知机来近似h,并通过单个变量函数和最大池函数的组合来近似g 。通过实验发现这表现的很好。通过h的集合,我们可以学到一些f来捕获点集的不同属性

旋转不变性:给予一个点云一个旋转,所有的x , y , z坐标都变了,但是代表的还是同一个物体。

在这里插入图片描述

因此对于普通的PointNet(vanilla),如果先后输入同一个但是经过不同旋转角度的物体,它可能不能很好地将其识别出来。在论文中的方法是新引入了一个T-Net网络去学习点云的旋转,将物体校准,剩下来的PointNet(vanilla)只需要对校准后的物体进行分类或者分割即可。

在这里插入图片描述

由图可以看出,由于点云的旋转非常的简单,只需要对一个N × D 的点云矩阵乘以一个D × D的旋转矩阵即可,因此对输入点云学习一个3 × 3的矩阵,即可将其矫正;同样的将点云映射到K维的冗余空间后,再对K维的点云特征做一次校对,只不过这次校对需要引入一个正则化惩罚项,希望其尽可能接近于一个正交矩阵。

在这里插入图片描述

5 PointNet网络结构

满足了以上两个点云的特性之后,就可以顺理成章的设计出PointNet的网络结构了

在这里插入图片描述

 其中:分类网络设计global feature,分割网络设计point-wise feature

 “mlp”代表多层感知机,括号中的数字是层的大小。Batchnorm用于ReLU的所有层。Dropout层用于分类网络中的最后一个多层感知机。

PointNet由分类网络和分割网络两部分组成。

  • 分类网络以n个点作为输入,应用输入和特征转换,然后通过最大池化来聚合点特征。输出是K个类的分类分数。
  • 分割网络是分类网络的扩展。它连接全局和局部特征,并输出每个点的分数。多层感知器 (MLP)由5个隐藏层组成,神经元大小分别为64,64,64, 128,1024,所有点共享一个MLP副本。————分割任务略复杂一些, 因为要对每个点进行分类, 只有1x1024维的全局特征显然不够, 那么就在max前的阶段提取每个点的特征, 把每个点的特征跟1x1024维的全局特征拼接起来作为特征, 再用MLP对每个点进行分类, 就完成了分割任务。
  • 分类和分割网络中靠近输出的MLP由大小为512,256的两层组成。

PointNet过程:点云数据——MLP升维到1024——在每个维度对所有点进行max操作——最终得到1x1024维度的全局特征。

在这里插入图片描述

1.点云排列无序性

要做到对点云点排列不变性有几种思路:
1.直接将点云中的点以某种顺序输入(比如按照坐标轴从小到大这样)
不这样做的原因:很难找到一种稳定的排序方法
 

2.作为序列去训练一个RNN,即使这个序列是随机排布的,RNN也有能力学习到排布不变性
不这样做的原因:RNN很难处理好成千上万长度的这种输入元素(比如点云)。

3.使用一个简单的对称函数去聚集每个点的信息

这里,对称函数将n个向量作为输入,同时输出一个对输入顺序不变的新向量。左边f是我们的目标,右边g是我们期望设计的对称函数。由上公式可以看出,基本思路就是对各个元素(即点云中的各个点)使用 ℎ分别处理,在送入对称函数 g中处理,以实现排列不变性。在实现中 ℎ 就是MLP,g 就是max pooling

2.Local and Global Information Aggregation

对于分割任务,我们需要point-wise feature

因此分割网络和分类网络设计局部略有不同,分割网络添加了每个点的local和global特征的拼接过程,以此得到同时对局部信息和全局信息感知的point-wise特征,提升表征效果。

3.alignment network 联合对准网络

直接的思路:将所有的输入点集对齐到一个统一的点集空间。

PointNet的做法:如果点云在经历了某些几何变换(eg刚性变换),那么点云的语义标签必须是不变的。因此我们希望点集的学习表示对这些变换是不变的。我们通过T-Ne[T-Net=三层共享的MLP+对称函数max+两层全连接隐藏层和线性层。]t预测仿射变换矩阵,直接预测一个变换矩阵(3*3)来处理输入点的坐标,直接将该变换作用于输入点的坐标。

这个想法可以进一步扩展到特征空间的对齐。我们可以在点的特征上插入另一个对齐网络,并预测特征变换矩阵以对齐来自不同输入点云的特征。然而,特征空间中的变换矩阵比空间变换矩阵的维度高很多,这极大地增加了优化的难度。因此,我们在softmax的训练损失中增加了一个正则化项。我们约束特征变换矩阵接近于正交矩阵。

局部和全局信息聚类

上一节的输出组成了一个向量,这是输入集的全局标签。在计算完全局点云特征向量后,我们将全局特征和每一个点的特征连接起来反馈给每一个点特征。然后我们基于组合的点特征提取新的每个点的特征,这样每个点特征都考虑了局部和全局信息。通过这样的修改,我们的网络能够预测依赖于局部几何和全局语义的每个点数量。

具体来说,对于每一个N × 3的点云输入,网络先通过一个T-Net将其在空间上对齐(旋转到正面),再通过MLP将其映射到64维的空间上,再进行对齐,最后映射到1024维的空间上。这时对于每一个点,都有一个1024维的向量表征,而这样的向量表征对于一个3维的点云明显是冗余的,因此这个时候引入最大池化操作,将1024维所有通道上都只保留最大的那一个,这样得到的1 × 1024 的向量就是N个点云的全局特征

如果做的是分类的问题,直接将这个全局特征再进过MLP去输出每一类的概率即可;但如果是分割问题,由于需要输出的是逐点的类别,因此其将全局特征拼接在了点云64维的逐点特征上,最后通过MLP,输出逐点的分类概率。

6 Theoretical Analysis

①只要神经元足够多,pointnet也可以逼近任意的连续函数,这里也就为pointnet处理各种复杂的3D任务提供了理论支持。

②通过研究是哪些点最大程度激活了神经元的值,论文发现,能够最大程度激活网络的点都是物体的主干点(下图第二行),将其上采样,很容易能得到原始的结构。因此这就是PointNet网络的缺失鲁棒性的来源。只要点云中包括了这些关键点,那么pointnet提取出来的特征就是不变的。当max pooling出来的维度k比较小的时候,k会限制关键点的数量,因为实际关键点的数量不会超过k,此时k越大关键点数量也就越多,模型表现也就越好也更稳定。

在这里插入图片描述

它由Charles R. Qi、Li Yi、Hao Su等人于2017年提出。

PointNet是一种用于处理点云数据的深度学习框架,可以在没有先验知识的情况下直接对点云进行分类、分割等任务。

PointNet的主要思想是将点云看作一个无序点集,然后通过一些操作将其转换为一个向量或矩阵,再输入到全连接神经网络中进行分类或分割等任务。

PointNet的网络结构包括三个主要部分:变换网络、特征提取网络和全连接层。

变换网络是PointNet中的一个可微分操作,主要用于对点云进行归一化和对齐。它包括三个1×1卷积层和一个最大池化层,可以将点云的坐标进行规范化。通过对点云进行这种规范化,可以使得PointNet对于不同的旋转、缩放、平移等变换具有不变性。

特征提取网络是PointNet中的核心组件,它用于提取点云的特征。特征提取网络由若干个共享权重的多层感知器(MLP)组成,每个MLP由两个1×1卷积层和一个全连接层组成。这些MLP可以处理点的坐标和特征向量,并将它们组合成一个全局特征向量。

全连接层是PointNet的最后一层,用于对全局特征向量进行分类或分割等任务。在分类任务中,全连接层使用softmax函数将特征向量映射到类别概率上。在分割任务中,全连接层使用一个1×1卷积层将特征向量映射到每个点的类别上。

总体来说,PointNet的优点是可以对点云进行端到端的处理,不需要手工提取特征或进行数据预处理,具有很好的可扩展性和可应用性。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值