宣传推介一下笔者的第一篇一作论文,已被ACMMM2024接收。本文面向组合图像检索(Composed Image Retrieval CIR)任务提出了SPN4CIR—基于大模型的正负例扩充技术,有效提升了对比学习性能。
论文题目:Improving Composed Image Retrieval via Contrastive Learning with Scaling Positives and Negatives
来源:MM2024/北航/笔者一作论文
方向:多模态检索
开源地址:https://github.com/BUAADreamer/SPN4CIR
任务介绍
考虑到大家可能不了解这个任务,先做个简要介绍。已经熟悉的读者可以直接跳过。
如下图,区别于图像检索(图搜图 Image Recognition/Retrieval)或者图文检索(文搜图 Text-to-Image Retrieval),组合图像检索是利用参考图像(Reference Image)和一段修改文本(Modified Text)作为组合输入对(Composed Query),搜索目标图像(Target Image)。标注好的(参考图像,修改文本,目标图像)组成了CIR任务的正例三元组。
动机
CIR任务的模型一般使用Dual Encoder的架构,利用对比学习训练。即对于组合输入对得到一个query表征,对目标图像得到target表征,让匹配的query和target表征互相拉近,不匹配的query和target表征彼此推远。
一般的批内对比学习可用如下公式表示(B代表批大小,一般为128左右;tau代表温度系数,一般为0.01左右)。
对比学习的性能依赖于正例和负例的数量,MoCo,CLIP都证明了这一点。而CIR中传统方法带来了两个问题:
- 缺乏正例:以往的方法使用人工标注的数量有限的三元组中的查询对-目标图像作为正例。
- 缺乏负例:使用批内(in-batch)负采样策略,将一个batch内其他的目标图像与当前的查询对作为负例。
主要贡献
- 技术点1:面对问题1,我们提出了一种基于多模态大语言模型的CIR三元组生成方法,将CIR中的正例数量从人工标注的20k提升到了100k,有效扩充了正例。
- 技术点2:面对问题2,我们设计了一种两阶段微调策略。第一阶段中,同时微调query编码器和target编码器,使用批内负采样进行学习。第二阶段冻住target编码器,将整个候选图像集(candidate image set,即参考图像和目标图像放在一块去重得到的集合)的表征预先计算并存储下来。只微调query编码器,将candidate set中其他的所有图像作为负例,将CIR中的负例数量从一般使用的128提升到了20k,有效扩充了负例。
- 有监督实验:两种技术都可以即插即用到现有的dual encoder架构有监督CIR模型中,且两个方法可以叠加从而带来更大的效果提升。我们在四个先进模型(CLIP4CIR,TGCIR,BLIP4CIR,SPRC)上进行了验证,都相比原模型取得了1%-6%的提升,达到了新的SOTA。
- 零样本实验:我们的方法也可以在无人工标注的Zero-Shot CIR任务上取得较好的效果,超过了两个先驱工作 Pic2Word 和 SEARLE 。
- 负例类型实证研究:我们面向CIR中的负例类型进行了实证研究和案例分析,对三元组中的参考图像,修改文本和目标图像都进行替换得到负例,发现流行的替换目标图像得到的负例带来的效果提升最大,为后续CIR领域的对比学习研究打下了坚实基础。
核心思想可用下图展示:
方法
技术1:正例扩充
如图2的左半边所示,包含4个步骤:
1.标题生成:我们使用llava-v1,对训练集中的每张图像都生成了一个标题,使用下图的提示词。
2.图像对匹配:我们使用 unicom 作为图像编码器,计算图像之间的搜索排序,取排序不高也不低的图像对作为参考图像和目标图像,用于后续三元组构建。
3.修改文本生成:我们使用提示模板对上一步得到的参考图像和目标图像对应的标题进行拼接,得到修改文本,本文只考虑如下三种提示模板,对于FashionIQ,我们使用模板2,对于CIRR,我们随机选取模板0和模板1中的一个。
4.正例构造:我们将第2步和第3步中的参考图像,修改文本,目标图像组合在一起就构成了大量新的三元组。
技术2:负例扩充
如图2的右半边所示,这一部分包含3个步骤:
1.负例构造:我们没有简单地遵循以往方法使用的1种负例类型,即只使用替换目标图像得到的负例。我们做了一组实证研究,探究了对于CIR三元组可能的四种负例类型(替换目标图像,替换参考图像,替换修改文本,替换查询对,结合图2理解)对于检索效果的影响,如图3所示,两个数据集上替换目标图像的效果都是最好的。
通过案例分析(参考图2中的例子),我们发现,另外三种替换方式,比较容易产生过于简单的负例或者假负例。而替换目标图像不仅本质上贴合了实际应用场景,且产生假负例的可能性较低。同时,引入其他类型负例也会带来更大的开销。因此,我们证明了只使用替换目标图像得到负例的合理性,为后续CIR的研究打下基础。
2.两阶段微调-阶段1-批内负采样:这一阶段我们保持了一般CIR方法使用的批内对比学习,同时微调查询和目标图像编码器,从而得到较高质量的表征。阶段1的对比损失可用公式2表示。
3.两阶段微调-阶段2-候选图像集负采样:在第一阶段基础上,我们冻住目标图像编码器,只微调查询编码器,利用整个候选图像集中的其他图像作为负例,进一步提升表征的质量。阶段2的对比学习损失可用公式7表示,这里的g代表冻结的表征。
实验
我们的所有实验都在一张V100上进行,我们对基于视觉语言训练模型的四个先进模型进行了实验。我们将这些模型提供的checkpoint作为第一阶段模型,在其基础上进行第二阶段微调。第二阶段中,我们同时使用了扩充的正例和负例。值得注意的是,由于冻住了目标图像编码器,且预先存储了目标图像表征,第二阶段的训练时间只有第一阶段的1/20左右,因此我们提出的两阶段微调策略的额外开销较小。
有监督实验
在FashionIQ和CIRR的有监督实验效果如下,SPN在两个数据集的四种方法上都提升了1%-6%。
消融实验
我们在CLIP4CIR模型上进行了消融实验,发现正例扩充和负例扩充方法都能够稳定地提升模型效果。
零样本实验
对于公平对比的域外设置,我们使用正例扩充方法,随机选取了CC3M中的50k张图像,构造了训练三元组,并利用构造的数据集基于CLIP4CIR架构从零开始训练。尽管使用了最少的图像(Pic2Word的1.7%,SEARLE的50%),我们的方法仍然取得了明显更好的效果。
我们也尝试了域内设置,即使用FashionIQ和CIRR中的图像来构建训练三元组进行训练,发现可以超过域外设置,这证明我们的方法可以作为一种低资源无监督场景下的良好解决方案。
大家好,我是NLP研究者BrownSearch,如果你觉得本文对你有帮助的话,不妨点赞或收藏支持我的创作,您的正反馈是我持续更新的动力!如果想了解更多LLM/检索的知识,记得关注我!
这篇工作是笔者读硕士以来的第一篇一作收录工作,从23年3月开始做CIR任务,始于MM2023,终于MM2024,论文关注点也从最开始的假负例检测到如今的正负例扩充,终于迎来了它最好的归宿!感谢我导张日崇老师和聂学长的帮助,从论文写作到Rebuttal都给我提了很多很多宝贵建议,这个过程中也从完全不会科研到初步体验到了科研的乐趣。感谢审稿人、SAC和AC的慧眼识珠,我单方面宣布MM就是世界上最好的会议(bushi !最后,再次宣传下SPN4CIR的代码仓库,如果您觉得有所帮助,欢迎star!
版权归原作者 BrownSearch 所有, 如有侵权,请联系我们删除。