文章目录

  • 1. 相关介绍
    • 1.1 背景介绍
    • 1.2 contribution
    • 1.3 CNN中的dilated convolutions (膨胀卷积、扩张卷积、空洞卷积)
  • 2. 模型与方法
    • 2.1 图表示学习
      • 图卷积
      • 动态边
    • 2.2 GCN中使用残差连接
    • 2.3 GCN中使用dense连接
    • 2.4 GCN中使用dilated聚合
  • 3 实验
    • 3.1 TASK: 3D Point Cloud Segmentation
    • 3.2 实验指标
    • 3.3 网络架构
    • 3.4 实现
    • 3.5 实验结果
  • 资料分享

论文:DeepGCNs: Can GCNs Go as Deep as CNNs?

作者:Guohao Li, Matthias Müller, Ali Thabet, Bernard Ghanem

来源:ICCV 2019 Oral

论文链接:https://arxiv.org/abs/1904.03751

Github链接:https://github.com/lightaime/deep_gcns

本篇文章主要阐述了怎么去构建一个网络使得GCN能够堆叠更深的层且不会发生梯度消失的问题,引入了三个方法:1.Resnet 2.Densenet 3.Dilated convolutions 。最后,使用构建了一个非常深的56层的GCN,并展示它如何在点云语义分割任务中显著地提升了性能(相当于最先进的3.7%mIoU|均交并比)。

1. 相关介绍

1.1 背景介绍

GCN网络在近几年发展迅猛。对GCN的研究主要在于两点:

  • 应用:现实世界中非欧氏距离的数据激增,GCN的应用广泛
  • 性能:CCN处理这些数据的局限性

CNN的成功的一个关键因素是能够设计和训练一个深层的网络模型。但是,现在还不清楚如何恰当地设计一个深层的GCN结构。目前的研究工作认为,GCN中aggregate的本质其实相当于图像处理中的平滑(smooth),但是深层GCN的Aggregate容易造成over smooth问题,即节点间的feature难以区分,导致GCN模型一般在2-3层左右。因此,如何让GCN能够进行深层模型的学习一直是一个难题。

1.2 contribution

(1)借助CNN加深的思想,提出了三个深层GCN的算法:residual/dense connections, 和dilated convolutions (膨胀卷积、扩张卷积、空洞卷积)

  • residual / dense connections:解决由网络加深导致的梯度消失问题
  • dilated convolutions:解决由于pooling而导致的空间信息丢失,把卷积核膨胀了,增大了感受野,但没有增加参数数量

(2)使用点云语义分割(point cloud segmentation)任务作为实验平台,展示了这些新层对深度GCNs训练稳定性和性能的影响。

(3)使用提出的模型,在数据集S3DIS上实现了近4%的性能提升。

1.3 CNN中的dilated convolutions (膨胀卷积、扩张卷积、空洞卷积)

一个空洞卷积的例子如下:

Standard Convolution with a 3 x 3 kernel (and padding)

Dilated Convolution with a 3 x 3 kernel and dilation rate 2

2. 模型与方法

2.1 图表示学习

图卷积

通用的GCN网络从第lll层到l+1l+1l+1层的传播按如下方式:
Gl+1=F(Gl,Wl)=Update(Aggregate(Gl,Wlagg),Wlupdate)(1)G_{l+1}=\mathcal{F}(G_l,W_l)=Update(Aggregate(G_l,W_l^{agg}),W_l^{update}) \qquad(1) Gl+1​=F(Gl​,Wl​)=Update(Aggregate(Gl​,Wlagg​),Wlupdate​)(1)

  • Gl=(Vl,εl)G_l=(V_l,\varepsilon_l)Gl​=(Vl​,εl​)和Gl+1=(Vl+1,εl+1)G_{l+1}=(V_{l+1},\varepsilon_{l+1})Gl+1​=(Vl+1​,εl+1​)分别是第lll层的输入和输出
  • WlaggW_l^{agg}Wlagg​和WlupdateW_l^{update}Wlupdate​分别是可训练的聚合和更新函数的权重,它们是GCNs的关键部分

