点云深度学习系列二: PointCNN

一、主要思想

从前一层的数据中取K个候选点(p1,p2,...pK),使用MLP(多层感知器)来学习一个K×K 的变换矩阵(X-transformation,X变换)也就是说X=MLP(p1,p2,...pK),然后用它同时对输入特征进行加权和置换,最后对经过变换的特征应用典型卷积。我们称这个过程为X-Conv,它是PointCNN的基本构建模块。

从前一层中选取代表点集的方法,暂时的实现是:

- 对分类问题:随机下采样。

- 对语义分割问题:最远点采样。

二、 与CNN的对比图

 三、X-Conv卷积操作

1.P'←P−p 将点集P变换到以p点为中心的局部坐标系

2.Fδ←MLPδ(P') 逐点应用MLPδ,将P′从R3坐标空间映射到     RCδ特征空间

3.F∗←[Fδ,F] 把Fδ 和F拼接起来,F∗ 是一个 K×(Cδ+C1) 矩阵

4.X←MLP(P') 用MLP学习P′获得K×K的X变换矩阵

5.FX←X×F∗ 应用X变换矩阵加权置换 F∗

6.Fp←Conv(K,FX) 做卷积

首先将点转换到代表点的局部坐标系,然后将每个点升 到Cδ维度,再将提取特征和原来C1个特征融合进行融合。对于转换后的点学习到X变换矩阵,对融合后的特征变换得到FX,再采用卷积处理

四、PointCNN框架

分类任务

在Fig4(a)中,我们展示了一个简单的PointCNN,带有两个X-Conv层,逐渐将输入点(带有或不带有特征)转换为较少的代表点,但每个点都具有更丰富的特征。在第二个X-Conv层之后,只剩下一个代表点,它从前一层的所有点接收信息。

在PointCNN中,我们可以将每个代表点的感受野粗略地定义为比率K / N,其中K是相邻点的数目,N是前一层中的点的数目。通过这个定义,最后一个剩下的点“看到”来自上一层的所有点,因此具有接受域1.0 – 它具有整个形状的全局视图,因此它的特征为形状的语义理解提供了信息。

我们可以在最后一个X -conv层输出的顶部增加一些完全连接的层,然后是用于训练网络的损失。

请注意,Fig4(a)中PointCNN的顶层X-Conv层的训练样本数量迅速下降,使得彻底训练顶层X-Conv层的效率很差。

为了解决这个问题,我们提出了Fig4(b)中的PointCNN,其中更多的代表点被保留在X-Conv层中。但是,我们希望保持网络的深度,同时保持感受野的增长率,使得更深层的代表点“看到”整个形状的越来越大的部分。我们通过将图像CNN中的空洞卷积思想应用到PointCNN中来实现这一目标。我们可以不总是以K个邻近点作为输入,而是从K×D个邻近点对K个输入点进行均匀采样,其中D是膨胀率。在这种情况下,感受野从K/N增加到(K×D)/N,而不增加实际相邻点数量,也不增加内核大小。

在Fig4(b)中的PointCNN的第二个X-Conv层中,使用了膨胀率D = 2,因此剩下的所有四个代表点“看到”整个形状,并且它们都适合做出预测。请注意,通过这种方式,与Fig4(a)的PointCNN相比,我们可以更彻底地训练顶层X-Conv层,因为网络涉及更多的连接。在测试时间内,多个代表点的输出在sof tmax之前进行平均,以稳定预测结果。这种设计非常类似于网络中[Lin et al]的网络。我们的分类任务使用的是密度更高的PointCNN(Fig4(b))。

分割任务

对于分割任务,需要高分辨率逐点输出,这可以通过在Conv-DeConv之后构建PointCNN来实现[Noh et al. 2015]架构,DeConv部分负责将全局信息传播到高分辨率预测中(见Fig4(c))。

请注意,PointCNN分段网络中的“Conv”和“DeConv”都是相同的X-Conv算子。对于“DeConv”图层,与“Conv”图层唯一的区别在于,输出中的点数比输入点中的点数多,但特征通道少。“DeConv”层的更高分辨率点从早期的“Conv”层转发,遵循U-Net的设计[Ronneberger et al.2015年]。

ELU [Clevert et al. 2016]是PointCNN中使用的非线性激活函数,因为我们发现它比ReLU更稳定并且性能更好些。在P′,Fp和FC层输出(除了最后的FC层的输出)上应用Batch Normalization [loffe和Szegedy 2015]以减少内部协变量偏移(Internal covariate shift)。要注意,Batch Normalization不应该应用于MLPδ和MLP,因为F∗和X,特别是X,对于特定代表点来说应该是的相当具体的。对于算法1第6行的Conv,可用分离卷积(Separable convolution )替代传统卷积来减少参数数量和计算量。在PointCNN的训练中,我们使用ADAM优化器,初始学习率为0.01。

在最后完全连接的层之前施加Dropout以减少过拟合。我们还采用了Qi等人的“子体积监督(Subvolume supervision)”理念来解决过拟合问题。在最后的X-Conv层中,感受野 被设置为小于1,使得最后的X-Conv层中的代表点仅“看到”部分信息。在训练时促使网络更加深入了解局部信息,并在测试时表现更好。

在本文中,PointCNN用分类任务的简单前馈网络和简单的前馈图层以及分割网络中的跳跃链接来演示。然而,由于暴露于其输入和输出层的接口X-Conv与Conv非常相似,我们认为许多来自图像CNN的先进神经网络技术可以用于X-Conv,比如说循环PointCNN。我们将在未来的工作中沿着这些方向展开探索

数据增强

对于X-Conv中的参数的训练,显然,如果相邻点对于特定代表点始终是相同顺序的相同集合,是很不利的。为了提高可推广性,我们提出随机抽样和缩减输入点,使得相邻点集和顺序可能因批次不同而不同。为了训练以N个点为输入的模型,应有N(N,(N/8)2)个点用于训练,其中N表示高斯分布。我们发现这一策略对于PointCNN的训练至关重要。

五、未来与未来工作展望(4.4 部分的翻译)

X-变换的进一步理解

虽然X-Conv是被设计用来进行在三维点云上进行卷积,并且它在实验中展示了最新水准的结果,但是我们对它背后的理论方法仍然知之甚少,尤其是当它被用于深层神经网络上时,我们的理解还十分的有限。

PointCNN采取了最简单也是最直接的方式来学习X-Conv——用MLP学习变换矩阵。虽然一般的矩阵可以用来实现权值和顺序变换,但是这种方法是否是实现目标的最简形式仍然是不得而知的。实际上,相比于此前的其他方法,PointCNN的参数更少,但还是在部分小规模的数据上表现出了过拟合的问题。X-Conv在带来强大的表征能力的同时,也可能携带了大量额外的自由度,能否找到一种比一般的矩阵更加精炼的可以学习的表达形式,或许是X-Conv发展的方向。

PointCNN对形状分析的应用

文章中说明了PointCNN对分类和图像分割问题的特征学习的有效性。我们认为PointCNN学习的特征可以在多种形状分析任务中超过手工设计的特征,例如关键点匹配,形状检索等任务。

全卷积的PointCNN

在原本的CNN中运用了全卷积的思想来处理不同大小的图像,PointCNN也应该实现全卷积的方法来处理不同尺度的点云。这篇论文使用了对全卷积方法的几乎最暴力的近似方法,在之后的扩展中,需要更有效的点云索引和内存管理来实现全卷积的X-Conv操作。

PointCNN还是CNN?

由于X-Conv是卷积的一种推广,因此,对于相同的数据(但是表达形式不同),PointCNN应该至少不比CNN要差,甚至要更好。为了证明这一点,论文中将PointCNN运用到了MNIST和CIFAR10的点云形式上。在MNIST数据集上,PointCNN达到了所有比较的方法中的最好的效果,而对于没有太多形状信息的CIFAR10数据集上,PointCNN从RGB特征的空间局部相关性中提取特征并且达到了还算不错的效果,但它和基于图片的CNN差距还很大。

从CIFAR10实验来看。在一般的图像上, CNN仍然是比PointCNN更好的选择。而PointCNN的优势在数据越稀疏的时候越能展现出来。目前并没有一个科学的准则判断是应该将数据表达为规则形式进而应用CNN,还是应该将数据表达为点云形式进而应用PointCNN。有意思的是,部分密集的数据也许可以被稀疏的表达,例如视频通常被表现为密集的三维数据,但是通常在视频帧里面只有少量的像素是逐帧变化的。 PointCNN加上稀疏但不规则表达的视频数据也是一个有趣的方向。

 PointCNN和CNN的结合

由于三维获取技术的高速发展,越来越多的采集的数据同时具有三维点云和图像,在这种情况下独立运用PointCNN和CNN分别来处理点云和图像数据,再将结果合并用于最后的推理也许是一种方法,但或许可以在更早期将这两种数据融合起来处理。

(0)

相关推荐