clip模型及论文精读-Learning Transferable Visual Models From Natural Language Supervision

📅 2026/7/9 10:59:14 👁️ 阅读次数 📝 编程学习
clip模型及论文精读-Learning Transferable Visual Models From Natural Language Supervision

文章学习笔记根据B站【CLIP 论文逐段精读【论文精读】】 https://www.bilibili.com/video/BV1SL4y1s7LQ/?share_source=copy_web&vd_source=62e4f3fd48d4ea21c7731322b8e5cb53以及作者:猛猿
链接:https://juejin.cn/post/7264503343996747830
来源:稀土掘金 学习总结而成

专业词汇

Zero-Shot(零样本学习,Zero-Shot Learning, ZSL) 指的是一种让模型能够识别或分类在训练阶段从未见过的类别的能力。
简单来说,传统的监督学习需要模型“看过”大量带标签的图片才能识别某类物体;而 Zero-Shot 学习则允许模型在没有目标类别任何训练样本的情况下,仅凭辅助信息(如语义描述、属性、文本标签等)就能完成识别任务。

Batch(批次)指的是在模型训练或推理过程中,一次性送入神经网络进行处理的一组样本集合

监督学习:模型在带有明确人工标签的数据上进行训练,学习从输入到输出的映射关系。

无监督学习:模型仅使用未标注数据,自行发现数据中的模式、分布或潜在结构

自监督学习:模型通过自动构造的伪标签来学习数据的通用表征。标签不是人工标注的,而是从数据自身结构中衍生出来的“ pretext task ”

迁移性指的是模型在一个任务或数据分布上学到的知识,能够有效应用到另一个不同但相关的任务或数据分布上的能力

泛化性指的是模型在未见过的数据上保持良好性能的能力

ResNet-50是深度计算机视觉领域最具里程碑意义的卷积神经网络之一,由微软研究院的何恺明等人在 2015 年提出。它是 ResNet(残差网络)系列中应用最广泛、最经典的“黄金标准”模型,成功解决了深层网络训练中的退化问题,并成为此后十年几乎所有视觉模型的骨干基线。

鲁棒性指的是模型在面对输入扰动、数据分布偏移、对抗攻击或异常样本时,仍能保持稳定、可靠性能的能力。

Epoch指的是整个训练数据集被模型完整地遍历(前向传播 + 反向传播)一次的过程。

Linear Probe(线性探针)是一种用于评估预训练模型表征质量的标准化评测方法。其核心操作是:冻结预训练模型的所有参数,仅在其输出的特征表示之上训练一个线性分类器(如逻辑回归或单层全连接层),以此衡量该表征在下游任务中的可分离性和信息丰富度。

Fine-tuning(微调)是指在预训练模型的基础上,使用特定任务或领域的数据继续训练,使模型适配下游应用场景的过程

OCR(Optical Character Recognition,光学字符识别)是指将图像中的文字区域自动检测并转换为可编辑、可搜索的机器文本的技术。它是计算机视觉与自然语言处理交叉领域的重要应用,是“让机器读懂世界”的基础能力之一。

SOTA(State-of-the-Art)直译为“当前最高水平”或“最先进技术”,在人工智能与机器学习领域,它特指在特定基准数据集(Benchmark)上取得历史最佳性能指标的模型、算法或方法

什么是clip

1.CLIP的训练数据

CLIP的训练数据是<图像,文本>pair。如图所示,一个batch的数据里,有若干张图像,每张图像都配有相应的文字描述信息(prompt),比如:

  • 一张小狗图片,prompt为<dog>,或者为<A photo of a dog>

prompt的设计也会影响模型最终的效果,比如:

  • 把prompt从单词<dog>换成句子<A photo of a dog>后,模型在ImageNet分类任务上的准确率直接提高了1.3%
  • OCR数据集上,作者发现如果把要识别的文字、数字用引号扩起来,能达到更好的效果
  • 卫星图分类数据集上,作者发现把prompt替换成<A satellite photo of a house>,效果会更好
  • 在设计到多语义的场景,比如crane既可以表示仙鹤,又可以表示起重机。这时如果把prompt写成<A photo of a crane, a type of pet>,就能解决歧义问题。

2 CLIP预训练方法:对比学习

Text Encoder和Image Encoder

