【论文精读】CLIP

摘要

       以往基于自然语言监督的图像表示学习方法如ConVIRT,只在一二十万张图像的小规模数据集上训练,限制了该方法能发挥的性能。故本文研究了在大规模自然语言监督下训练的图像分类器的性能,具体有:

  • 借助互联网上大量公开可用数据,创建了一个包含4亿对图像/文本的数据集,WIT(WebImageText)
  • 基于上述数据集,从头训练了ConVIRT的简化版本,称之为CLIP,用于对比学习预训练。本文训练了八个不同参数规模的模型,其参数规模跨两个数量级
  • 基于这些模型研究了CLIP的可扩展性,发现CLIP在预训练期间学会执行一系列任务,包 括OCR、地理定位、动作识别等,且与这些任务上监督训练的特定领域模型具有可竞争的性能。验证了CLIP的有效性

框架

Natural Language Supervision

       本文采用自然语言作为监督信号训练视觉模型,与其他训练方法相比,从自然语言中学习有几个潜在的优势:

  • 与标准有监督图像分类任务的人工标签相比,获取自然语言监督标签要容易得多
  • 与无监督或自监督学习方法相比,自然语言监督不仅能使模型学习到图像表示,而且还将这种表示与语言联系起来,从而实现更灵活的zero-shot迁移

Creating a Sufficiently Large Dataset

       本文构建了一个包含4亿对图像/文本的新数据集,这些数据从互联网中的各种公开来源收集。为了覆盖尽可能广泛的视觉概念集,进行了一系列互联网查询,每组查询都会构建20000个图像/文本对,其文本中包括500000个查询字符(queries,英文维基百科中出现至少100次的所有单词)中的一个。结果数据集的文本总token数与WebText数据集相似,此数据集称为WebImageText(WIT)。

Selecting an Efficient Pre-Training Method

       本文实验了两种深度学习方法来构建CLIP。
image
       首先采用类似于VirTex的方法,从头开始联合训练图像CNN和文本transformer来预测图像的标题,但这种方法对于训练更大尺度的模型存在困难,因为这种架构试图在预测每张图片所附文字的确切单词,而描述、评论一张图像的相关文本种类繁多,对每张图像都做这种训练,是一项非常艰巨的任务。如上图,使用了一个类似GPT的6300万参数的transformer作为文本编码器进行联合训练,在相同的imageNet预测任务下,比具有相似性能的词袋编码器的速度慢三倍。
image
       故实验了对比学习架构,即预测文本与哪个图像配对,而不是预测该文本的确切单词。采用与联合训练相同的词袋编码基线,将预测目标换成上图中的对比目标后,ImageNet预测任务可提高了4倍的效率。故基于扩展性和时效性的考虑,本文采用对比学习框架。

       给定 N N N个图像/文本对,CLIP被训练来预测batch中 N × N N × N N×N个图像/文本对的实际发生概率。为此,CLIP通过联合训练图像编码器和文本编码器来学习多模态嵌入空间,最大化batch中 N N N个真实图像/文本对的嵌入的余弦相似度,同时最小化 N 2 − N N^2 - N N2N个错误对的嵌入的余弦相似度,并采用对称交叉熵损失来优化这些相似性分数。
image
       上图即为CLIP的核心伪代码。由于预训练数据集很大,过拟合不是主要问题,故CLIP的训练细节得到了简化。本文采用随机初始化开始训练CLIP,并使用线性投影将每个编码器的表示映射到多模态嵌入空间。

       相比于以往方法,本文没有采用文本转换函数 t u t_u tu,因为CLIP的预训练数据集中的许多图像/文本对只有一个句子。同时还简化了图像变换函数 t v t_v tv,从大小调整过的图像中随机进行正方形裁剪是在训练期间唯一使用的数据增强。另外,控制softmax中logits范围的temperature参数 τ τ τ在训练过程中被直接优化为对数参数乘性标量,以避免其变成超参数,进一步优化了训练效率。

Choosing and Scaling a Model

       本文实验了两种不同的图像编码器,分别有:

  • 抗锯齿rect-2模糊池改进后的ResNet-D,并将全局平均池化层替换为注意力池化层。注意力池化为单层多头注意力机制,其中query为图像的全局平均池化表示
  • Vision Transformer(ViT),但对词嵌入和位置嵌入的组合使用了层归一化,并修改了初始化方法

       文本编码器采用了一个具有63M参数的Transformer,层数为12,注意力头数为8,宽度为512。并采用了词汇表大小为49152的BPE来编码文本,最大序列长度设置为76,文本序列前后会被分别插入[sos]和[eos]标记,transformer最高层在[eos]标记处的激活被视为文本的特征表示,并对其进行层归一化,然后线性投影到多模态嵌入空间。

       对于ResNet图像编码器,使用EfficientNet提出的方法来缩放模型的宽度、深度和分辨率。对应的文本编码器也会等比例缩放模型宽度。

