Press "Enter" to skip to content

CLIP基础模型

论文摘要—从自然语言监督中学习可迁移的视觉模型

在本文中,我们将介绍CLIP(对比性语言-图像预训练)背后的论文。我们将提取关键概念并对其进行解析,使其易于理解。此外,我们还会对图像和数据图表进行注释以澄清疑问。

图片来源

论文:从自然语言监督中学习可迁移的视觉模型

代码:https://github.com/OpenAI/CLIP

首次发布:2021年2月26日

作者:Alec Radford,Jong Wook Kim,Chris Hallacy,Aditya Ramesh,Gabriel Goh,Sandhini Agarwal,Girish Sastry,Amanda Askell,Pamela Mishkin,Jack Clark,Gretchen Krueger,Ilya Sutskever

类别:多模态深度学习,计算机视觉,自然语言处理,基础模型,表示学习

概述

  1. 背景与前景
  2. 方法
  3. 实验
  4. 进一步阅读与资源

背景与前景

CLIP(对比性语言-图像预训练)是一个多模态模型,它学习自然语言和图像之间的对应关系。它是通过从互联网上收集的4亿个文本-图像对进行训练的。正如我们将在本文后面发现的那样,CLIP具有强大的零样本性能,意味着它在与其训练不同的下游任务上表现良好,而无需进行任何微调。

CLIP的目标是:

  1. 将自然语言处理中已知的大规模预训练技术的成功应用于计算机视觉(例如GPT系列、T5和BERT)。
  2. 通过使用自然语言而不是固定的类别标签集,实现灵活的零样本能力。

你可能会问,为什么这很重要?首先,许多计算机视觉模型是在众包标注数据集上进行训练的。这些数据集通常包含数十万个样本。一些例外情况可能在数百万样本的范围内。正如你可以想象的那样,这是一个非常耗时且昂贵的过程。另一方面,自然语言模型的数据集通常要大得多,并且是从互联网上抓取的。其次,如果一个目标检测模型已经在某些类别上进行了训练,而你想添加一个额外的类别,你就需要在数据中标记这个新类别并重新训练模型。

CLIP将自然语言和图像特征的结合能力与其零样本性能相结合,已经在许多其他流行的基础模型中被广泛采用,例如UnCLIP、EVA、SAM、Stable Diffusion、GLIDE或VQGAN-CLIP等。

方法

现在让我们深入探讨CLIP的方法。下图1所示的图像显示了CLIP的架构和训练过程。

图1 — CLIP的架构和训练过程。图片来源+作者注解

模型架构包括两个编码器模型,每个模态使用一个。文本编码器使用了一个Transformer,而图像编码器则使用了ResNet或ViT(Vision Transformer)的版本。一个学习到的线性变换,每个模态一个,将特征转换为匹配大小的嵌入向量。最后,计算对立模态之间的每个嵌入向量之间的余弦相似度,并通过一个学习到的温度标量进行缩放。在训练过程中,最大化匹配对之间的余弦相似度,而对于错误的对之间则最小化,因此该框架的名称中包含了“对比性”一词。

除了大数据集之外,还有一些关键细节对于成功至关重要。首先,对比学习方法强烈依赖于批量大小N。提供的负样本越多,与正确样本一起提供的学习信号就越强。CLIP是在批量大小为32,768的情况下进行训练的,这是相当大的批量大小。其次,CLIP并不学习精确措辞的匹配,而是学习文本作为整体的更简单的代理任务,也称为词袋(BoW)。

趣闻:使用ResNet50x64作为图像编码器的CLIP版本在592个V100 GPU上训练了18天,而使用ViT模型的版本在256个V100 GPU上训练了12天。换句话说,分别在单个GPU上训练了超过29年超过8年的时间(忽略使用不同批量大小的事实)。

一旦模型训练完成,就可以使用它对图像进行物体分类。问题是:如何使用一个没有经过图像分类训练、也没有输入类标签而是文本提示的模型进行分类?图2展示了如何做到这一点:

图2 - CLIP的图像分类架构。图像来源+作者注释

类标签可以被视为由一个单词形成的文本提示。为了告诉模型哪些类别可用于分类任务,一组N个类别被输入到模型中。与训练在固定标签集上的分类模型相比,这是一个巨大的优势。现在我们可以输入3个类别或100个类别,这是我们的选择。正如我们将在后面看到的,为了提高CLIP的性能,类标签被转换为提示以为模型提供进一步的上下文。然后,每个提示被馈送到文本编码器,并被转换为嵌入向量。

输入图像被馈给图像编码器以获取嵌入向量。

