目录
1.引言
2.架构
3.Bag of Words和对比型目标函数来加速训练
4.伪代码
5.prompt engineering and ensembling
6.Linear Probe
7.CLIP与人对比
8.CLIP的局限性
视觉语义与文本语义联系起来,学到的特征非常强,迁移的效果非常好。利用NLP的监督信号,学习一个迁移性能很好的视觉模型。文字图片的多模态工作,文字图片配对。
ImageNet128万数据集上CLIP使用zero-shot(不用ImageNet训练)的训练效果,和resnet50在ImageNet上做有监督的训练效果一样好。
1.对比学习预训练,文本和图片分别经过编码器得到特征。对角线上为n个正样本对,其他位置为n2-1负样本对。图片特征与文本特征建立了联系,此时模型从图片学到的特征可能不仅仅是图片本身的特征,还有文本的语义信息。openAI自建大规模的数据集WIT(webimage text)
2.zero-shot推理,prompt template。单词变成句子(预训练时是句子,避免distribution gap),再经过预训练好的文本编码器,得到文本特征。
3.测试图片经过预训练好的图片编码器,得到图片的特征。将图片特征与文本特征进行cos相似度计算,进行匹配。
与图片对应的文本可以看做高级标签,文本与图像建立了联系,文本引导模型从图片中提取文本的语义信息。
CLIP训练的特征与用语言描述的物体产生了强烈的联系。
NLP领域,BERT、GPT,自监督的方式(MLM Mask Language Model; NSP next sentence Prediction)训练,提取文本特征,目标函数与下游任务无关。但在视觉CV领域,还是在imagenet上有监督的预训练一个模型去做迁移。
VirTex自回归的预测方式预训练,ICMLM完形填空预训练,ConVIRT 和CLIP很相似,但模型数据规模不够大,此时没有transformer,因此效果并不是很好。文本带来的弱监督信号去帮助有监督模型做得更好。但仍存在局限性,还是需要制定标签列表,固定的softmax分类头无法随心所欲,去检测任何想检测的类。
核心:自然语言的监督信号去训练视觉模型。
NLP领域利用上下文信息(完型填空)的自监督模型简单、泛化性好,为多模态的模型铺平道路。优点就是不需要标注数据,只需要下载图片文本的配对,学到的特征是多模态特征。moco,MAE只能学到视觉特征,不好做zero-shot迁移。
加速训练的两个方法
(1)根据图片逐字逐句预测文本,太难了。Bag of words,文本被抽象成一种特质,相应的约束被放宽了。
(2)预测型prediction目标函数换成对比型contrastive目标函数,加速训练
对角线上是正样本,range(实现)
使用了线性投射层,没有像moco,simclar一样使用非线性投射层(FC+RELU)。也只使用了随机裁剪的数据增强。temperature设置成了可学习的参数。文本使用了transformer,图片可以使用transformer和resnet。
zero-shot transfer:用文本引导做zero-shot迁移。目标:图像经过图像编码器得到的特征要和文本得到的特征(引导,两种特征建立了联系)非常相近。
之前无监督领域就是去学一种泛化性比较好的特征,但即使学到了特征,应用于下游任务时,还是需要根据标签去做微调,这就有标签不好收集、distribution shift等问题。CLIP就想训练一个模型,迁移时不再微调!
prompt engineering and ensembling:prompt提示,文本引导作用
(1)多义词。不同语境下单词含义不同。因此语境信息也很重要。
(2)预训练时抽取句子特征来匹配文本,推理时,如果使用单个单词,存在distribution gap,抽取的特征并不是很好。To help bridge thisdistribution gap, we found that using the prompt template“A photo of a {label}.” to be a good default that helps specify the text is about the content of the image.
For instance, just using this prompt improves accuracy on ImageNet by 1.3%.
如果提前知道一些信息(先验知识),比如Oxford-IIIT Pets数据集都是动物,使用模板 “A photo of a {label}, a type of pet.” Food101数据集都是食物,使用模板“A photo of a {label}, a type of food.”总的来说,可以加入形容词,使用嵌入空间代替整个的可能空间,使得结果更加准确。We construct the ensemble over the embedding space instead of probability space.
Linear Probe:冻住抽取特征层(features),只训练分类头作微调。
图5中,对于车、食物、CIFAR10、CIFAR100这些普通物体分类,CLIP可以很好的做zero-shot迁移,可以理解为图片中有可以描述出来的物体,那对应的文本里应该也有这种描述,就可以很好的匹配。但是对于DTD这种对纹理分类的数据集,或者CLEVR Counts这种计数的任务,太抽象了,没有标签信息就太难了。但即使没有先验知识,这些任务人也可以稳健的做好,比如计数,交通信号灯的识别等。但是,如果对于没有先验知识的人来说,有些任务也很难,比如肿瘤分类,这对于CLIP就更难了。
图6中,进行了few shot(Linear probe)与其他有监督模型的对比。在一个大的数据集上做预训练,然后每个类别看1/2/4/8/16个(横坐标)样本做微调。
预训练后,下游任务用全部数据微调。
Linear probe:只训练最后的分类头;Fitting a linear classifier on a representation extracted from the model and measuring its performance on various datasets is a common approach.
Fine-tune整个网络放开,更新所有层参数。An alternative is measuring the performance of end-to-end fine-tuning of the model.
Fine-tune往往要比Linear probe好很多,但由于CLIP就是为了研究跟下游任务数据集无关的研究,冻住特征提取层才好比较迁移性能(泛化性)。
将CLIP与五个人的分类结果比较,CLIP精度要比人高出不少。
上图是说对于人来说比较难分类的的种类,CLIP也觉得难一些,原因大概是因为,不经常出现在人视野中的类别,在文本信息中出现的次数也少一些,CLIP更难学到这些特征。因此人和CLIP都做得不是很好。
(1)可以和resnet50打成平手,但与SOFT的模型还存在十几个点的差距。大概还需要1000倍的规模才可以弥补上十几个点的这个差距。
(2)有些数据集上效果并不好,比如抽象的特征(计数、纹理,处理异常:CLIP不懂什么是异常)。
(3)推理时的数据集与训练的数据集分布差的很大,out of distribution。泛化性还不行,比如MNIST。分析原因,这是人为创造的数据集,与训练用的WIT数据集相差还是很大。
(4)还是需要手动添加文本信息与图片匹配,无法自动生成标题。
(5)对数据的利用不是很高效,还需要大量的数据。400million个样本跑了32个epoch,相当于过了12.8billion个数据。自监督,伪标签的方式。
(6)每次测试调参都用了imagenet,并非真正的zero-shot。
(7)OpenAI自建的数据集WIT数据没有清洗。
python的学习还是要多以练习为主,想要练习python的同学,推荐可以去看,他们现在的IT题库内容很丰富,属于国内做的很好的了,而且是课程+刷题+面经+求职+讨论区分享,一站式求职学习网站,最最最重要的里面的资源全部免费。
牛客网 - 找工作神器|笔试题库|面试经验|实习招聘内推,求职就业一站解决_牛客网求职之前,先上牛客,就业找工作一站解决。互联网IT技术/产品/运营/硬件/汽车机械制造/金融/财务管理/审计/银行/市场营销/地产/快消/管培生等等专业技能学习/备考/求职神器,在线进行企业校招实习笔试面试真题模拟考试练习,全面提升求职竞争力,找到好工作,拿到好offer。https://www.nowcoder.com/link/pc_csdncpt_ssdxjg_python
他们这个python的练习题,知识点编排详细,题目安排合理,题目表述以指导的形式进行。整个题单覆盖了Python入门的全部知识点以及全部语法,通过知识点分类逐层递进,从Hello World开始到最后的实践任务,都会非常详细地指导你应该使用什么函数,应该怎么输入输出。
牛客网(牛客网 - 找工作神器|笔试题库|面试经验|实习招聘内推,求职就业一站解决_牛客网)还提供题解专区和讨论区会有大神提供题解思路,对新手玩家及其友好,有不清楚的语法,不理解的地方,看看别人的思路,别人的代码,也许就能豁然开朗。
快点击下方链接学起来吧!
牛客网 - 找工作神器|笔试题库|面试经验|实习招聘内推,求职就业一站解决_牛客网
CLIP 论文逐段精读【论文精读】_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1SL4y1s7LQ?spm_id_from=333.999.0.0