介绍
CLIP数据集来自LAION-5B(LAION-400M,LAION-2B,DataComp-1B,DFN-5B?),由50亿个图片以及图片对应的标签组成。包含23.2亿的英文描述,22.6亿个100+其他语言以及12.7亿的未知语。
CLIP(Contrastive Language-Image Pretraining), 是OpenAI利用4亿张互联网上找到的图片,以及图片对应的Alternative文字训练的多模态模型。不仅可以拿来做常见的图片分类、目标检测,也可用来优化业务场景的商品搜索和内容推荐。CLIP能够基于视觉和语言相互关联的方式,实现无监督或弱监督的图像分类任务,并在多项视觉和语言任务中取得了优异的性能。Stable Diffusion V1中使用OpenAI的CLIP的 ViT-L/14进行文本嵌入。
CLIP模型由两个主体部分组成:Text Encoder和Image Encoder。这两部分可以分别理解成文本和图像的特征提取器。CLIP模型采用了对比学习(Contrastive Learning)和预训练(Pre-Training)的方法,使得模型能够在大规模无标注数据上进行训练,并学习到具有良好泛化能力的特征表示。
Image Encoder,CLIP使用“ViT-L/14@336px”这个模型,也就是架构为Large,patch_size = 14的ViT,同时在整个CLIP预训练结束后,用更高分辨率(336*336)的图片做了一个epoch的fine-tune
Text Encoder,使用改进版的 Transformer,一个带有8个注意头的 63M 参数的12层512宽 Transformer 模型,CLIP借鉴的是GPT2的架构。
对比学习是一种学习相似性度量的方法。假设一个batch中共有N对<图像,文字>对,那么它们过完各自的Encoder后,就会分别产生N条文字向量[T1,T2,…,TN] N条图片向量[I1,I2,…,IN] 这两组向量,将会分别过一次多模态Embedding(multimodal embedding) ,也就是在图中代表文字的紫色向量下,还有一层参数Wt(图中没有画出来),文字向量需要先和Wt做矩阵相乘后,才能得到最终的文字向量。对图片向量,同理也有个对应的Wi。Wt,Wi 的作用是把文字、图片特征投影到多模态的特征空间中去。
预训练
预训练包括两个阶段:视觉预训练和视觉-语言预训练
视觉预训练:在大规模无标注图像数据上训练模型,使其学习到视觉特征表示。在视觉预训练阶段,CLIP模型使用对比学习的方法,将不同图像对进行比较,从而学习到具有区分度的视觉特征。CLIP模型使用了一个基于Transformer的编码器来将图像转换为特征表示,然后通过对比学习使得同一张图像的不同裁剪或变换间距离更近,不同图像间距离更远。这样模型就能学习有区分度的视觉特征表示。
视觉-语言预训练:在大规模无标注图像和文本数据上训练模型,使其学习到视觉和语言的相互关系。在视觉-语言预训练阶段,CLIP模型使用了对比学习和跨模态对比学习的方法,使得模型能够学习到视觉和语言的相互关系。CLIP模型使用了一个基于Transformer的编码器将图像和文本转换为特征表示,并通过对比学习的方法,使得相同含义的不同图像和文本之间的距离更近,而不同含义的图像和文本之间的距离更远。这样模型就能学习到有良好泛化能力的视觉和语言特征表示,并用于各种视觉和语言任务中。
Zero Shot预测
Zero-Shot 预测:当做完模型对比学习和预训练后,就能用模型进行zero-shot预测:
首先,创建一个标签全集,并得到每一个标签的特征向量
然后,取一张图片,过Image Encoder后得到该图片的特征向量
最后,计算图片向量和文字向量间的相似度,取相似度最高的那条label即可。
CLIP模型优势:
无监督或弱监督的学习方法:CLIP模型采用了对比学习和预训练的方法,使得模型能够在大规模无标注数据上进行训练,并学习到具有良好泛化能力的特征表示,因此不需要大量标注数据。
泛化能力强:CLIP模型能够学习到具有良好泛化能力的特征表示,并在多项视觉和语言任务中取得优异性能。
可解释性好:CLIP模型使用了一个基于Transformer的编码器,能够对输入的图像和文本进行编码,并输出对应的特征表示,因此具有很好的可解释性。
CLIP模型劣势:
计算资源消耗大:由于CLIP模型采用了大规模无标注数据进行训练,并使用了较大的模型,因此需要大量计算资源进行训练和推理。
文字标签是个闭集:模型预测一张新的图像,只能从已有的标签集合中找出最相似的,不能预测一个新标签。
总结
CLIP是2021年初OpenAI发布,是多模态研究领域的经典之作,在多任务表现达到SOTA 。2022年9月LAION发布OpenCLIP,包含三个大规模CLIP模型:ViT-L/14, ViT-H/14和ViT-g/14。
CLIP是指CLIP模型本身,而OpenCLIP则是指CLIP模型的开源实现。两者有着紧密的联系,OpenCLIP是对CLIP模型的应用和推广,使更多的人可以使用CLIP模型进行相关的研究和开发。
CLIP利用4亿张互联网上找到的图片对应的Alternative文字训练的多模态模型。OpenCLIP在 LAION-5B的美学子集进行训练。与v1版本不同的是,v2版本使用LAION的NSFW过滤掉了数据集中的成人内容。
Stable Diffusion 1.0中所使用ClipText的含有630万文本模型参数。Stable Diffusion 2.0版本使用的OpenCLIP文本模型参数多达3.54亿。
使用OpenCLIP版本的SD2.0文生图模型可以生成默认分辨率为512x512像素以及768x768像素的图像,而使用CLIP版本的SD1.0文生图模型只能生成默认分辨率为512x512像素的图像。