卷积神经网络在二维图像的应用已经较为成熟了,但 CNN 在三维空间上,尤其是点云这种无序集的应用现在研究得尤其少。山东大学近日公布的一项研究提出的 PointCNN 可以让 CNN 在点云数据的处理刷新了多项深度学习任务的纪录。由于项目需要,我对PointCNN论文的核心部分做了翻译及部分解析,希望能够帮助大家更好地学习理解PointCNN。
概述
如Fig1,传统的卷积作用在二维图像上。在图像中数据是结构化存储的。直接对图像应用卷积核 就能从这种二维空间结构中获取信息。而点云数据是无序集,如果直接使用卷积会出现(1)中ii,iii,iv的情况
如上图所示,由于卷积操作的性质,在所有情况下
而PointCNN里采用的是这样的策略:
从前一层的数据中取K个候选点
对(1)中的 (ii),(iii),和(iii)的X-conv可以表示成这样:
在这里 这些 X变换 是4×4的矩阵,因为Fig1中K=4。
因为
对于
从Fig1 中的例子分析可以看出,当X-Conv 搭配 理想的X变换 时,能够在考虑点集形状的同时,不依赖于输入点的顺序。
在实验中,我们发现学习到的X变换并不是很理想,特别是在排序等价性方面。
尽管如此,使用X-Conv构建的PointCNN仍然明显优于直接对点云应用传统卷积,相比为点云数据设计的最先进的非卷积神经网络(例如,PointNet ++)有着相近甚至更好的表现。
分层卷积
类比图像CNN的卷积,图像CNN的输入是
而PointCNN的输入点集
对
若
Fig2 上半部分是图像的CNN,通过conv提取特征,通过池化降采样。
下半部分是PointCNN,通过X-Conv提取特征,通过降采样削减样本数量。
从
- 对分类问题:
是 的随机下采样。 - 对语义分割问题:
是 的最远点采样。
X-Conv算子
为了实现与图像卷积类似的空间局部相关性,X-Conv只作用于局部区域。
在
所以每一个X-Conv针对
X-Conv 算子
将点集 变换到以 点为中心的局部坐标系F_δ ← MLP_δ (P′) 逐点应用MLP_δ,将
从 坐标空间映射到 特征空间F_∗ ← [F_δ , F] 把
和 拼接起来, 是一个 K × (C_δ + C_1) 矩阵 用 学习 获得 的X变换矩阵 应用X变换矩阵加权置换 做卷积
PointCNN 架构
从图2中我们可以看出,图像CNN中的卷积层和PointCNN中的X-Conv层仅在两个方面有所不同:
- 提取局部区域的方式(图像CNN中的K×K区域 与 PointCNN中代表点周围的K个邻近点)
- 对于局部区域的信息学习方式(图像CNN的Conv 与PointCNN中的X-Conv)。
除此之外,与图像CNN中的卷积层相比,用X-Conv层组装的深度网络没有多大区别。
分类任务
在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中来实现这一目标。我们可以不总是以
在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年]。
在最后完全连接的层之前施加Dropout以减少过拟合。我们还采用了Qi等人的“子体积监督(Subvolume supervision)”理念来解决过拟合问题。在最后的X-Conv层中,感受野 被设置为小于1,使得最后的X-Conv层中的代表点仅“看到”部分信息。在训练时促使网络更加深入了解局部信息,并在测试时表现更好。
在本文中,PointCNN用分类任务的简单前馈网络和简单的前馈图层以及分割网络中的跳跃链接来演示。然而,由于暴露于其输入和输出层的接口X-Conv与Conv非常相似,我们认为许多来自图像CNN的先进神经网络技术可以用于X-Conv,比如说循环PointCNN。我们将在未来的工作中沿着这些方向展开探索。
数据增强 对于X-Conv中的参数的训练,显然,如果相邻点对于特定代表点始终是相同顺序的相同集合,是很不利的。为了提高可推广性,我们提出随机抽样和缩减输入点,使得相邻点集和顺序可能因批次不同而不同。为了训练以N个点为输入的模型,应有
致谢
上述翻译及解析 由于本人知识水平有限,难免有些错漏,还望各位在评论指出,必定及时改正。