论文阅读“FoldingNet: Interpretable Unsupervised Learning on 3D Point Clouds”

详细信息

CVPR 2018 Yaoqing Yang, Chen Feng, Yiru Shen, Dong Tian

1. 摘要

最近直接处理点集中的点的深度网络,例如PointNet,已经在点云的监督语义学习任务(如分类和分割)方面达到了最先进的水平。在这项工作中,提出了一种新颖的端到端深度自动编码器来解决点云上的无监督学习挑战。在编码器方面,实施了基于图的增强来提升PointNet之上的本地结构。然后,在解码器中提出了一种基于新奇折叠的方法,该方法将二维网格折叠到点云的三维对象表面上。该解码器仅使用了全连接神经网络解码器的约7%的参数,但具有更强的识别力,获得了比基准算法更高的线性SVM分类精度。此外,从理论上讲,所提出的解码器结构是一种通用架构,能够从二维网格中重构任意点云。最后,这种基于折叠的解码器是可解释的。

2. 问题

因为点云结构是不规则的,一般由稀疏的三维点表示,很难应用到传统的深度学习的框架中(比如CNN中,每个样本点的相邻样本点需要在固定的一个地方以便于卷积,但是点云中的样本点做不到这样),一种解决方法是将点云体素化来模拟图像,但是这种方法存在很多缺陷,代价比较大。作者在本文提出的操作,就是用来解决点云不规则结构带来的问题,且比之前的方法效果要好。
我们总结一下我们在这项工作中的贡献:
•我们训练了一个端到端无监督深度自动编码器,它直接消耗点云,而不进行预处理。
•我们提出了一种新的解码操作称为folding,并从理论上证明了它在点云重构中是通用的。
•我们在主要数据集上的实验表明,与其他无监督方法相比,折叠可以获得更高的分类精度。
•通过在不同的点模型上可视化训练过程和“folding”过程,我们证明了基于折叠的解码器是可解释的。

3. 思路

在这里插入图片描述
FoldingNet架构。图层是第2.1节(2)中提到的基于图的最大池层。第1次和第2次折叠都是通过将码字连接到特征向量,然后使用3层感知器来实现的。每个感知器独立地应用于单个点的特征向量。

4. 方法

包括graph-based编码器和Folding-based解码器。
编码过程:输入一个有n个点的图像,计算每个点的33局部协方差矩阵,并把它向量化成19大小,然后将这个得到的n9的矩阵和n3的矩阵相连接成n*12的矩阵,输入到三层感知器中。通过一个3层感知器,将感知器的输出输入到两个连续的图像层中,其中每层图像对每个节点的邻居作maxpooling降维(在下面评估的2中有具体说明),再到2层感知器,得到codeword。
将得到的codeword向量叠加m层,再加上一个二维网格点来进行折叠操作。
解码过程:解码器包含了两次folding操作。这种设计减少了参数个数。
最后定义距离函数来评价差异大小。

graph-based 编码器

编码器是多层感知器和基于图形的最大池层的串联。该图是由输入点云中节点的3D位置构造的K最近邻图(K-NNG)。在我们的实验中,我们选择K=16。首先,对于每个单点V,我们计算其大小为3×3的局部协方差矩阵,并将其矢量化为大小为1×9。使用K-NNG中V(包括V)的一跳邻居点的3D位置沿xyz方向计算V的局部协方差。我们将点位置矩阵与n-by-3和n-by-9所有点的局部协方差连接成n-by-12矩阵,并将它们输入到一个3层感知器。感知器平行应用于sizen-x-12输入矩阵的每一行。可以将其视为每个3D点上的逐点函数。感知器的输出被馈送到两个连续的图形层,其中每一层对每个节点的邻域应用最大池。更具体地说,假设K-NN图具有邻接矩阵x,并且图层的输入矩阵是x。然后,输出矩阵是Y=Amax(X)K,

Folding-based解码器

本文的主要目的是设计一个解码器,用于根据编码器获得的信息重建点云。该解码器使用两个连续的三层感知机将二维网格扭曲成输入点云的形状。输入codeword从基于图形的编码器获得。在我们将码字输入解码器之前,我们复制它的时间,并将它们以512矩阵与一个以原点为中心的正方形上包含网格点的m×2矩阵连接起来。连接的结果是mx514的矩阵。矩阵由3层感知器逐行处理,输出为mx3矩阵。之后,我们再次将复制的codeword连接到它们的3倍输出,并将其输入到一个3层感知器中。此输出是重建的点云。参数根据输入点云大小设置,如我们的实验中n=2048,与[1]相同。我们选择正方形中的网格点,所以选择2025,这是与2048最接近的正方形数。
请注意,将codeword连接到二维网格,然后是一个3层感知器,基本上实现了折叠操作。要查看此信息,请使用U表示输入的二维栅格点。每一行都是一个二维网格点。用ui表示第i行,用θ表示编码器输出的码字。然后,在串联之后,输入矩阵到3层感知器的第i行是[ui,θ]。由于3层感知器与输入矩阵的每一行并行应用,因此输出矩阵的第i行可以写成f([ui,θ]),其中fin表示3层感知器执行的功能。此函数可被视为一个参数化的高维函数,其codeword θ是引导函数结构(折叠操作)的参数。由于多层感知器擅长逼近非线性函数,因此它们可以在二维网格上执行精细的折叠操作。高维码字本质上存储进行折叠所需的力,这使得折叠操作更加多样化。
该解码器具有两个连续的折叠操作。第一个将二维栅格折叠到三维空间,第二个在三维空间内折叠。我们在表1中显示了这两次折叠操作后的输出。从表1中的C列和D列可以看出,每个折叠操作都进行一个相对简单的操作,两个折叠操作的组合可以产生非常复杂的表面形状。虽然第一次折叠似乎比第二次简单,但它们一起导致最终输出的实质性变化。如果需要更精细的表面形状,则可以应用更连续的折叠操作。

5.平台

因此,我们加入了一个训练过程的插图,来展示通过随机折叠得到的随机二维流形如何逐渐变成点云。自动编码器是一个单一的FoldingNet训练使用的ShapeNet部分数据集[55],其中包含16个类别的ShapeNet数据集。我们使用ADAM训练FoldingNet,初始学习率为0.0001,批量大小为1 for4×106iterations,这大约是330个epoch。表2报告了几个模型经过不同次数的训练迭代后重构的点云。从训练过程中我们可以看到,一个随机的二维流形可以通过各种方式进行翘曲、剪切、挤压、拉伸、附着,形成点云表面。

6.验证

在这里插入图片描述
支持向量机和FC在ModelNet40数据集上的线性分类精度与重建损失。自动编码器使用来自ShapeNet数据集的数据进行训练。.
在这里插入图片描述
FoldingNet与其他非监督方法分类精度的比较。所有的方法都在无监督训练得到的高维表示上训练线性支持向量机。

7.评价

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值