Contrastive Learning(对比学习)–CLIP笔记(一)
参考:CLIP 论文逐段精读【论文精读】_哔哩哔哩_bilibili
CLIP简介
CLIP是一种多模态预训练模型,由OpenAI在2021年提出,论文标题:Learning Transferable Visual Models From Natural Language Supervision ([2103.00020] Learning Transferable Visual Models From Natural Language Supervision (arxiv.org))
论文有四十多页,作者做了超级多的实验,看李沐老师和朱老师的视频讲解也算是一次知识蒸馏([1503.02531] Distilling the Knowledge in a Neural Network (arxiv.org) by Hinton)了
通过大量的图像-文本对进行训练,CLIP的核心思想是通过对比学习来训练模型。它将图像与文本配对,并尝试将它们映射到相同的特征空间中。在训练过程中,模型区分真实配对的图像和文本与错误配对的图像和文本。
clip涌现出的能力:很强的迁移能力,很强的zero shot能力,在不使用imagenet微调的情况下,和resnet50效果接近
在超过三十个数据集上测试,包括ocr,视频动作检测等任务
而且是一篇多模态的工作
如何训练
训练文本图像对的模型需要大数据集,所以OpenAI收集了很多数据,训练样本是图片文本对(4亿),如图所示,利用自然语言处理获得的监督信号进行训练
对角线是正样本(n个),负样本(n^2-n个)
用自然语言作为监督信号:(1)不需要再标注数据,只需要下载图片和文字的配对
(1,n)的标签->文本,模型的输入输出自由度变大很多
(2)图片文本绑定,学习到的不只是视觉特征,多模态特征容易去做zero shot 学习
对比任务:判断文本和图片是不是一个配对,而不是逐字逐句的去预测图像对应的文本,所消耗的计算资源大大减少,且更简单(生成式变为判别式)
生成型对比函数换成对比型函数,训练效率提升四倍
clip训练伪代码:
I[n,h,w,c]图片维度(batch_size,244,244,3)(例如)
T[n,l]文本维度(batch,length)
通过文本,图像编码器得到文本和图像特征,经过归一化(中间还要经过一个投射层,主要是为了从单模态转换到多模态)
有了n个图像的特征和n个文本的特征,计算图像特征和文本特征之间的余弦相似度
(logits):用于分类的logits
使用logits和ground truth做loss
创建gro