Training

       本文训练了5个ResNet和3个ViT。ResNet包括一个ResNet-50,一个ResNet-101,以及3个遵循EfficientNet缩放后的模型。三个EfficientNet的计算量分别为ResNet-50的大约4倍、16倍和64倍,分别记为RN50x4、RN50x16、RN50x64。ViT包括一个ViT-B/32,一个ViT-B/16和一个ViT-L/14。

       所有模型都训练32个epoch,mini batch为32768,使用Adam优化器及weight decay优化参数,并使用余弦退火学习率方法。在训练1个epoch时,使用网格搜索、随机搜索和对baseline ResNet-50手动调整的组合方法对超参数初始化,根据计算约束,超参数将启发式地适用于更大的模型。可学习的temperature参数 τ τ τ初始化为0.07,并进行clipped以防止其超过100。

       为了节省内存资源,使用混合精度来加速训练和节省内存,gradient checkpointing保存为FP32格式、Adam statistics和stochastically rounded text encoder weights保存为FP16格式。对于模型输出嵌入的相似性,每个gpu只计算其本地批嵌入所需的成对相似性子集。

       最大的ResNet模型RN50x64在592个V100 gpu上训练了18天,最大的ViT在256个V100 gpu上训练了12天。 对于ViT-L/14,本文还以336像素分辨率进行了额外一个epoch的预训练,表示为ViT-L/14@336px。除非另有说明,本文报告的所有CLIP结果都使用实验中表现最好的模型。

实验

Zero-Shot Transfer

Motivation

       计算机视觉领域,zero-shot学习通常指模型在图像分类任务中对未见过的物体类别进行泛化的研究。以往的无监督学习主要研究模型的特征提取能力,但对于下游任务,仍需进行微调。故本文主要研究模型对未见过的下游任务泛化的能力。

Using Clip for Zero-Shot Transfer

       为了实验CLIP的zero-shot分类能力,采用一系列修改。对每个分类数据集,使用数据集中所 有类名作为潜在文本集,并使用CLIP 的编码器计算图像特征嵌入和文本集 特征嵌入,然后计算图像/文本嵌入之间的余弦相似度,特征通过 temperature参数 τ τ τ缩放,并通过softmax将结果归一化为概率分布。

       该预测器可以解释为一个多项式逻辑回归分类器,其具有 l 2 l_2 l2归一化输入、 l 2 l_2 l2归一化权重,且无偏差和temperature缩放。图像编码器是计算图像特征表示的计算机视觉主干,而文本编码器是超网络,其根据指定文本生成线性分类器的权重。

       对于zero-shot评估,一旦文本编码器计算出zero-shot分类器,就会将其缓存起来,并在所有后续预测中重用,这使其生成成本摊销到数据集中的所有预测中。

Initial Comparison to Visual N-Grams

image
       上表比较了Visual N-Grams与CLIP的zero-shot分类性能。观察到,CLIP将ImageNet的预测准确性从11.5%提高到76.2%,在没有任何监督标签的情况下与有监督ResNet-50的性能相匹配。此外,CLIP的top-5精度明显高于其top-1,具有95%的top-5精度,与Inception-V4相匹配。表明CLIP是迈向灵活和实用的zero-shot计算机视觉分类器的重要一步。

       CLIP另外两个报告的数据集上也优于Visual N-Grams。在aYahoo上,CLIP的精度提高到98.4%,在SUN上,CLIP的精度是Visual N-Grams的两倍以上。

Prompt Engineering and Ensembling

       大多数图像分类数据集都使用数字id标注图像,并采用一个将这些id映射回其英文名称的文件,这使得基于自然语言的zero-shot迁移成为可能。但另一些数据集,如Flowers102和GTSRB,不存在这种映射,故难以实现zero-shot迁移。当类的名称是提供给CLIP的文本编码器的唯一信息时,由于缺乏上下文,文本编码器可能无法区分词义。在某些情况下,同一个单词的多个含义可能被包含在同一个数据集中的不同类别中。其次,在预训练数据集中,文本大多数情况是一个完整的句子,而不是一个单词。故为了在分类任务中弥合这种分布差距,实验发现使用prompt 模板如:“获取{label}的照片。“,可以很好的指定关于图像内容的文本,与只使用标签文本相比,可以提高性能。例如,在卫星图像分类数据集上,使用“{label}的卫星照片“。

       实验发现集成多个zero-shot分类器,也可以提高性能。对分类器使用不同的prompt,再到嵌入空间进行平均得到文本嵌入。利用该方法,在ImageNet上集成80种不同的上下文prompt,比单个默认prompt下的zero-shot分类性能提高了3.5%。

       综合上述方法,采用prompt工程和分类器集成可以将ImageNet的精度提高近5%。
