PointCNN: Convolution On X-Transformed Points
    Yangyan Li     Rui Bu     Wei Wu     Xinhan Di     Baoquan Chen
    Shandong University     Huawei Inc     Peking University

论文地址: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这种排列顺序相等。

  本文作者在训练网络之后发现,理想状态下它是一个完全的转置矩阵,经过可视化分析之后,发现它分布不是很有规律,而是比较杂乱的分布。
  如上图中学习出来有0.9或者1.1,在1附近的值,还有在零附近的一些值,这并不是一个理想转置矩阵,这也是本文中网络一个待解决的问题,虽然网络学习出来的不是0101矩阵,这样的特征也可以理解为这个矩阵也学到了如何在点云中提取feature的权重。

  在有相同的结构信息,但有不同的顺序信息的情况下,网络自己学习到某一种特征,比如说1234,让拥有相同结构的点云,拥有相同的feature。
  在有不同的结构信息,但有相同的顺序信息的情况下,经过矩阵计算,得到两个feature是不相等的。 这就是本文作者想要达到目的。

2.2 X-conv算子

  pointcnn也需要对点云数据进行平移不变性的操作,就是在中心点查到k近邻之后(a),用它周围这些点的信息剪去中心点的坐标(b),得到局部坐标系,将每个点的局部坐标单独提升,并结合相关特征(c)。这样就消除了由于整体的变化导致局部变化,让网络学习到东西产生变化。

1、将所有邻居点的坐标转化为相对p的坐标P’;

2、用一个MLPδ网络,将邻居点的位置信息P’转化为feature信息Fδ;

3、将转化得到的feature Fδ,与邻居点自己的feature F拼接,得到新的feature F*;

4、用一个MLP网络计算出特定输入顺序对应的X矩阵;

5、用矩阵X对特定顺序的feature F*矩阵进行处理,得到FX;

6、执行Convolution,得到p的特征。

  算法也可以用如下公式来表达:

  整个实现过程是先输入数据,先采样,再进行X-cov,并且在X-cov的过程中,不仅实现了对本身特征的提取,也通过对dim,空间信息的处理,其中X是从空间信息中提取出来的,经过X的相乘之后实现了数据的规则化。

2.3 分层卷积

  图2上半部分是图像的CNN,通过conv提取特征,通过池化降采样。下半部分是PointCNN,通过X-Conv提取特征,通过降采样削减样本数量,但是每个点的特征却越来越丰富。PointCNN从F1中选取代表点集F2的方法,暂时的实现是:对分类问题,p2是p1的随机下采样;对语义分割问题,p2是p1的最远点采样。

三、实验

3.1分类和分割

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

  上图是转置矩阵的可视化分析,同样颜色是同一个点查询到的k近邻里,本文作者对k近邻进行了一个人工的处理,处理后就可以近似的认为,在实际场景中点云输入,可能有人工处理得到的k的阶乘的情况,那么就可以表示由于点云的无序性,带来每次输入的不同。同一个色块就是k近邻的不同的分布,上图中左图就是原始输入,训练网络的时候不加x transferform,BC两个图中b就是网络经过x transferform之前的分布,c就是点云和转置矩阵进行相乘之后得到的feature分布,再经过transform之后,一个点的k近邻信息可以更好的区分开。a图和c图的结果很明显,a图不同点的一些feature混合到一块儿,网络很难区分这些不同的信息,再经过x transform之后,点云的信息后面feature信息已经可以很明显的区分开来。可以通过上面可视化的图证明x transform的有效性。

总结

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

