论文笔记:PointNet

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hongbin_xu/article/details/84638109

PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation

PointNet

1、四个问题

  1. 要解决什么问题?
    • 3D点云是一种很重要的几何数据结构。由于其存在空间关系不规则的特点,因此不能直接将已有的图像分类分割框架套用到点云上。
    • 许多研究者会将3D点云转换为3D体素(voxel grids )或者一系列图片,然后套用到现有的深度学习框架上,取得了非常好的效果。但是将点云体素化势必会改变点云数据的原始特征,造成不必要的数据损失。
    • 因此,作者想要做的就是设计一个可以直接处理3d点云数据的深度学习框架
  2. 用了什么方法解决?
    • 提出了PointNet,它可以直接将3d点云作为输入,输出预测的类别。
    • 由于直接以点云作为输入,而最大的难点在于点云的点数是不确定且无序的。
    • 核心方法是巧妙地使用了一个Max Pooling,解决了这个问题。
  3. 效果如何?
    • 尽管网络结构很简单,PointNet在许多任务上的表现还是很好的,甚至超过了state-of-the-art。
  4. 还存在什么问题?
    • PointNet只关注了3D点云的全局信息,对于局部信息的利用不够充分,一定程度上限制了网络的性能。

2、论文概述

2.1、简介

  • 因为点云和mesh都是不规则的,大多数学者都会先将这类数据先转换为标准的3D体素(voxel grids )或者多视角下的图片,然后再送入深度学习框架中进行处理。
  • PointNet可以直接接收点云作为输入,然后输出预测的分类结果或是每个点的语义分割结果。
  • 网络结构十分简单,核心在于巧妙地使用了一个对称函数:Max Pooling。
  • 网络随着训练会学习到一系列函数,可以从3d点云中选取出感兴趣的或是信息含量大的特征点,并进行编码。
  • 最后的全连接层会将提取得到的信息聚合到全局描述子中,代表了整个形状的信息。
  • 一个有趣的发现是,PointNet会试着使用一个稀疏的关键点集来表示整个输入点云,与粗略地提取物体的骨架很类似。
  • PointNet的应用:

在这里插入图片描述

2.2、PointNet

  • PointNet的输入时欧式空间中的点组成的点集。主要有三个属性:

    1. 无序性。不像图像的像素或者三维的体素,点云是一系列没有特定顺序的点。因此,网络需要保证面对 n n 个点的3D点云的 N ! N! 种顺序置换的可能情况具有不变性。
    2. 点与点之间相关性。这些点来自于一个具有距离度量的空间,也就意味着点之间不是独立的,近邻点本身就是一个有意义的子集。因此,模型需要能够捕获近邻点的局部结构特征。
    3. 旋转(平移)不变性。对于几何物体,网络提取到的点集的特征应该不会受到旋转和平移等变换的影响。
  • 三个关键结构:

    • 最大池化层,用来将从所有的点上提取得来的信息聚合到一起。
    • 局部信息和全局信息结合结构。
    • 两个对齐网络T-Net,用来将输入点和特征点进行对齐。

在这里插入图片描述

  • 网络结构其实很简单,主要参考这张流程图就能理解了。
    • T-Net用来生成变换矩阵,作用是用来对齐特征,使特征更利于提取。输入是 n × 3 n \times 3 ,那么第一个T-Net生成的就是一个 3 × 3 3 \times 3 的仿射变换矩阵;由于第二个T-Net的输入时 n × 64 n \times 64 ,那么生成的变换矩阵就是一个 64 × 64 64 \times 64 的变换矩阵。
    • 使用mlp提取特征,也可以理解为卷积核为1的1维卷积。
    • 使用Max Pooling将全局特征 n × 1024 n \times 1024 ,kernel size直接取为 n n ,得到 1 × 1024 1 \times 1024 维的全局特征。
    • 后续再进行特征提取,用于分类或是分割任务。

2.2.1、用来处理无序输入的对称函数

  • 目前有以下三种策略:
    1. 将输入排序成一个标准的顺序。
    2. 将输入当做一个序列输入RNN,但是需要进行数据增强,将所有可能得置换顺序的数据都用来训练。
    3. 使用一个对称函数来将所有点的信息聚合。
  • 作者最终选择使用max pooling来聚合全局信息,并在后面从理论上证明了,当特征维数足够大时,max pooling可以模拟论文中所述的任意对称函数f。推导略。

2.2.2、聚合全局和局部信息

  • 在计算得到全局点云特征向量后,将其与前面的点特征拼接在一起。随后再从拼接后的特征向量中提取特征,这时既有局部信息也有全局信息。

2.2.3、对齐网络

  • 输入的点云是 n × 3 n \times 3 ,通过一个小网络T-Net预测出一个放射变换矩阵,并直接乘在输入上。
  • 对齐网络也可以扩展到特征空间中,通过一个小网络T-Net预测出一个特征变换矩阵,乘在输出的特征向量上。
  • 考虑到在特征空间上的变换矩阵比普通的空间变换矩阵(3维)的维度高得多,这会给优化增加不小的难度。所以另外还要在最后的softmax损失上加上一个正则化项: L r e g = I A T A F 2 L_{reg} = \|I - A^T A\|_F^2 。 其中 A A 是T-Net预测得到的特征对齐矩阵。对角矩阵不会丢失输入信息,这也是我们所期望的。作者提到,加上正则化项之后训练会更稳定。

2.3、实验

  • 在ModelNet40数据集上的分类任务结果:

在这里插入图片描述

  • 在ShapeNet数据集上的分割结果。

在这里插入图片描述

  • PointNet的参数量相比其他state-of-the-art的架构小得多。

在这里插入图片描述

3、参考资料

  1. https://blog.csdn.net/sunfei05/article/details/80351524
  2. https://blog.csdn.net/yongxiebin9947/article/details/79368752

猜你喜欢

转载自blog.csdn.net/hongbin_xu/article/details/84638109
今日推荐