image
       上图可视化了CLIP与直接嵌入类名的无上下文baseline的性能。可以观察到prompt工程和集成如何改变一组CLIP模型的性能。

Analysis of Zero-Shot Clip Performance

       本节研究了CLIP的zero-shot分类器的各种属性。
image
       上图为在27个数据集上对zero-shot CLIP和一个在有监督ResNet-50特征上拟合的逻辑回归分类器进行的比较。观察到,CLIP在27个数据集中的16个上取得更优的结果。在Stanford Cars和Food101上,zero-shot CLIP比基于ResNet-50特征的逻辑回归分类器的表现比高出20%以上,但在Flowers102和fgvcaaircraft上,zero-shot CLIP的表现比逻辑回归分类器低了10%以上,在OxfordPets和Birdsnap上,性能较为接近。在ImageNet、CIFAR10/100、STL10和PascalVOC2007等通用目标分类数据集上,zero-shot CLIP都略有优势,尽管CLIP没有使用其中的任何训练样本,但以及具备更先进的水平。在视频行为识别的两个数据集上,zero-shot CLIP也明显优于ResNet-50。 在Kinetics700上,CLIP比ResNet-50高出14.5%,在UCF101上,zero-shot CLIP比ResNet-50高出7.7%。

       另外,zero-shot CLIP在一些特殊的、复杂的或抽象的任务上表现非常弱,如卫星图像分类(EuroSAT和RESISC45)、淋巴结肿瘤检测(PatchCamelyon)、合成场景中的物体计数(CLEVRCounts)、自动驾驶相关任务,如德国交通标志识别(GTSRB)、识别到最近汽车的距离(KITTI距离)。这些结果证明了zero-shot CLIP在更复杂的任务上的性能较差,推测是由于模型没有在这些特殊分类任务情况下训练导致,同样的情况,对于没有任何经验的人类也很难进行有意义的评估。故更合理的评估应该是few-shot检测。
image
       本实验研究zero-shot CLIP和few-shot逻辑回归在所有数据集上的平均性能,如上图为可视化的zero-shot CLIP与多种图像模型特征上的few-shot逻辑回归比较,包括ImageNet模型、自监督学习方法和CLIP本身。观察到, zero-shot CLIP与4-shot CLIP的逻辑回归的表现相似,zero-shot CLIP也与表现最好的自监督16-shot的BiT-M(ResNet-152x2)分类器的性能相当。同时,16-shot的CLIP逻辑回归表现出最好的性能,验证了上一节提出的猜想。
image
       本实验研究了few-shot CLIP图像特征逻辑回归在单个数据集上的性能,如上图逻辑回归分类器在与zero-shot CLIP相同性能的情况下所需的每个类的shot 数量的估计。观察到,零样本迁移在每个数据集上的效率有很大的差异,最少每个类少于1-shot,最大每个类需184-shot。一半的数据集中每个类别所需shot数少于5个,中位数为5.4。整体数据集中,每个类别的平均shot为20.8。在ImageNet上,zero-shot CLIP与16-shot的CLIP图像特征线性分类器的性能相匹配。
image
       假设全监督线性分类器的性能为zero-shot迁移可以达到的上限,则可进一步衡量zero-shot CLIP与跨数据集的全监督线性分类器的性能差距。如上图,若虚线 y = x y=x y=xzero-shot CLIP分类器与全监督线性分类器性能完全匹配,则对于大多数数据集,zero-shot CLIP分类器的性能比完全监督分类器低10%到25%,这表明仍然有很大的空间来提高CLIP的任务学习和zero-shot迁移能力。

       另外,zero-shot CLIP和全监督线性分类器的性能之间存在0.82的正相关,表明CLIP的基础表示与zero-shot迁移之间有一致相关性,其中,零样本CLIP在CIFAR10、Food101、OxfordPets、STL10和Caltech101数据集上接近完全监督性能。在这些数据集上,zero-shot精度和完全监督精度都超过90%,表明基础表示是高质量的任务,CLIP在 zero-shot迁移中可能更有效。
image
       在过去几年里,深度学习系统的实证研究表明模型的性能与训练计算量和数据集大小等重要量有关,如GPT模型家族证明,在训练计算增加1000倍的情况下,zero-shot性能可以得到一致的提高,故本实验检查了zero-shot CLIP的性能是否也遵循类似的缩放模式。如上图,绘制了5个ResNet CLIP模型在36个不同数据集的39次评估中的平均错误率,发现模型计算量增加44倍的情况下,CLIP的错误率呈对数线性缩放趋势,总体趋于平稳状态。

