ICCV2019——Learning Semantic-Specific Graph Representation for Multi-Label Image Recognition

ICCV2019——Learning Semantic-Specific Graph Representation for Multi-Label Image Recognition(图像识别,图神经网络)

ICCV2019——Learning Semantic-Specific Graph Representation for Multi-Label Image Recognition
论文地址:https://arxiv.org/pdf/1908.07325.pdf
源码地址:https://github.com/Mu-xsan/SSGRL

1. 背景介绍

​ 图像的多标签识别是一项具有挑战性的任务。面对图像的多标签识别任务,我们需要解决两个主要的问题:

  1. 如何精确挖掘语义对象区域
  2. 如何对语义对象区域之间的关联和交互进行建模

​ 当前对于挖掘语义对象的方法通常采用目标定位技术或借助视觉注意网络来定位语义对象区域。然而目标定位技术必须搜索大量与类别无关的冗余建议,并且很难集成到深度神经网络中进行端到端的训练,而视觉注意网络由于缺乏监督或指导,只能粗略定位目标区域。

​ 对于语义对象区域之间的关联和交互进行建模,现在常用的是引入RNN,LSTM等方法来建模语义区域之间的上下文相关性,并捕获标签相关性。但是这些方法中每个区域或标签对之间仍存在直接关联,且无法明确地对统计标签共现进行建模。

​ 下图展示了常用的多标签识别框架SRN:
ICCV2019——Learning Semantic-Specific Graph Representation for Multi-Label Image Recognition
ICCV2019——Learning Semantic-Specific Graph Representation for Multi-Label Image Recognition
​ 由上图,SRN捕捉语义区域的方法借助了视觉注意网络,虽然在精度上高于目标定位技术,但由于缺乏监督,仅能粗略定位。而捕捉上下文关系中,在conv4,SRN将每四个通道合成一个捕捉上下文信息的特征通道,虽然捕捉了上下文信息,但很明显捕捉的信息很有限,无法充分发挥捕捉周围信息。

​ 面对SRN的问题,论文引入了两个模块:

  1. 语义解耦模块,该模块结合了类别语义来指导学习语义特定的表示。
  2. 语义交互模块,该模块将这些表示与基于统计标签共现的图形相关联,并通过图形传播机制探索它们的交互。

2. 总体路线

ICCV2019——Learning Semantic-Specific Graph Representation for Multi-Label Image Recognition

2.1 语义解耦模块

​ 该模块通过语义引导注意机制来实现。

​ 输入640 x 640 x 3的图片,通过ResNet-101提取出特征向量fI,论文将ResNet-101最后一层的全局平均池化层改成了2 x 2,步长为2的平均池化层,该操作为了更好的与语义向量进行结合。

​ 输入类别词,通过Glove模型训练出语义向量xc(这里使用Glove模型是因为该模型同时考虑到了局部和整体的信息),Glove模型的目的:进行词的向量化表示,使得向量之间尽可能多的蕴含语义和语法信息。论文中将语义向量xc设置为300。
ICCV2019——Learning Semantic-Specific Graph Representation for Multi-Label Image Recognition
我选择了部分的类别词,通过Glove模型训练出对应的维度为300的词向量,将其降维可视化。可以从图中看到表示数字的词语几乎重叠在一起了,可见通过Glove模型进行词的向量化,的确使向量蕴含了更多的语法信息。

​ 得到特征向量fI和语义向量xc后,通过低秩双线性池化的哈达玛积公式将两个模态独自和有关联的信息进行融合,映射到一个低维空间中。公式如下:
ICCV2019——Learning Semantic-Specific Graph Representation for Multi-Label Image Recognition
​ 该公式体现了每个位置的重要性。论文在ResNet-101上进行改进就是为了将最后输出的1 x 1 x 2048的特征向量变成3 x 3 x2048的特征向量,更好的体现每个位置(w,h)的重要性,使特征向量和语义向量更好的进行融合。
ICCV2019——Learning Semantic-Specific Graph Representation for Multi-Label Image Recognition
在得到每个位置的特征向量后,利用一个1024到1的全连接层fa(),得到单一系数,为了更好的比较每个位置的系数,通过softmax函数将其归一化,得到最终的注意力系数。最后通过注意力系数和特征向量的加权平均得到带有语义类别的特征向量。

2.2 语义交互模块

2.2.1 模块介绍

​ 一旦获得了对应于所有类别的特征向量,我们就将这些向量以基于统计标签共生关系构建的图的形式进行关联,并引入图神经网络来通过图传播消息以探索它们的相互作用。

​ 其实这个模块引用了ICLR2016提出的GGNN(门控图神经网络)框架,这个框架是在传统GNN上进行改进的。本篇论文的创新在于将GGNN中的聚合特征的框架进行了一定的修改,但是其他传播方式不变。下面将会详细讲解这个模块。

​ 首先得理解图的结构,图是由结点和边组成的,在SSGRL框架中,结点表示类别,边表示两个类别之间共现的概率。如下图。
ICCV2019——Learning Semantic-Specific Graph Representation for Multi-Label Image Recognition
​ 这里的图模型重点在于边,因为不同的图中边的类型是不一样的,边也分出度和入度(如图,bicycle---->person和bicycle<----person是不一样的)。论文在这里将图结构写作{V,A},V表示不同的类别词{v0,v1,v2…,v(c-1)},A表示在c类别存在的条件下,c’类别存在的概率,A表示为{a00,a01,a02…,a0(c-1),…a(c-1)(c-1)}。

2.2.2 信息传播

​ 在了解该框架中图的结点和边代表的含义后,利用图传播机制进行结点间信息的传播与聚合。

