【prompt五】CoCoOP:Conditional Prompt Learning for Vision-Language Models

时间:2024-04-15 10:00:49

motivation

随着像CLIP这样强大的预训练视觉语言模型的兴起,研究如何使这些模型适应下游数据集变得至关重要。最近提出的一种名为上下文优化(CoOp)的方法将提示学习(nlp的最新趋势)的概念引入视觉领域,以适应预训练的视觉语言模型。具体来说,CoOp将提示中的上下文单词转换为一组可学习的向量,并且仅使用少量标记的图像进行学习,可以实现比密集调整的手动提示的巨大改进。在我们的研究中发现了CoOp的一个关键问题:学习到的上下文不能推广到同一数据集中更广泛的未见类,这表明CoOp过拟合了训练期间观察到的基本类。为了解决这个问题,我们提出了条件上下文优化(CoCoOp),它通过进一步学习一个轻量级神经网络来为每个图像生成一个输入条件令牌(向量)来扩展CoOp。与CoOp的静态提示相比,我们的动态提示适应每个实例,因此对类转移不那么敏感。大量实验表明,CoOp对未见类的泛化效果比CoOp好得多,甚至显示出超越单个数据集的有希望的可转移性;并且产生了更强的领域泛化性能。

1.introduce

最近在大规模视觉语言预训练方面的研究在zero-shot图像识别方面取得了惊人的成绩,表明了这种范式在学习开放世界视觉概念方面的潜力。设计的关键在于如何对视觉概念进行建模。

在传统的监督学习中,标签是离散化的,每个类别都与一个随机初始化的权重向量相关联,该权重向量被学习以最小化与包含相同类别的图像的距离。这种学习方法侧重于闭集视觉概念,将模型限制在预定义的类别列表中,并且在训练过程中看不到的新类别时无法扩展。

相比之下,对于CLIP[40]和ALIGN[24]等视觉语言模型,分类权值是由参数化文本编码器(例如Transformer)通过提示直接生成的。例如,为了区分包含不同品种的狗和猫的宠物图像,可以采用“a photo of a {class}, a type of pet”这样的提示模板作为文本编码器的输入,通过用真实的类名填充“{class}”标记,就可以合成分类的类特定权重。与离散标签相比,视觉语言模型的监督来源来自自然语言,这允许对开放集视觉概念进行广泛的探索,并已被证明在学习可转移表征方面是有效的。

上下文优化(CoOp),利用神经网络的可微特性,将提示中的上下文词转化为一组可学习的向量。

CoOp仅使用少量标记图像进行学习,在广泛的图像识别数据集上实现了比密集调整的手动提示的巨大改进。

在我们的研究中发现了CoOp的一个关键问题:学习的上下文不能推广到同一任务中更广泛的未见类。图1说明了这个问题:CoOp学习的上下文在区分“到达门”和“大教堂”等基本类方面工作得很好,但是当它被转移到新的(看不见的)类(如“风力发电场”和“火车铁路”)时,准确性会显著下降——即使任务的性质保持不变,即识别场景。结果表明,学习到的上下文过度拟合基类,因此未能捕获对更广泛的场景识别至关重要的更一般化的元素。我们认为这样的问题是由CoOp的静态设计引起的:上下文,一旦学习就固定了,只针对一组特定的(training)类进行优化。相反,zero-shot法采用的手动设计提示符具有相对的通用性。

为了解决弱泛化问题,引入了一个新的概念:条件提示学习。关键思想是使提示取决于每个输入实例(图像