聚合函数可以是mean
aggregator、max-pooling aggregator、attention aggregator或LSTM aggregator。更新函数可以是多层感知器,门控网络等。更具体地说,通过对所有vl+1∈Vl+1v_{l+1} \in V_{l+1}vl+1​∈Vl+1​的相邻顶点特征进行聚合,计算出各层的顶点表示,如下所示:

hvl+1=ϕ(hvl,ρ(hul∣ul∈N(vl),hvl,Wρ),Wϕ)(2)h_{v_{l+1}} = \phi (h_{v_l}, \rho({h_{u_l}|u_l∈ \mathcal{N}(v_l)},h_{v_l},W_\rho ), W_\phi) \qquad(2) hvl+1​​=ϕ(hvl​​,ρ(hul​​∣ul​∈N(vl​),hvl​​,Wρ​),Wϕ​)(2)

  • ρ\rhoρ是一个顶点特征的聚合函数
  • ϕ\phiϕ是一个顶点特征的更新函数
  • hvlh_{v_l}hvl​​和hvl+1h_{v_{l+1}}hvl+1​​分别是第lll层和l+1l+1l+1层的顶点特征
  • N(vl)\mathcal{N}(v_l)N(vl​)是第lll层的顶点vvv的邻居节点的集合
  • hulh_{u_l}hul​​是由WρW_\rhoWρ​参数化的邻居顶点的特征。
  • WϕW_\phiWϕ​包含了这些函数的可训练的参数

本文使用一个简单的max-pooling顶点特征聚集器,在没有可学习参数的情况下,来聚集中心顶点与其所有相邻顶点之间的特征差异。使用的更新器是一个有batch normalization的多层感知器(MLP)和一个ReLU作为激活函数

动态边

大多数GCN只在每次迭代时更新顶点特征。最近的一些工作表明,与具有固定图结构的GCN相比,动态图卷积可以更好地学习图的表示。例如,ECC(Edge-Conditioned Convolution,边缘条件卷积)使用动态边缘条件滤波器(dynamic edge-conditional filters)学习特定边的权重矩阵。EdgeConv在每个EdgeConv层之后,找到特征空间中最近的邻居来重建图形。为了学习点云的生成,Graph-Convolution GAN(生成对抗网络)还应用k-NN图来构造每一层顶点的邻域。动态变化的GCN邻居有助于缓解过度平滑的问题,并产生一个有效的更大的感受野。因此,文中在每一层的特征空间中通过一个Dilated k-NN函数来重新计算顶点之间的边,以进一步增加感受野。

2.2 GCN中使用残差连接

说简单点就是作者受到ResNet的启发把GCN改成ResGCN。文中提出了一个图的残差学习框架,通过拟合另一个残差映射F\mathcal{F}F来学习所需的底层映射H\mathcal{H}H。在GlG_lGl​通过残差映射F\mathcal{F}F变换了后,进行逐点加法得到Gl+1G_{l+1}Gl+1​

Gl+1=H(Gl,Wl)=F(Gl,Wl)+Gl(3)G_{l+1}=\mathcal{H}(G_{l},W_l)=\mathcal{F}(G_l,W_l)+G_l \qquad(3) Gl+1​=H(Gl​,Wl​)=F(Gl​,Wl​)+Gl​(3)
残差映射F\mathcal{F}F把一个图作为输入并为下一层输出一个残差图的表示Gl+1resG_{l+1}^{res}Gl+1res​。WlW_lWl​是第lll层的一组可学习参数。
Gl+1res=F(Gl,Wl):=Gl+1−Gl(4)G_{l+1}^{res}=\mathcal{F}(G_l,W_l):=G_{l+1}-G_l \qquad(4) Gl+1res​=F(Gl​,Wl​):=Gl+1​−Gl​(4)

2.3 GCN中使用dense连接

DenseNet提出了一种更有效的方法,通过密集的连接来改进信息流并重用层之间的特征。DenseNet的启发下,文中采用了类似的思想到GCNs中,以利用来自不同GCN层的信息流,将使用了dense connection的GCN称为DenseGCN。

