PointNet++ 论文解析
文章:Charles Ruizhongtai Qi, Li Yi, Hao Su, and Leonidas J. Guibas: Pointnet++: Deep hierarchical feature learning on
point sets in a metric space. In Advances in Neural Information Processing Systems, pages 5099–5108, 2017.
作者:Charles R. Qi, Li Yi, Hao Su, Leonidas J. Guibas
链接:https://arxiv.org/abs/1706.02413
本文版权声明:copyright@phosphenesvision
本文为PointNet的第二篇网络,回顾之前的网络PointNet可以参看链接https://blog.youkuaiyun.com/phosphenesvision/article/details/106724377
PointNet++ 大致思想
一共是四个重要的点
第一个点PointNet的不足指出:不能捕捉局部信息,以至于鲁棒性和泛化性较差,借鉴CNN逐层提取特征的思想,重新改进提出了PN的升级版PointNet++。具体可参看3.1节。
第二个点是PointNet++的基本结构,①第一对点云集进行采样,生成一个又一个的小的局部区域;②第二是进行重新的组合,重新组合后的点云集就拥有了与周围点的交互信息;③第三个是特征提取层,对集合好的点集进行特征提取,输出特征。具体可参看3.2节。
第三点是对PointNet++的补充,针对于每一个局部区域内可能存在点稀疏和点稠密的情况,因此各个区域大小的选取也是不尽相同的,本文提出了MSG和MRG两种算法来解决这个问题,具体可参看3.3节。
第四点是对于分割问题,输出点云和输入点云的大小不一致,这个时候需要引入反卷积结构,并且用一个跳跃结构综合特征提取前和特征提取后的信息,具体可参看3.4节。
PointNet++ 详细阅读
以下的部分不是对于论文的简单翻译,而是在理解的基础上对论文各部分又做的局部性总结,个人认为第二部分和第三部分是重点。
0 摘要
- 以前的PointNet有劣势:劣势就是PointNet不能捕获局部信息,因此在识别细粒度模式时表现较差,而且泛化能力也比较差。
- 因此设计了PointNet++,PointNet的大致结构是一种层次神经网络,迭代的应用PointNet网络。
- 该网络有两个特点,第一个特点就是为了解决不能捕获局部信息的问题,方法就是应用了度量空间距离(metric space distance)。
- 第二个特点是针对于另外一个问题:很多点集是在不同密度上进行采样,所以如果训练集是在相同密度上进行采样的话,效果就会显著下降。解决的办法是提出了一个集合学习层(set learning layers),这个学习层可以融合不同密度规模上的特征。
1 介绍
-
第一段,介绍了一下点集的一些相关情况:点集是欧几里得空间上的一些点的集合,点集应该至少满足两个特性,①是对于旋转或其他操作(permutation)的不变性;②是用到距离策略,可以知道周围点的一些特性,比如密度特性。这两个特性在PointNet中都提到了,不是什么新的东西。
-
第二段,回顾PointNet:PN的基本的思想是直接对点云数据进行处理,通过网络学习点云中每一个点的空间特征,最后再把所有点的空间特征合起来组成全局特征。这样的做法弊端是这个网络不能捕捉局部的信息,局部信息可以理解为与周围点的交互。弊端在摘要中也说了,第一个处理细粒度的点云时效果较差,第二个是泛化能力较差。
-
第二段后半部分,回顾CNN中是怎么处理这个问题的:CNN是采用多种像素的层次网络来处理这个问题的,multi-resolution hierarchy。比较低级的神经元层的感受野更小,而比较高级的神经元层的感受野比较大。
-
第三段,介绍PN++网络的主要思想:收到了层次网络的启发,PN++也是用的层次网络,实现过程:①首先根据距离策略把整个点集的输入分成一个个局部区域,这些区域之间有重叠,且由于这些区域有重叠,所以在后面的处理过程中,权重也是共享的;②然后从这些局部区域中去提取局部特征;③再将所有的局部特征整合组成全局特征。
-
第四段和第五段和第六段,再细细分析PN++网络:刚才的三个步骤中第三个步骤比较好理解,但是其他两个步骤都有些问题,①如何把点集分成一个个局部区域,阐述第一个问题,如何分割一个个局部区域,这些局部区域用两个参数来表示,质心位置(centroid location)和大小(scale),质心的选取是用最远点采样的方法(furtest point sampling – FPS),这些局部区域的感受野是不一样的,它们受到输入大小和算法策略的影响,这种感受野的设置使网络更有效且更高效;关于大小的选取,不能盲目的去模仿图像数据,图像数据中的局部区域的大小其实就可以理解成滤波器的大小,一般是越小越好,而点云数据与之相反,越大越好;
可以展开来说明一下这个相反性的问题,在图像的数据中,像素点并不涉及一个密度不同的问题,就是说所有的像素都是均匀的落在图像格子中的(grid),所以有研究证明滤波器越小,结果越精确,而在点云数据中则需要考虑这个密度的问题,有的地方点特别多,有的地方点特别少,如果采用比较小的scale的话,可能捕捉不到足够的信息,从而对后续网络的处理产生很大的困扰。
参考论文:K. Simonyan and A. Zisserman. Very deep convolutional networks for large-scale image recognition.
arXiv preprint arXiv:1409.1556, 2014. https://arxiv.org/abs/1409.1556参考图片:同一场景的RGB图和点云图

②如何从局部区域提取局部特征,用PointNet去提取局部特征,PN在提取局部特征时具有很多优点,比如处理无序点集有效,鲁棒性较强等等。因此,PN其实是被PN++当成了网络的一个block,迭代处理所有的局部区域。
-
第七段,本文的主要贡献:提出了一种提取局部特征的方法,训练时用到了dropout,最后的实验表明,该网络性能较好,efficient,effective and robust,且超越了目前最好的网络。
2 问题描述
假设χ=(M,d)\chi = (M, d)χ=(M,d)是一个离散度量空间(discrete metric space),并且就把这个当成是网络的输入,其中M是普通的欧几里得空间上的点云集,包含很多个点,每个点有自己的特征向量,d是该空间的距离度量(distance metric)。
我们要做的就是通过网络学到一个函数f,这个f可以是一个分类任务的函数,对整个输入点云数据预测一个输出种类;也可以是一个分割人物的函数,对输入点集中的每一个点都预测一个输出种类。
3 方法论
PointNet++可以看成是PointNet的延申
3.1 回顾PointNet
假定输入点集为{ x1,x2,...,xn}\{ x_1, x_2, ... , x_n\}{ x1,x2,...,xn},每一个x都是欧几里得空间里的一个点,PointNet要完成的事情就是求得一个函数f,把点集{ x1,x2,...,xn}\{ x_1, x_2, ... , x_n\}{ x1,x2,...,xn}变成一行向量,也就是提取出整个点集的特征来,其中f的学习参考公式:f(x1,x2,...,xn)=γ(maxi=1,2,...,n{ h(xi)})f(x_1, x_2, ... , x_n) = \gamma(\max _{i=1,2,...,n} \{ h(x_i)\})f(x1,x2,...,xn)=γ

PointNet++是PointNet的升级版,旨在解决其无法捕捉局部信息的问题。通过采样、重组和特征提取,PointNet++能处理不同密度的点云,提高鲁棒性和泛化性。文章详细解读了PointNet++的网络结构、局部区域处理策略及分割任务中的特征提取策略,展示了其在点云分析领域的优势。
最低0.47元/天 解锁文章
156

被折叠的 条评论
为什么被折叠?



