0%

论文阅读-image-text matching-Multi-Modality Cross Attention Network for Image and Sentence Matching

动机

  • 图像和句子匹配的关键是准确地度量图像和句子之间的视觉-语义相似度;
  • 然而,现有的方法大多仅利用各模态内部的模内关系或图像的区域与句子中的单词词之间的模间关系来进行跨模态匹配任务。而各模态内部的模内关系以及图像的区域与句子中的单词之间的模间关系可以相互补充和增强,实现图像与句子的匹配。

贡献

  • 在统一深度模型中联合建模图像区域和句子单词的模内关系和模间关系,提出了一种用于图像和句子匹配的多模态交叉注意力(MMCA)网络;
  • 提出了一个新颖的交叉注意力模块,它不仅能够利用每个模态的模内关系,而且能够利用模间的关系去互补和增强图像与句子的匹配关系。

本文的方法

如上图所示,文章提出的多模态交叉注意力网络主要由两个模块组成,即自注意力模块和交叉注意力模块。对于输入的图像和句子对,将图像输入到Visual Genome预训练好的网络中去提取图像区域,同时将每个句子的Word-Piece tokens作为句子的语义片段。在提取出的图像区域表征和句子单词表征的基础上,利用自注意力模块对模内关系建模,并采用交叉注意力模块对图像区域和句子单词间的模间关系和模内关系建模,同时考虑模内和模间关系,可以提高图像和句子片段的特征识别能力。然后对这些片段表征进行聚合,得到给定的图像-句子对的两对嵌入向量 (i_0,c_0) (i_1,c_1) ,用于图像和句子的匹配。

候选实例提取

图像候选实例:

对于图像 I ,使用Visual Genome预训练好的自底向上的注意力模型去提取图像区域特征,输出是一组区域特征 O=\{o_1,o_2,…,o_k\} o_i 表示第 i 个区域的卷积特征的平均池化,再经过一个全连接层得到变换后的特征 R=\{r_1,r_2,…,r_k\}

句子候选实例:

对于句子 T ,使用句子的Word-Piece tokens作为句子的语义片段,最终每个单词的嵌入向量是其标记嵌入、位置嵌入和片段嵌入的组合,记为 X=\{x_1,x_2,…,x_n\}

自注意力模块

自注意力模块可以有效地开发模内的关系。注意力模块可以描述为将一个查询和一组键值对映射到输出,注意力函数的输出是该值的加权和,其中通过查询及其对应的键确定权重矩阵。特别地,对于自注意机制,查询、键和值是相等的。

在多头自注意力子层中,注意力被计算 h 次,这是通过使用不同的可学习的线性投影将查询( Q )、键( K )和值( V )投影 h 次来实现的。具体而言,对于给定的片段集合 \mathbf{F}=\{f_1;f_2;…;f_k\} ,其中 f_i\in R^{1\times d_f} \mathbf{F}\in R^{k\times d_f} 表示图像区域或句子词的叠加特征,首先计算输入的查询、键和值: \mathbf{Q}_{F}=\mathbf{F} \mathbf{W}_{i}^{Q} , \mathbf{K}_{F}=\mathbf{F} \mathbf{W}_{i}^{K} , \mathbf{V}_{F}=\mathbf{F} \mathbf{W}_{i}^{V} ,其中, \mathbf{W}_{i}^{Q} \in R^{d_{f} \times d_{k}} , \mathbf{W}_{i}^{K} \in R^{d_{f} \times d_{k}} , \mathbf{W}_{i}^{V} \in R^{d_{f} \times d_{v}} i 表示第 i 个抽头,然后可以得到权重矩阵,并通过下式计算其加权和:

\text { Attention }\left(\mathbf{Q}_{F}, \mathbf{K}_{F}, \mathbf{V}_{F}\right)=\operatorname{softmax}\left(\frac{\mathbf{Q}_{F} \mathbf{K}_{F}^{T}}{\sqrt{d_{k}}}\right) \mathbf{V}_{F}

之后,计算所有抽头的值,并将它们连接在一起:

\begin{array}{c} \text { head }_{i}=\text { Attention }\left(\mathbf{F} \mathbf{W}_{i}^{Q}, \mathbf{F} \mathbf{W}_{i}^{K}, \mathbf{F} \mathbf{W}_{i}^{V}\right) \\ \text {MultiHead}(\mathbf{F})=\operatorname{concat}\left(\text {head}_{1}, \ldots, \text {head}_{h}\right) \mathbf{W}^{O} \end{array}

