ICCV 2019 论文标题:Learning Semantic-Specific Graph Representation for Multi-Label Image Recognition 论文地址:https://arxiv.org/abs/1908.07325 代码地址:https://github.com/HCPLab-SYSU/SSGRL

image.png


简介

本文将GNN应用于Multi-Label Image Recognition任务,提出了一种Semantic-Specific Graph Representation Learning模型,简称SSGRL。SSGRL由两个核心模块组成:1.semantic decoupling module结合了词嵌入,利用category的语义计算attention map,为每个category生成其semantic-specific representation。2.semantic interaction module以category为node,以label co-occurrence的统计信息为邻接权重,构建graph。通过GNN的聚合更新提取node间的语义交互信息。在attention+GNN的作用下,SSGRL能充分提取图像的高级语义特征,因此在VOC2007&2012和COCO数据集上均达到目前最优的效果。

SSGRL Framework

SSGRL模型的结构并不复杂,且设计十分优美,图1是其整体的结构,图2是细节结构:
image.png
image.png

从图中我们可以看到,SSGRL首先在图像feature map的基础上,对每一个category生成了一个attention map,有点弱目标检测的意思。接着以category为node,构建graph。然后利用GNN处理graph,最后对每个node进行二分类,判断图像中是否存在该node所表示的category。下面详细介绍:

Semantic Decoupling

图中生成attention map的部分就是semantic decoupling module。这个模块的作用是为每一个category都生成其对应的attention map,然后用attention map对图像的feature map加权求和,得到这个category对应的feature。这里生成的attention是spatial的attention,相当于将图像的WHN维feature map看作WH个N维的特征向量,对这WH个特征向量加权求和。公式如下:
image.png
其中I是图像,image.png是CNN生成的图像的feature map。
image.png
其中image.png是某个category的词嵌入向量,image.png是该category的image.png的语义嵌入向量。
然后利用image.pngimage.png的每个位置image.png生成一个特征向量,去表达该category的semantic-aware region:
image.png
其中image.pngimage.png都是learnable的权重,image.png表示element-wise的相乘。d2是输出向量的维度。
最后生成attention map:
image.png
image.png
其中image.png表示c category在wh位置处的attention。
利用得到的attention map对image.png加权求和,就得到了该category对应的semantic-specific representation:
image.png
若数据集有C个category,则需要重复计算C个category的representation:image.png,这些representation就是GNN node的初始feature。

Semantic Interaction

这个模块是构建graph,再利用GNN聚合category之间的语义关系。graph的node是所有的category,初始特征就是其semantic-specific representation:
image.png
graph的邻接矩阵比较特殊,也是本文中graph结构的创意所在。其邻接权重是两个category在数据集中同时出现的概率:image.png,例如a0(C-1)表示在0号category出现的情况下,(C-1)同时出现的概率。需要注意的是,a0(C-1)与a(C-1)0是不同的。也就是说这个邻接矩阵不是对称矩阵。
有了node和edge,再用以下公式计算message:
image.png
其中image.png表示在step t,对于node c的message。再注意一下,因为邻接矩阵不对称,因此上式有两项。[ , ]应该表示concat。(作者好像把image.png的下标标错了,应该是c’才合理)。
SSGRL利用GRU单元更新node特征:
image.png
最后经过T step (T=3)迭代,将image.pngimage.pngconcat起来,作为node的最终feature,用于得到二分类score:
image.png
这里的image.png函数对于不同的category是不共享的,即每个category都有其自己的image.pngimage.pngimage.png在实验中都是全连接层,其中image.png有tanh激活,image.png没有激活函数。

以上就是SSGRL模型的全部结构,对于每一处特征向量的具体维度,作者在原文中有详细说明,也有开源代码可以查看。补充一下loss函数,就是很典型的sigmoid cross entropy。但需要注意的是,这种multi-label的问题一般会使用sigmoid cross entropy,而不是softmax cross entropy,要区分清楚。
image.png
image.png

Experiments

作者在常用的VOC2017&2012和COCO数据集上做了实验。重点看一下图4,是对文中attention的可视化。可以看到这个结合了词嵌入的attention模块有点目标检测的意思。
image.png

image.png
image.png

总结

本文SSGRL的两个模块semantic decoupling module和semantic interaction module都结构简单,易于理解,也不乏创新之处。其中结合词嵌入生成attention map和概率统计构建邻接矩阵个人认为是两个亮点,不得不服作者的脑洞。另外作者提供了开源代码,值得深入阅读一下!