是否还在为设计CLIP模型的提词器(prompt)而烦恼?到底是“a photo of a [class]”还是“a [class] photo”?对于特定任务(例如食物分类或是卫星图像识别),如何添加符合语境的上下文(context)?用了本文提出的提词优化器CoOp(中文名:琥珀),这些问题通通不需要烦恼。

文章链接:https://arxiv.org/abs/2109.01134

代码链接:https://github.com/KaiyangZhou/CoOp

本文提出了一种名为上下文优化 (Context Optimization,英文名:CoOp,中文名:琥珀) 的新方法。琥珀的主要思想是对提词器中的上下文(context)用连续向量进行建模,而整个训练过程将仅仅端到端优化这几个上下文词向量,而保持预训练参数不变。此举完全自动化了提词器的设计过程。下图展示了琥珀的模型结构。

实验结果表明琥珀是一个十分高效的小样本学习方法,平均每个类别只需要一到两张图片就可以击败基于手工提词器的零样本识别模型。不仅如此,琥珀还对领域泛化表现出了极强的鲁棒性。

鉴于提词器可视化的结果,作者大胆的推测,在一些数据集上,一些无厘头的提词器,例如“makka pakka akka yakka ikka akka [class]”甚至可能比“a photo of a [class]”在某些数据集上有更好的效果😂。

内容中包含的图片若涉及版权问题,请及时与我们联系删除