PointNet系列论文阅读之一:PointNet基础网络

本文深入解析PointNet论文,介绍处理无序点云数据的PointNet网络,该网络利用最大池化层处理无序性,通过T-net保持刚性变换不变性,适用于3D物体分类、分割任务。理论分析和实验表明,PointNet在网络结构设计和鲁棒性方面表现出色。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PointNet 论文解读

文章:C. R. Qi, H. Su, K. Mo, and L. J. Guibas. Pointnet: Deep learning on point sets for 3d classification and
segmentation. arXiv preprint arXiv:1612.00593, 2016.

作者:Charles R. Qi, Hao Su, Kaichun Mo, Leonidas J. Guibas

链接:https://arxiv.org/abs/1612.00593

本文版权声明:copyright@phosphenesvision

参考资料:https://blog.youkuaiyun.com/qq_15332903/article/details/80224387

本文为PointNet系列第一篇论文,进阶篇PointNet++参见链接:https://blog.youkuaiyun.com/phosphenesvision/article/details/106724667,

PointNet 大致思想

  1. 点云的两个特征:无序性,刚性变换不变性。详见4.1节。
  2. 分别针对于这两个特性:作者提出来了PointNet网络,亮点就是保持了点云的这两个特性。详见4.2.1节,4.2.3节
  3. PointNet与之前的网络的区别主要是:以前的网路在处理点云数据的时候,需要将点云数据做一个变换(变换成体素信息),而本文提出了上述两个亮点,可以直接处理点云数据,而不需要将之转换成体素。

PointNet 详细阅读

0 摘要
  1. 点云这种数据格式很有用但是不规则,不规则是一个很大的区别点,不规则也可以理解成无序。
  2. 之前的研究主要是把点云数据转换成3D的图像体素信息,但是这种方法会遗漏一些内容,会使数据变得很繁杂,原文用的是voluminous这个单词。
  3. 本文提出了一种新的神经网络,PointNet,直接运用点云数据,而且保证了点云数据的操作不变性(permutation invariance),这种网络高效且有效,可以用在图像分类,局部分割和语义分割领域。
    PN-F1
1 介绍
  1. 回顾以前的工作:在点云检测发展的初期,还是更多的去套用CNN的模板,但是普通的CNN的模板对于输入数据有严格的规定,必须要有相同的形式,相同的大小等等,然而点云数据的特点就是不规则,一个很自然的想法就是把这些不规则的点云变换成规则的3D体素,但是这种做法的缺点就是数据会因此变得更为繁杂,而且丢失一些信息和特性。
  2. 点云数据的特征:在对点云数据的处理过程中,要特别注意两个特征,一个是不规则无序性,第二个是操作不变性。本文提出的PointNet网络也尊重了这些特性,整个神经网络的输入是点云图,输出是点云图中每个点的类别标签或者语义标签。
  3. 网络的整体结构:我们的网络整体上很简单,在网络的前几层,每一个点都是被单独处理的,然后网络会学习一些感兴趣的点,并且将它们编码,最后几层的全连接层再将这些信息综合起来作为全局特征。每一个点是以一个三维的坐标来表示的,如果有新的特征可以再添加坐标维度。
  4. 网络的一些细节:①网络对于刚性或者非刚性的一些物体都能处理的很好;②数据的预处理,训练了一个空间转换网络规范化数据。
  5. 对网络的一些分析:本文还对网络进行了理论分析和实验分析,这里暂且列出分析结果,①该网络可以近似于任何连续函数;②该网络可以通过一组稀疏的关键点来进行成功的分类预测;③针对于输入点的小型扰动,对于离群点,或者对于缺失点都具有很强的鲁棒性;④是速度快;⑤是精度高。
  6. 本文的贡献:①提出了一种新型的网络PointNet,可以处理无序点云数据;②可以完成分类任务,局部分割任务和语义分割任务;③对于网络进行了理论分析和实验分析;④展示出来了网络学到的特征,对网络给出了具象的解释。
