- 介绍
- 方法
- 图像预处理
- 文本预处理
- 堆叠交叉注意力机制
- image2txt
- txt2image
- 损失函数
- 实验结果
论文发表时间: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∣∣∣∣ej∣∣viTej
s ˉ i j = [ s i , j ] + ∑ i = 1 k [ s i , j ] + 2 qquad bar{s}_{ij}=frac{[s_{i,j}]_{+}}{sqrt{sum_{i=1}^{k}[s_{i,j}]_{+}^{2}}} sˉij=∑i=1k[si,j]+2 [si,j]+,其中 [ x ] + ≡ m a x ( x , 0 ) [x]_{+}equiv max(x,0) [x]+≡max(x,0) - stage2:用加权混合词向量的方法计算出第i个区域对句子的贡献程度
a
i
t
a_{i}^{t}
ait(其实也就是注意力系数),这需要先计算出注意力权重
α
i
,
j
alpha_{i,j}
αi,j,权重描述了区域i和单词j之间的相关性
α i j = e x p ( λ 1 s ˉ i j ) ∑ j = 1 n e x p ( λ 1 s ˉ i j ) qquad alpha _{ij}=frac{exp(lambda _{1}bar{s}_{ij})}{sum_{j=1}^{n}exp(lambda _{1}bar{s}_{ij})} αij=∑j=1nexp(λ1sˉij)exp(λ1sˉij)
a i t = ∑ j = 1 n α i j e j qquad a_{i}^{t}=sum_{j=1}^{n}alpha _{ij}e_{j} ait=∑j=1nαijej - stage3:有了贡献程度(注意力系数),该区域和句子之间的相关性R被定义为该区域和贡献程度之间的距离
R ( v i , a i t ) = v i T a i t ∣ ∣ v i ∣ ∣ ∣ ∣ a i t ∣ ∣ qquad R(v_{i},a_{i}^{t})=frac{v_{i}^{T}a_{i}^{t}}{||v_{i}||||a_{i}^{t}||} R(vi,ait)=∣∣vi∣∣∣∣ait∣∣viTait - stage4:整个图片和整个句子之间的相关性可以使用LogSumExp函数或者平均化的方法来进行
S L S E ( I , T ) = l o g ( ∑ i = 1 k e x p ( λ 2 R ( v i , a i t ) ) ) ( 1 / λ 2 ) qquad S_{LSE}(I, T) = log(sum_{i=1}^{k}exp(lambda _{2}R(v_{i},a^{t}_{i})))^{(1/λ2)} SLSE(I,T)=log(∑i=1kexp(λ2R(vi,ait)))(1/λ2)
S A V G ( I , T ) = ∑ i = 1 k R ( v i , a i t ) k qquad S_{AVG}(I,T)=frac{sum_{i=1}^{k}R(v_{i},a^{t}_{i})}{k} SAVG(I,T)=k∑i=1kR(vi,ait)
注意,stage1和stage2其实也就是注意力机制的一般步骤
虽然说当下是以图像查找文本,但是放在注意力机制的一般思路里面,此时的输入source为单词,输出target为区域。因为注意力机制其实是输出方Target有选择地筛选输入方Source的重要信息并集中在焦点上,而image2txt是需要让区域将焦点有选择地集中到单词上,所以区域是Target,单词是Source。
至于为什么相关性R被定义为区域和贡献程度即注意力系数之间的距离,我们可以理解成
a
i
t
a_{i}^{t}
ait相当于是一个重组的文本编码,该编码反映的是和该区域有强烈相关性的单词。在以往的工作中,区域和文本的相关性是区域直接和输入的文本编码求相似性(即cosine距离),而现在区域同样是和文本编码在求相似性,但该文本中,每个单词不再有一样的重要程度,而是那些和该区域有关的单词的重要性会更高一些。
和image2txt是基本一致的,就是互换了一下位置
- 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∣∣∣∣ej∣∣viTej
s ˉ i j = [ s i , j ] + ∑ j = 1 n [ s i , j ] + 2 qquad bar{s}_{ij}=frac{[s_{i,j}]_{+}}{sqrt{sum_{j=1}^{n}[s_{i,j}]_{+}^{2}}} sˉij=∑j=1n[si,j]+2 [si,j]+,其中 [ x ] + ≡ m a x ( x , 0 ) [x]_{+}equiv max(x,0) [x]+≡max(x,0) - stage2:用加权混合词向量的方法计算出第i个区域对句子的贡献程度
a
j
v
a_{j}^{v}
ajv(其实也就是注意力系数),这需要先计算出注意力权重
α
i
,
j
alpha_{i,j}
αi,j,权重描述了区域i和单词j之间的相关性
α i j = e x p ( λ 1 s ˉ i j ) ∑ i = 1 k e x p ( λ 1 s ˉ i j ) qquad alpha _{ij}=frac{exp(lambda _{1}bar{s}_{ij})}{sum_{i=1}^{k}exp(lambda _{1}bar{s}_{ij})} αij=∑i=1kexp(λ1sˉij)exp(λ1sˉij)
a j v = ∑ i = 1 k α i j v i qquad a_{j}^{v}=sum_{i=1}^{k}alpha _{ij}v_{i} ajv=∑i=1kαijvi - stage3:有了贡献程度(注意力系数),该区域和句子之间的相关性R被定义为该区域和贡献程度之间的距离
R ( e j , a j v ) = e j T a j v ∣ ∣ e j ∣ ∣ ∣ ∣ a j v ∣ ∣ qquad R(e_{j},a_{j}^{v})=frac{e_{j}^{T}a_{j}^{v}}{||e_{j}||||a_{j}^{v}||} R(ej,ajv)=∣∣ej∣∣∣∣ajv∣∣ejTajv - stage4:整个图片和整个句子之间的相关性可以使用LogSumExp函数或者平均化的方法来进行
S L S E ( I , T ) = l o g ( ∑ j = 1 n e x p ( λ 2 R ( e j , a j v ) ) ) ( 1 / λ 2 ) qquad S_{LSE}(I, T) = log(sum_{j=1}^{n}exp(lambda _{2}R(e_{j},a_{j}^{v})))^{(1/λ2)} SLSE(I,T)=log(∑j=1nexp(λ2R(ej,ajv)))(1/λ2)
S A V G ( I , T ) = ∑ j = 1 n R ( e j , a j v ) k qquad S_{AVG}(I,T)=frac{sum_{j=1}^{n}R(e_{j},a_{j}^{v})}{k} SAVG(I,T)=k∑j=1nR(ej,ajv)
Triplet loss(三元组损失)是评价匹配模型的主流方法,其公式如下: l h a r d ( I , T ) = ∑ T ^ [ α − S ( I , T ) + S ( I , T ^ ) ] + + ∑ + I ^ [ α − S ( I , T ) + S ( I ^ , T ) ] + l_{hard}(I,T)=sum_{hat{T}}[alpha−S(I,T)+S(I,hat{T})]_{+}+sum+{hat{I}}[alpha− S(I,T)+S(hat{I},T)]_{+} lhard(I,T)=∑T^[α−S(I,T)+S(I,T^)]++∑+I^[α−S(I,T)+S(I^,T)]+,其中 S S S计算的是图片和句子的距离,^表示反例, α alpha α表示阈值。
但在本文中,作者对这个损失函数进行了更改,如下: l h a r d ( I , T ) = [ α − S ( I , T ) + S ( I , T ^ h ) ] + + [ α − S ( I , T ) + S ( I ^ h , T ) ] + l_{hard}(I,T)=[alpha−S(I,T)+S(I,hat{T}_{h})]_{+}+[alpha− S(I,T)+S(hat{I}_{h},T)]_{+} lhard(I,T)=[α−S(I,T)+S(I,T^h)]++[α−S(I,T)+S(I^h,T)]+
三元组损失函数中的三元为(Anchor, Positive, Negative),其中Anchor为随机样本,Positive是与Anchor同类的样本,Negative是不同类的样本,该损失函数会使得同类样本越来越接近,不同类样本越来越远。放在图文匹配中,使得图像与其对应的文字越来越匹配,和不对应的文字越来越不匹配。文本->图像同理。
实验结果MS-COCO and Flickr30K datasets
MS-COCO
Flickr30K
在可视化中,红框表示注意到的区域,其中越亮表示注意力越高,可以看到实体boy,tennis,racket,属性holding,young比较突出,is,a则较弱,这也证明了模型的可解释性



