论文: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|均交并比)。
GCN网络在近几年发展迅猛。对GCN的研究主要在于两点:
CNN的成功的一个关键因素是能够设计和训练一个深层的网络模型。但是,现在还不清楚如何恰当地设计一个深层的GCN结构。目前的研究工作认为,GCN中aggregate的本质其实相当于图像处理中的平滑(smooth),但是深层GCN的Aggregate容易造成over smooth问题,即节点间的feature难以区分,导致GCN模型一般在2-3层左右。因此,如何让GCN能够进行深层模型的学习一直是一个难题。
(1)借助CNN加深的思想,提出了三个深层GCN的算法:residual/dense connections, 和dilated convolutions (膨胀卷积、扩张卷积、空洞卷积)
(2)使用点云语义分割(point cloud segmentation)任务作为实验平台,展示了这些新层对深度GCNs训练稳定性和性能的影响。
(3)使用提出的模型,在数据集S3DIS上实现了近4%的性能提升。
一个空洞卷积的例子如下:
Standard Convolution with a 3 x 3 kernel (and padding)
Dilated Convolution with a 3 x 3 kernel and dilation rate 2
通用的GCN网络从第 l l l层到 l + 1 l+1 l+1层的传播按如下方式:
G l + 1 = F ( G l , W l ) = U p d a t e ( A g g r e g a t e ( G l , W l a g g ) , W l u p d a t e ) ( 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)
聚合函数可以是mean
aggregator、max-pooling aggregator、attention aggregator或LSTM aggregator。更新函数可以是多层感知器,门控网络等。更具体地说,通过对所有 v l + 1 ∈ V l + 1 v_{l+1} \in V_{l+1} vl+1∈Vl+1的相邻顶点特征进行聚合,计算出各层的顶点表示,如下所示:
h v l + 1 = ϕ ( h v l , ρ ( h u l ∣ u l ∈ N ( v l ) , h v l , 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)
本文使用一个简单的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函数来重新计算顶点之间的边,以进一步增加感受野。
说简单点就是作者受到ResNet的启发把GCN改成ResGCN。文中提出了一个图的残差学习框架,通过拟合另一个残差映射 F \mathcal{F} F来学习所需的底层映射 H \mathcal{H} H。在 G l G_l Gl通过残差映射 F \mathcal{F} F变换了后,进行逐点加法得到 G l + 1 G_{l+1} Gl+1
G l + 1 = H ( G l , W l ) = F ( G l , W l ) + G l ( 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把一个图作为输入并为下一层输出一个残差图的表示 G l + 1 r e s G_{l+1}^{res} Gl+1res。 W l W_l Wl是第 l l l层的一组可学习参数。
G l + 1 r e s = F ( G l , W l ) : = G l + 1 − G l ( 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)
DenseNet提出了一种更有效的方法,通过密集的连接来改进信息流并重用层之间的特征。DenseNet的启发下,文中采用了类似的思想到GCNs中,以利用来自不同GCN层的信息流,将使用了dense connection的GCN称为DenseGCN。
G l + 1 = H ( G l , W l ) = T ( F ( G l , W l ) , G l ) = T ( F ( G l , W l ) , . . . , F ( G 0 , W 0 ) , G 0 ) ( 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)
作者从借鉴小波分析,提出了以下方法:
(1)作者考虑在特征空间上使用 l 2 l^2 l2距离,对与目标节点(卷积中心点)的距离进行排序:
u 1 , u 2 , . . . , u k × d u_1 , u_2 , ..., u_{k×d} u1,u2,...,uk×d
(2)Dilated K-NN: 使用dilated方法确定dilated系数为 d d d时,目标节点(卷积中心点) v v v相对应的邻居节点为 ( u 1 , u 1 + d , u 1 + 2 d , . . . , u 1 + ( 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 ) = u 1 , u 1 + d , u 1 + 2 d , . . . , u 1 + ( 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
对所有类别都使用了 overall accuracy (OA) 和 mean intersection over union (mIoU) 作为评价指标。
补充:
如下图所示,模型包含三个部分:GCN、fusion、MLP三个模块。
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源代码