Representation Learning

       本节研究CLIP图像编码器的表示学习能力,用从模型中提取的表示来拟合一个线性分类器。存在许多方法来评估表示的质量,如线性分类或微调,但本文工作专注于开发一种数据集无关的预训练方法,而微调因为可以大程度的自适应数据集的表示,会掩盖预训练阶段学习通用和鲁棒表示的失败。相反,线性分类器在训练过程中会冻结主干网络,由于限制了其灵活性,可以在开发过程中突出预训练阶段的表示的缺陷。故本实验在27个不同的数据集上研究66个不同模型的线性评估。
image
       如上图左,首先研究模型在12个数据集中的性能。观察到,基于线性评估设置,参数量较少的CLIP-ResNet小模型的性能优于其他在ImageNet-1K上训练的resnet(BiT-S和原始ResNet),但低于在ImageNet-21K上训练的resnet(BiT-M),同时也低于具有类似计算量的EfficientNet系列模型。但参数量较多的CLIP-ResNet-50x64在总得分和计算效率方面都略优于现有表现最好的模型(NoisyStudent-EfficientNet-L2),取得最好的结果。

       CLIP-ViT的计算效率比CLIP-ResNets高约3倍,故可以使模型在计算预算内达到更高的整体性能。性能最好的CLIP-ViT-L/14-336px(在给定的数据集上以336像素的更高分辨率进行了额外的1个epoch的微调),在12个评估数据集中取得了比现有最好的模型平均+2.6%的性能。图右类似。
image
       上图可视化了最优的CLIP模型和上述评估中与其他方法的最优模型NoisyStudent-EfficientNet-L2在27个数据集上的性能差异。观察到,CLIP在27个数据集中的21个上优于NoisyStudent-EfficientNet-L2,在OCR(SST2和HatefulMemes)、地理定位和场景识别(Country211、SUN397)以及视频中的活动识别(Kinetics700、UCF101)任务上有极大的改进,此外,CLIP在汽车和交通标志识别(Stanford Cars、GTSRB)上也表现更好,在GTSRB上,性能提升了14.7%。其次,CLIP在另外一些数据集上的表现逊于EfficientNet,但ImageNet是EfficientNet的训练数据集,而在CIFAR10和CIFAR100等低分辨率数据集中,相比于EfficientNet,CLIP缺乏基于规模的数据增强。另外在PatchCamelyon和CLEVRCounts上两者性能差异不明显。 证明了CLIP学习到的表示的通用性。

Robustness to Natural Distribution Shift

       本实验在ImageNetV2、ImageNet Sketch 、Youtube-BB、ImageNet-vid、ObjectNet、ImageNet Adversarial和ImageNet Rendition这7个与ImageNet数据分布存在偏差的数据集上测量CLIP性能,以研究模型的性能在数据集分布变化时如何变化。这些数据集从各种来源收集的新图像组成,包括图像synthetic distribution shifts,如ImageNet-c,Stylized ImageNet,或通过以各种方式扰动创建的对抗性攻击图像。

       本实验报告7个偏移数据集所有类别的平均精度和模型在ImageNet下的相应类子数据集的平均精度。对于YoutubeBB和ImageNet-Vid,使用pm-0和pm-10准确率的平均值评估。
image
       上图为前一节提出的图像表示线性评估实验的模型在对应数据集上的鲁棒性评估。观察到,相比于CLIP,基于ImageNet训练的模型在其余数据集上性能相比ImageNet验证集中的性能大幅下滑,验证了CLIP的鲁棒性。
image
       上图比较了zero-shot CLIP与现有基于ImageNet训练的模型在分布偏移数据集上的性能。观察到,相比于在ImageNet训练的模型,所有zero-shot CLIP模型大大提高了鲁棒性,在ImageNet精度和分布偏移数据集精度之间的差距比ImageNet模型缩小了75%。
image
       CLIP的大型和多样化的预训练数据集或自然语言监督模块,可以产生更鲁棒的模型,但这并不一定意味着采用ImageNet监督的CLIP会更鲁棒。为了验证这个猜想,通过L2正则化逻辑回归分类器拟合ImageNet训练集上的CLIP特征,测量 CLIP模型在适应ImageNet分布后在其他数据集上性能的变化。如上图Adapt to ImageNet,适应ImageNet分布的CLIP使其在ImageNet上的精度整体提高了9.2%至85.4%,但在分布偏移数据集下的平均精度略有下降。其中适应了ImageNet的CLIP的性能在一个数据集ImageNetV2上有显著提高,但ImageNetV2跟ImageNet数据分布接近,这表明从监督自适应中获得的性能提高主要集中在ImageNet分布上。另外,在ImageNet-r上下性能降4.7%,在ObjectNet上下降3.8%,在ImageNet Sketch上下降2.8%,在ImageNet-a上下降1.9%。在其他两个数据集Youtube-BB和ImageNet Vid上,精度的变化较小,验证了上述推论。

       本文还实验了用ImageNet监督的CLIP线性分类器直接对分布偏移数据集进行分类的鲁棒性。因为7个分布偏移数据集的类别无法与ImageNet的类别完美对齐,故对ImageNet的所有类别进行最大池化预测来实现对其他数据集的分类预测。例如,对于Youtube-BB中的person类,可以通过汇集ImageNet中的baseball player,bridegroom,scuba diver类来得到预测结果。 故根据此方法,对每个数据集的类别生成自定义zero-shot分类器。结果如上图Adapt to class shift,这种设置将偏移数据集的平均鲁棒性提高了5%,但改进主要集中在少数数据集上。
