Multi-Label Image Recognition with Graph Convolutional Networks [CVPR2019]

Multi-Label Image Recognition with Graph Convolutional Networks
Code: link

针对多标签图像识别 (multi-label image recognition) 问题,旷视研究院提出一种基于图卷积网络的模型取得了良好的表现,该模型包含一个CNN的图像特征提取模块和一个图卷积网络进行标签间关系提取模块。

Intro

对于多标签图像的识别问题,传统的方法往往是对每个标签进行孤立的二分类,即预测每个物体是否出现。基于概率图模型或RNN模型的方法则考虑显式的建模标签之间的依赖关系。也有方法将图像区域划分后考虑区域间的局部相关性,从而隐式的建模标签相关性。本文提出的基于GCN的端到端模型将标签的表示映射到相互独立的对象分类器上。

最简单的多标签识别方法就是为每个标签独立训练一个二分类器,这种模型没有考虑标签之间的关系。当数据集中可能的标签数量增长时,可能的标签组合就会指数级增长(当一个数据集包含20个标签,则标签组合就有\(2^{20}\)种。基于RNN、LSTM之类的模型将标签嵌入为向量,从而发掘标签间的相关性。
本文提出的模型将多标签构建为有向图,借助GCN在标签间的信息传播来学习图像标签间依赖、共现关系,并实现端到端训练。

Framework

图像特征提取

论文用CNN进行图像特征提取,具体为ResNet-101的网络结构,输入图像\(I\),经过cnn和global max-pooling后得到2048维图像特征。 \[ \boldsymbol{x}=f_{\mathrm{GMP}}\left(f_{\mathrm{cnn}}\left(\boldsymbol{I} ; \theta_{\mathrm{cnn}}\right)\right) \in \mathbb{R}^{D} \]

图卷积

卷积模块与最基本的卷积相同,如下式 \[ \boldsymbol{H}^{l+1}=h\left(\widehat{\boldsymbol{A}} \boldsymbol{H}^{l} \boldsymbol{W}^{l}\right) \] 我们主要关注如何构图,在这一方面,本文的idea似乎有些超脱CV领域。模型针对图片数据集构建图,图中的节点为数据中的标签,并使用word embedding(pre-trained glove)对节点特征进行初始化。
而对于图的边,也对应图卷积中的矩阵\(\boldsymbol{A}\)(文中称其为相关系数矩阵),模型使用条件概率\(P\left(L_{j} \mid L_{i}\right)\)进行建模,已期获得标签相关性信息。 具体而言,论文统计了数据集中的标签对的共现次数,然后构建共现矩阵,并设定一个阈值来进行二值化处理,借此过滤噪声边。

借助模型框架图可以看到,模型中图卷积模块起的是类似辅助分类器的作用,图中每个标签节点就是该标签的一个二分类器,将基于整个数据集训练的分类器\(\boldsymbol{W} \in \mathbb{R}^{C \times D}\)与图像的特征\(x \in \mathbb{R}^{D}\)进行点积,得到\(\boldsymbol{y} \in \mathbb{R}^{C}\)(C表示标签的总数)。图卷积利用的信息也只有图的边,也就是标签的共现,而后借助图卷积与图像特征提取进行共同训练,得到标签之间关系的隐式表示,最终推动更准确的多标签识别。

实验

不过在尝试复现该模型时,本人试验了几个数据集似乎始终无法到达论文中的结果。

I do not accept rewards, but you can donate to the public welfare of China.
0%