【论文阅读】Iterative Matching with Recurrent Attention Memory for Cross-Modal Image-Text Retrieval
Iterative Matching with Recurrent Attention Memory for Cross-Modal Image-Text Retrieval
-
-
介绍
-
模型
-
- 跨膜态特征表示
- RAM:重复记忆模块
-
- CAU:跨膜态注意单元
-
MDU:记忆提取单元
-
RAM Block
- 图文匹配中应用RAM
- 损失函数
-
实验结果
-
论文引用:Chen, Hui, et al. “Imram: Iterative matching with recurrent attention memory for cross-modal image-text retrieval.” Proceedings of the IEEE/CVF conference on computer vision and pattern recognition. 2020.
时间:2020(CVPR)
论文链接:https://openaccess.thecvf.com/content_CVPR_2020/html/Chen_IMRAM_Iterative_Matching_With_Recurrent_Attention_Memory_for_Cross-Modal_Image-Text_CVPR_2020_paper.html
代码链接:https://github.com/HuiChen24/IMRAM
介绍
作者考虑到文本是由不同含义的不同种类的语义概念构成的,比如有对象、属性和关系等,而不同概念之间通常又存在着很强的相关性,比如说动词会经常性地用来表示不同对象之间的关系等等。并且,人们经常遵循一种潜在结构(如树状结构等)将不同的语义概念组合成可理解的语言。但这些是以往模型都没有考虑到的点,它们会平等地对待不同种类的语义,那么作者在这里就考虑到了不同语义之间的复杂性,并对此进行研究。
人在进行图文匹配的时候,会优先看低级语义概念,再看高级语义概念。受此启发,作者提出一种迭代匹配与重复注意记忆方法,使用多步对齐来捕获图像和文本之间的对应关系。也就是结合跨膜态注意单元和记忆提取单元来细化图像和文本之间的对应关系。
模型
整体结构如下图所示:

总的分为以下几步:
- 描述学习跨模态特征表示方法
- 使用重复注意记忆模块
- 形成最终的损失函数
跨膜态特征表示
这边的话对于图像和文本与此前的论文一致,图像Faster-RCNN,文本双向GRU
RAM:重复记忆模块
这个模块以循环的方式提炼关于先前片段对齐的知识来达到对齐嵌入空间的片段的目的。也就是说对于给定的两组特征点V和T,使用RAM来计算它们之间的相似度,他又分成CAU、MDU和RAM Block这样三个子块
CAU:跨膜态注意单元
现在给定两组特征点X=\{x_{1},...,x_{m^{'}}\}和Y=\{y_{1},...,y_{n^{'}}\}
CAU用于为X中的每一个x_{i}特征总结Y中的上下文信息,具体来说,分为以下几点:
- 首先计算每队(x_{i},y_{j})之间的相似度并归一化,(这里与SCAN一致):z_{ij}=\frac{x_{i}^{T}y_{j}}{\left \| x_{i}\right \|\left \| y_{j}\right \|},\bar{z_{ij}}=\frac{relu(z_{ij})}{\sqrt{\sum_{i=1}^{m^{'}}relu(z_{ij})^{2}}}
- 对于给定的特征集X,得到Y的注意力为:c_{i}^{x}=\sum_{j=1}^{n'}\alpha _{ij}y_{j},\alpha _{ij}=\frac{exp(\lambda \bar{z_{ij}})}{\sum_{j=1}^{n'}exp(\lambda \bar{z_{ij}})}
- 最终得到C^{x}=\{c_{1}^{x},...,c_{m'}^{x}\}
MDU:记忆提取单元
该单元通过动态聚合查询特征X与基于X的对准特征C^{x}来更新查询特征X,公式为:x_{i}^{*}=f(x_{i},c_{i}^{x}),其中f()为聚合函数,可以用加法、MLP、Attention等,在这里它的计算方法为:
g_{i}=gate(W_{g}[x_{i},c_{i}^{x}]+b_{g})
o_{i}=tanh(W_{o}[x_{i},c_{i}^{x}]+b_{o})
x_{i}^{*}=g_{i}*x_{i}+(1-g_{i})*o_{i}
在这里面,g_{i}门用于选择最为显著的信息,o_{i}用于融合并增强x_{i}和c_{i}^{x}的交互作用。有了门机制,输入查询的信息可以被细化,g_{i}可以帮助过滤掉查询中的琐碎信息,更有利于增强跨模态特征之间的交互。
RAM Block
CAU+MDU构成了RAM模块,写成如下形式:
C^{x},X^{*}=RAM(X,Y)
图文匹配中应用RAM
对于给定的图像和文本,他们得到的特征分别为V和T,根据RAM公式,得到:
C_{k}^{v},V^{k}=RAM(V_{k-1},T),C_{k}^{t},T^{k}=RAM(T_{k-1},V)
这里k指的是迭代的次数
每一次迭代,计算匹配得分:F_{k}(I,S)=\frac{1}{m}\sum_{i=1}^{m}F_{k}(r_{i},S)+\frac{1}{n}\sum_{j=1}^{n}F_{k}(I,w_{j})
其中,F_{k}(r_{i},S)=sim(v_{i},c_{ki}^{v}),F_{k}(I,w_{j})=sim(c_{kj}^{t},t_{j})
其中sim表示余弦距离计算
那么,最后,K次匹配后,最终得分为:F(I,S)=\sum_{k=1}^{K}F_{k}(I,S)
作者在这里用迭代的方式,其实也就是一个从低级语义到高级语义的过程。
损失函数
L =\sum_{b=1}^{B}[\triangle -F(I_{b},S_{b})+F(I_{b},S_{b}^{*})]_{+}+\sum_{b=1}^{B}[\triangle -F(I_{b},S_{b})+F(I_{b}^{*},S_{b})]_{+}
实验结果

作者在这里有给出迭代次数的消融实验和可视化结果:

可视化结果:

可以看到的是,随着迭代次数的增大,模型更能对齐到细粒度的物体,尤其是面对非对象语义时(如laid、beautiful、petting等)