image
       虽然zero-shot CLIP可以有效提高鲁棒性,但上述实验证明,对特定数据集进行监督拟合后,这种好处几乎完全消失,故本实验研究CLIP从zero-shot到完全监督的过程中鲁棒性的变化。结果如上图,观察到,虽然few-shot模型显示出比监督模型更高的鲁棒性,但随着训练数据的增加,这种优势逐渐消失。此外,zero-shot CLIP明显比few-shot模型更鲁棒。故得出结论,减小特定分布的训练数据量,可以提高的鲁棒性,但同时会降低模型在特定分布数据集上的性能。

Comparison to Human Performance

       本节实验人类在与CLIP类似的评估环境下的zero-shot表现,以及通过向人类展示一两个图像样本,人类的few-shot表现。

       给选定的五名不同的人查看包括37个猫或狗品种的Oxford IIT Pets数据集的3669张图像,要求人类区分这些图像的类别。给定三种情况,在zero-shot情况下,研究人员不会给人类提供动物品种的样本图像,在one-shot实验中,会给人类每个动物品种的一个样本图像,在two-shot实验中,给人类每个动物品种的两个样本图像,并要求他们在没有互联网搜索的情况下,尽其所能地给图像贴上标签。
image
       结果如上表,人类在one-shot实验环境下,相比于zero-shot,平均精度从54%上升到76%,但从one-shot到two-shot的边际收益很小。实验证明虽然CLIP是一种很有前途的zero-shot训练策略,但与人类从少数示例中的学习方法之间存在很大差异,仍有待改进算法以缩小机器和人类之间的差距。
image
       上图为人类和zero-shot CLIP的准确性对比。观察到,对CLIP最困难的问题对人类来说也很难,但总体而言CLIP的表现高于人类水平。

Limitations

  • 在本文提供的评估数据集上,zero-shot CLIP的性能平均而言与基于有监督ResNet-50特征的线性分类器具有竞争力,但在大多数数据集上,ResNet-50线性分类器的性能远低于总体水平。故在提升CLIP的任务学习和迁移能力方面仍有大量工作需要进行。如果zero-shot CLIP想达到最先进的性能,估计还需要增加大约1000倍的计算量。用当前的硬件进行训练是不可行的,故有必要进一步研究如何提高CLIP的计算和数据效率
  • zero-shot CLIP与一些特定任务的模型相比,在一些细粒度分类上的性能仍然较差。CLIP在更抽象更系统的任务中表现也较差,如计算图像中物体的数量。对于没有包含在CLIP的预训练数据集中的新任务,CLIP的性能可能还不如随机猜测。故仍然有很多任务,zero-shot CLIP需要改进
  • zero-shot CLIP对自然分布的图像的泛化效果很好,但对真实分布外的数据的泛化效果仍然很差。例如,CLIP可以学习到高质量的语义OCR表示,这是因为这些任务数据在预训练数据集中很常见。然而,CLIP在MNIST的手写数字上仅达到88%的准确率,甚至不如一个简单的神经网络分类器,通过图像搜索发现预训练数据集中几乎没有类似MNIST数字的图像,这表明CLIP几乎没有解决深度学习模型泛化脆弱的潜在问题
  • 尽管CLIP可以灵活地为各种任务和数据集生成zero-shot分类器,但CLIP只能从给定的zero-shot分类器中提供的概念中进行选择。与像图像描述生成任务这些真正灵活的方法相比,这是一个重大的限制
  • CLIP也没有解决深度学习较差的数据效率问题,如果CLIP模型在训练期间以每秒1张的速度看图像,那么在32个训练epoch中迭代128亿张图像将需要405年。故将CLIP与自监督和自训练方法相结合是一个有前途的方向,因为这些方法具有更高的数据效率
  • 尽管本文专注于zero-shot迁移,但模型验证只集中于27个验证数据集,这些验证集通常有数千个样本,其并不能反映真正的zero-shot场景。故创建一个明确的新任务基准,以评估广泛的zero-shot迁移能力,而不是重用现有的监督数据集,将有助于解决这些问题
  • CLIP是在互联网上收集的文本与图像对上训练的,但这些图像文本对都没有过滤和整理,可能导致CLIP模型学习了许多社会偏见
  • 虽然通过自然语言指导图像分类器是一个灵活和通用的方法,但它有自己的局限性,许多复杂的任务和视觉概念可能很难通过文本指定,故通过提供示例的few-shot方法对模型的表现会有较大的帮助。但CLIP 从zero-shot过渡到few-shot时,产生了有违直觉的性能下降,这与人类的性能明显不同,人类从zero-shot到one-shot的性能显示出了大幅增加。故未来仍需要开展工作,以开发将CLIP强大的zero-shot和高效的few-shot相结合的方法