CLIP模型由两个主体部分组成:Text Encoder和Image Encoder。这两部分可以分别理解成文本和图像的特征提取器

对于Text Encoder,CLIP借鉴的是GPT2(Radford et al.2019)的架构。对于每条prompt,在进入Text Encoder前,都会添加表示开始和结束的符号[SOS][EOS]。最终将最后一层[EOS]位置的向量作为该prompt的特征表示向量,也就是图中所绘的Ti​。

对于Image Encoder,CLIP则尝试过5种不同的ResNet架构3种VIT架构最终选用的是“ViT-L/14@336px”这个模型,也就是架构为Large,patch_size = 14的ViT,同时在整个CLIP预训练结束后,用更高分辨率(336*336)的图片做了一个epoch的fine-tune,目的是让CLIP能涌现出更好的效果。与Text Encoder类似,每张图片对应一个最终特征表示向量IiI_{i}Ii​。在读论文的过程中,我没有发现IiI_{i}Ii​是来自于哪一出入层位置(也可能是我读漏了),但我猜测应该和Text Encoder差不多,可能来自分类头[CLS]

需要注意的是,CLIP是从头开始训练它的Text Encoder和Image Encoder的,没有借助其余预训练结果。

对比学习

假设一个batch中共有N对<图像,文字>对,那么它们过完各自的Encoder后,就会分别产生:

  • N条文字向量[T1,T2,...,TN][T_1, T_2, ..., T_N][T1​,T2​,...,TN​]

  • N条图片向量[I1,I2,...,IN][I_1, I_2, ..., I_N][I1​,I2​,...,IN​]

这两组向量,将会分别过一次多模态Embedding(multimodal embedding),也就是在图中代表文字的紫色向量下,还有一层参数Wt(图中没有画出来),文字向量需要先和Wt做矩阵相乘后,才能得到最终的文字向量。对图片向量,同理也有个对应的Wi。Wt,WiW_t, W_iWt​,Wi​的作用可以理解成把文字、图片特征投影到多模态的特征空间中去

经过多模态Emebdding的处理,我们得到了最终的[T1,T2,...,TN][T_1, T_2, ..., T_N][T1​,T2​,...,TN​]和[I1,I2,...,IN][I_1, I_2, ..., I_N][I1​,I2​,...,IN​]。接下来,我们就能通过“对比学习”,找到图像和文字的相似关系。做法也很简单,对于图中列出的N*N个格子,我们只需计算每个格子上对应的向量点积(余弦相似度)即可。由于对角线上的图片-文字对是真值,我们自然希望对角线上的相似度可以最大,据此我们可设置交叉熵函数,来求得每个batch下的Loss。

3 CLIP Zero-shot预测

当我们做完模型的预训练后,就能用模型来做之前说的zero-shot预测了,方法也非常简单:

  • 首先,我们创建一个标签全集,如图中(2)所示,并得到每一个标签的特征向量

  • 然后,我们取一张图片,如图中(3)所示,过Image Encoder后得到该图片的特征向量

  • 最后,计算图片向量和文字向量间的相似度,取相似度最高的那条label即可。

一、研究背景

NLP领域的启示:近年来,直接从原始文本中学习的预训练方法(如GPT系列)彻底改变了自然语言处理(NLP)领域。这些任务无关的目标在计算、模型容量和数据规模上不断扩大,实现了强大的零样本(Zero-shot)迁移能力。

计算机视觉的瓶颈:相比之下,计算机视觉(CV)仍主要依赖于人工标注的固定类别数据集(如ImageNet)进行监督学习。这种受限的监督形式限制了模型的通用性,因为识别任何新的视觉概念都需要额外的标注数据。

现有弱监督方法的局限:虽然已有研究尝试利用图像标题或标签进行弱监督学习,但往往受限于数据集规模较小、预测目标为静态分类器(缺乏动态输出机制),导致零样本性能远低于全监督基线(例如早期方法在ImageNet零样本准确率仅11.5%)。

互联网数据的潜力:互联网上存在海量“图像-文本”对,这是一种比人工标注更广泛、更可扩展的监督来源,但此前缺乏在大规模数据上验证其有效性的研究。

二、 主要方法

创建足够大的数据集