Gl+1=H(Gl,Wl)=T(F(Gl,Wl),Gl)=T(F(Gl,Wl),...,F(G0,W0),G0)(5)\begin{aligned} G_{l+1} & =\mathcal{H}(G_{l},W_l) \\ & =\mathcal{T}(\mathcal{F}(G_l,W_l),G_l) \\ & =\mathcal{T}(\mathcal{F}(G_l,W_l),...,\mathcal{F}(G_0,W_0),G_0) \end{aligned} \qquad(5) Gl+1​​=H(Gl​,Wl​)=T(F(Gl​,Wl​),Gl​)=T(F(Gl​,Wl​),...,F(G0​,W0​),G0​)​(5)

  • 操作T\mathcal{T}T是一个顶点连接函数,它将输入图G0G_0G0​与所有中间GCN层输出紧密地融合在一起
  • Gl+1G_{l+1}Gl+1​包含了来自前一层的所有GCN转换
  • DenseGCN的增长率等于输出图的维数DDD。例如,如果F\mathcal{F}F生成一个DDD维顶点特征,其中输入图G0G_0G0​的顶点为D0D_0D0​维,则Gl+1G_{l+1}Gl+1​的每个顶点的特征尺寸为D0+D×(l+1)D_0+D ×(l+1)D0​+D×(l+1)。

2.4 GCN中使用dilated聚合

作者从借鉴小波分析,提出了以下方法:
(1)作者考虑在特征空间上使用l2l^2l2距离,对与目标节点(卷积中心点)的距离进行排序:

u1,u2,...,uk×du_1 , u_2 , ..., u_{k×d} u1​,u2​,...,uk×d​
(2)Dilated K-NN: 使用dilated方法确定dilated系数为ddd时,目标节点(卷积中心点)vvv相对应的邻居节点为(u1,u1+d,u1+2d,...,u1+(k−1)d)(u_1,u_{1+d} ,u_{1+2d} , ..., u_{1+(k−1)d})(u1​,u1+d​,u1+2d​,...,u1+(k−1)d​)。

N(d)(v)=u1,u1+d,u1+2d,...,u1+(k−1)d\mathcal{N}^{(d)}(v)= {u_1,u_{1+d} ,u_{1+2d} , ..., u_{1+(k−1)d} } N(d)(v)=u1​,u1+d​,u1+2d​,...,u1+(k−1)d​

  • 图3:在GCNs中的空洞卷积示意图
  • 上图是一个2维空间中的空洞卷积,扩张率分别为1,2,4
  • 下图是在动态图中的卷积,扩张率分别为1,2,4

3 实验

  • 使用提出的ResGCN和DenseGCN来处理GCNs的消失梯度问题。
  • 为了扩大接受域,定义了一个扩张的图卷积算子 dilated convolution 。
  • 为了评估的框架,对大规模点云分割任务进行了大量的实验,并证明了文中的方法可以显著提高模型性能。

3.1 TASK: 3D Point Cloud Segmentation

  • 由于点云结构无序、不规则,点云分割是一项具有挑战性的任务。通常,点云中的每个点都由其三维坐标和其他特征(如颜色、曲面法线等)表示。
  • 在有向图GGG中,作者将每个点视为顶点vvv,并使用k-NN构造每个GCN层点之间的有向动态边)。
  • 在第一层,执行一个dilated k-NN搜索在三维坐标空间中找到最近的邻点,构造了一个初始输入图G0G_0G0​。在随后的层中,使用特征空间中的dilated k-NN动态构建边。
  • 对于分割任务,预测输出层所有顶点的类别。

3.2 实验指标

对所有类别都使用了 overall accuracy (OA) 和 mean intersection over union (mIoU) 作为评价指标。

