Dynamic Graph CNN for Learning on Point Clouds

DGCNN

1、四个问题

  1. 要解决什么问题?

    • 使用深度学习处理3D点云。

    • 设计一个可以直接使用点云作为输入的CNN架构,同时可以获取足够的局部信息,可适用于分类、分割等任务。

  2. 用了什么方法解决?

    • 提出了一个新的神经网络模块——EdgeConv。
    • EdgeConv是可微的,并能嵌入已有的网络架构中。
    • EdgeConv的优点:
      1. 包含了局部领域信息;
      2. 通过堆叠EdgeConv模块或循环使用,可以提取到全局形状信息;
      3. 在多层系统中,特征空间中的相对关系包含了语义特征。(注:点云中形状近似的部分,在特征空间中距离较小。)
  3. 效果如何?

    • 在标准数据集ModelNet40和S3DIS上取得了state-of-the-art的效果。
  4. 还存在什么问题?

    • EdgeConv考虑了点的坐标,与领域点的距离,忽视了相邻点之间的向量方向,最终还是损失了一部分局部几何信息。

2、论文概述

2.1、简介

  • 最近的算法倾向于搜索点云中的语义线索和一致性,而不是像角点和边缘点这样显著的几何特征。仅仅通过传统方法如计算或者微分这类的方法提取的几何信息显然不够用,所以现在更多地需要基于学习的方法(源自于通过对有标签或无标签的数据集的统计分析得到的相关信息)。
  • 文中主要考虑点云分类和分割任务。
  • 传统的解决办法是,提取handcrafted的特征来获取点云的几何信息。
  • 近来,深度学习在图像处理领域的大获成功,催化了使用数据驱动方法来从点云学习特征的研究。
  • 由于常规的深度网络的输入都是规则结构的数据,而点云则是不规则的数据:每个点在空间中都是连续分布的,并且任何点在顺序上的置换都不会改变空间分布。
  • 一类常用的方法是,将点云转换为volumetric representation(体表示),也就是3D网格,随后便可以采用3D的CNN网络来提取特征。
    • 然而,这种方法会造成quantization artifacts,和额外的内存占用,导致难以提取高分辨率或者细粒度特征。
  • 另一类方法,则是可以直接将不规则的点云作为输入的深度网络,即PointNet系的网络。
    • PointNet,通过独立地处理每个点,能实现置换不变性(permutation invariance)。随后使用一个对称函数(symmetric function)来聚合特征。
    • 之后,一些基于PointNet的改进网络会考虑点的局部特征,而不是分开处理。这样可以让网络提取到局部特征,提高模型的性能。
    • 然而这类算法,在处理局部区域的点的时候为了保证置换不变性,而导致过于独立。这样会忽视点之间的几何相关信息,导致丢失一部分局部特征信息。
  • 为了解决这个问题,就提出了EdgeConv,在保证置换不变性的同时捕获局部几何信息。
  • 贡献:
    1. 提出了一个新的操作,EdgeConv,可以直接在点云上操作。EdgeConv能在在保证置换不变性的同时捕获局部几何信息。
    2. DGCNN模型可以在动态更新图的同时,在语义上将点聚合起来。
    3. EdgeConv可以被集成,嵌入多个已有的点云处理框架中。
    4. 使用EdgeConv搭建的DGCNN网络,在多个基准数据集上取得了state-of-the-art的效果。

2.2、方法