现有图文数据集的不足
规模过小: MS-COCO和Visual Genome虽标注质量高,但仅含约10万张训练图像,远低于现代CV系统(如Instagram数据达35亿张)的训练规模。

WIT数据集的构建

数据规模: 包含4亿个从互联网公开来源收集的(图像,文本)对,总字数与GPT-2训练所用的WebText数据集相当。
概念覆盖策略: 使用50万个查询词进行检索,每个查询最多采样2万对数据,以近似平衡的方式广泛覆盖视觉概念。

选择有效的预训练方法

给定一批N个图文对,模型训练目标是预测哪些配对是正确的。具体通过最大化匹配对的余弦相似度、最小化不匹配对的余弦相似度来实现,优化对称交叉熵损失。相比生成式目标(如预测确切单词),该对比学习目标训练效率高出4倍。训练使用32,768的超大batch size,并采用混合精度、梯度检查点等技术加速

选择和缩放模型

训练

研究训练了8个不同规模的模型,发现零样本性能随计算量增加呈现平滑、可预测的提升。所有模型均训练32个epoch,使用AdamW优化器和余弦学习率调度。为验证数据规模的重要性,还在相同计算预算下训练了使用更小数据集的模型作为对照。

三、实验

零样本图像分类评估

评估方法: 通过将数据集类别名称转化为自然语言提示(prompt)构建零样本分类器,无需任何下游训练数据
Prompt工程的重要性: 直接使用类名效果较差;使用简单模板(如“A photo of a {label}”)可显著提升性能;进一步使用80个不同prompt模板进行集成,平均可带来额外性能增益。
与全监督模型对比: CLIP在多个数据集上达到或接近全监督模型的性能水平,例如在ImageNet上零样本准确率与ResNet-50全监督训练相当。

比较

CLIP无法处理更抽象的任务。

抽象的任务指:输出图片中物体的个数等需要一定逻辑思维推理的任务。在论文的实验中也有给出一些说明,下图中刻画了CLIP和ResNet在不同数据集任务上的表现情况。绿色表示CLIP表现更好的数据集,蓝色表示ResNet表现更好的数据集。注意到蓝色部分的DTD(纹理分类)和CLEVRCountS(给图中物体计数)这两个数据集,都是相对抽象的任务,在这方面CLIP的表现明显不如ResNet。

那首先呢就是看这条蓝色的曲线 ,对应的呢其实是 bit 模型,他算是迁移学习,或者说 Few Shot的迁移学习里表现最好的工作之一。在这里呢,这个 bit 的模型 是在ImageNet21 k 上去做预训练的,数据集也比较大, 所以说这条蓝色的曲线非常具有代表性,是一个很强的Base Line。但是我们可以看到 zero shot CLIP不用任何训练样本,直接就和最好的这个 bit 打成平手,可见利用自然语言的这个威力。

那第二个比较有意思点, 就是说这条紫色的曲线就是我们对 CLIP 里那个图片编码器去做这种 Few shot的 linear probe。 我们可以发现,在当这个训练样本只有1啊2啊或者4的时候,这种用了训练样本的 Few Shot的方式,还不如直接去做Zero Shot的 CLIP,也就再次证明了用文本去做这个引导, 这种多模态的学习是多么的强大。

那最后一个观察,就是随着这个训练样本的增多 那这个 Few Shot的学习的这个 CLIP ,他的模型效果最后是最好。他不仅超越了之前的这些方法,验证了 CLIP 模型的强大, 同时他还超越了这种Zero Shot CLIP,验证了作者刚才的说法。对于这种难的数据集来说, 有一些这个训练样本,还是非常有必要的。

表征学习

评估方法选择:线性探测优于微调

尽管端到端微调通常能获得更高性能,但本研究仍选择线性分类器(Linear Probe)作为核心评估手段,原因如下:

检验通用性:微调会适配特定数据集,可能掩盖预训练阶段通用表征学习的缺陷;线性分类器灵活性低,能更真实地反映预训练表征的质量。

与零样本评估一致:线性探测的训练监督信号与CLIP的零样本分类机制高度相似,便于跨章节对比分析。

公平性与效率:在27个数据集上对比66个模型需进行1782次评估,线性分类器超参数少、实现标准化,避免了微调带来的巨大计算成本和超参数调优偏差。

