CLIP
CLIP将计算机视觉与自然语言处理相结合,获得更加优秀的迁移性能与zero-shot效果。同时打破了固定标签的定式。
Abstract
针对目前已有的计算机视觉系统,大部分都是使用固定的标签集合,这限制了它的泛化性能和可用性。
于是作者选择通过图片的语言文本来进行图像识别。作者爬取了4亿张图片以进行模型的预训练。在预训练完成后,作者在30多个任务上进行了测试。
在ImageNet数据集内,CLIP模型在zero-shot的情况下便已经与训练完成的Resnet50打成平手。
Introduction
GPT作为一个”Text-in-text-out”的经典案例,反映了弱监督工作的可行性,于是作者决定提出使用图片与文字结合,进行CLIP模型的研究。
已有相关研究VirTex, ICMLM和ConVIRT方法虽然接近,但是数据集规模较少,而有些弱监督模型的准确率较高,其依赖的是极度大量数据集,所以作者考虑到是否能够同时满足以上条件,进而研究出新的方法。在预实验结果中,使用已有模型(ConVIRT)与新的数据,其模型在zero-shot上成功体现出极好的效果。同时模型效果与模型大小呈现正相关。
Method
Dataset
作者发现目前已有数据集不能满足训练需求,所以选择自己开发数据集。
Pre-Training Method
作者针对该数据的标签,决定使用“图像-文本配对”的方法来进行训练,这是因为如果采用标签生成或者词袋模型,训练过程较慢。
同时作者也采用对比学习的方法进行训练。
作者在训练过程中其实是发现了两个重要的事情。
非线性映射
CLIP(Contrastive Language–Image Pre-training)在其两个编码器(图像编码器与文本编码器)末端各插入了一个 线性映射(linear projection)层,将各自的表示向量映射到同一多模态嵌入空间,以便计算余弦相似度并进行对比损失优化。在早期的对比或自监督学习框架(如 SimCLR、MoCo 等)中,人们常使用 非线性映射头(two-layer MLP + ReLU + BN)来获得更好的特征表示;而 CLIP 的作者发现,去掉这层非线性映射,仅保留简单的线性映射,训练效率与效果几乎无差异,因此选择了更为简洁的设计。
未出现过拟合
作者在训练过程中未出现过拟合。其实挺好理解的,这么大的数据集能过拟合也是神人了
作者对于数据的处理也仅仅只有裁剪,而并未采用更多的高级方法。作者对于温度系数 $t$ 也仅仅只是进行
Choosing and Scaling the Model
伪代码
1 | image_encoder: Resnet or Vision Transformer |
Training
作者训练了5个ResNets和3个Vision Transformers
ResNet: ResNet-50, ResNet-101, EfficientNet-style model 4x, 16x and 64x the compute of a ResNet-50
Vision Transformer: ViT-B/32 Vit-B/16 ViT-L/14
训练32个epoch,Adam优化器
作者对于ViT-L/14在336像素的图片上又额外训练了一个epoch,并将其标注为ViT-L/14@336px. 后面使用的模型均为ViT-L/14@336px
Experiments
Inference
- 通过Prompt Engineering构造选项(备选方案如plane, car, dog -> A photo of plane, car, dog)经过Text Encoder计算为向量。
- 将图片经过Encoder转化为图像,计算图像与词向量的余弦相似度
Prompt Engineering and Ensembling
作者在该段提出了:多义性(polysemy)和标签多为短句的问题。并对于这两种问题,其提出使用提示词模板来解决,例如模板”A photo of a {label}”. 该方法提升准确率1.3%
同时,对于特定数据集,可以将模型进一步扩充,如对于Oxford-IIIT Pets, 则可将模板改为”A photo of a {label}, a type of pets”.
效果分析
- CLIP(zero-shot) vs linear probe Resnet50: 对于有具体物体的模型CLIP表现更佳,而抽象概念的数据则相对较差(如数字、纹理)。
- CLIP vs previous few-shot method: 远超既往小样本学习结果。CLIP在zero-shot的情况下,准确率已经和BiT-M的16-shot的效果相近。但是在部分few-shot上CLIP反而不如自己的zero-shot。
- CLIP使用linear probe效果,全数据集训练效果依旧强劲。
Comparison to Human Performance
Limitation
- 距离已有模型的SOTA有较大距离,只是优于ResNet50的Baseline.
- CLIP对于部分数据的效果不佳,比如细分类的数据集、抽象概念的数据(数字、异常提取)。
- 对于数据分布偏差极大的数据集,效果依旧较差。例如MNIST数据集效果较差,作者分析是因为400M图片中均无MNIST类似的图片。
- CLIP不是生成式模型,仍然需要提供一些选项。
- CLIP模型对于数据的应用并不高效。
- 希望能够产生一种新的,针对Zero-shot的数据集。
- 数据并无清洗,可能存在偏见。
- CLIP在few-shot的情况下并不如zero-shot优秀。