2.2.1、Edge Convolution

  • 假设一个F维点云有n个点,定义为:X=x1,...,xn∈RFX={x_1, ..., x_n} \in R^FX=x1​,...,xn​∈RF。最简单地情况下,F=3,即三维坐标。当然也可能包含额外的坐标,包含颜色、表面法线等等的信息。
  • 在一个深度神经网络中,后面的层都会接受前一层的输出,因此更一般的情况下,维度F也可以表示某一层的特征维度。
  • 假设给定一个有向图G=(ν,ϵ)G = (\nu, \epsilon)G=(ν,ϵ),用来表示点云的局部结构,其中顶点为ν={1,...,n}\nu = \{1,...,n\}ν={1,...,n},而边则为ϵ∈ν×ν\epsilon \in \nu \times \nuϵ∈ν×ν。在最简单地情况下,我们建立一个KNN图G。假设距离点xix_ixi​最近的点xji1x_{j_{i1}}xji1​​, …, xjikx_{j_{ik}}xjik​​包含许多有向边缘(i,ji1),...,(i,jik)(i, j_{i1}), ..., (i, j_{ik})(i,ji1​),...,(i,jik​)。
  • 我们定义边缘特征为:eij=hΘ(xi,xj)e_{ij} = h_{\Theta}(x_i, x_j)eij​=hΘ​(xi​,xj​),其中hΘ:RF×RF→RF′h_{\Theta}: \mathbb{R}^F \times \mathbb{R}^F \rightarrow \mathbb{R}^{F^{'}}hΘ​:RF×RF→RF′,是一些使用一些可学习的参数Θ\ThetaΘ构成的非线性函数。
  • 最后在EdgeConv操作上添加一个通道级的对称聚合操作□\square□,完整公式为:xi′=□j:(i,j)∈ϵhΘ(xi,xj)x_i^{'} = \square_{j:(i, j)\in \epsilon} h_{\Theta} (x_i, x_j)xi′​=□j:(i,j)∈ϵ​hΘ​(xi​,xj​)。
  • 关于公式中的hhh和□\square□有四种可能的选择:
    1. hΘ(xi,xj)=θjxjh_{\Theta}(x_i, x_j) = \theta_j x_jhΘ​(xi​,xj​)=θj​xj​,聚合操作采用求和操作:xi′=∑j:(i,j)∈ϵθjxjx_i^{'} = \sum_{j:(i, j)\in \epsilon} \theta_j x_jxi′​=∑j:(i,j)∈ϵ​θj​xj​。
    2. hΘ(xi,xj)=hΘ(xi)h_{\Theta}(x_i, x_j) = h_{\Theta}(x_i)hΘ​(xi​,xj​)=hΘ​(xi​),只提取全局形状信息,而忽视了局部领域结构。这类网络实际上就是PointNet,因此PointNet中可以说使用了特殊的EdgeConv模块。
    3. hΘ(xi,xj)=hΘ(xj−xi)h_{\Theta}(x_i, x_j) = h_{\Theta}(x_j - x_i)hΘ​(xi​,xj​)=hΘ​(xj​−xi​)。这种方式只对局部信息进行编码,在本质上就是将原始点云看做一系列小块的集合,丢失了原始的全局形状结构信息。
    4. 第四种,也是文中采用的,hΘ(xi,xj)=hΘ(xi,xj−xi)h_{\Theta}(x_i, x_j) = h_{\Theta}(x_i, x_j - x_i)hΘ​(xi​,xj​)=hΘ​(xi​,xj​−xi​),这样的结构同时结合了全局形状信息以及局部领域信息。

2.2.2、动态图CNN

  • 假设第l层的输出为Xl={x1l,...,xnl}⊆RFlX^l = \{ x_1^l, ..., x_n^l \} \subseteq \mathbb{R}^{F_l}Xl={x1l​,...,xnl​}⊆RFl​,而X0X^0X0就是输入点云。
  • 实验表明,每次都重新计算每一层上的图中的点在特征空间中的最近邻点,是有用的。这也是动态图CNN与普通的图CNN的不同之处。
  • 因此,将包含了这样的图的网络命名为动态图CNN(Dynamic Graph CNN, DGCNN)。
    • 每一层都会得到一个不同的图Gl=(νl,ϵl)G^l = (\nu^l, \epsilon^l)Gl=(νl,ϵl)。
    • 每一层的边缘特征为(i,ji1),...,(i,jik)(i, j_{i1}), ..., (i, j_{ik})(i,ji1​),...,(i,jik​),取决于点xilx_i^lxil​的klk_lkl​个最近邻的点xji1lx_{j_{i1}}^lxji1​l​, …, xjiklx_{j_{ik}}^lxjik​l​。
    • 更新公式:xil+1=□j:(i,j)∈ϵlhΘl(xil,xjl)x_i^{l+1} = \square_{j:(i, j)\in \epsilon^l} h_{\Theta}^l (x_i^l, x_j^l)xil+1​=□j:(i,j)∈ϵl​hΘl​(xil​,xjl​)。

2.2.3、实现细节

  • 网络结构见下图:

  • 整体的网络结构与PointNet的很类似,都使用了一个空间变换单元,最后计算了一个全局信息。
  • 分类网络中包含了两个EdgeConv层,后面接上了一个池化操作和3个全连接层,然后得到分类结果。
  • 分割网络使用了三个EdgeConv层,后面接上了三个全连接层,最后每个点都会输出一个预测分数。
  • 对于每个EdgeConv模块,我们都是用共享边缘函数:hl(xil,xjl)=h(xil,xjl−xil)h^l(x_i^l, x_j^l) = h(x_i^l, x_j^l-x_i^l)hl(xil​,xjl​)=h(xil​,xjl​−xil​),而这个函数是用一个多层感知机实现的,聚合操作□=max\square=max□=max即为最大池化。
  • KNN图中的K值是一个超参,分类网络中K=20,而在分割网络中K=30。

2.3、与其他方法比较

  • 主要跟两类方法做对比:一个是PointNet系列,一个是图CNN系列。
  • PointNet是我们的网络的一种特殊情况,即取KNN图的K=1,即图中的边都为空。PointNet中的边缘特征函数为h(xi,xj)=h(xi)h(x_i, x_j) = h(x_i)h(xi​,xj​)=h(xi​),仅仅考虑了全局几何信息而丢弃了局部信息。PointNet中的聚合操作□=max\square=max□=max(或者∑\sum∑),其实就相当于全局最大池化(或平均池化)。
  • PointNet++试着通过在局部区域使用PointNet来提取点云的局部结构信息。PointNet++的边缘特征函数也是h(xi,xj)=h(xi)h(x_i, x_j) = h(x_i)h(xi​,xj​)=h(xi​),聚合操作也是最大池化。
  • 注:图神经网络这部分还不熟悉,先留个坑。
  • 下图显示了不同特征空间的距离,证实了在更深层上的距离也能在长距离范围内携带语义信息。

2.4、实验验证

2.4.1、分类任务

  • 分类结果:

  • 模型复杂度:

  • 网络中不同组件的有效性:

  • 不同K近邻值的情况:

  • 不同点数下模型的性能:

2.4.2、分割任务

  • 分割结果:

  • 可视化结果:

  • 分割结果比较:

  • 验证时随机丢弃一些点的分割结果:

  • 在ShapeNet上的实验结果:

2.4.3、室内场景分割

  • 实验结果:

  • 分割结果对比:

3、参考资料

  1. Dynamic Graph CNN for Learning on Point Clouds

论文笔记:DGCNN(EdgeConv)相关推荐

  1. ORB-SLAM3 论文笔记

    ORB-SLAM3 论文笔记 这篇博客 ORB-SLAM3系统 相机模型的抽象(Camera Model) 重定位的问题 图片矫正的问题 视觉惯性SLAM的工作原理 相关公式 IMU初始化 跟踪和建图 ...

  2. 【论文笔记】 LSTM-BASED DEEP LEARNING MODELS FOR NONFACTOID ANSWER SELECTION

    一.简介 这篇论文由IBM Watson发表在2016 ICLR,目前引用量92.这篇论文的研究主题是answer selection,作者在这篇论文基础上[Applying Deep Learnin ...

  3. 最新图神经网络论文笔记汇总(附pdf下载)

    点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要15分钟 Follow小博主,每天更新前沿干货 [导读]近年来,图神经网络变得非常火热,每年顶会在该领域内都会出现大量的研究论文,本文为大家提 ...

  4. [论文笔记] Fast Quality Driven Selection of Composite Web Services (ECOWS, 2006)

    Time: 4.0 hours Jae-Ho Jang, Dong-Hoon Shin, Kyong-Ho Lee, "Fast Quality Driven Selection of Co ...

  5. 论文笔记之:Action-Decision Networks for Visual Tracking with Deep Reinforcement Learning

    论文笔记之:Action-Decision Networks for Visual Tracking with Deep Reinforcement Learning  2017-06-06  21: ...

  6. 光流 速度_[论文笔记] FlowNet 光流估计

    [论文笔记] FlowNet: Learning Optical Flow with Convolutional Networks 说在前面 个人心得: 1. CNN的光流估计主要是速度上快,之后的v ...

  7. 论文笔记 《Maxout Networks》 《Network In Network》

    原文出处:http://zhangliliang.com/2014/09/22/paper-note-maxout-and-nin/ 论文笔记 <Maxout Networks> & ...

  8. 论文笔记:HKMF-T: Recover From Blackouts in TaggedTime Series With Hankel Matrix Factorization

    论文笔记:Hankel Matrix Factorization for Tagged Time Series to Recover Missing Values during Blackouts_U ...

  9. 论文笔记 A Spatial-Temporal Decomposition Based Deep Neural Network for TimeSeries Forecasting

    0 abstract 空间时间序列预测问题出现在广泛的应用中,如环境和交通问题.由于存在特定的空间.短期和长期模式,以及维度的诅咒,这些问题具有挑战性. 在本文中,我们提出了一个用于大规模空间时间序列 ...

  10. 论文笔记:Autoregressive Tensor Factorizationfor Spatio-temporal Predictions

    0 摘要 张量因子tensor factorization分解方法在时空数据分析领域很受欢迎,因为它们能够处理多种类型的时空数据,处理缺失值,并提供计算效率高的参数估计程序. 然而,现有的张量因子分解 ...

最新文章

  1. 编译py-faster-rcnn全过程
  2. python sqlite3事务_python使用上下文管理器实现sqlite3事务机制
  3. Awesome Bioinformatics:假期了,收藏学习吧!
  4. IT网络通信大变革时代来临 2016中国极客大奖为您找到风向标
  5. 【BZOJ1014】【tyvj3486】火星人prefix,Splay+字符串hash
  6. ajax传递map参数给后端
  7. access 如果删除相同行-转 sqlite也可
  8. 【Python】爬取的图片不对怎么办?Python爬取网页图片小结
  9. ZKtime5.0考勤管理系统标准版客户端登录忘记登录密码
  10. 【PTA-python】第5章-1 输出星期名缩写 (70 分)
  11. Python爬虫零基础(以爬豆瓣电影top250为例,尝试自己写爬豆瓣读书top250的代码)
  12. 问卷调查系统环境配置搭建
  13. 你真的了解传统IT的集中式三层架构及主流开发技术选型?!
  14. Python+Selenium多线程基础微博爬虫
  15. 【测试开发】一个5年测试开发的成长经验,大学毕业就开启他的职业生涯......
  16. Notepad++常用插件下载地址
  17. 优达(Udacity)-机器学习基础-数据集与问题(安然数据集)
  18. Bomb lab实验
  19. ubuntu 安装多版本cuda,及切换版本方法及常见问题记录
  20. 试用一款开源的轻量级3D建模软件《Dust3D》

热门文章

  1. matlab 子图title的位置_Plotly_多个子图
  2. 简述C语言的标准发展,简述C语言的发展历史
  3. Centos 开机无法输入密码的问题
  4. 谷歌技术三宝之MapReduce
  5. 【Linux】30.ssh不用手动输入密码登录终端sshpass 和 shell脚本后跟参数自动匹配case的用法
  6. 2017 Vue.js 2快速入门指南
  7. 《JAVA与模式》之建造模式
  8. pinpoint 安装部署
  9. To Java程序员:切勿用普通for循环遍历LinkedList
  10. Web前端小白入门指迷