DeepGCNs:Can GCNs Go as Deep as CNNs? 论文学习笔记

DeepGCNs:Can GCNs Go as Deep as CNNs? 论文学习笔记

    一个好笔记的意义就在于:可以不用看原文                    -------鲁树人(滑稽)

Abstract

  1. 目前GCN由于受限于梯度消逝的问题,都比较浅层(一般小于4)
  2. 本文将几个在深度CNN中使用的技巧:residual connections,dense connection,dilated convolutions迁移到GCNs中。
  3. 构建了56层的GCN,在point cloud semantic segmentation实验中效果显著(提升3.7%)

Introduction

  • 近年来研究人员对GCNs的关注有两大因素: 一是非欧数据的增加 二是CNN在非欧数据表现促急
  • CNNs取得成功的其中一个因素是:CNN可以被设计成多层且能够训练,而深层的GCN会出现梯度消失问题。
  • 当然CNN也有梯度消失问题,但是研究人员提出了很多技巧,如ResNet利用residual connections,可以实现152层(或许更多),DenseNet使用了更多链接层,但其pooling时,会丢失spatial information,因此,研究人员又提出Dilated Convolutions(神**研究人员中,怎么就没我呢)。这些技巧在CNN中有效果,因此本文打算将其这些技巧应用在GCN上面。
  • 总结一下,我们将在deep CNN 上成功的residual/dense connections,dilated convolutions应用在GCN上,并在point cloud sematic segmentation上分别进行实验,最后我们发现将三种方法联合起来可以得到56层深的GCN,并比目前最优的方法在S3DIS datasets 上效果好4%

Related Works

  • GCN在CV方面也有很多应用。在3D point cloud processing中,GCN从中抽取结构信息,后通过2D图像获得表示,更多的工作在获得unordered point cloud representation上面(意思是不预先定义节点意义)。最近Wang等人提出了EdgeConv方法,其通过计算点特征之间的距离获得邻接矩阵,该方法展现了GCN在point cloud segmentation任务中的优越性。
  • 然而EdgeConv方法也受制于层数较浅。为了训练更深的GCN,有不少大佬提出了许多方法,如Kipf的GCN显示超过三层其效果下降;Pham提出Column Networks,其峰值为10层;Rahimi发展Highway GCN,6层后性能下降;Xu发展了Jump Knowledge Network,受限于6层;Li发现GCN易过平滑,会导致权值趋于相同。

Methodology
3.1 Representation learnings on Graphs

  • GCN过程中,从vertex的邻域提取特征被称为aggregation,提取得到的aggregated information 被非线性的转化成新的vertex representation,这被称作update function。常见的aggregation function有 mean aggregator ,max-pooling aggregator,LSTM等。常见的update function有MLP,gated networks等。本文使用max-pooling做为vertex feature aggregator,使用MLP作为vertex feature updater
  • Dynamic edges:以往GCN使用固定的Graph结构,尽在迭代过程中进行update vertex features。最近有研究发现动态的Graph结构,要优于GCN。例如ECC,EdgeConv等网络中动态Graph的使用,都有较好的效果。

3.2 Residual learning for GCNs

  • 原始的GCN框架,卷积操作映射H为:一个graph输入经过卷积变换到一个新的graph representation输出。而作者提出的GCN残差学习(称作ResGCN),输出有两部分组成,一部分为原始输入,而另一部分为经过残差变化的部分(可学习的)。如下所示:
    DeepGCNs:Can GCNs Go as Deep as CNNs? 论文学习笔记_第1张图片
    其中带有res为残差输出,残差也对应左侧F映射,其是可学习的变换。上式值得注意的是求和部分为逐个点相加而得。

3.3 Dense connections in GCNs

  • DenseNet的思路是通过密集连接改进信息流从而能够多次使用层间的特征。这种思想也被应用在了GCN中,即也将层之间的输出放入信息流中,该模型称作DenseGCN。如下表示:
    DeepGCNs:Can GCNs Go as Deep as CNNs? 论文学习笔记_第2张图片
    可以看到从第0层到第l层的输出和原始图G0,一起通过T(vertex-wise concatenation function)被密集的融合在一起。因此Gl+1包含了之前所有卷积层的变换。DenseGCN的结果的大小取决于之前各层的输入,假设中间各层的节点信号(或特征)维度均为D,则DenseGCN输出的节点信号(或特征)为D0+Dx(l+1)维。

3.4 Dilated aggregation in GCNs

  • Dilated wavelet convolution 源于小波处理领域。为了缓解pooling造成的空间信息损失,Yu等人提出dilated convolution(空洞卷积)来替代密集任务中的连续卷积,在密集预测任务中表现良好。因此作者将空洞卷积引入到深度GCN中。有多种方法定义空洞邻域,文中作者使用了Dilated k-NN方法定义邻域,经过空洞卷积后,得到Dilated Graph。对于图G而言,若选空洞率为d,邻域数量为k,即在每跳过d个邻域后,在kxd的范围内寻找最近的k个节点作为邻域节点,远近的定义取决于l2距离的大小。如下图所示:
    DeepGCNs:Can GCNs Go as Deep as CNNs? 论文学习笔记_第3张图片
    图中黄色点为选取的邻接点,卷积核的大小为3。
  • 顶点v的d-dilated邻域,如下图所示:
    v的邻域
    可以看到各点都在kxd的范围中,数量为k个。
  • 输出的Graph中边的信息就取决于上述d-dilated邻域,边中任意一元素e对应邻域中节点u。通过d空洞率的dilated graph convolution,可以将从Dilated k-NN中获得的边信息,转化成输出Graph的features of vertex。为获得更好的推广,作者使用了随机膨胀(stochastic dilation)。换句话说就是:作者训练时以小概率进行扩张聚合,即在[u1,u2,…ukxd]中均匀抽样k邻域,从而进行随机聚合。测试时,没有随机聚合。

