Learning Transferable Visual Models From Natural Language Supervision
郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布!
Proceedings of the 38 th International Conference on Machine Learning, PMLR 139, 2021.
Abstract
SOTA计算机视觉系统被训练为预测一组固定的预定目标类别。这种受限的监督形式限制了它们的通用性和可用性,因为需要额外的标记数据来指定任何其他视觉概念。直接从图像的原始文本中学习是一种很有前途的选择,它利用了更广泛的监督来源。我们证明,在从互联网上收集的4亿对(图像,文本)的数据集上,预测哪一个说明文字与哪一幅图像一起使用的简单预训练任务是从头开始学习SOTA图像表征的一种有效且可扩展的方法。在预训练之后,使用自然语言来参考学到的视觉概念(或描述新概念),从而使模型能够零样本迁移到下游任务。我们研究了30多个不同计算机视觉数据集的性能,涵盖OCR、视频中的动作识别、地理定位和许多类型的细粒度目标分类等任务。该模型对大多数任务的迁移都很重要,并且在不需要任何特定于数据集的训练的情况下,与完全监督的基线相比往往具有竞争力。例如,我们在ImageNet零样本上匹配原始ResNet50的精度,而无需使用它所训练的128万个训练示例中的任何一个。我们在https://github.com/OpenAI/CLIP上发布了我们的代码与预训练模型权重。
1. Introduction and Motivating Work
在过去几年里,直接从原始文本中学习的预训练方法彻底改变了NLP (Dai & Le, 2015; Peters et al., 2018; Howard & Ruder, 2018; Radford et al., 2018; Devlin et al., 2018; Raffel et al., 2019)。“文本到文本”作为标准化输入-输出接口的开发(McCann et al., 2018; Radford et al., 2019; Raffel et al., 2019)使任务不可知结构能够零样本迁移到下游数据集。像GPT-3 (Brown et al., 2020)这样的旗舰系统现在在许多具有定制模型的任务中具有竞争力,同时几乎不需要数据集特定的训练数据。
这些结果表明,在全网规模的文本集合中,现代预训练方法可获得的聚合监督超过了高质量的人群标记NLP数据集。然而,在其他领域,如计算机视觉,在人群标记的数据集(如ImageNet)上预训练模型仍然是标准做法(Deng et al., 2009)。直接从网络文本中学习的可扩展预训练方法能否在计算机视觉领域取得类似的突破?之前的工作令人鼓舞。
Joulin等人(2016)证明,被训练来预测图像说明文字中的单词的CNN可以学习能与ImageNet训练相竞争的表征。Li等人(2017)随后将这种方法扩展到预测短语n-gram以及单个单词,并证明了他们的系统将零样本迁移到其他图像分类数据集的能力。通过采用更新的结构和预训练方法,VirTex (Desai & Johnson, 2020)、ICMLM (Bulent-Sariyildiz et al., 2020)和ConVIRT (Zhang et al., 2020)最近展示了基于Transformer的语言建模、掩码语言建模和对比目标从文本中学习图像表征的潜力。
然而,上述模型仍然低于当前的SOTA计算机视觉模型,如Big Transfer (Kolesnikov et al., 2019)和弱监督ResNeXt (Mahajan et al., 2018)。一个关键的区别是规模。Mahajan等人(2018)和Kolesnikov等人(2019)在数百万到数十亿张图像上进行了加速器年的训练,而VirTex、ICMLM和ConVIRT在一二十万张图像上训练了加速器天。我们缩小了这一差距,并大规模研究了从自然语言监督中训练出来的图像模型的行为。我们证明,从头开始训练的ConVIRT的简化版本,我们称之为CLIP,用于对比语言图像预训练,是一种从自然语言监督中学习的有效且可扩展的方法。我们发现,CLIP在预训练过程中学会了执行一系列任务,包括OCR、地理定位、动作识别,并且在计算效率更高的同时,其性能优于最佳的公开ImageNet模型。我们还发现,零样本CLIP模型比同等精度监督的ImageNet模型更具鲁棒性。
2. Approach
我们工作的核心是从与图像配对的自然语言中包含的监督中学习感知。在以下小节中,我们将详细介绍我们的具体方法。
2.1. Creating a Sufficiently Large Dataset
现有工作主要使用了三个数据集,MS-COCO (Lin et al., 2014)、Visual Genome (Krishna et al., 2017)和YFCC100M (Thomee et al., 2016)。虽然MS-COCO和Visual Genome是高质量的人群标记数据集,但按照现代标准,它们都很小,每个都有大约100000张训练照片。相比之下,其他计算机视觉系统在多达35亿张Instagram照片上进行了训练(Mahajan et al., 2018)。YFCC100M,拥有1亿张照片,是一种可能的选择,但每张图像的元数据都很稀疏,质量参差不齐。许多图像使用自动生成的文件名,如20160716_113957.JPG作为“标题”或包含相机曝光设置的“描述”。在过滤后,只保留带有自然语言标题和/或英文描述的图像,数据集缩小了6倍,只有1500万张照片。这与ImageNet的大小大致相同。
自然语言监督的一个主要动机是互联网上公开的大量这种形式的数据。为了测试这一点,我们构建了一个新的数据集,其中包括从互联网上各种公开来源收集的4亿对(图像,文本)。为了尽可能广泛地涵盖一组视觉概念,我们搜索(图像,文本)对,作为构建过程的一部分,其文本包括500000个查询中的一个。我们通过每个查询包含多达20000对(图像,文本)来大致平衡结果。生成的数据集具有与用于训练GPT-2的WebText数据集相似的总字数。我们将此数据集(WebImageText)简称为WIT。1
1 基本查询列表是维基百科英文版中出现至少100次的所有单词。这是通过具有这对的高点互信息的双图(Church & Hanks, 1990)以及特定搜索量以上的所有维基百科文章的名称来扩充的。最后,添加查询列表中尚未包含的所有WordNet (Miller, 1995)系统集。
2.2. Selecting an Efficient Pre-Training Method
我们最初的方法类似于VirTex,从头开始联合训练图像CNN和文本Transformer来预测图像的标题。然而,我们遇到了有效扩展此方法的困难。在图2中,我们展示了一个6300万参数的Transformer语言模型,它已经使用了两倍于其ResNet50图像编码器的计算量,学习识别ImageNet类的速度比类似Joulin等人(2016)的方法(预测对同一文本进行编码的词袋)慢三倍。
最近在对比表征学习方面的工作发现,对比目标可以优于等效预测目标(Tian et al., 2019)。注意到这一发现,我们探索了训练一个系统来解决潜在的更容易的代理任务,即只预测整个文本与哪个图像配对,而不是预测该文本的确切单词。从相同的词袋编码基线开始,我们将预测目标换成了图2中的对比目标,观察到零样本迁移到ImageNet的速率进一步提高了4倍的效率。
给定一批N个(图像,文本)对,CLIP被训练来预测一批中N×N个可能的(图像,文字)对中的哪一个是实际发生的。为此,CLIP通过联合训练图像编码器和文本编码器来学习多模态嵌入空间,以最大化批中N个正确对的图像和文本嵌入的余弦相似性,同时最小化N2 − N个错误对的嵌入的余弦相似性。我们在这些相似性分数上优化对称交叉熵损失。在图3中,我们包含了CLIP实现核心的伪代码。这种批量构建技术和目标最初被引入为多类N对损失(Sohn, 2016),最近被Zhang等人(2020)应用于医学成像领域的对比(文本,图像)表征学习。
由于过拟合不是主要问题,与Zhang等人(2020)相比,训练CLIP的细节被简化了。我们从头开始训练CLIP,而不是使用预训练的权重进行初始化。我们去除了表征和对比嵌入空间之间的非线性投影。我们仅使用线性投影将每个编码器的表征映射到多模态嵌入空间。
由于CLIP的预训练数据集中的许多(图像,文本)对只是一个句子,我们还从文本中删除了对单个句子进行均匀采样的文本转换函数tu。我们还简化了图像转换函数tv。从调整大小的图像中随机裁剪正方形是训练过程中使用的唯一数据增强。最后,控制softmax中logits范围的温度参数τ在训练过程中直接优化为对数参数化乘性标量,以避免变为超参数。
2.3. Choosing and Scaling a Model
我们考虑图像编码器的两种不同架构。首先,我们使用ResNet50 (He et al., 2016a)作为图像编码器的基本架构,因为它被广泛采用并具有良好的性能。我们使用He等人(2019)的ResNetD改进和Zhang (2019)的抗锯齿rect-2模糊池对原始版本进行了几次修改。我们还用注意力池化机制取代了全局平均池化层。注意力池被实现为单层“Transformer式”多头QKV注意力,其中查询以图像的全局平均池表征为条件。对于第二种架构,我们对最近引入的视觉Transformer (ViT)进行了实验(Dosovitskiy et al., 2020)。我们密切关注它们的实现,只需对Transformer之前的组合块和位置嵌入添加额外的层归一化进行微小修改,并使用稍微不同的初始化方案。
文本编码器是一个Transformer (Vaswani et al., 2017),具有Radford等人(2019)描述的架构修改。作为基本尺寸,我们使用了一个12层512宽的模型,带有8个注意力头。Transformer对文本的小写字节对编码(BPE)表征进行操作(Sennrich et al., 2015)。文本序列用[SOS]和[EOS] token括起来,并且Transformer的最高层在[EOS] token处的激活被用作文本的特征表示,该文本被层归一化,然后线性投影到多模态嵌入空间中。在文本编码器中使用了掩码自注意力,以保持添加语言建模作为辅助目标的能力,尽管这方面的探索仍有待于未来的工作。
虽然之前的计算机视觉研究经常通过单独增加宽度(Mahajan et al., 2018)或深度(He et al., 2016a)来缩放模型,但对于ResNet图像编码器,我们采用了Tan & Le (2019)的方法,该方法发现,在所有宽度、深度和分辨率上分配额外的计算比仅将其分配到一维要好。我们使用一个简单的变体,它平均分配额外的计算来增加模型的宽度、深度和分辨率。对于文本编码器,我们只将模型的宽度缩放为与计算的ResNet宽度增加成比例,而根本不缩放深度,因为我们发现CLIP的性能对文本编码器不太敏感。
2.4. Pre-training
我们训练了一系列5个ResNet和3个视觉Transformer。对于ResNet,我们训练一个ResNet50、一个ResNet101,然后再训练3个模型。它们遵循EfficientNet风格的模型缩放,并使用大约4倍、16倍和64倍的ResNet50计算,分别表示为RN50x4、RN50x16和RN50x64。对于视觉Transformer,我们训练一个ViT-B/32、一个ViT-B/16和一个ViT-L/14。最大的ResNet模型RN50x64在592个V100 GPU上训练了18天,而最大的视觉Transformer在256个V100 GPU上训练了12天。对于ViT-L/14,我们还以更高的336像素分辨率预训练一个额外的epoch,类似于FixRes (Touvron et al., 2019)以提高性能。我们将此模型表示为ViT-L/14@336px。除非另有说明,否则本文中作为“CLIP”报告的所有结果都使用我们发现性能最好的模型。全模型超参数和细节见补充材料。
2.5. Using CLIP
CLIP经过预训练,可以预测在WIT中图像和文本片段是否配对在一起。为了将CLIP应用于下游任务,我们复用了这种能力,并研究了CLIP在标准计算机视觉数据集上的零样本迁移性能。类似于Radford等人(2019),我们将其作为衡量系统任务学习能力(而不是其表征学习能力)的一种方式。对于每个数据集,我们使用数据集中所有类的名称作为潜在文本配对的集合,并根据CLIP预测最可能的(图像,文本)配对。此外,我们还尝试为CLIP提供文本提示词,以帮助指定任务,并将这些模板中的多个组合起来以提高性能。然而,由于绝大多数无监督和自监督计算机视觉研究都集中在表征学习上,我们也使用常见的线性探测协议对CLIP进行了研究。
3. Analysis
3.1. Initial Comparison to Visual N-Grams
3.2. Zero-Shot Performance
3.3. Representation Learning
3.4. Robustness to Natural Distribution Shift
4. Data Overlap Analysis
5. Broader Impacts
6. Limitations
7. Related Work
8. Conclusion
我们已经研究了是否有可能将NLP中任务不可知的网络规模预训练的成功迁移到另一个领域。我们发现,采用这个公式会导致计算机视觉领域出现类似的行为,并讨论了这一研究领域的社会意义。为了优化他们的训练目标,CLIP模型在预训练期间学习执行各种各样的任务。然后可以通过自然语言提示词来利用这种任务学习,以实现对许多现有数据集的零样本迁移。在足够的规模下,这种方法的性能可以与特定任务的监督模型相竞争,尽管仍有很大的改进空间。