论文笔记:(NIPS2018)PointCNN: Convolution On X-Transformed Points的更多相关文章

  1. 【论文笔记】Pyramidal Convolution: Rethinking Convolutional Neural Networks for Visual Recognition

    地址:https://arxiv.org/pdf/2006.11538.pdf github:https://github.com/iduta/pyconv 目前的卷积神经网络普遍使用3×3的卷积神经 ...

  2. Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现(转)

    Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现 zouxy09@qq.com http://blog.csdn.net/zouxy09          自己平时看了一些论文, ...

  3. 论文笔记系列-Neural Network Search :A Survey

    论文笔记系列-Neural Network Search :A Survey 论文 笔记 NAS automl survey review reinforcement learning Bayesia ...

  4. Deep Learning论文笔记之(三)单层非监督学习网络分析

    Deep Learning论文笔记之(三)单层非监督学习网络分析 zouxy09@qq.com http://blog.csdn.net/zouxy09          自己平时看了一些论文,但老感 ...

  5. 论文笔记-IGCV3:Interleaved Low-Rank Group Convolutions for Efficient Deep Neural Networks

    论文笔记-IGCV3:Interleaved Low-Rank Group Convolutions for Efficient Deep Neural Networks 2018年07月11日 14 ...

  6. 深度学习论文笔记:Fast R-CNN

    知识点 mAP:detection quality. Abstract 本文提出一种基于快速区域的卷积网络方法(快速R-CNN)用于对象检测. 快速R-CNN采用多项创新技术来提高训练和测试速度,同时 ...

  7. 论文笔记之:Visual Tracking with Fully Convolutional Networks

    论文笔记之:Visual Tracking with Fully Convolutional Networks ICCV 2015  CUHK 本文利用 FCN 来做跟踪问题,但开篇就提到并非将其看做 ...

  8. Deep Learning论文笔记之(八)Deep Learning最新综述

    Deep Learning论文笔记之(八)Deep Learning最新综述 zouxy09@qq.com http://blog.csdn.net/zouxy09 自己平时看了一些论文,但老感觉看完 ...

  9. Twitter 新一代流处理利器——Heron 论文笔记之Heron架构

    Twitter 新一代流处理利器--Heron 论文笔记之Heron架构 标签(空格分隔): Streaming-process realtime-process Heron Architecture ...

随机推荐

  1. 将Winform和wpf的界面转换为CPF代码用来实现跨平台

    CPF的设计器里带界面代码转换功能,将运行中的Winform或者wpf的程序界面转换为cpf代码,主要转换控件类型和布局,默认支持的是常用的原生控件.不支持Netcore,只支持.Netframewo ...

  2. Mysql优化_第十三篇(HashJoin篇)

    Mysql优化_第十三篇(HashJoin篇) 目录 Mysql优化_第十三篇(HashJoin篇) 1 适用场景 纯等值查询,不能使用索引 等值查询,使用到索引 多个join条件中至少包含一个等值查 ...

  3. Golang学习(用代码来学习) - 第三篇

    type Books struct { title string author string subject string id int } /** 结构体的学习 */ func struct_tes ...

  4. Map类型的Json格式

    示例代码: Map<String, Object> map = new HashMap<>();// boolean 类型 map.put("boolean" ...

  5. ES6学习笔记之 let与const

    在js中,定义变量时要使用var操作符,但是var有许多的缺点,如:一个变量可以重复声明.没有块级作用域.不能限制修改等. //缺点1:变量可以重复声明 var a=1; var a=2; conso ...

  6. Redis6使用指导(完整版)

    一.Nosql与Redis概述 二.Redis6安装 三.常用五大数据类型 四.Redis6配置文件详解 五.Redis6的发布和订阅 六.Redis6新数据类型 七.Jedis操作Redis6(Ma ...

  7. 使用 Docker 秒速搭建多版本 PHP 开发环境

    目录 目标 下载 代理设置 配置环境 PHP 7.2.x,占用本地端口 8081 PHP 5.6.x,占用本地端口 8082 端口映射 local.php72.com -> 127.0.0.1: ...

  8. GDI+中发生一般性错误的解决办法(转载)

    今天在开发.net引用程序中,需要System.Drawing.Image.Save 创建图片,debug的时候程序一切正常,可是发布到IIS后缺提示出现"GDI+中发生一般性错误" ...

  9. Layui 关闭自己刷新父页面

    var index = parent.layer.getFrameIndex(window.name); parent.layer.close(index); window.parent.locati ...

  10. docker部署的nginx非80端口无法访问

    请检查nginx容器是否只开启了80端口映射!!! 请检查nginx容器是否只开启了80端口映射!!! 请检查nginx容器是否只开启了80端口映射!!! 如果你访问的端口在nignx容器已经开启了端 ...