四、不足

在具有训练分割的数据集上,zeroshot CLIP的性能平均与ResNet-50特征之上的线性分类器的简单监督基线具有竞争力。在大多数这些数据集上,该基线的性能现在远低于整体技术水平。仍然需要大量的工作来提高CLIP的任务学习和迁移能力。虽然到目前为止,缩放已经稳步提高了性能,并提出了一条持续改进的路线,但我们估计zeroshot CLIP需要大约1000倍的计算量才能达到整体最先进的性能。这对于用当前的硬件进行训练是不可行的。有必要进一步研究提高CLIP的计算和数据效率。

CLIP在几种任务上的zeroshot性能仍然相当弱。与特定于任务的模型相比,CLIP在几种类型的细粒度分类上的性能较差,例如区分汽车模型、花卉种类和飞机变体。CLIP还难以处理更抽象和更系统的任务,例如计算图像中对象的数量。最后,对于不太可能包含在CLIP的预训练数据集中的新颖任务,例如对照片中到最近汽车的距离进行分类,CLIP的性能可以接近随机。

1. 性能与计算效率瓶颈

未达SOTA水平:在有训练集的数据上,CLIP的零样本性能仅与ResNet-50线性探测基线相当,远低于当前全监督SOTA。据估计,需增加约1000倍计算量才能达到整体SOTA,这在当前硬件下不可行。

数据效率低下:CLIP依赖海量数据(128亿张图像)补偿数据效率不足,而非从根本上解决该问题。结合自监督或自训练方法是提升数据效率的潜在方向。

2. 任务能力边界

细粒度与抽象任务弱:在汽车型号、花卉种类等细粒度分类,以及物体计数等抽象系统任务上表现较差。

新颖任务失效:对于预训练数据中未覆盖的任务(如估计照片中到最近汽车的距离),性能接近随机水平。

输出灵活性受限:仅能从给定文本概念中选择分类标签,无法像图像描述模型那样生成新颖输出。联合训练对比与生成目标,或推理时搜索自然语言解释是潜在改进思路。

少样本学习反直觉下降:从零样本切换到少样本设置(如在CLIP特征上拟合线性分类器)时,性能反而可能下降,与人类从零到一样本的大幅提升形成鲜明对比。

3. 泛化与分布外鲁棒性不足

分布外泛化脆弱:虽在自然图像分布内泛化良好,但对真正分布外数据(如MNIST手写数字)表现差(仅88%准确率),甚至不如原始像素逻辑回归基线。这表明CLIP并未解决深度学习泛化脆弱性问题,而是试图通过大规模多样数据“规避”该问题,但这一假设易被违反。

OCR语义偏差:在渲染文本上表现优异,但在手写数字等非常规OCR任务上失败,验证了预训练数据分布的局限性。

4. 评估方法论缺陷

非真正零样本:开发过程中反复使用完整验证集(数千样本)指导模型选择,这在真实零样本场景中不现实。

评估集选择偏差:主要结果使用的27个数据集集合具有一定随意性,且与CLIP开发过程适配。亟需专门设计的零样本迁移评估基准,而非复用现有监督数据集。

5. 社会偏见与伦理风险

继承互联网数据偏见:训练数据为未经过滤的互联网图文对,导致模型学习到性别、种族等社会偏见。详细分析与缓解策略见论文第7节。

6. 自然语言接口的固有局限

复杂概念难以文本化:许多视觉概念和复杂任务难以仅通过自然语言精确指定。

缺乏示例引导机制:虽然文本接口灵活,但实际训练示例对某些任务仍有价值,而CLIP未针对少样本场景优化。

五、总结

CLIP这边工作最大的贡献,就是他打破了之前固定种类标签的范式。 意思就是说,不论在你收集数据集的时候,还是在训练模型的时候,你都不需要像ImageNet那样啊做1,000类,或者像 coco 一样做80类。直接就搜集这种图片文本的配对,然后用无监督的方式,要么去预测他的相似性,要么去生成他。总之呢 是跟这种固定多少类别的范式呢 说拜拜了。这样的好处呢,就是不仅在处理数据的时候更方便,训练起模型呢更方便,那最主要的就是在你做推理的时候更方便,甚至可以去 zero shot ,做各种各样的分类任务。