【论文精读】CLIP:Learning Transferable Visual Models From Natural Language Supervision 从自然语言监督中学习可迁移的视觉模型


一、文章概览

(一)研究背景

  • 直接从原始文本中学习的预训练方法在过去几年中彻底改变了 NLP(例如自回归和掩码语言建模)
  • 目前最先进的计算机视觉系统是先有一组固定的提前已经定义好的物体类别的集合,模型通过预测这些提前定义好的类别完成训练。
  • 这种监督方式限制了模型的通用性和可用性,因为需要额外的标记数据来指定任何其他视觉概念。

(二)文章的主要工作

核心思想: 直接从原始文本中学习图像可以利用更广泛的监督来源。
具体做法: 从互联网中收集4亿对图像文本对,然后从这个数据集上从头开始学习 SOTA 图像表示(采用多模态的对比学习方法)。预训练后,使用自然语言(prompt)来引导视觉模型学习或者描述新的视觉概念,从而实现模型零样本传输到下游任务。
实验结果: 通过对 30 多个不同的现有计算机视觉数据集进行基准测试来研究这种方法的性能,涵盖 OCR、视频中的动作识别、地理定位和许多类型的细粒度对象分类等任务,最终发现该模型可以轻松地迁移到大多数任务,并且通常可以与完全监督的基线竞争,而无需任何数据集特定的训练。

二、模型方法

(一)自然语言监督

核心思想: 用自然语言的监督信号训练视觉模型

优点:

  • 不需要对数据进行标注了,数据规模可以很容易变得更大
  • 训练时将图片和文字绑定在了一起,学到的特征为多模态特征,很容易完成zero-shot的迁移学习

(二)数据集创建

现有工作主要使用三个数据集:MS-COCO 、Visual Genome 和 YFCC100M 。
(要么数据量较少,要么质量不高)

作者构建的数据集:包含 4 亿对(图像、文本)的新数据集,这些数据集是从互联网上的各种公开来源收集的。

(三)预训练方法

训练效率是成功扩展自然语言监督的关键,作者选择最终的预训练方法主要是基于训练效率这个指标。

最初的想法:从头开始联合训练图像 CNN 和文本转换器来预测图像的标题。

最终的方法:把训练任务变成对比任务,只需要判断图片和文本是否配对

将预测型目标函数换成对比型预测函数,在训练效率上能提升4倍
在这里插入图片描述

(四)模型架构

  • CLIP模型是利用多模态的对比学习完成模型训练(配对的图像文本就是一个正样本,因此矩阵对角线上元素是正样本,非对角线元素是负样本)

  • prompt template:先将分类的标签转换为句子,然后输入到文本编码器中进行提取。这是因为在预训练的时候,模型看到的都是句子,如果推理时突然把文本转换为单词,效果会下降。

  • 对于输入的图像,在通过图像编码器之后得到的图像特征可以直接取跟文本特征求相似性,选择相似性最高的句子作为分类结果。

在这里插入图片描述
模型伪代码:

  • 文字 I [ n , h , w , c ] I[n,h,w,c] I[n,h,w,c]和图像 T [ n , l ] T[n,l] T[n,l]的配对(n是batch size),图片通过图像编码器(可以是resnet,也可以是vision transformer)得到一些图像特征,文本通过文本编码器(CBOW或者文本transformer)得到文本特征。
  • 在得到对应的特征后,经过一个投射层 W W W进行投射,主要用于学习如何从单模态变为多模态,之后经过归一化操作后可以得到最终用于对比的特征 I e I_e Ie T e T_e Te
  • 计算用于对比的特征 I e I_e Ie T e T_e Te的cosine similarities,用于分类
  • 将分类的结果与ground truth计算交叉熵损失

在这里插入图片描述

三、补充问题

(一)Zero-Shot Transfer

之前的自监督或者无监督方法主要研究的是特征学习的能力,目标是学习到泛化性较好的特征,但是在应用到下游任务时,还是需要有标签的数据去做微调。

CLIP借助文本训练好这个模型之后,就可以用文本作为引导去很灵活的做zero-shot的迁移学习。具体的推理过程:

  • 预训练完成后,CLIP的图像编码器和文本编码器都已经训练好了,此时任意输入一张照片,通过图片编码器即可得到图像特征,文本的输入就是你感兴趣的标签,标签通过prompt engineering变成一个句子,经过文本编码器得到文本特征,然后计算相似度。
    在这里插入图片描述

(二)与之前Zero-shot模型的对比

在这里插入图片描述

(三)Prompt 方法

Prompt是提示的意思,对model进行微调和直接做推理时有效

为什么要用 prompt engineering and ensembling:

  • 由于一个word 具有多义性,图片和文字匹配容易出错,所以作者将word放在语境中,来提高匹配度;
  • 预训练的时候,匹配的文本一般都是一个句子,很少是。一个单词。如果做推理的时候,每次都进来的是一个单词,那你这里面可能就会存在 distribution gap 的这个问题,抽出来的特征可能就不是很好。
  • Prompt不仅能做匹配;
  • 一旦加入这个prompt engineering and ensembling,准确度上升了1.3%;

最后在CLIP中,总共用了80个prompt template之多:
在这里插入图片描述

四、实验

(一)大范围数据集结果

做了27个数据集的分类任务,baseline是ResNet-50,ResNet-50是有监督模型在各个数据集上训练好的, 然后两个模型在其他数据集上zero-shot;

  1. 在 16 个数据集上,也就是在大多数据集上, Zero shot 的 CLIP 模型都超越了之前这种用有监督预训练好的 rise 50;
  2. 对于这种普通的给物体进行分类的数据集来说, clip 一般都表现得比较好;
  3. 对于更难的一些任务,更难的一些数据集,CLIP 模型的表现就不好,因为对于这种难的任务,你完全不给他任何标签信息的话,这也有点强人所难了。作者认为在这些更难的数据集做few-shot可能比zero-shot更好。

在这里插入图片描述

(二)few-shot与zero-shot的对比

few-shot:训练好模型以后,把这个模型的参数冻住,只从里面去抽特征做Linear probe。那既然你是 Linear probe,你需要训练最后那个分类头的,所以你就需要下游数据集里有这种有标签的数据,这个就算是 few shot。

在这里插入图片描述

(三)Representation Learning(下游任务用全部的数据 clip 的效果)

为了证明Pre-Train的成功,CLIP将预训练好的模型在下游任务中做了Linear probe,就是模型主体冻住,只调Linear分类头,因为这样不用太多的调参,也能证明模型的特征学的好不好:

  • 其中横坐标是一次前向过程的计算量,纵坐标是分类准确度;
  • 可以看出CLIP是在计算量与准确度方面trade-off做的最好的一个模型。
    在这里插入图片描述

(四)模型其他特性的衡量

当数据这个分布改变得非常厉害的时候,普通的一个模型它可能掉点就非常严重,但是对于 CLIP 训练出来的模型它就非常的稳健。它在所有的这种数据分布上表现的都非常好。
在这里插入图片描述

(五)与人进行对比

将CLIP与人进行zero-shot,one-shot,two-shot的对比,分类的物体是37种狗和猫的图片:

  • 人在zero-shot与one-shot的差别是很大的,表明人学习的能力是很强的;
  • 但是人的one-shot与two-shot区别不大,说明了人在没有先验知识,只是通过样本学习,不一定能学的更好。
    在这里插入图片描述

分类结果:
在人判断准确率较高的类别上,机器的准确率也高;在人判断不准的类别上,机器判断也不准;说明人与机器学到的数据分布很接近。
在这里插入图片描述

参考:CLIP 论文逐段精读【论文精读】

  • 26
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值