Appendix

Linear-probe evaluation

Datasets

image
       线性检测使用了27个数据集,以评估模型在更广泛的分布和任务上的性能。包括MNIST,Facial Expression Recognition 2013,STL-10,EuroSAT,NWPURESISC45,German Traffic Sign Recognition Benchmark(GTSRB),KITTI,PatchCamelyon,UCF101 action recognition,Kinetics 700,以及CLEVR 、Hateful Memes 、ImageNet-1k的2500个随机样本。对于两个视频数据集(UCF101和Kinetics700),使用每个视频片段的中间帧作为输入图像。STL-10和UCF101分别有10和3种预定义的训练集/验证集/测试集划分比率,本文报告了所有划分方法的平均值。上表为所有数据集的详细信息和相应的评估指标。

       此外,本文还创建了两个数据集Country211和Rendered SST2。Country211数据集旨在评估地理定位能力,通过过滤YFCC100m数据集找到了211个国家的图像(其中至少有300张照片具有GPS坐标)每个国家都采样了200张训练图像和100张测试图像,从而构建了具有211个类别的数据集。
image
       Rendered SST2数据集旨在评估光学字符识别能力。为此,本文使用了Stanford Sentiment Treebank中的句子,并将其以448×448的分辨率渲染成图像。上图即为该数据集的两个示例图像。

Models

       结合上述数据集,本文以线性检测的方法评估了下列一系列模型。

  • LM RN50:采用自回归损失训练的多模态模型。采用ResNet做图像编码器时,CNN模型的输出会被投影为四个tokens,然后将其作为语言模型的前缀,自回归地预测文本tokens
  • CLIP-RN:CLIP从头训练的两个ResNet-50和101模型和三个使用EfficientNet-style 以大约4倍、16倍和64倍缩放宽度、层数和输入分辨率的模型
  • CLIP-ViT:CLIP从头训练的Vision Transformer模型,包括在224×224像素图像上训练ViT-B/32、ViT-B/16、ViT-L/14和在336×336像素图像 上微调的ViT-L/14模型
  • EfficietNet:EfficientNet官方发布的9个模型(B0-B8),以及noisy-student变体(B0-B7,L2-475和L2-800)。L2-475和L2-800的输入分辨率分别为475x475和800x800像素
  • Instagram-pretrained ResNeXt:官方发布的四个模型(32x8d、32x16d、32x32d、32x48d),以及两个使用更高输入分辨率的FixRes变体
  • Big Transfer(BiT):BiT-S和BiT-M,两者都在ImageNet-1k和ImageNet-21k数据集上进行训练
  • Vision Transformer(ViT):在ImageNet-21k数据集上预训练的ViT-b/32、ViT-b/16、ViT-l/16和ViT-h/14
  • SimCLRv2:SimCLRv2官方发布的系列预训练和微调模型
  • BYOL:BYOL官方发布的系列模型,特别是50x1和200x2
  • Momentum Contrast(MoCo):MoCo-v1和MoCo-v2官方发布的系列模型
  • VirTex:VirTex官方发布的系列预训练模型
  • ResNet:ResNet官方发布的系列模型,包括ResNet-50、ResNet-101和ResNet152

Evaluation

       验证过程中,除CLIP-ViT使用图像编码特征,其余所有模型都使用倒数第二层的图像特征,根据这些特征使用scikit-learn的L-BFGS训练一个逻辑回归分类器,最多迭代训练1000次,并报告模型在每个数据集的验证指标。通过在验证集上使用超参数扫描,以96个对数间隔的步幅,在 1 0 − 6 10^{−6} 106 1 0 6 10^6 106的范围内确定 L 2 L_2 L2正则化强度 λ λ λ

       为了节省扫描所需的计算量,以 λ = [ 1 0 − 6 , 1 0 − 4 , 1 0 − 2 , 1 , 1 0 2 , 1 0 4 , 1 0 6 ] λ = [10^{−6} , 10^{−4} , 10^{−2} , 1, 10^2 , 10^4 , 10^6 ] λ=[106,104,102,1,102,104,106]为起始值,采用二分搜索算法迭代计算,直到达到每十倍的 λ λ λ值范围内,有8个不同的值。对于包含验证集的数据集,使用上述方法来执行超参数搜索,而没有提供验证集的数据集,则通过分割训练集来执行超参数搜索。