​ 在门控图神经网络中引入了一个隐藏状态的概念。将某个结点的周围信息融合成一个向量表示,我们把这个向量定义为隐藏状态。论文中将通过语义解耦得到的特征向量做为t=0时刻的隐藏向量。
ICCV2019——Learning Semantic-Specific Graph Representation for Multi-Label Image Recognition
​ 整篇论文最重要的点应该在于这个聚集特征向量,也是与之前GGNN不同的地方。特征聚合向量是由两个与共现概率进行加权求和的特征向量拼接而成的。(注意这里的a(cc’)和a(c’c)不一定相同,举例:c为人,c‘为车。训练集中存在人的照片有1000张,这1000张图中人车共同出现的图片有800张,因此a(cc’)=0.8;而存在车的照片有1200张,人车共现的图片为800张,因此a(c’c)=0.75)
ICCV2019——Learning Semantic-Specific Graph Representation for Multi-Label Image Recognition
ICCV2019——Learning Semantic-Specific Graph Representation for Multi-Label Image Recognition
​ 上图公式表示GGNN的特征聚合公式,是利用邻接矩阵来突出边的类型与传播方向。相比GGNN的特征聚合,论文引入了共现概率a(cc’),个人认为目的在于使图的边类型更加丰富化,以及丰富了语义信息,引入了共现机制。

​ 在获得聚集特征向量后,就是利用类似于GRU(门控循环网络)的算法去进行隐藏状态的更新。公式如下
ICCV2019——Learning Semantic-Specific Graph Representation for Multi-Label Image Recognition
​ 门控循环单元的内部情况如下::
ICCV2019——Learning Semantic-Specific Graph Representation for Multi-Label Image Recognition
​ 这里以上个迭代的隐藏状态和这个迭代的特征聚合向量为输入。

​ 通过sigmoid函数可以获得r和z两个门(向量),各元素集中在[0,1]范围内。

​ 重置门的作用是控制上一个迭代的隐藏状态流入当前迭代的隐藏状态的信息。例如,r接近于1,上一迭代的隐藏状态流入当前状态的信息多,说明上一迭代的隐藏状态包含的有用信息多;r接近于0,上一迭代的隐藏状态流入当前状态的信息少,说明上一迭代隐藏信息冗余的信息多,通过重置门将其舍去。

​ 更新门的作用同时进行选择信息和遗忘信息。例如,z接近于1,则产生的新信息大部分流入下一迭代状态,且遗忘了小部分上一迭代隐藏状态的信息。反之。

​ 这部分更新机制和传统的GRU及其相似,可以去搜索相关资料进行理解。
ICCV2019——Learning Semantic-Specific Graph Representation for Multi-Label Image Recognition
​ 在理解更新机制后,有助于更好理解门控图神经网络的传播形式。如上图,有四个类别,拟定迭代次数为3(T=3),t=1时,隐藏向量为初始的特征向量;t=2时,隐藏向量聚合了来自周围结点的信息,以类别4为例,收集了来自t=1时刻类别2和类别3的隐藏状态的信息;t=3时,以类别4为例,收集了t=2时刻类别2和类别3的信息,但同时,类别2分别收集了t=1时刻来自类别1,类别3,类别4的信息,类别3收集了t=1时刻来自类别2和类别4的信息。因此t=3时,类别4收集了来自类别1,类别2,类别3的信息,即收集结点周围相关性高的信息。

​ 论文中的迭代次数T设置为3,结合上图,可以直观看出结点在经过三次的迭代后只结合了部分的结点信息,并没有将所有的结点信息进行结合。其实这里就是GGNN在传统的GNN上的一个改进,GGNN将迭代次数固定,而GNN是迭代至收敛(不动点)才停止。GNN的迭代机制造成了大量的计算,以及经过多次的迭代后,结点变得过于光滑,即收集了大量的周围信息,而自身信息造成了丢失。具体的差别可以通过研读论文进行对比。
ICCV2019——Learning Semantic-Specific Graph Representation for Multi-Label Image Recognition
​ 经多次迭代后得到最终的隐藏状态,经上图的过程得到预测得分sc。fo是一个4096到2048的全连接层,fc是一个2048到1的全连接层。得到每个类别的预测得分后,获得得分向量sic,再经过sigmoid函数处理获得概率向量pic。
ICCV2019——Learning Semantic-Specific Graph Representation for Multi-Label Image Recognition
​ 通过损失函数进行端到端的训练。

3. 实验

ICCV2019——Learning Semantic-Specific Graph Representation for Multi-Label Image Recognition
ICCV2019——Learning Semantic-Specific Graph Representation for Multi-Label Image Recognition
ICCV2019——Learning Semantic-Specific Graph Representation for Multi-Label Image Recognition
ICCV2019——Learning Semantic-Specific Graph Representation for Multi-Label Image Recognition
ICCV2019——Learning Semantic-Specific Graph Representation for Multi-Label Image Recognition

4. 结论

4.1 本文贡献

  1. 设计一个语义引导的注意机制来学习语义相关的特征向量

  2. 引入了一个图传播网络来同时探索这些特征向量在统计标签共现的指导下的相互作用。

4.2 个人想法

  1. 本篇论文其实有人称之为水文,因为并没有提出多创新的思想,只是将之前的思想进行修改发表。但是细节的修改与思想的引用在多个数据集中达到可观的效果,可以验证出这篇论文是成功的。

  2. 本篇论文结合了过去提出的图神经网络的概念,使精度有了可观的提升。而近年来图神经网络的思想层出不穷,基于图神经网络的推理机制绝对是未来的发展趋势。

  3. 图神经网络的核心应该还是图的结构,就是从图的结点和边入手,如何找到好的思想结合到边和结点中,值得思考。