然后计算每对文本和图像嵌入的余弦相似度。对得到的相似度值应用Softmax以形成概率分布。最后,选择具有最高概率的值作为最终预测。

实验和消融

CLIP论文提出了大量的实验和消融。在这里,我们将介绍五个实验,我认为对于理解CLIP的成功非常重要。首先是作者们提出的主要观点,然后我们将深入了解细节:

  1. 训练效率:CLIP在零样本迁移方面比我们的图像标题基线更加高效
  2. 文本输入格式:提示工程和集成提高了零样本性能
  3. 零样本性能:零样本CLIP与完全监督基线有竞争力
  4. 少样本性能:零样本CLIP优于少样本线性探测器
  5. 分布转移:零样本CLIP比标准ImageNet模型更具鲁棒性

训练效率

在训练过程中,图像编码器和文本编码器是联合训练的,意味着具有单一的训练目标并且同时进行。CLIP不仅执行对比学习方案,而且文本提示作为整体与给定的图像进行比较,因此单词的顺序并不重要。它只是一个“词袋”。短语“我的名字是Sascha”与“Sascha的名字是我”的嵌入结果相同。

相对于准确预测单词及其在短语中的位置,预测词袋是一个更简单的代理目标。下面的图3显示了初始变压器模型训练以预测准确单词的样本数量、训练以预测词袋的初始变压器模型以及执行对比学习使用词袋的CLIP模型的零样本准确性。

“CLIP在零样本迁移方面比我们的图像标题基线更加高效” – CLIP作者

图3 — 零样本效率。图片来源 + 作者注释

文本输入格式

正如我们在图2中所见,为了进行对象分类,类别标签已被转换为文本提示。当然,这不是偶然的,因为CLIP对一个单词也可以很好地处理。这样做是为了利用语言的描述性并提供上下文以解决可能的歧义。让我们以“拳击手”这个词为例。它可以是一种狗或一种运动员。CLIP的作者们已经证明了文本提示的格式非常重要,可以提高性能并增加效率。

“提示工程和集成提高了零样本性能” — CLIP作者

图4— 提示工程和集成 vs. 无上下文类名。图片来源 + 作者注释

零样本性能

在另一个实验中,作者们将CLIP的零样本图像分类性能与专门训练在相同数据集上的模型进行了比较。

“零样本CLIP与完全监督基准相媲美” — CLIP作者

图5— 零样本CLIP vs. 监督基准。图片来源 + 作者注释

少样本性能

虽然零样本预测器没有在下游任务上进行微调,但少样本检测器有。作者们尝试了多个公开可用的预训练模型,并将它们的少样本性能与零样本和少样本的CLIP在20个不同数据集上进行了比较。少样本模型已根据每个类别的1、2、4、8和16个示例进行了微调。

有趣的是,零样本CLIP的性能与4样本CLIP的性能相当。

如果将CLIP与其他模型进行比较,必须考虑到公开可用的模型(即BiT、SimCLR和ResNet)已经在不同且较小的数据集上进行了预训练,而CLIP模型没有。

“零样本CLIP优于少样本线性探测” — CLIP作者

图6— 少样本性能。图片来源 + 作者注释

分布偏移

一般来说,模型对于分布偏移的鲁棒性指的是它在不同数据分布的数据上的表现与在训练数据分布上的表现一样好的能力。理想情况下,它的性能应该相同。但在现实中,它的性能会下降。

零样本CLIP的鲁棒性已与ResNet101 ImageNet模型进行了比较。这两个模型在ImageNet的自然分布偏移上进行了评估,如图7所示。

“零样本CLIP对于分布偏移比标准ImageNet模型更具鲁棒性” — CLIP作者

图7 — 分布偏移。图片来源 + 作者注释

更多阅读和资源

正如本文开始时所提到的,CLIP已被广泛应用于大量项目中。

以下是使用CLIP的论文列表:

  1. [UnCLIP] 使用CLIP潜变量进行分层文本条件图像生成
  2. [EVA] 探索规模化遮罩视觉表示学习的极限
  3. [SAM] 分割任何东西
  4. [Stable Diffusion] 使用潜在扩散模型进行高分辨率图像合成
  5. [GLIDE] 通过文本引导扩散模型进行逼真图像生成和编辑
  6. [VQGAN-CLIP] 使用自然语言引导进行开放域图像生成和编辑

如果您想深入了解实现并自行测试,以下是一些存储库的列表:

  • OpenAI的官方存储库
  • 用于与CLIP进行实验的Python笔记本
  • OpenCLIP:CLIP的开源实现
Leave a Reply

Your email address will not be published. Required fields are marked *