当前位置:网站首页>CLIP Learning Transferable Visual Models From Natural Language Supervision
CLIP Learning Transferable Visual Models From Natural Language Supervision
2022-07-28 05:23:00 【山上的小酒馆】
目录
5.prompt engineering and ensembling
1.引言
视觉语义与文本语义联系起来,学到的特征非常强,迁移的效果非常好。利用NLP的监督信号,学习一个迁移性能很好的视觉模型。文字图片的多模态工作,文字图片配对。
ImageNet128万数据集上CLIP使用zero-shot(不用ImageNet训练)的训练效果,和resnet50在ImageNet上做有监督的训练效果一样好。
2.架构

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迁移。
3.Bag of Words和对比型目标函数来加速训练

加速训练的两个方法
(1)根据图片逐字逐句预测文本,太难了。Bag of words,文本被抽象成一种特质,相应的约束被放宽了。
(2)预测型prediction目标函数换成对比型contrastive目标函数,加速训练
4.伪代码

对角线上是正样本,range(实现)
5.prompt engineering and ensembling
使用了线性投射层,没有像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.
6.Linear Probe
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就是为了研究跟下游任务数据集无关的研究,冻住特征提取层才好比较迁移性能(泛化性)。
7.CLIP与人对比
将CLIP与五个人的分类结果比较,CLIP精度要比人高出不少。


上图是说对于人来说比较难分类的的种类,CLIP也觉得难一些,原因大概是因为,不经常出现在人视野中的类别,在文本信息中出现的次数也少一些,CLIP更难学到这些特征。因此人和CLIP都做得不是很好。
8.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数据没有清洗。
CLIP 论文逐段精读【论文精读】_哔哩哔哩_bilibili
https://www.bilibili.com/video/BV1SL4y1s7LQ?spm_id_from=333.999.0.0
边栏推荐
- Byte Android post 4 rounds of interviews, received 50k*18 offers, and successfully broke the situation under the layoff
- 机群作业管理系统,求解答进程方面的疑问
- C语言EOF的理解
- BERT基于transformer的双向编码器
- Transformer 自注意力机制 及完整代码实现
- (PHP graduation design) obtained based on PHP fruit sales store management system
- 权重衰减 weight decay
- Getting started with latex
- 怎么看SIMULINK直接搭的模块的传递函数
- ESXi社区版网卡驱动再次更新
猜你喜欢

1、 Amd - openvino environment configuration

使用MS图表控件创建基本报表

Agilent安捷伦 E5071测试阻抗、衰减均正常,惟独串扰NG?---修复方案

深度学习(二)走进机器学习与深度学习编程部分

TCL和ELTCL?CDNEXT和CMRL?

EMC实验实战案例-ESD静电实验

确保PoE设备成功部署的最佳实践

Ctfshow single dog -- Web

DSX-PC6跳线模块,何时更换JACK插座?

IMS-FACNN(Improved Multi-Scale Convolution Neural Network integrated with a Feature Attention Mecha
随机推荐
Building neural network based on tensorflow
线缆测试中遇到苦恼---某厂商案例分析?
The difference between router and switch
Adaface: quality adaptive margin for face recognition image quality adaptive edge loss for face recognition
Getting started with latex
杭州某公司福禄克FLUKE DTX-SFM2单模模块-修复案例
arduino 读取模拟电压_MQ2气体/烟雾传感器如何工作及其与Arduino接口
The short jumper dsx-8000 test is normal, but the dsx-5000 test has no length display?
浪涌冲击抗扰度实验(SURGE)-EMC系列 硬件设计笔记6
基于直方图修改的可逆数字水印方法
AEM online product promotion conference - Cable certification tester
生活随机-1
USB Network Native Driver for ESXi更新到支持ESXi7.0 Update 2
EXFO 730C光时域反射计只有iOLM光眼升级OTDR(开通otdr权限)
VB-ocx应用于Web
Latex入门
在Asp.net 中Cookie的用法
Which enterprises are suitable for small program production and small program development?
CVE_ 2017_ 11882 vulnerability recurrence (Metasploit opens NT remote desktop to add an account)
后门攻击与对抗样本攻击的比较研究