文章链接:https://papers.nips.cc/paper/8135-beyond-grids-learning-graph-representations-for-visual-recognition.pdf

TL;DR

文章中介绍如何利用GCN学习图片中大范围内不同regions之间依赖关系的方法(我认为主要是利用GCN扩大了网络的receptive field)。为了将图片feature map转换为图结构,提出了Graph Convolutional Unit。

Dataset/Algorithm/Model

Graph Convolutional Unit (GCU)架构如下:

网络架构

大概分为三部分:

  1. Graph Projection(feature map→ graph representation(A, node features))

    对于一个feature map,相同特征的pixels构成同一个顶点(顶点的数量是预先确定的)。顶点的特征是根据各个像素点的特征聚合而成,计算公式如下:

    qijk=exp⁡(−∥(xij−wk)/σk∥22/2)∑kexp⁡(−∥(xij−wk)/σk∥22/2)q_{i j}^{k}=\frac{\exp \left(-\left\|\left(x_{i j}-w_{k}\right) / \sigma_{k}\right\|_{2}^{2} / 2\right)}{\sum_{k} \exp \left(-\left\|\left(x_{i j}-w_{k}\right) / \sigma_{k}\right\|_{2}^{2} / 2\right)}

    ,其中σ\sigma 是和ww 是可更新的值,qq 是映射矩阵(后面的re-projection用到,有点玄乎的东西)。再对顶点的特征归一化:

    zk=zk′∥zk′∥2,zk′=1∑ijqijk∑ijqijk(xij−wk)/σkz_{k}=\frac{z_{k}^{\prime}}{\left\|z_{k}^{\prime}\right\|_{2}}, \quad z_{k}^{\prime}=\frac{1}{\sum_{i j} q_{i j}^{k}} \sum_{i j} q_{i j}^{k}\left(x_{i j}-w_{k}\right) / \sigma_{k}

  2. Graph Convolution (features propagation)

    多层的GCN堆积(加上了BN和ReLU):

    Z~=f(AZTWg)\tilde{Z}=f\left(\mathcal{A} Z^{T} W_{g}\right)

  3. Graph Re-Projection (node features→ feature map)

    将每个pixel的特征还原,反映射公式如下:

    X~=QZ~T\tilde{X}=\mathcal{Q} \tilde{Z}^{T}

文章中提出,在两个layers之间可以插入多个GCU,架构如下所示:

GCU 堆叠

Experiments

不同任务下加入GCU的效果:

实验结果

Thoughts

文章中提出了GCU,可以将feature构图,增强了feature map中不同regions之间的依赖关系,这种想法在FR中可以借鉴。但是:

  1. 对于构图中V的数量是人为确定的,这个可以改进。

  2. 对于不同的regions,构图中没有考虑到空间位置的关系,这个也可以提升一下。

联系作者