确定方向后第一篇论文精读笔记,随看随做。
第一遍
Abstract
在图像识别领域,传统做法是用视觉模型提取图像特征,然后匹配一组随机初始化的固定权重向量(每个类别一个向量),这些权重就代表视觉概念。而这就存在一个缺陷:这些向量只是数字,没有语义信息,如“狗”、“猫”、“飞机”在模型眼中只是01、02、03,而无法意识到狗和猫比狗和飞机在语义上更接近。
这就引出了作者的一个发现:像 CLIP 这样的大型预训练视觉-语言模型在学习可跨越广泛下游任务迁移的表示方面展现了巨大潜力。每个类别不再是数字编号,而是一段自然语言描述(“a photo of a dog”)。模型学到的是图像和文本在共享语义空间里的对齐关系。
CoOp 论文想表达的核心对比:正因为 CLIP 用了语言监督而非离散标签,它学到的表征空间天然更 transferable(可迁移)。但要用好这个能力,你得写对 prompt——这就引出了 CoOp 的研究动机:让机器自己学 prompt,别靠人手写。
Introduction
传统视觉模型无法较好泛化,模型将“一只猫”,“一只狗”替换为编号,很大程度上丢失了文本语义信息,使其无法处理新类别,因为学习新分类器需要额外的数据。
最近,视觉-语言预训练成为有前景的一个方向,但提示词工程要求极其玄学的输入,一个词语的增删都会对结果造成显著影响。实验人员需要广泛的测试提示词,造成效率极其低下。
所以,作者从提示学习(NLP)中找到灵感,提出一种简单方法:上下文优化(context optimization,简称CoOp)
conclusion
大致意思就是这个实验方向很新,效果很不错,还有很多地方可以细化展开,我们的文章主要做为一个引入。
第二遍阅读
CLIP是本文绕不开的一个话题。CLIP是openAI发布的开源模型,关联了图像和文字。我主要介绍两个概念:
特征空间:对于计算机来说,它是无法真正识别图像和文字的,我们需要将他们转换成一串数字(向量)。特征空间就是一个 512 维的数学坐标系,图像和文字都会被转换成这512维的向量,如果一张图片和一串文字在这个坐标系里算出来的距离很近(点积很大),那就说明他们成功匹配了。有趣的是,人类并不知道这512维每一个维度代表什么,这些都是模型在训练中自己决定的。
编码器(Encoder):
- 图像编码器:输入一张图片,输出一串512维的向量。
- 文字编码器:输入一句话,输出一串512维的向量。
在CLIP出来之前,CV和NLP之间有巨大的鸿沟。openAI通过4亿对图片与文字进行对比学习,最后训练出CLIP,完美对齐了视觉和语义。
具体实验流程不放了,下面进入复现
复现代码
第一次尝试复现代码,流程实在是繁琐。首先下载代码后需要进行环境配置,环境配置好后,需要下载数据集。数据集需要放入指定文件夹,然后在脚本中修改路径。这两步用copilot可以快速完成。