2 相关工作
  1. 关于点云的特征:点云两个重要的特征,无序性和不变性。对于一个分类任务或者分割任务来说,找到最优的点云数据特征表示并不简单,以前的许多特征都是针对于某个特定的任务而手工提取的,我们的工作对此做了一个改进。
  2. 用深度学习处理3D数据:①Volumetric CNNs:第一个提出来的,但是数据稀疏计算能力不强导致该种方法的像素精确度并不是很好,②FPNN and Vote3D:解决了稀疏性问题,但是还有稀疏性问题,处理起来大的点云依然捉襟见肘,③Multiview CNNs:转化3D的点云图至2D的平面图,然后用之前的2D卷积神经网络去对点云图操作,这种方法在shape classification分类问题和retrieval task检索问题上有很好的效果,但是拓展到scene understanding场景理解,point classification点分类问题和shape completion形状恢复问题上的效果并不尽如人意,④最近的工作,Spectral CNNs:对mesh应用光谱CNN,但是只能用在流形mesh上面比如有机对象,对于一些非等距的物体比如家具就不是很适合,⑤Feature-based DNNs:第一次把3D的数据特征格式转化成一个向量,然后用一个全连接层对其分类,但是我们认为这种方法受限于这些特征数据的表达力度。
  3. 用深度学习处理无序数据:首先我们要处理的点云数据集是无序的向量集,这一块大家关注的比较少,这一块举一个例子,Oriol Vinyals用到了一种读写型网络来处理数据,可以把无序的数据进行排序编号,然而这个网络只能处理普通的一般的数据集,用于自然语言处理,而对于点云图这种带有地理信息的数据集而无能为力。
3 问题陈述

首先来描述一下本文的网络的工作流程,网络的输入是未经处理过的点云数据,很多个点组成了一个集合输入到网络中,每个点由特征向量来表示,特征向量中包含该点的xyz坐标,颜色等相关信息,但是一般我们只考虑xyz坐标信息,忽略其他信息。

对于一个分类网络来说,输入就是直接输入这些未经处理的点云数据集,输出是一个k维的score向量,表示该点云集是每一类数据的可能性和概率。对于分割任务,又可以分成局部分割和全景分割,局部分割的意思是对一个物体进行分类,分类出它们的各个部位,而对于全景分割,通常是给出一个场景,分割出该场景中的每一类物体,但是这两种情况的输出都是一样的,输出是一个n * m的矩阵,分别来表示n个点中的m个类别的归属结果。

4 对于点集的深度学习
4.1点集的属性

三个属性:无序性,点间交互性,刚性变换(transformation)不变性,我认为第二个属性和第三个属性其实是可以合并的,刚性变换不变性也是相对于点和周围点之间的属性,也算是点与点的交互性的范围,而刚性变换不变性又是点间交互性最主要的一个特性,因此个人认为两者可以合并。

  1. 无序性:这是点云相当重要的一个性质,什么意思呢,借用引用链接的解释,无序性的定义是说,点云本质上是一长串点(nx3矩阵,其中n是点数)。在几何上,点的顺序不影响它在空间中对整体形状的表示,例如图中,相同的点云可以由两个完全不同的矩阵表示,但是在正常的输入之中,如果再惨杂进无序性这个特点,那么数据就会受到影响了,如果一个点云图中有N个点,那么可能产生的输入就有N!种,因此我们希望得到的效果如下图右边:N代表点云个数,D代表每个点的特征维度。不论点云顺序怎样,希望得到相同的特征提取结果。具体的实现策略可以看4.2.1节。PN-A1

  2. 点间交互性:点云图中的点存在于一个距离测量空间中,在这个空间中,所有的点都不是孤立的,而是可以与周围的点形成一个局部区域,这个局部区域是有意义的,这也就要求我们的网络能够提取出相应的局部特征。

    在这里稍微提一下,虽然本文中提到了局部区域,但是点的表示只是用一个三维坐标来表示的,这根本无法如文中所说可以捕捉局部特征,因此本文中提出的PointNet网络并没有很好的提取局部特征的能力,而它的升级版PointNet++则着重于解决这个问题,具体参看PN++的文章。

  3. 刚性变换不变性(invariance under transformations):这一个特性很好理解,就是说对于这些点集对于一些刚性变换来说,比如旋转和平移,虽然点的位置和坐标会发生变化,但是内在特性应该是保持不变的,比如类别信息和语义信息。具体的实现策略可以参考4.2.3小节。

