ICCV 2019 论文标题:DeepGCNs: Can GCNs Go as Deep as CNNs? 论文地址:https://arxiv.org/abs/1904.03751 代码地址:https://sites.google.com/view/deep-gcns

image.png


简介

CNN在视觉任务上取得的成功很大程度归功于网络的深度,但擅长处理非欧式空间数据的GCN却受限于训练过程中梯度消失和过渡平滑等问题,而无法成功训练出足够深的GCN网络。本文借鉴ResNet、DenseNet以及Dilated Convolution的思想,将其运用在GCN中,成功构建了深度达到56层的GCN网络。最后,作者在点云语义分割任务中测试了深度GCN的有效性。本文的主要贡献在于讨论了深度GCN的有效性并提供了一种深度GCN的设计思路,这种深度GCN在更多的视觉任务中都有很大的应用潜力。

Representation Learning on Graphs

作者首先介绍了GCN的一般形式,严格来讲应该算是GNN的范畴了,但这部分将其数学形式归纳的很不错,就再记录一下吧。GCN的一般形式归纳为下式:
image.png
式中image.png分别是第l层和第l+1层的graph。GCN的操作过程分为两步:aggregate和update,也就是式中的两个函数,参数分别是image.pngimage.png。aggregate函数的作用是将某个结点和其相邻结点的特征进行聚合,update函数的作用是根据聚合的特征对该结点的特征进行更新。常见的aggregate函数有mean aggregator、max-pooling aggregator、LSTM aggregator等。常见的update函数有MLP、GRU模型等。经典GCN的aggregate函数可以理解为mean aggregator,而update函数是MLP+Relu。
以结点形式表示GCN的一般形式如下:
image.png
其中image.png表示aggregate函数,image.png表示update函数,image.png表示第l层结点v的邻接结点(可以是k阶邻接)。

Residual Learning for GCNs

残差学习是训练深度CNN的关键,因此要训练深度GCN,肯定首先尝试将GCN与Residual Learning结合。作者给出了以下结合方式:
image.png
式子很好理解,就是在graph的每个结点层面上添加shortcut。这样一来,GCN学习的不再是image.pngimage.png的映射,而是image.pngimage.png的映射,这是Residual Learning的核心思想。

Dense Connections in GCNs

除了Residual Learning,DenseNet中的dense connectivity思想也是很好的训练深度网络的方式。作者同样将其与GCN结合:
image.png
式中image.png表示vertex-wise concatenation,也就是说层数越深,结点特征的维度越高。假设第0层结点特征维度为image.png,GCN每次输出的维度为image.png,那么第l层结点特征的维度就达到了image.png


Dilated Aggregation in GCNs

Dilated Convolution可以在不进行pooling的情况下扩大卷积的感受野,作者也将这种思想引入了GCN中。要进行Dilated Aggregation首先要对结点的邻接结点进行排序,这里作者使用结点特征之间的L2距离衡量结点顺序。例如对于结点v,其有序邻接结点为image.png,若以d为步长选择其邻接结点,则:
image.png
这些被筛选出来的邻接结点参与aggregate函数的聚合。上述过程如图3:
image.png

为了加强网络的泛化能力,作者还提出了一种随机采样的Dilated Aggregation方式用于网络的训练过程。


Network Architectures

以上就是作者构建深度GCN的模型基础。针对特定的点云分割任务,作者用上述模组分别构建了三种深度GCN:
image.png

Results

表1展示了各种组件与深度对GCN模型表现的作用,可以看到ResGCN相对来讲表现最好,并且层数更多的GCN往往表现更好。表中#filters的含义我还不是很理解,有待以后在代码中查看细节。
图1中可以看到,ResGCN可以在训练过程中表现出更好的稳定性,有效解决梯度消失和过渡平滑的问题。
图4和表2可以看到,深度GCN在实际应用中的表现也很好。
image.png

image.png

image.png

总结

挖坑的文章往往比填坑的文章更有意义。本文应该算是一个小小的挖坑文章吧,期待深度GCN在更多领域的表现。但目前来看,由于大多数RGB视觉任务中graph的规模都很小,深度GCN的应用场景还有待挖掘。