CLIP和改进工作串讲(LSeg、GroupViT、VLiD、 GLIPv1、 GLIPv2、CLIPasso)
一、CLIP
1.1 简介
1.1.1 前言
CLIP是OpenAI在2021年2月发表的一篇文章, 其全称为Contrastive Language-Image Pre-training,即一种基于对比文本-图像对的预训练方法。CLIP用文本作为监督信号来训练可迁移的视觉模型,使得最终模型的zero-shot效果堪比ResNet50,泛化性非常好,而且CLIP还有很多好玩的应用。
zero-shot就是直接推理,用见过的图片特征去判断没见过的图片的类别,而完全不用下游任务训练集进行微调。(相当于把模型用作特征提取,但是没有分类头)作者在30多个不同的计算机视觉数据集上进行基准测试,(这些数据集涵盖了OCR、视频中的动作识别、地理定位和许多类型的细粒度对象分类等任务)
CLIP通常都能够与监督模型的baseline效果相媲美。例如在ImageNet数据集上,
CLIP模型在不使用ImageNet数据集的任何一张图片进行训练的的情况下,最终模型精度能跟一个有监督的训练好的ResNet-50打成平手(在ImageNet上zero-shot精度为76.2%,这在之前一度被认为是不可能的)。
1.1.2 模型结构
训练过程:
如下图所示,CLIP的输入是一对对配对好的的图片-文本对(比如输入是一张狗的图片,对应文本也表示这是一只狗)。这些文本和图片分别通过Text Encoder和Image Encoder输出对应的特征。然后在这些输出的文字特征和图片特征上进行对比学习。
假如模型输入的是n对图片-文本对,那么这n对互相配对的图像–文本对是正样本(下图输出特征矩阵对角线上标识蓝色 的部位),其它 对样本都是负样本。这样模型的训练过程就是最大化n个正样本的相似度,同时最小化 个负样本的相似度。
Text Encoder可以采用NLP中常用的text transformer模型;而Image Encoder可以采用常用CNN模型或者vision transformer等 模型。相似度是计算文本特征和图像特征的余弦相似性
cosine similarity为了训练
CLIP,OpenAI从互联网收集了共4个亿的文本-图像对,论文称之为WIT(Web Image Text。WIT质量很高,而且清理的非常好,其规模相当于JFT-300M,这也是CLIP如此强大的原因之一(后续在WIT上还孕育出了DALL-E模型)。

分类
CLIP可以直接实现zero-shot的图像分类,即不需要任何训练和微调,这也是CLIP亮点和强大之处。用CLIP实现zero-shot分类只需要简单的两步:
- 根据任务的分类标签构建每个类别的描述文本:
A photo of {label},然后将这些文本送入Text Encoder得到对应的文本特征。如果类别数目为n,那么将得到n个文本特征; - 将要预测的图像送入
Image Encoder得到图像特征,然后与n个文本特征计算缩放的余弦相似度(和训练过程保持一致),然后选择相似度最大的文本对应的类别作为图像分类预测结果。进一步地,可以将这些相似度看成logits,送入softmax后可以到每个类别的预测概率。
我们不再需要预先定义好的标签(类别)列表,直接将图片喂给不同的文本句子,就可以知道图片中是否有我们感兴趣的物体。即,CLIP的多模态特性(利用文本监督信号)为具体的任务构建了动态的分类器,使得模型不再受限于预先定义好的类别,更加具有通用性和可用性。
比如新增三轮车的图片时,只需要在文本部分也加上三轮车这个类别,模型很有可能直接
zero-shot推理出图片属于三轮车这个类。而之前的模型,是永远不会预测出ImageNet1000个类之外的类的,这也是CLIP最吸引人的地方。类别单词变成句子,有
prompt engineering和prompt ensemble两种方法,进一步提高模型准确率,在论文后面会讲到
1.1.3 模型效果
1.1.3.1 对自然分布偏移的鲁棒性
如下图所示,作者还比较了zero-shot CLIP与现有ImageNet模型在自然分布偏移上的性能来验证它的鲁棒性。

- 左图的横纵坐标是ImageNet的分布偏移。黑色虚线是理想的鲁棒模型,是线性的、正比例的。普通的模型无法达到这样的理想效果,画出来的曲线只会在黑色虚线的下面。但这里可以看出
zero-shot CLIP的鲁棒性比标准的ImageNet训练的模型更好。 ImageNetV2是从ImageNet数据集中筛选出新的数据集,其更接近原来的测试集。然而在ImageNet上预训练的模型,在ImageNetV2上的测试性能下降了不少(76.2→64.3)- 右图中
ImageNet Sketch都是素描的 图片、ImageNet-A包含很多对抗样本
CLIP和基于ImageNet上有监督训练的ResNet101,在ImageNet验证集都能达到76.2%,但是在剩下的五个数据集上,ResNet101性能下降得非常厉害,但是CLIP能依然保持较大的准确度。比如在ImageNet-A数据集上,ResNet101精度只有2.7%,而CLIP能达到77.1%。
这也说明CLIP学习到的视觉特征,已经和语言产生了很强的联系。这也不论是自然的香蕉还是动漫里的香蕉、素描的香蕉、加了对抗样本的香蕉,CLIP都知道图片是对应香蕉这个单词。
1.1.3.2 StyleCLIP
顾名思义,这是一篇CLIP+styleGAN的工作,可以通过文字的改变引导图像的生成。比如下面例子中,输入“Mohawk hairstyle”,就能改变奥巴马的发型;输入“Without makeup”,就可以一键卸装了;输入“Cute cat”(可爱的猫),猫的眼睛就睁大了。CLIP 也能理解各种抽象妆容,比如烟熏妆,吸血鬼妆。