Experiments

4.1Graph learning on 3D point clouds

4.2 Experimental setup

  • 作者主要对比两个指标,一个是overall accuracy(OA),另一个为mean intersection over union(mIoU)
  • 基线模型为DGCNN

4.3 Network architectures

  • 所使用的网络结构如下图表示:
    DeepGCNs:Can GCNs Go as Deep as CNNs? 论文学习笔记_第4张图片
    图中每个模型都由三块组成,其中仅有GCN backbone block不同,其余两块参数相同。GCN backbone 块有三种类型,分别是:PlainGCN backbone 、ResGCN backbone、DenseGCN backbone。
  • 对于S3DIS分割任务而言,4096点的点云输入GCN backbone 块,获得4096个节点的特征图表示,Fusion 块将节点特征作为输入,同时连接节点关系,以融合全局和局部信息(其实就特征再一次提取)。MLP prediction块将获得的融合特征作为输入,使用三个卷积进行分类。

三个对比的model如下:

  • PlainGCN:是基线模型。其GCN backbone block有28个 EdgeConv组成,并使用动态k-NN(类似于DGCNN),没有使用skip connections技巧。
  • ResGCN:相对于PlainGCN,加入了动态 dilated k-NN和residual graph connection。
  • DenseGCN:相对于PlainGCN,加入了动态 dilated k-NN 和dense graph connection,和上述ResGCN的空洞率d相同。

4.4 Implementation

4.5 Result

  • 作者将注意力主要集中在残差连接GCN的分析上,这是因为ResGCN易于训练,速度快。为了表现不同的结构对于性能的影响,我们选取了几个因素:with dilated k-NN,without dilation,with fixed edges.在参数选取上,作者选取了不同数量的邻域内节点个数(4,8,16,32),不同数量卷积核(32,64,128),不同层数(7,14,28,56)结果如下图所示:
    DeepGCNs:Can GCNs Go as Deep as CNNs? 论文学习笔记_第5张图片
    从图中我们可以分析到如下结论:

  • residual graph connections 有显著效果,对比row1和row3,PlainGCN相对效果下降了12.18%

  • dilation,使用dilation可以提升效果(row3),而增加stochasticty增加不显著(row2和row3),从row1和row8对比来看,在有residual connection的情况下,dilation可以帮助提升效果,没有则效果较差。

  • dynamic k-NN使用,会增加计算量。

  • dense graph connection的效果类似于residual graph connection,但是计算开支更大。

  • nearest neighbors ,邻域元素数量增多,可以增强模型表现,如增大一个系数2,将滤波器数量减少2,有很好表现。

  • networks depth 在使用空洞卷积和残差连接的情况下,增加网络深度有助于提升性能。

  • networks width 滤波器数量增加的效果类似于层数的增加。

  • 定性分析 如图所示

    和表中对比结果相似,ResGCN和DenseGCN有着最好的表现。

  • Comparison to stare-of-the-art 如下图所示:
    DeepGCNs:Can GCNs Go as Deep as CNNs? 论文学习笔记_第6张图片
    依旧展现出了ResGCN的有效性

Conclusion and future work
作者指出:

  • GCN中增加skip connections可以缓解,训练困难
  • dilated convolution 可以实现更大的感受野而不损失信息
  • 更深的GCN可以在邻域较小的情况下,依旧能够有较好的性能。
  • 作者能够在80个epochs内训练151层GCN,可以和仅有三个邻域的ResGCN-28/ResGCN-56性能相近。

缓解了梯度消失的问题后,GCN可以设计成更宽或更深,收获更好的性能。作者还指出如何定义邻域最近的度量,不同层使用不同的k进行构建,选取合适的膨胀率仍需要研究。

全文总结
本文对于GCN的研究着来说有几个可以尝试的点

  1. 尝试将文中提到的三个方法加入到自己的模型中,以提升性能
  2. 尝试使用更大的邻域和更多的卷积通道
  3. 将其他更好的pooling方法应用在ResGCN或DenseGCN中
  4. 使用不同的相似性度量,来进行k个最近邻域元素的筛选

参考资料:
友情博客链接:https://blog.csdn.net/yyl424525/article/details/99464457
相关PPT:https://blog.csdn.net/u011507206/article/details/98314558
源码:https://github.com/lightaime/deep_gcns
原文链接:https://arxiv.org/abs/1904.03751

你可能感兴趣的:(深度学习,GCN,深度学习,DeepGCN,空洞卷积)