主要介绍19篇关于文本图像双向检索任务的论文。
- 1.Corr-AE,Cross-modal Retrieval with Correspondence Autoencoder[ACM2014]。code
- 2.DVSA,Deep Visual-Semantic Alignments for Generating Image Descriptions[CVPR2015]。code
- 3.mCNN,Multimodal Convolutional Neural Networks for Matching Image and Sentence[ICCV2015]。homepage
- 4.Order-embeddings,Order-embeddings of images and language[ICLR2016]。code
- 5.DSPE,Learning Deep Structure-Preserving Image-Text Embeddings[CVPR2016]。code
- 6.Char-CNN-RNN,Learning Deep Representations of Fine-Grained Visual Descriptions[CVPR2016]。homepage
- 7.DAN,Dual Attention Networks for Multimodal Reasoning and Matching[CVPR2017]。大神实现 code
- 8.2WayNet,Linking Image and Text with 2-Way Nets[CVPR2017]。code
- 9.Im2recipe,Learning Cross-modal Embeddings for Cooking Recipes and Food Images[CVPR2017]。homepage
- 10.GNA-RNN,Person Search with Natural Language Description[CVPR2017]。homepage
- 11.RRF,Learning a Recurrent Residual Fusion Network for Multimodal Matching[ICCV2017]。code
- 12.Image2song,Image2song: Song Retrieval via Bridging Image Content and Lyric Words[ICCV2017]。homepage
- 13.VSE++,VSE++: Improving Visual-Semantic Embeddings with Hard Negatives[online 2017]。code
- 14.ACMR,Adversarial Cross-Modal Retrieval[ACM2017] 。code
- 15.Embedding Network,Learning two-branch neural networks for image-text matching tasks[TPAMI2018]。code
- 16.DPC,Dual-Path Convolutional Image-Text Embedding[arxiv2017]。code
- 17.SCO,Learning Semantic Concepts and Order for Image and Sentence Matching[CVPR2018]。
- 18.GXN,Look, Imagine and Match: Improving Textual-Visual Cross-Modal Retrieval with Generative Models[CVPR2018]。code
- 19.SCA,Stacked Cross Attention for Image-Text Matching[ECCV 2018]。homepage
- 20.SAN, Saliency-Guided Attention Network for Image-Sentence Matching
[ICCV2019]
文章要做的事情(cross-media retrieval):
输入:image(sentence)+dataset 输出:sentence(image)rank list
以SCA中可视化的实验结果为例,文本检索图像和图像检索文本的例子如下所示,绿色为检索正确,红色为错误。
文本检索图像
图像检索文本
Corr-AE
Corr-AE的framework如下所示。
文章的主要思想是用autoencoder的encoder和decoder分别学习correlation和representation,主要采用了Corr-AE,Corr-Cross-AE和Corr-Full-AE三种结构,其实后面有好多文章都借鉴了这种思想,很了不起。
- Corr-AE。文本和图像特征分别通过encoder映射到一共享的空间,然后用L2度量文本和图像之间想的相似性,得到correlation loss,然后用decoder分别将共享空间中的文本和图像映射到原空间, 与输入的文本和图像特征做L2得到representation loss,最后用两个和为1的超参数将两个correlation loss和representation loss相加。
- Corr-Cross-AE。correlation loss与Corr-AE一样,Corr-Cross-A是将共享空间的文本decoder出来的特征与原图像特征做L2,而共享空间的图像decoder出来的特征与原文本做L2,得到representation loss,correlation loss和representation loss相加的方式与Corr-AE一样。
- Corr-Full-AE。correlation loss与Corr-AE一样,Corr-Full-AE是将共享空间的文本分别decoder出原文本和图像空间的特征,并与原文本和图像特征分别做L2,共享空间的图像也分别decoder出原文本和图像空间的特征,并与原文本和图像特征分别做L2,correlation loss和representation loss相加的方式与Corr-AE一样。
- Deep Architecture。为了更好的捕获文本和图像之间的关联,文章在上面三个方法的基础上引入了两层restricted Boltzmann machines (RBMs)。
Order-embeddings
这篇文章的主要思路是把文本当成图像的下位关系(苹果之于水果),文本与图像不对等,只是描述了图像的一部分,因此图像和文本构成了hierarchy order的关系,图一和图二是文章中列举的两个例子,可以理解为上位点在左下角,从特征的角度讲,图像各维度的特征应该小于文本的特征,这种度量文本和图像之间关系的方式还是首次见到,NLP出生的人做cross-media retrieval就是不一样。
- 文本特征。先将文本word embedding到300维,然后再用GRU提取1024维特征。
- 图像特征。先将图像resize到256x256大小,然后将图像从上下左右中间以及水平镜像后上下左右中间,crop 10个224x224大小的图像块,分别在每个图像块上提取VGG19 FC7层特征,并将它们取平均。
- 损失函数。分别将文本和图像的特征映射到1024维的共享子空间上,然后在采用双向的triplet loss,在同一个minibatch中所有正样本和负样本都会进行度量。文章最大的特点是在计算文本和图像之间距离的时候,不采用欧式和余弦距离,而采用是penalty order,方法是共享子空间中图像的特征减去文本的特征,然后在做relu,将relu之后的值取平方。
DSPE
这篇文章的思路其实和Order-embeddings差不多,最大亮点是引入hard triplet loss并加入了Structure-Preserving(文本之间hard triplet loss)。
- 文本特征。先用用Fisher vector (FV)提取18000维的Hybrid Gaussian-Laplacian mixture model (HGLMM)特征,然后再用PCA将18000维的特征降到6000。
- 图像特征。先将图像resize到256x256大小,然后将图像从上下左右中间以及水平镜像后上下左右中间,crop 10个224x224大小的图像块,分别在每个图像块上提取VGG19 FC7层特征,并将它们取平均。
- 损失函数。分别用[1024,256]将文本和图像映射到256维的共享子空间中,然后在做文本与图像,图像与文本以及文本与文本之间的hard triplet loss,文本和图像之间用欧式距离度量。其中文本与图像和图像与文本之间是在minibath中选取最hard(负例中距离最小)的负例样本,而文本与文本也是在minibatch中选取最hard的负例样本,对于描述同一个图像的五个句子,相互之间都为正例样本。
DAN
这篇文章的主要思想是在文本和图像两边都加入attention,然后在一个共享子空间中,用triplet(文章中没有提到hard的思想,负样本应该是在minibatch里面随机选的)度量文本和图像之间的相似性,个人觉得这篇文章最大的亮点是引入双向的attention,并triplet loss训练成了端到端,文章的framework如下所示。
- 初始化记忆向量(memory vector)。将输入文本做word embedding,然后再用bidirectional LSTMs来产生文本的特征,文本的特征为N个512维的向量,最后将N个向量做平均得到初始化的文本特征向量。将图像resize成448x448大小,然后再利用152层的resnet得到res5c卷积层的feature map,在这个feature map上面做pooling得到N个(image region的个数)2048维的特征向量,然后将N个2048维的特征向量取平均并乘一个权重矩阵,然后再用tanh激活得到初始化的图像特征。最后将初始化的文本特征向量与初始化的图像特征做点乘,得到初始化的记忆向量。
- 文本attention。本质上将还是soft attention的思想,分别将初始化的文本特征向量和文本的特征用两层feed-forward neural network (FNN)相连,然后再用tanh激活并做点乘,然后用softmax做归一化得到权重向量(N维向量),利用权重向量将N个512维的向量做加权平均,得到文本sttention向量。
- 图像attention。任然是soft attention的思想,分别将初始化的图像特征向量和图像的特征用两层feed-forward neural network (FNN)相连,然后再用tanh激活并做点乘,然后用softmax做归一化得到权重向量(N维向量),利用权重向量将N个2048维的向量做加权平均,然后再乘以一个权重矩阵,最后再用tanh进行激活,得到图像attention向量。
- loss function。将文本和图像attention的向量分别与初始化记忆向量相加得到新的文本特征向量和图像特征向量,若以此刻的文本特征向量和图像特征向量为初始话的文本特征向量和图像特征向量的话,若将这两个特征向量相乘就可以得到新的记忆向量,可以得到新一轮的attention,文章中总共使用了两轮的attention(有点绕,结合文章中的公式和图比较好理解)。文章最后的损失函数采用的是双向triplet loss(没有提到hard的思想),文本和图像之间距离的度量采用的是将两轮attention得到的文本和图像向量做点积。
2WayNet
这篇文章可以理解为Corr-AE文章中的Corr-Cross-AE结构的一种拓展,文章中加入了很多的技巧和约束(很多技巧和约束都有理论上的证明)。
- 特征。图像,VGG 4096维特征。文本,Fisher Vector 18000(GMM)+18000(HGLMM)=36000维特征。
- loss function。网络结构,图像 → \rightarrow →文本网络,4096$\rightarrow 2000 2000 2000\rightarrow 3000 3000 3000\rightarrow 2000 2000 2000\rightarrow 36000 。 文 本 36000。文本 36000。文本\rightarrow 图 像 网 络 , 36000 图像网络,36000 图像网络,36000\rightarrow 2000 2000 2000\rightarrow 3000 3000 3000\rightarrow 2000 2000 2000\rightarrow$4096,两路网络的参数去转置并共享。文章是6个损失函数的叠加,两端和中间层用L2(3个),中间层用decorrelation regularization(1个),全连接层中的参数做weight decay(1个),还有就是对Batch Normalization中尺度参数做regularization(1个),具体的公式可以看原文。
- 网络技巧。Batch Normalization,Leaky ReLU,Locally Dense Layer(将维度大的向量分成几个维度小的向量)和Tied Dropout(乘每个元素都服从伯努利分布的随机矩阵,并引入尺度因子根号下0.5)。
RRF
这篇文章采用的仍然是先抽特征,然后再通过全连接的形式映射到一个共享的子空间中,在子空间中用hard triplet loss的思想度量相似性,文章的主要贡献是在全链接映射的过程中用了recurrent residual fusion (RRF) 块,从实验的结果来看确实提升了好几个点。
RRF block的示意图如下所示。
文章中的framework如下所示。
- 特征。图像,用ResNet-152抽取2048维特征。文本,用fisher vector抽取HGLMM 18000维特征,然后再用PCA降到6000。
- RRF块。在残差块(输入与经过FC后的输出相加)的基础上加入了recurrent(残差块的输出重新作为输入)的思想,文章通过实验发现循环3次的结果最好,然后将3次recurrent的结果与最开始的输入concat起来,最后将concat得到的结果做融合,文章sum-pooling fusion和convolutional fusion(本质上就是乘上一个矩阵并加偏置,矩阵和偏置的参数可学习),发现convolutional fusion效果较好。
- 网络结构。文本网络和图像网络都用了4个FC [2048,512,512,512],其中第三个FC采用了RRF。
- loss function。文章最后除了采用模态之间三元组(bi-directional triplet loss)外,还加入了模态内部的三元组约束(希望成对的文本和图像之间的距离小于文本与文本,或者图像与图像之间的距离),负样本也采用的是top hard的方式。
- 集成。集成的方式是将每一次recurrent 后得到的共享空间中特征之间的距离取平均,文章发现将recurrent 4次得到结果集成集成起来效果最好,单模态不集成的话是recurrent 3次结果最好。
VSE++
感觉这篇文章应该是简单有效类文章的典范,将triplet loss的hard用到了极致,并实现了端到端的训练。
- 文本网络。现将文本特征 word embeddings成300维的向量,然后再用GRU encoder成1024维向量。
- 图像网络。用ResNet152得到2048维的向量,并用FC映射到1024。
- loss function。文章采用的是Max of Hinges (MH) loss而不是 Sum of Hinges (SH) loss,MH选取的是所有triplet loss中的最大值,而 Sum of Hinges (SH) loss选取的所有值的和。
ACMR
这篇文章的主要贡献是将GAN在domain adaptation中的应用借鉴到了跨媒体检索中。
文章的framework如下所示。
文章主要分为三部分:
- Label Prediction。在共享的空间中用 cross-entropy loss做多标签的分类(模态内距离)。
- Structure Preservation。文章中说是基于triplet的度量,但是文章中的度量方式表示不能理解,与正常的triplet差距太大,因此不坐详细介绍,具体参考原文(模态间距离)。
- Modality Classification。用GAN网络分别对文本和图像空间进行对抗学习,是文本和图像在共享空间中的分布保持一致。
Embedding Network
这篇文章是DSPE会议论文的期刊拓展版本,文章的framework如下所示。
文章主要将跨媒体检索的问题转化为度量相互之间的距离(Embedding Network)和文本与图像之间匹配的概率(Similarity Network)问题。
- Embedding Network。实际上就是DSPE方法。
- Similarity Network。映射到共享子空间的结构与DSPE一样,在共享子空间之后,将两个向量做点乘,然后在通过两个FC映射为一个一维值,与标签做回归,成对的标签为1,不成对(minibatch里面随机选)的标签为-1,具体的损失函数见原文的公式7。
DPC
这篇文章主要采用了CNN提取文本的特征并利用softmax对所有的文本图像对进行了instance-level的分类。
文章的framework如下所示。
- 文本网络。先用字典(Flickr30K是20074)去表示每一个文本,文本的长度为32,字典表示后长度不够的地方补0,然后再用word2vector将文本特征表示成32x300,最后再通过4个残差块提取2048维的文本特征。
- 图像网络。先将图像resize成256x256大小,然后再随机裁剪出224x224大小的图片,通过5个残差块提取2048维的文本特征。
- 损失函数。在2048维空间上面做triplet loss,然后将2048维向量通过全链接映射成训练数据大小的向量并作softmax,最后用3个超参数将这3个loss做加权和。
- trick。1.share weight。2.Word2vec initialization。3.image augmentation。4.text augmentation。
SCO
SCO的framework如下所示。
这篇文章的核心思想是通过图像文本的rank loss和文本生成的loss学习得到一个比较好的图像表示。
- Semantic Concept Extraction。提取图像的多个proposal,然后用multi-label CNN对每一个proposal进行分类得到多个(proposal的个数)分类的向量,然后利用element-wise max-pooling得到一个向量(scores vector)。
- Global Context Extraction。用VGG提取图像的全局特征向量(global vector)。
- Feature Confusion(gated fusion unit)。将scores vector与global vector融合得到一个融合后的向量(final vector)。
- Loss Function。用LSTM表示文本得到文本特征(sent vector),用final vector与sent vector做rank loss(triplet loss),用sent vector产生文本(sentence generation loss),用一个超参数乘以sentence generation loss并与triplet loss相加,得到最终的loss。
GXN
paper的framework如下所示。
文章主要分为三个部分multi-modal feature embedding (the entire upper part),image-to-text generative feature learning (the blue path) and text-to-image generative adversarial feature learning (the green path)。
multi-modal feature embedding:
image encoding: 首先将sentence用one-hot vector进行表示,然后用一个matrix对one-hot vector做word embedding,然后在用两层双向的GRU对word embedding进行表示。
sentence encoding: pre-trained CNN on ImageNet。(image encoding和sentence encoding分别提取high-level abstract features and detailed grounded features。)
feature embedding loss:分别对high-level abstract features and detailed grounded features做带有order-violation penalty [ https://arxiv.org/abs/1511.06361 ] 的 two branches ranking loss。
image-to-text generative feature learning:
先利用CNN将image encode成detailed grounded features,然后利用RNN将detailed grounded features decode成sentence,然后通过loss function使得decode出来的sentence与image所对应的sentence尽可能是相似。
loss function: cross-entropy (XE) loss + reinforcement learning (RL) loss [ https://arxiv.org/abs/1612.00563 ]
- XE: word-level cost。根据decoder来predict work,使得ground-truth work的概率尽可能大。
- RL: sentence-level cost。将decoder出来的sentence与ground-truth sentence通过metric(BLEU or CIDEr)计算score,根据score给reward。
text-to-image generative adversarial feature learning:
先用RNN将sentence encode成detailed grounded features,然后再利用conditioning augmentation [ https://arxiv.org/abs/1612.03242 ] 方法将detailed grounded features compress到lower dimension来augment data以致enforce smoothness,然后将augmented data与noise vertor进行concatenation操作,最后利用concatenation vector通过text-to-image synthesis model [ https://arxiv.org/abs/1605.05396 ] 生成图像,在training的过程中为了尽一步enforce smoothness and avoid overfitting,在generator段加入Kullback-Leibler divergence (KL divergence)。
framework training:
文章的training的过程是先train image-to-text generative feature learning和text-to-image generative adversarial feature learning(先train discriminator再train generator),然后再train multi-modal feature embedding。
SCA
这篇文章的主要思路是分别在文本和图像端利用attention的机制,学习比较好的文本和图像表示,然后再在共享的子空间中利用hard triplet loss度量文本和图像之间的相似性。主要缺点是利用了额外的数据Visual genome。
Image-Text Stacked Cross Attention的framework如下所示。
Text-Image Stacked Cross Attention的framework如下所示。
- Image-Text Stacked Cross Attention。 采用ResNet-101的Faster R-CNN网络对每一个图像产生多个proposal,提取每一个proposal(proposal vector,mean-pooled convolutional feature)和文本的每一个word的特征(word vector,bi-directional GRU),计算每一个word和proposal之间的余弦距离,根据计算的余弦距离,并根据余弦距离sentence vector。
- Text-Image Stacked Cross Attention。 采用ResNet-101的Faster R-CNN网络对每一个图像产生多个proposal,提取每一个proposal(proposal vector,mean-pooled convolutional feature)和文本的每一个word的特征(bi-directional GRU),计算每一个word和proposal之间的余弦距离,根据计算的余弦距离,并根据权重形成image vector。
- Loss Function。 文章中用LogSumExp pooling (LSE),average pooling (AVG)和Sum-Max(SM)等方法度量sentence vector与proposal vector和image vector与word vector的相似性,然后用hard triplet loss训练。
在Flickr30K上面与state-of-the-art比较的实验结果如下所示,SCA代表的现在最好的水平。
在MSCOCO上面与state-of-the-art比较的实验结果如下所示,SCA代表的现在最好的水平。
SAN
The conceptual diagram
SAN model for image-sentence matching