补充:

  • True Positive (真正, TP)被模型预测为正的正样本;
  • True Negative(真负 , TN)被模型预测为负的负样本 ;
  • False Positive (假正, FP)被模型预测为正的负样本;
  • False Negative(假负 , FN)被模型预测为负的正样本;
  • ground truth:在有监督学习中,数据是有标注的,以(x, t)的形式出现,其中x是输入数据,t是标注。正确的t标注是ground truth
  • Mean Intersection over Union(MIoU,均交并比):为语义分割的标准度量。其计算两个集合的交集和并集之比,在语义分割的问题中,这两个集合为真实值(ground truth)和预测值(predicted segmentation),即计算真实值集和预测值集的交集和并集之比后再求平均。这个比例可以变形为正真数(intersection)比上真正、假负、假正(并集)之和。在每个类上计算IoU,之后平均。
    为了便于解释,假设如下:共有k+1k+1k+1个类(从L0L_0L0​到LkL_kLk​,其中包含一个空类或背景),pijp_{ij}pij​表示本属于类iii但被预测为类jjj的像素数量。即,piip_{ii}pii​表示真正的数量,而pij,pjip_{ij},p_{ji}pij​,pji​则分别被解释为假正和假负,尽管两者都是假正与假负之和。
    MIoU=1k+1∑i=0kpii∑j=0kpij+∑j=0kpji−piiMIoU=\frac{1}{k+1}\sum_{i=0}^{k}{\frac{p_{ii}}{\sum_{j=0}^{k}{p_{ij}}+\sum_{j=0}^{k}{p_{ji}}-p_{ii}}} MIoU=k+11​i=0∑k​∑j=0k​pij​+∑j=0k​pji​−pii​pii​​

3.3 网络架构

如下图所示,模型包含三个部分:GCN、fusion、MLP三个模块。

  • 图2:论文中对于点云语义分割的GCNs网络结构
  • 左图是组成框架的三个block(a GCN backbone block, a fusion block and an MLP prediction block)
  • 右图是GCN backbone block研究的三种主要类型,如PlainGCN、ResGCN、DenseGCN。
  • 采用了两种GCN跳跃连接:vertex-wise additions and vertex-wise concatenations。
  • kkk是GCNs层中最临近的邻居的数量,fff是隐藏层或滤波器的数量,ddd是扩张率。

3.4 实现

  • 使用TensorFlow来实现所有模型。
  • 为了公平比较,使用初始学习率0.001和相同学习率Adam优化器;
  • 学习率每3×1053×10^53×105个梯度下降50%。
  • 使用两个Nvidia Tesla V100 GPU,利用数据并行性对网络进行训练。每个GPU的batch size设置为8。
  • Batch Normalization应用于每一层。
  • MLP prediction block的第二个MLP层使用0.3速率的dropout。
  • 对于GCNs with dilations,使用具有随机均匀抽样概率ϵ=0.2\epsilon=0.2ϵ=0.2的扩张k-nn。
  • 为了隔离所提出的深度GCN架构的影响,不使用任何数据扩充和后处理技术。

3.5 实验结果

  • 图5:在S3DIS中的5个区域进行的消融研究
  • 将参考网络(ResGCN-28有与28层、残差图连接和扩张图卷积等与几个消融的变体进行了比较。
  • 除用于评估的区域5外,所有模型在所有区域均以相同的超参数进行100个epoch的训练。

资料分享

ResGCN-Can GCNs Go as Deep as CNNs? 两份PPT(官方PPT和会议PPT)
ResGCN-Can GCNs Go as Deep as CNNs 论文ppt
Stanford Large-Scale 3D Indoor Spaces Dataset (S3DIS,斯坦福大规模三维室内空间数据集)
此论文的tensorflow版github源代码

DeepGCNs-Can GCNs Go as Deep as CNNs? ICCV 2019相关推荐

  1. 论文阅读和分析:《DeepGCNs: Can GCNs Go as Deep as CNNs?》

    下面所有博客是个人对EEG脑电的探索,项目代码是早期版本不完整,需要完整项目代码和资料请私聊. 数据集 1.脑电项目探索和实现(EEG) (上):研究数据集选取和介绍SEED 相关论文阅读分析: 1. ...

  2. 论文笔记:DeepGCNs: Can GCNs Go as Deep as CNNs?

    前言 GCN与CNN有很多相似之处.GCN的卷积思想也是基于CNN卷积的优秀表现所提出的,.GCN由于其表达形式和卷积方法特殊性,在节点分类任务(引文网络)中,只有简单的3-4层可以把任务完成的很好. ...

  3. My Deep Learning Paper Lib(2019)

    2019. 欢迎访问我的个人博客: http://zengzeyu.com No. PAPER SOURCE 1 Visualizing the Loss Landscape of Neural Ne ...

  4. 五大顶会2019必读的Graph Embedding最新论文

    来源: 深度传送门(ID:deep_deliver) [导读]本文主要总结一下深度推荐系统相关的几大顶会(包含ICML2019/ KDD2019/ IJCAI2019/ WWW2019/ACL2019 ...

  5. 最新推荐 | 清华NLP图神经网络GNN论文分门别类,16大应用200+篇论文

    来源:专知 本文约 6200字 ,建议阅读 5分钟 .本文总结了清华大学NLP课题组Jie Zhou, Ganqu Cui, Zhengyan Zhang and Yushi Bai同学对 GNN 相 ...

  6. 图卷积网络、图神经网络必读论文

    Content 1. Survey 2. Models  2.1 Basic Models  2.2 Graph Types  2.3 Pooling Methods  2.4 Analysis  2 ...

  7. 我们真的需要深度图神经网络吗?

    2020-07-30 19:07:22 深度学习的一大特点就是使用的神经网络具有几十层甚至数百层.与之形成鲜明对比的是,大多数用于图深度学习的架构都很"浅",只有少量的层.在本文中 ...

  8. 重磅推荐,计算机视觉开源周报20191003期

    点击我爱计算机视觉标星,更快获取CVML新技术 图片来自智能体"躲猫猫" 总结了过去一周CV领域的最新开源代码,发现本周出现多份很有价值的高质量.重量级工作,比如致力于使得图卷积网 ...

  9. 必读 | 一文看尽2019-2020各大顶会GNN论文(附链接)

    纵观2019年包括深度学习.计算机视觉.文本处理以及数据挖掘在内的顶级会议,图学习相关的论文较于之前都有十分明显的增长.而就 2020的情况来看,这个趋势还在不断扩大.总之,Graph Neural ...

最新文章

  1. 重磅:USNews2021世界大学排行榜出炉!清华首登亚洲第一
  2. asp.net core上使用redis探索(1)
  3. C语言归并排序Merge Sort算法(附完整源码)
  4. linux 下升级apache,CentOS6.5在已有低版本环境下安装升级Apache+MySQL+PHP,centos6.5apache...
  5. 关于 Cypress 同界面元素交互的讨论
  6. python判断语句入门教程_Python中的条件判断语句基础学习教程
  7. #{}不自动改参数类型_我是干流动补胎的,想让我的柴油机气泵自动打气,怎么改装。谢谢。...
  8. 关于Watir的upload file不能自动选择文件的解决方案
  9. Reflector使用手记
  10. Lync Server 2010 客户端访问提示验证服务器中的证书时遇到问题解决方法
  11. FlasCC例子研究之bitmapdata
  12. python(九):函数、匿名函数 lambda
  13. java 夏令时区_java中的夏令时
  14. 斗鱼“亏转盈”,内容付费真的能代替游戏直播?
  15. 推荐学习法——思维导图
  16. 学习-软件测试-Selenium-unittest-Maven-Jmeter
  17. 私藏!认认真真推荐几个技术公众号
  18. python输出1到100之间的合数_python输出100以内的质数与合数实例代码
  19. 怎样配置java的环境变量_java配置环境变量步骤
  20. DRV8301/8303代码讲解

热门文章

  1. PHP 开发 APP 接口 学习笔记与总结 - 静态缓存
  2. 越狱第三季12集出来了
  3. jsp 引用配置 ueditor富文本编辑器
  4. 宝马宣布国产3系5系即将发布
  5. Android点滴积累
  6. springcloudspringboot+vue+elementui+flowable+自定义表单+VUE流程设计器
  7. 域名和IP地址什么关系?如何通过域名解析IP?
  8. 挖掘网站数据价值——大规模离线数据的分析处理应用
  9. java常用的时间工具—原日期的基础上增加时间
  10. 【ROS2知识】SQLite数据库