赞
踩
AI未来发展topic之一
图像视频下一步怎么走的前沿技术
对比学习的重要应用背景之一
计算机视觉(CV)和自然语言处理(NLP)早先是两个较为独立的研究领域。CV 重点关注如何用计算机代替人眼对目标完成识别、跟踪、测量等任务,对图像进行处理;NLP 则研究计算机如何处理、运用自然语言,包括语言生成、问答、对话等任务。近年来,以深度神经网络为代表的机器学习和模式识别技术被广泛应用于 CV 和 NLP 领域,取得了目前最先进的效果。人类可以同时使用视觉和语言这两方面的能力来完成一系列任务,CV 与 NLP 的结合(V2L)也成为了人工智能研究领域的重要课题,可以拓展这两个方向的重要应用。
可以说这两个领域目前的 state-of-art,都是基于神经网络的,而且很多任务,比如 CV 里的物体识别检测,NLP 里的机器翻译,都已经达到了可以实用的程度。
于是从 2015 年开始,有一个趋势就是将视觉与语言进行一定程度的结合,从而产生出一些新的应用与挑战。比如 image captioning,visual question answering 等比较经典的 vision-and-language 任务。
在构建计算机视觉模型时,只是为了某一个或某一组任务而构建数据集,往往需要大量的劳动力来进行数据标注,并且数据集的构建成本很高。而且,这些标准的计算机视觉模型擅长一类任务,甚至只擅长这一类任务。若是想要让模型适应新的任务需要花费大量的精力和成本。同时,一些训练时表现好的模型可能在测试中表现不佳。为了解决这些问题,CLIP诞生了。OpenAI从互联网收集了4亿(图像,文本)对的数据集,在预训练后,用自然语言描述所学习的视觉概念
concept/// ontology,类似于GPT-2 和GPT-3的“zero-shot”功能。
在构建计算机视觉模型时,只是为了某一个或某一组任务而构建数据集,往往需要大量的劳动力来进行数据标注,并且数据集的构建成本很高。而且,这些标准的计算机视觉模型擅长一类任务,甚至只擅长这一类任务。若是想要让模型适应新的任务需要花费大量的精力和成本。同时,一些训练时表现好的模型可能在测试中表现不佳。为了解决这些问题,CLIP诞生了。OpenAI从互联网收集了4亿(图像,文本)对的数据集,在预训 原文讲解练后,用自然语言描述所学习的视觉概念,类似于GPT-2 5和GPT-3的“zero-shot”功能。
零样本学习,利用过去的知识(马,老虎,熊猫和斑马的描述),在脑海中推理出新对象的具体形态,从而能对新对象进行辨认。ZSL就是希望能够模仿人类的这个推理过程,使得计算机具有识别新事物的能力,就是希望我们的模型能够对其从没见过的类别进行分类,让机器具有推理能力,实现真正的智能。其中零次(Zero-shot)是指对于要分类的类别对象,一次也不学习。
数据集成本巨大:ImageNet 中1400万张图片的标注工程量巨大。而CLIP使用Internet上公开的文本-图像对。
任务单一:适用于各种视觉分类任务,而不用额外训练。
实用性不佳:CLIP可以不用在数据集上训练,直接在基准上评估,而不是仅优化其在基准性上的性能。
在NLP中,预训练的方法目前其实已经被验证很成功了,像BERT和GPT系列之类的。其中,GPT-3从网上搜集了400 billion byte-pair-encoded tokens进行预训练然后可以在很多下游任务上实现SOTA性能和zero-shot learning。这其实说明从web-scale的数据中学习是可以超过高质量的人工标注的NLP数据集的。
然而,对于CV领域,目前预训练模型基本都是基于人工标注的ImageNet 数据集(含有1400多万张图像),那么借鉴NLP领域的GPT-3从网上搜集大量数据的思路,我们能不能也从网上搜集大量图像数据用于训练视觉表征模型呢?
作者先是回顾了并总结了和上述相关的两条表征学习路线:
(1)构建image和text的联系,比如利用已有的(image,text)pair数据集,从text中学习image的表征;
(2)获取更多的数据(不要求高质量,也不要求full labeled)然后做弱监督预训练,就像谷歌使用的JFT-300M数据集进行预训练一样(在JFT数据集中,类别标签是有噪声的)。具体来说,JFT中一共有18291个类别,这能教模型的概念比ImageNet的1000类要多得多,但尽管已经有上万类了,其最后的分类器其实还是静态的、有限的,因为你最后还是得固定到18291个类别上进行分类,那么这样的类别限制还是限制了模型的zero-shot能力。
这两条路线其实都展现了相当的潜力,前者证明paired text-image可以用来训练视觉表征,后者证明扩充数据能极大提升性能,即使数据有noise。于是high-level上,作者考虑从网上爬取大量的(text,image)pair以扩充数据,同时这样的pairs是可以用来训练视觉表征的。
方法的核心是从自然语言中包含的监督中学习感知的想法。 正如引言中所讨论的,这根本不是一个新想法,但是用于描述该领域工作的术语是多种多样的,甚至看似矛盾,并且陈述的动机也多种多样。 张等人(2020)都介绍了从与图像配对的文本中学习视觉表示的方法,但将它们的方法描述为无监督、自我监督、弱监督和 分别监督。
我们强调,这一系列工作的共同点不是所使用的特定方法的任何细节,而是将自然语言作为训练信号的欣赏。 所有这些方法都是从自然语言超视觉中学习的。 尽管早期的工作在使用主题模型和 n-gram 表示时与自然语言的复杂性作斗争,但深度上下文表示学习的改进表明我们现在拥有有效利用这种丰富监督来源的工具。
与其他训练方法相比,从自然语言中学习有几个潜在的优势。 与用于图像分类的标准众包标签相比,扩展自然语言监督要容易得多. 相反,适用于自然语言的方法可以从互联网上大量文本中包含的监督中被动学习。 与大多数无监督或自监督学习方法相比,从自然语言中学习也有一个重要的优势,因为它不仅“只是”学习一种表示,而且还将该表示与语言联系起来,从而实现灵活的零样本迁移。
现有工作主要使用了三个数据集,MS-COCO(Lin等人,2014)、Visual Genome(Krishna 等人,2017年)和 YFCC100M(Thomee 等人,2016年)。 虽然 MS-COCO 和 Visual Genome 是高质量的人群标记数据集,但按照现代标准,它们都很小,每个都有大约 100,000 张训练照片。 相比之下,其他计算机视觉系统接受了多达35 亿张 Instagram 照片的训练(Mahajan 等,2018)。 YFCC100M 拥有 1 亿张照片,是一种可能的替代方案,但每张图像的元数据稀疏且质量参差不齐。 许多图像使用自动生成的文件名,如 20160716113957.JPG 作为“标题”或包含相机曝光设置的“描述”。 在过滤以仅保留带有自然语言标题和/或英文描述的图像后,数据集缩小了 6 倍,只有 1500 万张照片。 这与 ImageNet 的大小大致相同。 自然语言监督的一个主要动机是互联网上公开的大量这种形式的数据。 由于现有数据集并不能充分反映这种可能性,因此仅考虑它们的结果将低估这一研究领域的潜力。 为了解决这个问题,我们构建了一个新的数据集,其中包含从 Internet 上的各种公开可用资源收集的 4 亿(图像、文本)对。 为了尝试涵盖尽可能广泛的一组视觉概念,我们搜索(图像、文本)对作为构建过程的一部分,其文本包括一组 500,000 个查询中的一个。1我们通过包括多达 每个查询 20,000 个(图像、文本)对。结果数据集的总字数与用于训练 GPT - 2 的 WebText数据集相似。 我们将此数据集称为WebImageText 的WIT。
我们最初的方法类似于VirTex,从头开始联合训练图像 CNN 和文本转换器来预测图像的标题。 然而,我们在有效地扩展这种方法时遇到了困难。 在图2中,我们展示了一个6300万参数的转换器语言模型,它的计算量已经是其 ResNet-50图像编码器的两倍,它学习识别ImageNet类的速度比预测词袋编码的更简单的基线慢三倍相同的文字。
这两种方法都有一个关键的相似之处。他们试图预测每张图像附带的文本的确切词。由于与图像同时出现的描述、评论和相关文本多种多样,因此这是一项艰巨的任务。最近在图像对比表示学习方面的工作发现,对比目标可以比等效的预测目标学习更好的表示(Tian等,2019)。其他工作发现,虽然图像的生成模型可以学习高质量的图像表示,但它们需要比具有相同性能的对比模型多一个数量级的计算(Chen等人,2020a)。注意到这些发现,我们探索了训练一个系统来解决可能更容易的代理任务,即仅预测哪个文本作为一个整体与哪个图像配对,而不是该文本的确切单词。从相同的词袋编码基线开始,我们将图 2 中的预测目标替换为对比目标,并观察到零样本传输到ImageNet的效率进一步提高了4倍。给定一批 N(图像,文本)对,CLIP被训练来预测一批中实际发生的 N×N 个可能(图像,文本)对中的哪一个。 为此,CLIP通过联合训练图像编码器和文本编码器来学习多模态嵌入空间,以最大化批次中Nreal对的图像和文本嵌入的余弦相似度,同时最小化N2嵌入的余弦相似度不正确的配对。 我们针对这些相似性分数优化了对称交叉熵损失。 据我们所知,这种批量构建技术和目标首先作为多类N对损失Sohn(2016年)引入深度度量学习领域,Oord等人(2018年)作为InfoNCE推广用于对比表示学习损失,最近被Zhang等人(2020年)改编用于医学成像领域的对比(文本、图像)表示学习。
由于我们的预训练数据集很大,过拟合不是主要问题,与Zhangetal.(2020)的实现相比,训练CLIP的细节得到了简化。我们从头开始训练CLIP,没有用ImageNet权重初始化图像编码器或用预训练权重初始化文本编码器。我们不使用表示和对比嵌入空间之间的非线性投影,这是由Bach-man等人(2019)引入并由Chen等人(2020b)推广的变化。相反,我们仅使用线性投影将每个编码器的表示映射到多模态嵌入空间。我们没有注意到两个版本之间的训练效率差异,并推测非线
性投影可能与细节共同适应当前图像仅在自监督表示学习方法中。我们还从Zhang等人中删除了文本转换函数tu。(2020)从文本中统一采样单个句子,因为CLIP预训练数据集中的许多(图像、文本)对只是一个句子。我们还简化了图像变换函数tv。来自调整大小的图像的随机方形裁剪是训练期间使用的唯一数据增强。最后,控制softmax中logits范围的温度参数,τ,在训练期间直接优化为对数参数化的乘法标量,以避免变成超参数。
文本编码器是一个Transformer(V aswani et al.,2017),其架构修改见Radford et al.(2019)。作为基本大小,我们使用63M参数的12层512宽模型和8个注意力头。转换器对文本的小写字节对编码(BPE)表示进行操作,词汇大小为49,152(Sen-nrich et al.,2015)。为了计算效率,最大序列长度上限为76。文本序列用[SOS]和[EOS]标记括起来,并且在[EOS]标记处的转换器最高层的激活被视为特征层归一化然后线性投影到多模态嵌入空间中的文本表示。在文本编码器中使用了掩码自注意力,以保留使用预训练语言模型进行初始化或添加语言建模作为辅助目标的能力,尽管对此的探索留待未来工作。
我们训练了一系列5个ResNets和3个Vision Transformers。对于ResNets,我们训练了一个ResNet-50、一个ResNet-101,然后还有3个遵循EfficientNet风格的模型缩放并使用大约4倍、16倍和64倍的计算ResNet-50。它们分别表示为RN50x4、RN50x16和RN50x64。对于VisionTransformers,我们训练了ViT-B/32、ViT-B/16和ViT-L/14。我们训练所有模型32个时期。
我们使用Adam优化器和解耦权重衰减正则化应用于所有非增益或偏差的权重,并使用余弦表衰减学习率)。当训练1个epoch时,在基线ResNet-50模型上使用网格搜索、随机搜索和手动调整的组合来设置初始超参数。由于计算约束,超参数随后被启发式地调整为更大的模型。可学习的温度参数τ被初始化为中的0.07,并被剪裁以防止将logits缩放超过100,我们认为这是防止训练不稳定所必需的。我们使用非常大的minibatch大小32,768。混合精度用于加速训练和节省内存。为了节省额外的内存,使用了梯度检查点、半精度Adam统计和半精度随机舍入文本编码器权重。嵌入相似度的计算也与单独的GPU分片,仅计算其本地批量嵌入所需的成对相似度的子集。最大的ResNet模型RN50x64在592V100GPU上训练需要18天,而最大的Vision Transformer在256V100上训练需要12天GPU。对于ViT-L/14,我们还以更高的336像素分辨率预训练一个额外的epoch,以提高类似于FixRes的性能。我们将此模型表示为ViT-L/14@336px。除非另有说明,本文中报告为“CLIP”的所有结果均使用我们发现性能最佳的模型。
模型架构分为两部分,图像编码器和文本编码器,图像编码器可以是比如resnet50,然后文本编码器可以是transformer。
训练数据是网络社交媒体上搜集的图像文本对。在训练阶段,对于一个batch的数据,首先通过文本编码器和图像编码器,得到文本和图像的特征,接着将所有的文本和图像特征分别计算内积,就能得到一个矩阵,然后从图像的角度看,行方向就是一个分类器,从文本角度看,列方向也是一个分类器。
由于我们已经知道一个batch中的文本和图像的匹配关系,所以目标函数就是最大化同一对图像和文本特征的内积,也就是矩阵对角线上的元素,而最小化与不相关特征的内积。文章的作者从社交媒体上搜集了有大约4亿对的数据。
迁移应用于ImageNet的分类任务的,可以看到,不仅达到ResNet101的效果,且泛化能力远远强于有标签监督学习
这个实验是对于imagenet数据集经过重新的筛选,制作了几个变种的版本。然后将 Zero-Shot CLIP 与在Imagenet 上有监督训练的ResNet101在这些数据集上的分类精度做对比。可以看到随着变种版本的难度增大,ResNet101分类精度愈来愈差,而CLIP的表现则依然很坚挺。
CLIP更擅长于'general'和'fine-grained'的分类任务,对于一些专用的任务效果可能比较差。
如图是在27个数据集上的对比实验结果,Linear Probe ResNet50 是指首先将 ResNet50在imagenet数据集上做预训练。接着扔掉最后一层全连接并固定网络参数,重新添加一层线性分类器,然后在这27个数据集上重新训练新增的这层分类器。从实验结果上看,Zero-Shot CLIP在其中16个数据集上都超过了Linear Probe ResNet50,甚至包括了imagenet。
我们研究了是否有可能将NLP中与任务无关的网络规模预训练的成功转移到另一个领域。 我们发现采用这个公式会导致计算机视觉领域出现类似的行为,并讨论这一研究领域的社会影响。为了优化他们的训练目标,CLIP模型在预训练期间学习执行各种各样的任务。 然后可以通过自然语言提示利用此任务学习,以实现对许多现有数据集的零样本迁移。 在足够的规模下,这种方法的性能可以与特定任务的监督模型相媲美,尽管仍有很大的改进空间。
CLIP提供一个如何做zero-shot分类的思路,且模型鲁棒性强。基于CLIP可以自由定义自己的分类器,而且与现有的很多工作结合或许玩出很多花样,比如DALL·E中用到了CLIP,又比如有人已经把CLIP和stylegan结合来生成图片,又或者可以和GPT结合等等。
1.跟sota还差10几个点,性能不够强悍
2.不好做细分类任务
3.不能处理极度分布偏移的情况
4.还是从给定类别去分类
5.利用数据不高效,需要大量数据
6.用了imagenet数据集做调参
7.可能模型有数据偏见
8.few shot可能更好,但不是本文目标
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。