其中 \mathbf{W}^O\in R^{hd_{v} \times d_{k}} h 是抽头数。

为了进一步调整片段表示,前馈子层用两个全连接层分别对每个片段进行相同的变换,并且后跟Add & LayerNormresidual connections

通过上述自注意力单元,图像中的每个区域或者句子的单词都可以注意到同一模态下其它片段的特征。对于图像 I ,其细粒度的表征 \mathbf{R}=\{r_1,r_2,…,r_k\} 经过上述Transformer单元得到包含区域间关系的特征 \mathbf{R}_s=\{r_{s1},r_{s2},…,r_{sk}\} ,接下来通过一个平均池化来聚合图像区域的表征,最终得到图像的全局表征 i_0\in R^{d\times 1} ,由于 i_0 聚合了 R_s 的片段特征,故表征 i_0 包含了模内的关系:

i_{0}=\frac{1}{k} \sum_{i=1}^{k} r_{s i}

对于文本数据,提供标记 \mathbf{X}=\{x_1,x_2,…,x_n\} 将句子 T 转换为预先训练好的Bert模型,其输出 \mathbf{E}=\{e_1,e_2,…,e_n\} 也包含了内部模态信息,然后利用卷积神经网络提取局部上下文信息,并使用三种窗口大小(单格、双格、三格)来捕获短语级信息,对于第 k 个单词,使用窗口大小为 l 的卷积输出:

p_{l, k}=\operatorname{Re} L U\left(\mathbf{W}_{l} e_{k: k+l-1}+b_{l},\right) \quad, \quad l=1,2,3

接下来,跨所有单词位置执行最大池化操作: q_l = max\{p_{l,1},…,p_{l,n}\} ,再将 q_1,q_2,q_3 连接并经过全连接层得到最后的句子嵌入向量 c_0\in R^{d\times 1} c_0 包含了文本数据的模内关系:

c_{0}=\text {LayerNorm}\left(\mathbf{W}_{e} \text { concat }\left(q_{1}, q_{2}, q_{3}\right)+b_{e}\right)

交叉注意力模块

使用交叉关注力模块在统一模型中建模模间和模内关系。交叉注意力模块取图像区域和句子单词 \mathbf{Y}=\left(\begin{array}{c} \mathbf{R} \\ \mathbf{E} \end{array}\right)=\left\{r_{1} ; \ldots ; r_{k} ; e_{1} ; \ldots ; e_{n}\right\} 为输入,然后Y被传递到另一个Transformer单元,其中片段的查询、键和值由以下方程式组成:

\begin{array}{l} \mathbf{K}_{Y}=\mathbf{Y} \mathbf{W}^{K}=\left(\begin{array}{l} \mathbf{R} \mathbf{W}^{K} \\ \mathbf{E} \mathbf{W}^{K} \end{array}\right)=\left(\begin{array}{l} \mathbf{K}_{R} \\ \mathbf{K}_{E} \end{array}\right) \\ \mathbf{Q}_{Y}=\mathbf{Y} \mathbf{W}^{Q}=\left(\begin{array}{l} \mathbf{R} \mathbf{W}^{Q} \\ \mathbf{E} \mathbf{W}^{Q} \end{array}\right)=\left(\begin{array}{l} \mathbf{Q}_{R} \\ \mathbf{Q}_{E} \end{array}\right) \\ \mathbf{V}_{Y}=\mathbf{Y} \mathbf{W}^{V}=\left(\begin{array}{l} \mathbf{R W}^{V} \\ \mathbf{E} \mathbf{W}^{V} \end{array}\right)=\left(\begin{array}{c} \mathbf{V}_{R} \\ \mathbf{V}_{E} \end{array}\right) . \end{array}

则注意力为:

\text { Attention }\left(\mathbf{Q}_{Y}, \mathbf{K}_{Y}, \mathbf{V}_{Y}\right)=\operatorname{softmax}\left(\frac{\mathbf{Q}_{Y} \mathbf{K}_{Y}^{T}}{\sqrt{d}}\right) \mathbf{V}_{Y}

为了使推导简单易懂,在上面的方程中去掉了softmax和缩放函数,得到下面的式子:

\begin{aligned} \mathbf{Q}_{Y} \mathbf{K}_{Y}^{T} \cdot \mathbf{V}_{Y} &=\left(\begin{array}{l} \mathbf{Q}_{R} \\ \mathbf{Q}_{E} \end{array}\right)\left(\mathbf{K}_{R}{}^{T} \quad \mathbf{K}_{E}{}^{T}\right) \cdot\left(\begin{array}{c} \mathbf{V}_{R} \\ \mathbf{V}_{E} \end{array}\right) \\ &=\left(\begin{array}{ll} \mathbf{Q}_{R} \mathbf{K}_{R}{}^{T} & \mathbf{Q}_{R} \mathbf{K}_{E}{}^{T} \\ \mathbf{Q}_{E} \mathbf{K}_{R}{ }^{T} & \mathbf{Q}_{E} \mathbf{K}_{E}{ }^{T} \end{array}\right) \cdot\left(\begin{array}{r} \mathbf{V}_{R} \\ \mathbf{V}_{E} \end{array}\right) \\ &=\left(\begin{array}{l} \mathbf{Q}_{R} \mathbf{K}_{R}{ }^{T} \mathbf{V}_{R}+\mathbf{Q}_{R} \mathbf{K}_{E}{ }^{T} \mathbf{V}_{E} \\ \mathbf{Q}_{E} \mathbf{K}_{E}{ }^{T} \mathbf{V}_{E}+\mathbf{Q}_{E} \mathbf{K}_{R}{ }^{T} \mathbf{V}_{R} \end{array}\right) \end{aligned}

已知 \left(\begin{array}{c} \mathbf{R}_{up} \\ \mathbf{E}_{up} \end{array}\right)=\mathbf{Q}_{Y} \mathbf{K}_{Y}^{T} \cdot \mathbf{V}_{Y} ,则视觉和文本片段的特征更新为:

\begin{array}{l} \mathbf{R}_{up}=\left\{r_{u p 1} ; \ldots ; r_{u p k}\right\}=\mathbf{Q}_{R} \mathbf{K}_{R}{}^{T} \mathbf{V}_{R}+\mathbf{Q}_{R} \mathbf{K}_{E}{}^{T} \mathbf{V}_{E} \\ \mathbf{E}_{up}=\left\{e_{u p 1} ; \ldots ; e_{u p k}\right\}=\mathbf{Q}_{E} \mathbf{K}_{E}{}^{T} \mathbf{V}_{E}+\mathbf{Q}_{E} \mathbf{K}_{R}{}^{T} \mathbf{V}_{R} \end{array}

该结果表明,该Transformer单元的多头子层的输出同步考虑了模间和模内的关系。然后 \left(\begin{array}{c} \mathbf{R}_{up} \\ \mathbf{E}_{up} \end{array}\right) 送入前馈子层,最终得到Transformer单元在交叉注意力模块的输出 \mathbf{Y}_c=\left(\begin{array}{c} \mathbf{R}_{c} \\ \mathbf{E}_{c} \end{array}\right)

为了得到整个图像和句子的最终表征,将 \mathbf{Y}_c 拆分为 \mathbf{R}_c=\{r_{c1},…,r_{ck}\} \mathbf{E}_c=\{e_{c1},…,e_{cn}\} ,分别经过平均池化和卷积层加最大池化,得到最终的图像和句子嵌入向量 i_1 c_1

损失函数

由此对于给定的图像-句子对 (I,T) ,将学到两对嵌入向量 (i_0,c_0) (i_1,c_1) ,由此计算图像 I 和句子 T 的相似度, S(I,T)=i_0·c_0+\alpha(i_1·c_1) ,其中 \alpha 是一个平衡参数。

然后,模型使用bi-directional triplet ranking loss进行训练,使匹配的图像和句子的相似度分数大于不匹配的图像和句子的相似度分数:

\begin{aligned} \mathcal{L} &=\max [0, m-S(I, T)+S(I, \hat{T})] + \max [0, m-S(I, T)+S(\hat{I}, T)] \end{aligned}

其中, m 是边界值, (I,T) 代表真实匹配的图像-句子对, (\hat{I},\hat{T}) 表示mini-batch中的硬负样本,例如 \hat{I}=\operatorname{argmax}_{x \neq I} S(x, T),\hat{T}=\operatorname{argmax}_{y \neq T} S(I, y)

部分实验结果

数据集: Flickr30K MSCOCO ,其中每一张图像对应五个句子。

评测指标: Recall@K ,表示在前 K 个结果中被检索到的ground truth的百分比。

在两个数据集上的定量结果:

Flickr30K 上图像到句子的查询结果,显示前5个检索句子。绿色的句子是正确的匹配,黑色的描述是错误的匹配:

Flickr30K 上句子到图像的查询结果,显示前四位的检索图像。绿色框中的图像是真实匹配的,而红色框中的图像是虚假匹配的: