论文标题 | DeepGCNs: Can GCNs Go as Deep as CNNs?
论文来源 | ICCV 2019
论文链接 | https://arxiv.org/pdf/1904.03751.pdf
源码链接 | https://github.com/lightaime/deep_gcns_torch

TL;DR

由于 deep GCN model 会产生 over-smoothing 的现象(也可以理解为梯度消失),所以目前基于 GCN 的模型都比较浅,大概 3-4 layers。如果 GCN 和 CNN 类似,那么增加 layers 的数量模型的效果应该会更好。基于这种假设和类推,这篇文章仿照 CNN 中的方法,提出了三种可以增加 GCN 深度的方法。在图像点云分割的实验中证明本文使用更深的 GCN 模型可以提升效果。

Algorithm/Model

对于 CNN 模型,如果需要增加网络的深度,目前有以下三种方法:

  • residual connections.
  • dense connections.
  • dilated convolutions.

作者仿照 CNN 模型中增加深度的方法,在 GCN 中也同样使用这三种方法。

首先,对于点云分割的任务,文章中提出的模型如下图所示:

以下介绍模型中如何应用以上提到的三种方法:

  1. Residual Learning for GCNs
    和 CNN 中一致,将输入和输出相加:

Gl+1=H(Gl,Wl)=F(Gl,Wl)+Gl\begin{aligned} \mathcal{G}_{l+1} &=\mathcal{H}\left(\mathcal{G}_{l}, \mathcal{W}_{l}\right) \\\\ &=\mathcal{F}\left(\mathcal{G}_{l}, \mathcal{W}_{l}\right)+\mathcal{G}_{l} \end{aligned}

  1. Dense Connections in GCNs
    跨 layers 之间特征连接:

Gl+1=H(Gl,Wl)=T(F(Gl,Wl),Gl)=T(F(Gl,Wl),,F(G0,W0),G0)\begin{aligned} \mathcal{G}_{l+1} &=\mathcal{H}\left(\mathcal{G}_{l}, \mathcal{W}_{l}\right) \\\\ &=\mathcal{T}\left(\mathcal{F}\left(\mathcal{G}_{l}, \mathcal{W}_{l}\right), \mathcal{G}_{l}\right) \\\\ &=\mathcal{T}\left(\mathcal{F}\left(\mathcal{G}_{l}, \mathcal{W}_{l}\right), \ldots, \mathcal{F}\left(\mathcal{G}_{0}, \mathcal{W}_{0}\right), \mathcal{G}_{0}\right) \end{aligned}

  1. Dilated Aggregation in GCNs
    根据 K-NN 的 vertices 进行空洞卷积:

N(d)(v)={u1,u1+d,u1+2d,,u1+(k1)d}\mathcal{N}^{(d)}(v)=\left\{u_{1}, u_{1+d}, u_{1+2 d}, \ldots, u_{1+(k-1) d}\right\}

对于 image 和 graph 的空洞卷积如下图所示:

使用以上三种技术,文中提出的 GCN 可以达到 56 layers GCN,并且在点云分割实验中达到了很好的效果。

Experiment Detail

Thoughts

文中通过将 GCN 和 CNN 相对比,为了增加 GCN 的深度使用了和 CNN 中相似的方法,创新点不大但是实用性很大,在以后实现模型中可以尝试。

联系作者