CLIP学习笔记

CLIP 学习笔记

论文:Learning Transferable Visual Models From Natural Language Supervision

openAI在2021年2月发表对NLP和CV圈都很重要的一篇工作

主要是通过4亿个文本图片对,进行对比学习预训练,得到词和图片的embedding转换器,在图片分类zero-shot上达到很好效果,后续也可以接很多工作。

clip的github地址 openai/CLIP: Contrastive Language-Image Pretraining (github.com)

paper地址 [2103.00020] Learning Transferable Visual Models From Natural Language Supervision (arxiv.org)

clip官网 CLIP: Connecting Text and Images (openai.com)

Playground

在学习CLIP之前,我们先动手玩一玩,这里可以查看clip github上给的交互代码 在colab notebook上进行加载模型进行尝试。

我根据clip官方写的交互代码改写的colab notebook代码地址

clip_playground.ipynb

官方分类效果图
CLIP学习笔记_第1张图片

我自己的结果

CLIP学习笔记_第2张图片
这科比模型一眼就认出来了,本身就具有名人识别功能,路飞也识别出来了,one piece还有一定概率,如果没有Luffy估计one piece概率就相对高了。

模型原理

推荐大家可以看一下b站讲解视频,讲的很不错CLIP 论文逐段精读【论文精读】_哔哩哔哩_bilibili

CLIP学习笔记_第3张图片

上图为模型整体结构,其实就是文字经过一个text encoder得到句向量,这里为512维,图片经过 image encoder得到图片向量 512维,通过计算相似度,计算对称loss,将文本和图片对作为正样本,其他作为负样本进行训练,下图为loss计算伪代码

CLIP学习笔记_第4张图片

数据集

之前工作数据集主要有三个数据集:

  • MS-COCO (Lin et al., 2014)
  • Visual Genome (Krishna et al., 2017)
  • YFCC100M (Thomee et al., 2016)

其中前两个数据集质量很高,但都大约10w图片,而YFCC100M虽然1亿张图片,但质量较差过滤后仅剩下1500w张照片。OpenAI一看1500万数据,不够我塞牙缝的,于是下面数据集就诞生了。

WIT(WebImageText) OpenAI通过互联网构建4亿对(图片,文本)数据集,通过500,000查询,每个查询得到20,000个图像文本对。

训练细节

  1. 图片处理时,只使用了随机裁剪来进行数据增强,最后控制softmax中logits范围的temperature参数之间作为训练参数,避免调参带来的巨大开销。
  2. Image Encoder ResNet-50 ,Vit ,输入图片尺寸【3,224,224】
  3. Text Encoder 使用12层512 hidden_size的transformer,使用BPE编码,词表大小49,152,最大序列长度为76,使用mask self-attention来保留模型初始化,并可以设置辅助目标来帮助text模型建模,作者将这部分left as future work.
  4. 为了节省内存和加快训练,使用gradient checkpoint,half-precision Adam statistics,fp-16

不足

  • 该模型在少样本上效果反而不如零样本,对如何在该模型上使用少样本进行领域优化提出了待解决的问题。
  • 效果不如目前的state-of-the-art,当然如果直接零样本在各种领域上都不进行领域数据优化,就能beat当前的最好模型,那别人也不用玩了,但感觉也足够了,剩下加大数据量,模型大小,也不是我们这种穷人考虑的事情,就从方法上稍微考虑优化优化吧。

其他

之所以选择对比学习,而未选择预测学习,因为对比学习效率比预测高4倍左右。

模型实际应用

  • 给一段视频,找到文字描述的那一帧,查监控的时候可以通过文字描述快速查找了,比如交通录像,查找车辆违规的帧,可能目前的模型还不太能理解违规的含义,就不同车相撞的帧应该可以查到。
  • 图片检索,这给一个特别大的图片库,想从中检索到你想要的图片,如果这些图片还没有标题,描述什么的,用clip应该是目前最好的选择了。
  • VQA任务,设置好问题prompt,然后添加候选的label进行分析相似度,这里可能由于promt的设置固定,表现效果不会很好,但可以想办法进行改进。

当然感觉还有很多应用,直接有相关的图片和文字embedding生成器,如果再接各种生成等等其他模型,create as you want.

总结

我认为这篇论文也是很经典的有钱人的工作,但有钱人的快乐就是那么朴素无华,效果就真的非常好,后续也成为了许多工作的基础,接下来我也再参考一些后续的工作,然后自己也做做实验,DALLE 2.0还没玩出来呢,感觉那个效果真滴好。

你可能感兴趣的:(论文笔记,学习,机器学习,深度学习,自然语言处理,计算机视觉)