论文和代码链接
https://arxiv.org/pdf/2103.00020.pdf
https://github.com/openai/CLIP
介绍
CLIP是一个双模态的任务,例如输入一句句子,输出一个图像;之前有一些工作是通过图像预测文字描述,而CLIP是通过文字输出图像;
亮点
1、双模态,输入是文本和图像,文本和图像分别进入encoder编码;
2、采用对比学习 contrastive learning;
3、将分类模型转换为图文匹配问题;
Model
网络上有很多图文配对,作者是用了50w个query在网上搜索图片,每个query 2w个图片,总共4E张图片。
输入是N对图文,本文和图片分别通过对应的encoder,得到embeding,通过对比loss,计算2模态之间的cosine similarity,希望配对的loss最大(也就是图中斜对角的值最大),其余的值最小。是zero-shot的其中一种方式。
其中text encoder使用transformer,image encoder采用了2种模型,分别为:
- 5种ResNet:ResNet-50, ResNet-101, EfficientNet-style的ResNet,包括RN50x4, RN50x16, RN50x64;
- 3种ViT:ViT-B/32, ViT-B/16, ViT-L/14;
伪代码如下:
总结:
这比Imagenet单纯的分类好,因为如果只是分类的话,encoder只会考虑某个元素,以‘狗’为例,当对狗进行分类的时,只会聚集一些关于狗的特征;但如果是用图文匹配的方式的话,文字中除了狗的信息,还包括了其他多余的信息。例如,这是一只田园犬,可以对其细分等等。