4.2 网络结构

根据结构图,首先来看网络来分析该网络,然后再来补充细节。

PN-F2

  1. 输入是一个n * 3的点集,n代表点的个数,3代表每个点的特征,该网络只用到了坐标信息,因此是xyz三维特征。
  2. 第一次输入变换,对空间点云进行调整,旋转出一个更容易用于分类或者分割的角度,比如把物体转到正面,这一步操作就涉及到了点云的第三个特性,刚性变换不变性,具体的操作方法可以参考后面的细节补充。
  3. 接下来是一个MLP去对特征进行学习,输出变成n * 64。
  4. 第二次输入变换,对提取出的64维特征进行对齐,即在特征层面对点云进行变换,同样涉及到了刚性变换不变性。
  5. 接下来仍然是特征提取,输出变成n * 1024。
  6. 然后是一个最大池化的操作,提取出点云集全局特征,该操作与点云的无序性相呼应,具体操作方法可参考4.2.1节。
  7. 对于分类网络来说,提取完全局特征后,就可以训练一个MLP得到最后的输出了。
  8. 对于分割网络来说,全局特征还要与前面的特征进行融合,详细可见4.2.2节,再通过两个MLP的特征提取,才能得到最后的输出结果。
  9. 总体来说,该网络的骨架网络包括两次刚性变换,两次特征提取,一次无序性最大池化平衡策略,对于分类网络来说,再进行一次MLP特征提取即可得到输出结果,而对于分割网络来说,还需要一次跳跃结构的辅助和两次MLP特征提取才可以得到最终的结果。
4.2.1 针对于点集无序性的平衡策略

在前面已经阐述了无序性的定义,网络结构需要处理这种无序性,也就是无论输入点集中点的顺序如何,输出结果应该是相同的,本文中本小节阐述了三种相应的方法,分别是①将输入点集按照一个规范的顺序进行排序;②把输入当成一个序列,按照训练RNN的方法来训练网络,但是需要做一个数据增强,提前将所有可能的刚性变换全部考虑到;③设计一个平衡函数,将所有的点通过这个平衡函数结合起来。

本文采取的是第三种算法,因此前两种算法不再详细介绍,值得注意的是平衡函数有很多种,加法运算 + 和乘法运算 * 都可以看作是一个平衡函数,我们设计的平衡函数需要满足的要求是如下这个公式
f({ x1,x2,...,xn})≈g(h(x1),h(x2),...,h(xn)) f ( \{x_1, x_2, ..., x_n\}) \approx g(h(x_1), h(x_2), ..., h(x_n)) f({ x1,x2,...,xn})g(h(x1),h(x2),...,h(xn))
本文的想法是用g函数去近似f函数,f函数是网络的原函数,是定义在初始点云集合上的,g函数是是一个平衡函数,是定义在初始点云集合提取的特征上的,h函数是一个多层感知器网络MLP,用于对初始点云集合提取特征。

具象来说,选取的平衡策略函数g,特征提取函数h等等这些函数的组合应该是要逼近网络的预期效果f。

而本文选取的g函数就是一个简单的最大池化层函数,回顾刚才的网络模型,输入进最大池化层的是一个n * 1024的张量,而输出的则是1 * 1024的张量,这便是最大池化层的效果。一个更为形象的图是这样的:PN-A2

尽管最大池化的平衡策略看起来很简单,但是理论分析4.3节和实验结果5.2.1节都表明了该函数的有效性和高效性。

4.2.2 分割任务中的跳跃结构

本文的PointNet网络的骨架结构输出是一个经过最大池化的一维向量,这个向量可以被看作是输入点云集的全局特征,对于分类任务来讲,再去训练一个SVM分类器或者MLP分类器即可得到输出结果,而分割任务则不是这么简单,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值