论文地址:https://link.zhihu.com/?target=https%3A//arxiv.org/pdf/1801.07791.pdf
代码:https://github.com/yangyanli/PointCNN
摘要
- 我们提出了一个简单而通用的点云特征学习框架。
- CNN成功的关键是卷积算子,它能够利用网格形式密集表示的数据中的局部相关性(如图像)。
- 然而,点云是不规则的,无序的,因此点对点的特征与点的直接卷积将导致形状信息丢失,还会因为输入点顺序不一致而产生不同的输出。
- 为了解决这些问题,我们尝试从输入点学习X-变换,然后使用它来加权与排列输入点的特征。这种操作可以把输入点的形状信息编码到特征中,同时把输入特征的顺序归一化到某种潜在的一致的模式。
- 这种方法是将典型的针对规则域数据的CNN推广到能够处理点云这种非规则无序数据的一种尝试,因此被称为PointCNN。
- 实验表明,PointCNN在多种具有挑战性的基准数据集和任务上达到了与最先进方法相当或更好的性能。
一、2D卷积应用在点云上存在的问题
空间-局部关联 是各种类型数据的普遍属性,它独立于数据表示。对于在规则域中表示的数据,如图像,卷积运算被证明在利用相关性作为CNNs在各种任务中成功的关键因素方面是有效的。然而,对于不规则和无序的点云形式表示的数据,对卷积算子不适合利用数据中的空间-局部相关性。


我们将在图1中说明在点云上应用卷积的问题和挑战。在图像中数据是结构化存储的。直接对图像应用卷积核 就能从这种二维空间结构中获取信息。而点云数据是无序集,如果直接使用卷积会出现(1a)中ii,iii,iv的情况。
上图中的ii,iii,每个点可以看作是点云,1234表示采集到的点云数据存储中的顺序,ii,iii中的数据虽然具有相同的顺序,ii中的feature abcd和iii中的feature abcd排列顺序一模一样。但是它们的形状信息不一样,那么就需要网络,可以区分出它们两个的不同;另外一种情况是如图iii和iv,iii中的feature排列是abcd,图iv的feature排列是cabd,虽然iii和iv中feature的排列顺序不同,但是它们拥有相同的形状信息以及相同的feature,那么就要求网络对于特定输入点云,可以得到与输入顺序无关的feature。
由于卷积操作的性质,在所有情况下fii与fiii的计算结果是相等的,而fiii与fiv的计算结果在大多数情况是不相等的。很显然,直接卷积会导致形状信息的变形并且使卷积结果对于顺序敏感。
二、解决的方法
2.1 idea

为了解决这个问题,本文作者的思路是让网络去学一个转置矩阵X,该矩阵能对某个特定顺序的输入进行处理,得到一个与顺序无关的feature。输入数据先经过X变换矩阵处理,再执行Convolution的操作。比如上图中iii,它的feature排列顺序是abcd,经过和转置矩阵X相乘之后,得到了某一种顺序能和图iv所示的cabd这种排列顺序相等。


2.2 X-conv算子


2、用一个MLPδ网络,将邻居点的位置信息P’转化为feature信息Fδ;
3、将转化得到的feature Fδ,与邻居点自己的feature F拼接,得到新的feature F*;
4、用一个MLP网络计算出特定输入顺序对应的X矩阵;
5、用矩阵X对特定顺序的feature F*矩阵进行处理,得到FX;
6、执行Convolution,得到p的特征。
算法也可以用如下公式来表达:


2.3 分层卷积

三、实验
3.1分类和分割



3.2消融实验、可视化和模型复杂度


总结
1、卷积操作的关键,是其能够很好的提取规则数据(如图片)的空间和局部信息。由于点云的无序性和不规则性,使得如果直接用普通卷积处理点云,将无法考虑到点云的形状信息以及点云顺序的差异。作者提出一种X-transformation先对点云数据进行处理,使其实现数据的“规则化”,然后利用卷积操作,对点云进行处理。
2、X-transformation有两个作用:
- 增强输入特征和点的联系(X-transformation和输入点特征都有相对局部坐标特征,消除了由于整体的变化导致局部变化);
- 将无序点云重新排列成隐含空间的有序点云(该隐式空间并不知道是什么样的)
3、图像CNN中的卷积层和PointCNN中的X-Conv层仅在两个方面有所不同:
- 提取局部区域的方式(图像CNN中的K×K区域 与 PointCNN中代表点周围的K个邻近点)
- 对于局部区域的信息学习方式(图像CNN的Conv 与PointCNN中的X-Conv)。
仍存在的问题
1、理想状态下,作者是希望经过X变换,点云就变得有序,这样就可以和图像一样使用卷积,同时学习周围领域的特征。但一个矩阵适应N!中置换,这应该是不现实,本文的思路和PointNet中的T-Net的思路类似,都是希望先通过变换在一定程度上解决无序的问题。
2、PointCNN采取了最简单也是最直接的方式来学习X-Conv——用MLP学习变换矩阵。虽然一般的矩阵可以用来实现权值和顺序变换,但是这种方法是否是实现目标的最简形式仍然是不得而知的。
参考:https://zhuanlan.zhihu.com/p/68920441
https://zhuanlan.zhihu.com/p/96067255
https://www.sohu.com/a/220248571_473283
https://blog.csdn.net/weixin_30950607/article/details/95408148?utm_medium=distribute.pc_relevant.none-task-blog-title-2&spm=1001.2101.3001.4242