Stacked Cross Attention for Image-Text Matching
论文发表时间:2018
论文作者:Kuang-Huei Lee1, Xi Chen1, Gang Hua1, Houdong Hu1, and Xiaodong He2?
论文地址:https://arxiv.org/abs/1803.08024
代码地址:https://github.com/kuanghuei/SCAN
介绍
作者认为,在某种意义上,句子的描述属于弱注释,也就是说,句子里的那些单词对应于图片中一些具体的,但是是未知的区域。通过捕捉视觉和语言之间细粒度的相互作用,来推断图片区域和句子之间的潜在联系,是实现更易于理解的图片-文本匹配的关键。
在此前的科研工作中,大多的图文匹配模型会在粗粒度的层面来检测图片区域,并简单地将所有可能的(图像区域和句子中的单词对)的相似性聚合起来,从而推断全局图像-文本的相似性。但这样就会发现,他们其实没有考虑到单词的重要性可能是会取决于视觉语境的。
因此在本文中,作者将不同重要的图像区域和单词作为上下文来推断图像文本之间的相似性。即堆叠交叉注意机制。这分成两个步骤:
- 对于一个给定的图像和文本,首先处理与每个图像区域有关的句子中的单词
- 将每个图像区域和句子中出现的单词信息进行比较,来确定图像区域的重要性。
同理,如果是文本-图像对,就会先处理与每个单词有关的图像区域,来决定每个单词的重要性
方法
图像预处理
使用自下而上的注意力机制Faster-RCNN来提取前36个重点图像区域,对于区域i特征,经过平均池化和全连接后,得到该区域的编码 v i = W i f i + b i v_{i}=W_{i}f_{i}+b_{i} vi=Wifi+bi,这样图像 V = { v 1 , . . . , v k } V=\{v_{1},...,v_{k}\} V={ v1,...,vk},这里的k指的是图像区域个数,为36个
文本预处理
对于单词 w i w_{i} wi,使用嵌入矩阵得到单词的嵌入向量 x i = W e w i x_{i}=W_{e}w_{i} xi=Wewi,随后使用一个双向GRU网络得到单词编码 e i = h i → + h i ← 2 e_{i}=\frac{\overrightarrow{h_{i}}+\overleftarrow{h_{i}}}{2} ei=2hi+hi,其中 h i → = G R U → ( x i ) , h i ← = G R U ← ( x i ) \overrightarrow{h_{i}}=\overrightarrow{GRU}(x_{i}),\overleftarrow{h_{i}}=\overleftarrow{GRU}(x_{i}) hi=GRU(xi),hi=GRU(xi)。双向GRU网络可以结合上下文信息,而不是只有上文或者只有下文信息。这样文本 E = { e 1 , . . . , e n } E=\{e_{1},...,e_{n}\} E={ e1,...,en},其中n表示单词个数
堆叠交叉注意力机制
image2txt
- 计算每个区域和句中词的关系
- 确定图片区域的重要性,也就是句子是否涉及了这个区域
对于输入的图像I和句子T,经过检测和处理,I包含k个区域,T包含n个单词,分成下面几个步骤进行:
- stage1:使用余弦距离计算区域i和单词j的相似性,并进行正则化处理
s i , j = v i T e j ∣ ∣ v i ∣ ∣ ∣ ∣ e j ∣ ∣ \qquad s_{i,j}=\frac{v_{i}^{T}e_{j}}{||v_{i}||||e_{j}||} si,j=∣∣vi