标题:《Long-CLIP: Unlocking the Long-Text Capability of CLIP》
论文:https://arxiv.org/pdf/2403.15378.pdf
源码:https://github.com/beichenzbc/Long-CLIP
导读
CLIP(Contrastive Language–Image Pre-training),这个由 OpenAI 团队开源的多模态预训练模型,它通过对比学习的方式,同时学习图像和文本的表示,从而实现在没有针对特定任务训练的情况下(即Zero-Shot场景),对图像进行分类和理解的能力。
CLIP 模型的核心思想很简单,即利用大规模的图像和文本对进行训练,通过最大化匹配对的相似度并最小化不匹配对的相似度来学习视觉和语言的联合表示。
虽然 CLIP 发布了好几年,但包括其变体在内的相关模型目前仍被许多主流的多模态 LLM 所采用。然而,CLIP-based 模型的局限性也很明显:
- 固定长度的文本输入:CLIP模型的文本编码器(如Transformer)通常有固定的最大序列长度限制(默认77个tokens),这意味着它无法直接处理超出这一长度的文本。对于复杂的文本描述,这无疑限制了模型的理解和应用能力。
- 有效的长度严重不足:此外,实证研究指出其实际有效的长度往往不足20。这一限制使得CLIP难以处理详尽的描述,从而限制了其在需要基于丰富前提条件进行图像检索或文本到图像生成的应用场景中的适用性。
- 细粒度信息的丢失:最后,在处理长文本时,为了适应模型的输入限制,需要对文本进行摘要或分割,这可能导致一些细粒度的信息丢失,从而影响模型的性能。
为此,来自上海AI实验室与上海交大提出了一种即插即用的替代方案——Long-CLIP
,其不仅支持长文本输入,同时保持甚至超越其零样本泛化能力,并与CLIP潜在空间保持一致,使其能够无需任何额外适应直接替换 CLIP 在下游框架中的应用。
然而,实现这一目标并非易事,因为如果只是简单的微调可能会导致CLIP性能显著下降。此外,用支持更长上下文的语言模型替换文本编码器需要使用大量数据进行预训练,这将带来巨大的开销。
因此,Long-CLIP 在 CLIP 上引入了一种高效的微调解决方案,包括两种旨在保持原始能力的新策略:
-
知识保留的位置上插值(
Knowledge-Preserved Stretching
):这种方法首先保留了前20个训练良好的位置上插值,然后对剩余的位置上插值进行了更大的扩展。这种策略不仅提高了整体长度,还最小化了对已建立位置表示的干扰。 -
CLIP特征的主要成分匹配(
Primary Component Matching
):除了将图像的细粒度特征与长文本描述对齐外,该方法还从细粒度图像特征中提取粗粒度信息,并将其与短文本描述对齐。这要求模型不仅能捕捉图像中的不同细节,还能识别其中最重要的组成部分。
通过仅利用额外的一百万对长文本-图像对,Long-CLIP在长标题图文检索任务中展现出比CLIP高出约20%的优势,在诸如COCO和Flickr30k等传统图文检索任务中也有6%的提升。最后,通过以即插即用方式替换CLIP,Long-CLIP还增强了从详细文本描述生成图像的能力。
动机
上图展示了CLIP模型在处理长文本输入时的两个主要缺点:
-
有效长度的限制:
- 当输入文本的长度超过20个token时,可以明显的观察到模型的准确率(R@1,即准确率@1)增长非常缓慢。这表明CLIP模型的实际有效长度甚至不超过20个token。这意味着对于超过这个长度的文本,CLIP模型无法有效地利用额外的信息,因为它的设计和训练数据集主要针对的是较短的文本描述。
-
无法提取属性间的相互关系:
- CLIP模型在处理包含多个属性的图像时,无法准确地捕捉这些属性之间的相互关系。在图2的例子中,CLIP模型将最高相似度得分分配给了一个既不符合颜色也不符合相对位置的表示。例如,对于一张包含柠檬和茄子的图片,CLIP可能会错误地坚信柠檬是紫色的,即使图片中的柠檬实际上是黄色的。这种错误表明CLIP模型在理解和表示多个相互作用属性时存在局限。
这两个缺点限制了CLIP模型在更复杂场景中的应用,特别是在需要处理详细描述或需要理解多个属性相互作用的任务中。Long-CLIP模型正是为了解决这些问题而提出的,它通过支持更长的文本输入并改进模型对属性间关系的理解,从而提高了模型的性能和应用范围。
方法
好了,了解完前述背景和动机,我们来快速看下 Long-CLIP 具体是如何构建的。
上图直观地展示了Long-CLIP模型训练过程的流程图,其中包括了两个关键的子模块:细粒度图像特征与长详细描述的对齐,以及粗粒度图像特征与短摘要描述的对齐。
-
细粒度图像特征与长详细描述的对齐:
- 这一步骤的目的是通过训练模型来使图像的细粒度特征与长文本描述相匹配。这意味着模型需要捕捉图像中的所有细节,并理解这些细节如何与长文本描述中的内容相对应。这一过程有助于模型学习如何从长文本中提取和理解复杂的视觉信息。
-
主要组成部分提取(Primary Component Extraction):
- 这里,模型不仅需要理解图像的所有细节,还需要识别出图像中最重要的组成部分。这是通过一个称为主要成分提取(Primary Component Extraction)的过程实现的,该过程从细粒度图像特征中提取出粗粒度的图像特征。这些粗粒度特征捕获了图像的关键属性,但忽略了一些不那么重要的细节。
-
粗粒度图像特征与短摘要描述的对齐:
- 一旦提取出粗粒度图像特征,模型就会将其与短文本描述对齐。此处要求模型不仅要捕捉图像的不同细节,还要理解这些细节的相对重要性,并能够将最重要的组成部分与简短的摘要描述相匹配。
这个训练流程使得Long-CLIP模型能够处理包含丰富细节的长文本描述,同时保持对简短文本的兼容和敏感性,从而在多种视觉-语言任务中提高性能。
伪代码如下所示:
实验
Long-CLIP的实验部分旨在验证模型在处理长文本输入方面的能力,并通过与原始CLIP模型的对比来展示其改进。
实验设置
评估数据集
- 零样本图像分类: 主要使用ImageNet-1K数据集,同时分析了ImageNet-V2、ImageNet-O、CIFAR-10和CIFAR-100等数据集的分类能力。
- 短标题图像-文本检索: 使用COCO2017和Flickr30k数据集进行传统的短标题图像-文本检索任务。
- 长标题图像-文本检索: 对于长标题图像-文本检索,使用了从ShareGPT4V数据集中分离出的随机1k(图像,长文本)对,并收集了200个描述城市场景的相似图像,使用GPT-4V生成长标题。
训练设置
- 使用ShareGPT4V数据集作为训练数据,包含约1M(长标题,图像)对。
- 随机1k数据作为评估数据集。
- 使用AdamW优化器进行微调,共6个epoch,批量大小为2048。
新评估数据集
- 为了更好地评估长文本的细粒度能力,作者收集了一个包含200个(图像,长标题)对的城市数据集。
- 从Visual Genome数据集中手动选择200张展示繁忙城市景观的相似图像。
- 使用GPT-4V生成描述图像的长标题,包括属性的类型、颜色和相对位置,并手动检查和修正生成的标题。
- 通过这个数据集,模型必须成功理解并模拟两种模态中的详细属性才能正确匹配图像和标题。
对比结果
- 长标题图像-文本检索: Long-CLIP在1k ShareGPT4V验证集和200个城市数据集上的R@1性能优于原始CLIP模型。
- 短标题图像-文本检索: 在5k COCO2017验证集和整个30k Flickr30K数据集上,Long-CLIP在R@1、R@5和R@10指标上都优于原始CLIP模型。
- 零样本图像分类: 在多个验证集上,Long-CLIP在保持原始CLIP模型零样本分类性能的同时,展现了更好的性能。
消融研究
- 消融实验部分验证了知识保留的位置上插值(KPS)和主要成分匹配(PCM)两个核心组件策略的有效性。
- 通过对比使用和不使用这些策略的模型性能,证明了这些策略对于提升模型性能的重要性。
值得一提的是,Long-CLIP模型完全可以无缝替换Stable Diffusion等图像生成模型中的原始CLIP文本编码器,无需额外训练。
总结
总的来说,Long-CLIP是一个改进的视觉-语言预训练模型,它通过知识保留的位置上插值和主要成分匹配策略,有效解决了原始CLIP模型在处理长文本输入时的限制。这一模型不仅在长文本图像检索任务中表现出色,而且在零样本图像分类任务中保持了与原始CLIP相当的性能,同时还能以即插即用的方式增强图像生成任务中的长文本处理能力。
最后,如果你对本文有任何的观点或疑问,欢迎评论区下方留言讨论。同时也欢迎对多模态相关技术感兴趣的同学扫描屏幕下方二维码添加微信好友,备注“多模态学习”即可。