Results

image
       上表为本实验测试的模型的最后得分。观察到,表现最好的CLIP模型为使用336×336输入图像像素的ViT-L/14,其在27个数据集中的21个中实现了最先进水平。对于许多数据集,CLIP的表现也明显优于其他模型,表明了自然语言监督比传统的基于图像分类的预训练方法的优势。
image
       上图为本实验提供的模型在所有数据集上的计算量/精度。

Zero-Shot Prediction

       本节提供CLIP的zero-shot预测的定性实验总结。
image
       上图给出了定性结果。观察到,zero-shot CLIP有效的学习到的任务非常广泛,包括地理定位、光学字符识别、面部情感识别和动作识别。
image
image
       上表/图为CLIP的zero-shot分类对比基于ResNet的线性分类器在36个数据集性能分数。

Dataset Ablation on YFCC100M

       为了研究WIT数据集对CLIP性能的影响,本文在YFCC100M数据集的筛选子集上训练了一个模型,并将其性能与在同等大小的WIT数据子集上训练的相同模型进行了比较。每个模型进行了32个epoch的训练。
image
       结果如上表。YFCC和WIT下训练的模型在零样本和线性检测设置下的表现类似。但在特定的细粒度分类数据集上的性能差异很大,有时超过10%,推测这些性能上的差异反映了每个预训练数据集中相关数据的相对密度。例如, YFCC100M上包含许多鸟和花的照片,在其之上训练的模型在Birdsnap和Flowers102上可以获得更好的性能。而在WIT上预训练的模型,更擅长汽车和宠物的分类。

Model Hyperparameters

image
image
image

reference

Radford, A. , Kim, J. W. , Hallacy, C. , Ramesh, A. , Goh, G. , & Agarwal, S. , et al. (2021). Learning transferable visual models from natural language supervision.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/388595.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Android】使用Apktool反编译Apk文件

文章目录 1. 下载Apktool1.1 Apktool官网下载1.2 百度网盘下载 2. 安装Apktool3. 使用Apktool3.1 配置Java环境3.2 准备Apk文件3.3 反编译Apk文件3.3.1 解包Apk文件3.3.2 修改Apk文件3.3.3 打包Apk文件3.3.4 签名Apk文件 1. 下载Apktool 要使用Apktool,需要准备好 …

如何手机搜学法减分答案? #媒体#职场发展

今天分享拥有拍照搜题、文字搜题、语音搜题、多重搜题等搜题模式,可以快速查找问题解析,加深对题目答案的理解。 1.证件照全能管家(APP) 一个非常好用的证件照APP 常用的证件照尺寸和底色都有、日常的证件照编辑完全够用&#…

【PyQt6】QScreen 屏幕截屏

文章目录 0 环境1 简介2 QScreen 类2.1 获取 QScreen 的对象2.2 QScreen 的常见信息 3. 示例代码 0 环境 - Python 3.12.1 - PyQt6 6.6.1 pip install PyQt6 PyQt6-Qt6 6.6.1 默认安装PyQt6-sip 13.6.…

C语言学习day13:for循环练习(生成随机数)

题目: 通过程序随机一个1-100的数,用户通过键盘输入数字 看是否匹配,匹配成功则跳出循环,失败则继续循环。 思路: 然后生成一个随机数需要写成死循环,同时需要有其他的出口可以写一个提示,比…

书生浦语大模型实战营-课程作业(3)

下载sentence_transformer的代码运行情况。sentence_transformer用于embedding(转向量) 本地构建持久化向量数据库。就是把txt和md文件抽取出纯文本,分割成定长(500)后转换成向量,保存到本地,称…

压缩PDF的大小-Adobe Acrobat Pro

经常遇到上传的pdf太大,无法成功上传。 今天找到一个方法: 打开Adobe Acrobat Pro软件 → 文件 → 另存为其他(H)... →缩小大小的PDF 版本选择 4.0 最低的版本。 文件由9M变为1.5M。

Vi 和 Vim 编辑器

Vi 和 Vim 编辑器 vi 和 vim 的基本介绍 Linux 系统会内置 vi 文本编辑器 Vim 具有程序编辑的能力,可以看做是 Vi 的增强版本,可以主动的以字体颜色辨别语法的正确性,方便程序设计。 代码补完、编译及错误跳转等方便编程的功能特别丰富&…

C++ bfs反向搜索(五十七)【第四篇】

今天我们来学习bfs的反向搜索。 1.反向搜索 反向搜索:是从目标状态出发进行的搜索,一般用于终点状态唯一,起点状态有多种,且状态转移是可逆的(无向边)情况。 例题:在一个长度为 n 的坐标轴上&a…

