DeepGCN: Can GCNs Go as Deep as CNNs?
paper链接:https://arxiv.org/abs/1904.03751
代码链接:https://github.com/lightaime/deep_gcns
project: https://www.deepgcns.org/
1. GCN存在的问题
GCN中,aggregate的本质其实相当于图像处理中的平滑(smooth),在知乎上也有人用物理学的原理从热传播的角度解释GCN的aggregate过程: https://www.zhihu.com/question/54504471
但是深层GCN的Aggregate容易造成过度smooth问题,即节点间的feature难以区分,导致GCN模型一般在2-3层左右。因此,如何让GCN能够进行深层模型的学习一直是一个难题。
本文提出了几个能让GCN进行深层学习的方法,主要contribution如下:
- 他们提出了三个深层GCN的算法:residual/dense connections, and dilated convolutions
- 他们使用点云语义分割(point cloud segmentation)任务作为实验平台,展示了这些新层对深度GCNs训练稳定性和性能的影响。
- 使用它们自己提出的模型,在数据集S3DIS上实现了近4%的性能提升。
注: 我对GCN的smooth问题的理解是,由于Aggregate函数应用了拉普拉斯矩阵的原因,节点的feature信息传递速度太快,导致2-3层后GCN节点间feature难以区分。用上面所引用的知乎链接的角度来看就是,热传播速率太快,导致我们没有充分捕捉热传播途中的节点feature信息。而本文显然提出了一种缓解的方式。
2. 模型与方法
2.0 GCN模型
通用的GCN网络从
其中
2.1 Residual Learning for GCNs
说简单点就是作者受到ResNet的启发把GCN改成了下面这样,并把它称为ResGCN:
2.2 Dense Connections in GCNs
DenseNet的提出是为了利用各层之间的紧密连通性,这改善了网络中的信息流,实现了各层之间特征的高效重用。受DenseNet的启发,作者将类似的想法应用到GCNs中,以便利用来自不同GCN层的信息流。具体做法如下:
若
2.3 Dilated Aggregation in GCNs
作者从借鉴小波分析,提出了以下方法:
- 作者考虑在特征空间上使用
距离,对与目标节点(卷积中心点)的距离进行排序:
- Dilated K-NN: 使用dilated方法确定dilated系数为
时,目标节点(卷积中心点)相 对应的邻居节点为。
如下图所示:
3. 此方法相当于将卷积中心点
3. 实验
作者提出了ResGCN和DenseGCN来处理GCNs的消失梯度问题。为了扩大接受域,他们定义了一个扩张的图卷积算子 dilated convolution 。 为了评估的框架,他们对大规模点云分割任务进行了大量的实验,并证明他们的方法可以显著提高模型性能。
3.1 TASK: 3D Point Cloud Segmentation
通常,点云中的每个点都用其表示三维空间坐标和可能的辅助特征(颜色、表面法向量等)表示。作者将每个点视为有向图
3.2 实验指标
他们对所有类别都使用了 overall accuracy (OA) 和 mean intersection over union (mIoU) 作为评价指标。
3.3 Network Architectures
如下图所示,模型包含三个部分:GCN、fusion、MLP三个模块。
其中GCN模块会把每一层的特征最后输出出去,PlainGCN就是最原始的GCN。fusion模块中会将GCN每一层的特征concatenate,然后1x1 conv,最后max pooling。MLP模块用每个point的feature判断类别。随着GCN层的深度变大,dilated k-NN 的 dilation 参数