CVPR2023 | 微软提出高效率大规模图文检索模型
来自:圆圆的算法笔记
进NLP群—>加入NLP交流群
论文标题:LexLIP: Lexicon-Bottlenecked Language-Image Pre-Training for Large-Scale Image-Text Retrieval
下载地址:https://arxiv.org/abs/2302.02908
根据一张图片检索相关文本,或者根据一段文本检索相关图片,在现在的工业界中越来越常用。随着既有CLIP等多模态对比学习模型的发展,图文匹配一般采用embedding+内积的方式进行。使用图像encoder和文本encoder生成图像和文本的embedding,然后计算二者相似度,再根据相似度进行排序。然而,这种方法在工业界大规模数据集上应用起来效率很低。微软在CVPR 2023发了一篇图文检索工作LexLIP,将图像和文本离散化成token并进行token之间跨模态的对齐,实现检索效率的大幅提升。
这篇文章很大程度上是将NLP中的稀疏检索工作搬到了图文匹配场景,借鉴了很多稀疏检索中的工作。
LexLIP检索方法和传统的基于embedding的检索方法差异如下图。传统的检索方法中,使用图像和文本的encoder分别对图像和文本编码成向量,然后计算cosine相似度进行匹配。而LexLIP的思路是,将图像和文本离散化成token以及每个token的权重,然后用精确匹配的方式进行检索。
Dense检索需要计算一个样本和所有候选的cosine相似度再进行KNN,检索时间随着样本数量的增加线性增加。而基于LexLIP的检索框架,可以在图像侧构建一个token倒排索引,在文本侧识别出token后,去索引表里查找命中的图像,最后只计算有重叠token的涂香香-文本对的打分。这样就不需要所有候选样本都计算cosine相似度了,大大降低了检索的时间复杂度。LexLIP检索框架的整体架构如下图所示。
LexLIP检索的底层模型是一个双流多模态模型,一侧为文本Encoder,另一侧为图像Encoder,两个Encoder都采用Transformer的形式,需要输图像或文本每个位置的预测字典中各个token的分布。最后需要在序列维度上做maxpooling,得到整个文本或图像各个词的重要度分布。以图像侧为例,先使用Transformer得到每个位置的预测token分布,维度为patch数量(m)*字典中token数量(V)。然后在序列维度进行maxpooling,得到图像整体的维度为V的token重要度分布。这个重要度用来建立倒排索引和与文本侧进行匹配度计算,公式如下:
想要实现LexLIP的检索架构,关键是能够将图像和文本离散化成token,并将两个模态的字典进行对齐。为了解决这个问题,本文使用了两阶段的图文预训练:第一阶段是Lexicon-Bottlenecked Pretraining,主要目标是学习输入图像或文本的离散化token表示;第二阶段是Momentum Lexicon-Contrastive Pretraining,主要目标是对齐图像和文本这两个模态的字典空间。
第一阶段预训练主要包括4个任务:self-supervised masked language modeling、两个lexicon-bottlenecked masked language modelings、in-batch lexicon-contrastive learning。第一阶段预训练的整体结构图如下。
Self-supervised masked language modeling:基础的MLM任务,mask掉一部分token后对这部分token进行预测,主要是训练文本侧Encoder的基础能力。
Lexicon-bottlenecked masked language modelings:这部分是实现表征离散化成token的关键。采用bottlenecked的训练思路,在Encoder得到图像和文本侧的token重要度分布后(和第二节的计算逻辑类似),将这个新信息输入到一个很浅层的Transformer模型中,预测被mask掉的token,让模型关注图像和文本侧最重要的token。由于直接使用token重要度分布维度太高,会利用这个重要度和token embedding做加权融合,token embedding侧不进行梯度传播,得到一个维度为embedding维度的向量作为Decoder的输入,相当于基于这个重要度做了一个CBOW。
in-batch lexicon-contrastive learning:主要目的是对齐图像和文本的字典空间,利用batch内对比学习的思路,以图像和文本的离散化表示作为输入,计算对比学习loss。
第二阶段预训练主要是进一步对齐图像和文本的字典空间。大规模负样本对于对比学习的表征学习效果至关重要,因此这里采用了MoCo的思路,使用两个队列分别缓存图像侧和文本侧已经计算好的样本,并且使用动量慢更新的两个Encoder进行表征更新,这里可以参考之前对MoCo方法的介绍。这部分的输入仍然是图像和文本的离散化字典表示,进行图文字典的对齐。
在大规模召回任务的效果上,不仅对比了与CLIP、BM25的效果,还重点对比了存储开销和检索效率指标。LexLIP的检索效率是CLIP这种dense表征检索效率的5倍,检索效果也有明显提升。
下图是从图像和标题中离散化出来的token分布,token越大代表其从模型中产出的重要度越高。可以看出训练好的模型可以很好的进行图像和文本的离散化。
微信扫码关注该文公众号作者