备战蓝桥杯---图论之最短路dijkstra算法

目录 先分个类吧: 1.对于有向无环图,我们直接拓扑排序,和AOE网类似,把取max改成min即可。 2.边权全部相等,直接BFS即可 3.单源点最短路 从一个点出发,到达其他顶点的最短路长度。 Dijkstra算法&#x…

大学建筑专业的搜题软件?大学搜题工具中的高级搜索功能有哪些? #学习方法#微信#经验分享

学习和考试是大学生生活中不可避免的一部分,而在这个信息爆炸的时代,如何快速有效地获取学习资源和解答问题成为了大学生们共同面临的难题。为了解决这个问题,搜题和学习软件应运而生。今天,我将为大家介绍几款备受大学生青睐的搜…

AJAX——接口文档

1 接口文档 接口文档&#xff1a;描述接口的文章 接口&#xff1a;使用AJAX和服务器通讯时&#xff0c;使用的URL&#xff0c;请求方法&#xff0c;以及参数 传送门&#xff1a;AJAX阶段接口文档 <!DOCTYPE html> <html lang"en"><head><meta c…

《数电》理论笔记-第3章-常用组合逻辑电路及MSI组合电路模块的应用

一&#xff0c;编码器和译码器 1&#xff0c;编码器 编码:用由0和1组成的代码表示不同的事物。 编码器:实现编码功能的电路&#xff0c; 常见编码器:普通编码器、优先编码器、二进制编码器二-十进制编码器等等 1.1 三位二进制普通编码器和三位二进制优先编码器 1分58秒开始 …

Cocos2dx-lua ScrollView[一]基础篇

一.ScrollView概述 cocos游戏中ScrollView控件大量使用,95%以上的项目都会使用ScrollView,个别游戏可能全部使用翻页的滑动效果。如果想要精通Cocos的UI开发,精通ScrollView控件非常关键,因此对ScrollView的使用进行总结很有必要。 下文缩写说明:sv = ScrollView, item代…

具有集中目录服务器的 P2P 工作方式

P2P 工作方式概述 在 P2P 工作方式下&#xff0c;所有的音频/视频文件都是在普通的互联网用户之间传输。 具有集中目录服务器的 P2P 工作方式 Napster 最早使用 P2P 技术&#xff0c;提供免费下载 MP3 音乐。 Napster 将所有音乐文件的索引信息都集中存放在 Napster 目录服务…

【AIGC】Stable Diffusion的ControlNet参数入门

Stable Diffusion 中的 ControlNet 是一种用于控制图像生成过程的技术&#xff0c;它可以指导模型生成特定风格、内容或属性的图像。下面是关于 ControlNet 的界面参数的详细解释&#xff1a; 低显存模式 是一种在深度学习任务中用于处理显存受限设备的技术。在这种模式下&am…

VueCLI核心知识3:全局事件总线、消息订阅与发布

这两种方式都可以实现任意两个组件之间的通信 1 全局事件总线 1.安装全局事件总线 import Vue from vue import App from ./App.vueVue.config.productionTip false/* 1.第一种写法 */ // const Demo Vue.extend({}) // const d new Demo()// Vue.prototype.x d // 把Dem…

2024,欢迎来到性价比时代

「不是XX买不起&#xff0c;而是YY更有性价比。」——翻开过去一年的商业消费史&#xff0c;这句话几乎可以贯穿始终。年轻消费者们追求性价比的眼光一旦定型&#xff0c;一些品牌过去被品质生活、消费升级包装出来的华丽外壳&#xff0c;很容易一击就碎。 胜出的「性价比之王…

多模态基础---BERT

1. BERT简介 BERT用于将一个输入的句子转换为word_embedding&#xff0c;本质上是一个transformer的Encoder。 1.1 BERT的两种训练方法 预测被遮挡的单词预测两个句子是否是相邻的句子 1和2是同时训练的 1.1 BERT的四种用法 预测句子的类别&#xff1a;输入一个句子&…

redis为什么使用跳跃表而不是树

Redis中支持五种数据类型中有序集合Sorted Set的底层数据结构使用的跳跃表&#xff0c;为何不使用其他的如平衡二叉树、b树等数据结构呢&#xff1f; 1&#xff0c;redis的设计目标、性能需求&#xff1a; redis是高性能的非关系型&#xff08;NoSQL&#xff09;内存键值数据…

SpringMVC-入门

1.概念 SpringMVC是一种软件架构思想&#xff0c;把软件按照模型(Model)、视图(View)、控制器(Controller)这三层来划分。Model&#xff1a;指的是工程中JavaBean&#xff0c;用来处理数据View&#xff1a;指的是工程中的html、jsp等页面&#xff0c;用来展示给用户数据Control…