当前位置:   article > 正文

【自然语言处理】【多模态】CLIP:从自然语言监督中学习可迁移视觉模型_blip和clip一起搭建多模态

blip和clip一起搭建多模态
从自然语言监督中学习可迁移视觉模型
《Learning Transferable Visual Models From Natural Language Supervision》

论文地址:https://arxiv.org/pdf/2103.00020.pdf

相关博客:
【自然语言处理】【多模态】多模态综述:视觉语言预训练模型
【自然语言处理】【多模态】CLIP:从自然语言监督中学习可迁移视觉模型
【自然语言处理】【多模态】ViT-BERT:在非图像文本对数据上预训练统一基础模型
【自然语言处理】【多模态】BLIP:面向统一视觉语言理解和生成的自举语言图像预训练
【自然语言处理】【多模态】FLAVA:一个基础语言和视觉对齐模型
【自然语言处理】【多模态】SIMVLM:基于弱监督的简单视觉语言模型预训练
【自然语言处理】【多模态】UniT:基于统一Transformer的多模态多任务学习
【自然语言处理】【多模态】Product1M:基于跨模态预训练的弱监督实例级产品检索
【自然语言处理】【多模态】ALBEF:基于动量蒸馏的视觉语言表示学习
【自然语言处理】【多模态】VinVL:回顾视觉语言模型中的视觉表示
【自然语言处理】【多模态】OFA:通过简单的sequence-to-sequence学习框架统一架构、任务和模态
【自然语言处理】【多模态】Zero&R2D2:大规模中文跨模态基准和视觉语言框架

一、简介

​ 在过去几年中,直接从原始文本中进行学习的预训练方法彻底改变了 NLP \text{NLP} NLP。像 autoregressive \text{autoregressive} autoregressive masked language modeling \text{masked language modeling} masked language modeling这样的任务不可知目标函数已经在计算量、模型容量和数据上跨越了多个量级,并稳定的改进着模型的能力。 "text-to-text" \text{"text-to-text"} "text-to-text"作为标准输入输出接口的发展,使得任务不可知架构能够以zero-shot的方式迁移至下游数据集,并且移除了对于特定头和特定定制数据的需求。像 GPT-3 \text{GPT-3} GPT-3这样的标志性系统在许多任务上都表现的很好,且不需要或者需要很少的特定领域数据。

​ 这些结果都表明,在网络规模的数据集上使用现代预训练方法汇总监督信号,可以超过由众包标注的高质量 NLP \text{NLP} NLP数据。然而,在计算机视觉这样的领域中,标准的做法仍然是在 ImageNet \text{ImageNet} ImageNet这样众包标注的数据集上进行预训练。直接从文本进行学习的预训练方法是否能够计算机视觉领域带来类似的突破呢?先前的工作令人鼓舞。

​ 20多年前, Mori et.al \text{Mori et.al} Mori et.al通过训练模型来预测与图像配对文本中的名称和形容词,从而改善基于内容的图像检索。 Quattoni et.al \text{Quattoni et.al} Quattoni et.al训练一个分类器来预测与图像关联的caption中的单词,然后通过在该分类器的权重空间进行流形学习来获得数据高效的图像表示。 Srivastava&Salakhutdinov \text{Srivastava\&Salakhutdinov} Srivastava&Salakhutdinov通过在低层图像和文本标签特征的基础上训练多模态深度玻尔兹曼机来学习深度表示。 Joulin et.al \text{Joulin et.al} Joulin et.al对这条线的工作进行了现代化,被证明用于预测图像caption中单词的 CNN \text{CNN} CNN能够学习到有用的图像表示。他们将 YFCC100M \text{YFCC100M} YFCC100M数据集中图像的标题、描述和标签元数据转换为bag-of-words多标签分类任务,并证明通过预测这些标签进行预训练 AlexNet \text{AlexNet} AlexNet的表示与在 ImageNet \text{ImageNet} ImageNet上预训练的方法效果相似。 Li et.al \text{Li et.al} Li et.al将该方法扩展至预测n-gram,并且证明了他们的系统具有迁移至其他图像数据集的zero-shot能力。最近的一些架构和预训练方法, VirTex \text{VirTex} VirTex ICMLM \text{ICMLM} ICMLM ConVIRT \text{ConVIRT} ConVIRT已经证明了基于Transformer的语言模型和从文本中学习图像表示的对比损失函数的潜力。

​ 虽然从概念的角度来看令人兴奋,使用自然语言监督的图像表示学习方法仍然很少见。这可能是因为在常见基准上的表现低于其他方法。例如, Li et al \text{Li et al} Li et al的工作在 ImageNet \text{ImageNet} ImageNet上的zero-shot准确率仅为KaTeX parse error: Unexpected end of input in a macro argument, expected '}' at end of input: \text{11.5%}。这远低于当时start-of-the-art的KaTeX parse error: Unexpected end of input in a macro argument, expected '}' at end of input: \text{88.4%}准确率。这甚至低于经典计算机视觉方法的50%准确率。相反,将弱监督应用在范围更窄且目标更明确的情况下,能够改善表现。 Mahajan et al. \text{Mahajan et al.} Mahajan et al.的工作展示了,预测 Instagram \text{Instagram} Instagram图片中与 ImageNet \text{ImageNet} ImageNet相关联的标签是一个有效的预训练任务。在 ImageNet \text{ImageNet} ImageNet上微调这些预训练模型会增加 5 5% 5的准确率,并改善了当时所有的state-of-the-art。 Kolesnikov et al. \text{Kolesnikov et al.} Kolesnikov et al. Dosovitskiy et.al \text{Dosovitskiy et.al} Dosovitskiy et.al的工作证明了,预测噪音标签 JFT-300M \text{JFT-300M} JFT-300M数据集来预训练模型,能够在广泛的迁移benchmarks上获得较大的收益。

​ 本工作代表了从有限数量的监督标签学习和从无限数量文本上学习的中间地带。然而,这并非是妥协。自然语言能够通过概括性来表达并监督更加广泛的视觉概念。这两种方法使用静态 softmax \text{softmax} softmax分类器来进行预测,并缺乏动态的输出机制。这严重的限制了他们的灵活性和zero-shot能力。

​ 这些弱监督方法与近期从自然语言学习图像表示的探索之间的关键区别是“规模”。 Mahajan et al. \text{Mahajan et al.} Mahajan et al. Kolesnikov et al. \text{Kolesnikov et al.} Kolesnikov et al.等人在数百万至数十亿图片上训练模型,而 VirTex \text{VirTex} VirTex ICMLM \text{ICMLM} ICMLM ConVIRT \text{ConVIRT} ConVIRT则在十到二十万图片上进行训练。在本工作中将弥补这个空缺,并研究在大规模自然语言监督下训练的图像分类器的行为。由于在互联网上有大量公开的数据集可用,作者创建了一个包含4亿(图像-文本)对的新数据集,并证明从头训练的简化版 ConVIRT \text{ConVIRT} ConVIRT(称为 CLIP,Contrastive Language-Image Pre-training \text{CLIP,Contrastive Language-Image Pre-training} CLIP,Contrastive Language-Image Pre-training)是一个从自然语言监督中学习的高效方法。作者通过训练计算量跨越2个量级的8个模型来研究 CLIP \text{CLIP} CLIP的伸缩性,并观察到迁移表现是计算量的平滑可预测函数。我们发现 CLIP \text{CLIP} CLIP类似于 GPT \text{GPT} GPT家族,在预训练时能学习到广泛的任务,包括 OCR \text{OCR} OCR、地理定位和动作识别等。我们在30个现有的数据集上对 CLIP \text{CLIP} CLIP进行zero-shot迁移表现进行衡量,并发现其能够与先前特定任务的监督模型媲美。作者也用线性探针表示学习分析验证了这些发现,并展示了 CLIP \text{CLIP} CLIP优于公开可获取的 ImageNet \text{ImageNet} ImageNet模型,且计算效率更高。我们额外发现,zero-shot的 CLIP \text{CLIP} CLIP模型要比相等准确率下的监督 ImageNet \text{ImageNet} ImageNet模型更加的鲁棒,这也表明任务不可能模型的zero-shot评估更能代码模型的能力。

二、方法

1. 自然语言监督

CLIP \text{CLIP} CLIP的核心是从自然语言中学习监督信号,这不是一个新的想法。然而,这个领域的工作使用的术语多种多样甚至相互矛盾,且陈述的动机也多种多样。 Zhang et.al \text{Zhang et.al} Zhang et.al Gomez et.al \text{Gomez et.al} Gomez et.al Joulin et.al \text{Joulin et.al} Joulin et.al Desai&Johnson et.al \text{Desai\&Johnson et.al} Desai&Johnson et.al的工作都是从"文本-图像"对来学习视觉表示,但是将其方面分别描述为无监督、自监督、弱监督和有监督。

​ 这一系列的共通之处不是特定方法的细节,而是将自然语言作为训练信号来改善视觉表示。虽然早期的工作在使用主题模型和 n-gram \text{n-gram} n-gram表示时遇到了自然语言复杂性的问题,但是深度上下文表示学习的发展可以使我们更好的利用这类资源。

​ 与其他训练方法相比,从自然语言中学习具有几个潜在的优点。相比于标准的图像分类众包标注,自然语言监督数据更容易收集。与无监督和自监督方法相比,从自然语言中学习能够将表征与语言连接在一起,能够实现灵活的zero-shot迁移。

2. 创建足够大的数据集

​ 现有的工作主要使用三种数据集: MS-COCO \text{MS-COCO} MS-COCO Visual Genome \text{Visual Genome} Visual Genome YFCC100M \text{YFCC100M} YFCC100M MS-COCO \text{MS-COCO} MS-COCO Visual Genome \text{Visual Genome} Visual Genome是高质量众包标注数据集,每个数据集包含大约10万张照片,但以现在的标准来看还是太小了。 YFCC100M \text{YFCC100M} YFCC100M包含1亿张照片,但是每个图片的元数据太稀疏且质量不稳定。例如,许多图片都使用自动生成的文件名来作为图片的标签。若仅包含具有自然语言标题或描述的图片,那么数据集会缩减至1500万张照片,规模与 ImageNet \text{ImageNet} ImageNet接近。

​ 使用自然语言监督的主要动机是,在互联网上获取大量的"文本-图像"形式数据集是比较容易的。现有的数据集太小,可能会导致低估这个系列研究的潜力。为了解决这个问题,作者构造了一个包含4亿"文本-图像"对的新数据集。该数据集尽可能的覆盖视觉概念,其通过query来构建数据集。构建过程中总共有500000个query,每个query包含20000个"文本-图像"对。最终会得到类别平衡的数据集,该数据集中的总词数与 GPT-2 \text{GPT-2} GPT-2使用的 WebText \text{WebText} WebText数据集相当,称该数据集为 WIT(WebImageText) \text{WIT(WebImageText)} WIT(WebImageText)t。

3. 选择有效的预训练方法

请添加图片描述

​ 目前,state-of-the-art计算机视觉系统的计算量非常大。 ResNeXt101-32x48d \text{ResNeXt101-32x48d} ResNeXt101-32x48d需要19个 GPU \text{GPU} GPU年来训练, Noisy Student EfficientNet-L2 \text{Noisy Student EfficientNet-L2} Noisy Student EfficientNet-L2则需要33个 TPUv3 \text{TPUv3} TPUv3年来训练。这些模型仅是用来预测仅有1000个类别的 ImageNet \text{ImageNet} ImageNet,那么训练从自然语言中学习视觉概念的模型将代价非常高。因此,作者认为成功训练这种模型的关键是如何高效训练。作者初始的方法类似于 VirTex \text{VirTex} VirTex,会从头训练一个图像 CNN \text{CNN} CNN和文本 Transformer \text{Transformer} Transformer联合模型来预测图像的caption。但是,在扩展这个方法时会遇到困难,上图展示了具有6300万参数的 Transformer \text{Transformer} Transformer要慢于简单的baseline三倍,该baseline仅预测相同文本的bag-of-words。

​ 这些方法都有一个相似之处,即尝试精确预测每张图谱所伴随的文本。由于伴随图像的文本多种多样,所以这是一个困难的任务。近期的图像对比学习工作中发现,对比损失函数能够比等价的预测损失函数学习到更好的表现。另一些工作中发现,虽然图像生成模型能够学习到高质量的图像表示,但是其计算量要比相同性能的对比学习高一个量级。通过这些发现,作者尝试使用简单的"文本与图像是否配对"任务来替代预测确切单词的任务。使用与baseline相同的bag-of-words编码器,并使用上图中的对比损失函数。

请添加图片描述

​ 给定一个包含 N N N个"文本-图像"对的batch, CLIP \text{CLIP} CLIP则会被训练来预测 N × N N\times N N×N个可能的"文本-图像"中那些是真实匹配的。图像编码器和文本编码器被联合训练来最大化batch内 N N N个真实"文本-图像"的 cosine \text{cosine} cosine相似度,并最小化 N 2 − N N^2-N N2N个错误匹配对的 cosine \text{cosine} cosine相似度,这样 CLIP \text{CLIP} CLIP能学习到一个多模态嵌入空间。上图是实现 CLIP \text{CLIP} CLIP的核心代码。首次引入这种构造batch和损失函数的方法是在"深度度量学习"中,称为 multi-class N-pair loss \text{multi-class N-pair loss} multi-class N-pair loss。在流行的对比学习领域中则称为 InfoNCE \text{InfoNCE} InfoNCE损失函数。

​ 由于预训练数据集的规模很大,因此过拟合的问题不需要太担心。 CLIP \text{CLIP} CLIP的训练细节相较于 Zhang et al. \text{Zhang et al.} Zhang et al.的工作来说更加的简单。 CLIP \text{CLIP} CLIP不使用预训练好的权重来初始化图像编码器和文本编码器,而是从头训练。在向量表示和对比嵌入空间之间不使用非线性投影,这种做法在 Bachman et al. \text{Bachman et al.} Bachman et al.的工作中被使用,并由 Chen et al. \text{Chen et al.} Chen et al.推广。 CLIP \text{CLIP} CLIP仅使用线性投影将每个编码器的向量表示映射至多模态嵌入空间中。作者并没有发现两个版本在训练上有什么差异,并且推测非线性投影仅在自监督表现学习中才有必要。此外, CLIP \text{CLIP} CLIP也移除了 Zhang et al. \text{Zhang et al.} Zhang et al.工作中的文本变换函数 t u t_u tu,也简化了图像变换函数 t v t_v tv。最后,通过temperature参数 τ \tau τ来工作logit的范围,该参数在训练中被直接优化。

4. 选择和缩放模型

​ 作者考虑了两种不同架构的图像编码器。第一种使用 ResNet-50 \text{ResNet-50} ResNet-50作为图像编码器的基础架构。具体来说,在 ResNet-D \text{ResNet-D} ResNet-D的基础上进行了几处简单的修改。使用注意力pooling替换全局平均pooling,注意力机制使用 transformer \text{transformer} transformer风格的 QKV \text{QKV} QKV多头注意力机制。第二种则使用近期的 ViT(Vision Transformer) \text{ViT(Vision Transformer)} ViT(Vision Transformer),则实现上略有不同。添加了额外的 layer normalization \text{layer normalization} layer normalization来合并patch和position embedding,并使用一个稍微不同的初始化方案。

​ 文本编码器则是一个 Transformer \text{Transformer} Transformer,架构的修改如 Radford et al. \text{Radford et al.} Radford et al.工作中描述的那样。基础版本中,使用具有 63M \text{63M} 63M参数量、12层、512宽度和8个注意力头。为了计算的高效性,最大化长度控制在小于76。文本序列用被特殊符号 [SOS] \text{[SOS]} [SOS] [EOS] \text{[EOS]} [EOS]包括起来, [EOS] \text{[EOS]} [EOS] Transformer \text{Transformer} Transformer最后一层的输出作为文本的特征表示,然后经过 layer normalizaed \text{layer normalizaed} layer normalizaed和线性投影转换至多模态嵌入空间。

​ 先前计算机视觉的研究往往通过单独增强宽度或者深度来缩放模型。在 Tan&Le \text{Tan\&Le} Tan&Le的工作中发现,对于 ResNet \text{ResNet} ResNet图像编码器来说,在宽度、深度和分辨率上同时增加计算量要比仅在某个维度上增加的效果好。 Tan&Le \text{Tan\&Le} Tan&Le EfficientNet \text{EfficientNet} EfficientNet架构的每个维度等比例的分配计算量, CLIP \text{CLIP} CLIP也采用同样的策略。对于文本编码器,仅缩放模型的宽度,使其与 ResNet \text{ResNet} ResNet增加的宽度成比例,并且不缩放深度。作者发现, CLIP \text{CLIP} CLIP的表现对文本编码器的容量并不敏感。

5. 训练

​ 作者训练了5个 ResNets \text{ResNets} ResNets和3个 Vision Transformers \text{Vision Transformers} Vision Transformers。对于 ResNets \text{ResNets} ResNets,作者训练了 ResNet-50 \text{ResNet-50} ResNet-50 ResNet-101 \text{ResNet-101} ResNet-101和3个遵循 EfficientNet \text{EfficientNet} EfficientNet风格缩放的接近4x、16x和64x计算量的 ResNet-50 \text{ResNet-50} ResNet-50。这些模型也被称为 RN50x4 \text{RN50x4} RN50x4 RN50x16 \text{RN50x16} RN50x16 RN50x64 \text{RN50x64} RN50x64。对于 Vision Transformer \text{Vision Transformer} Vision Transformer,作者训练了 ViT-B/32 \text{ViT-B/32} ViT-B/32 ViT-B/16 \text{ViT-B/16} ViT-B/16 ViT-L/14 \text{ViT-L/14} ViT-L/14。所有模型都训练32个epochs。使用带有decoupled权重衰减正则化的 Adam \text{Adam} Adam优化器并应用在所有权重上,且学习率衰减使用 cosine schedule \text{cosine schedule} cosine schedule。初始超参数则使用网格搜索、随机搜索和在1个epoch上训练的基线 ResNet-50 \text{ResNet-50} ResNet-50的手动调优来设置。由于计算力的约束,超参数使用启发式的方式应用在大模型上。可学习的temperature参数 τ \tau τ被初始化为0.07,并且通过clip来防止 logits \text{logits} logits超过100(作者发现对于阻止模型训练不稳定来说是必要的)。使用32768这样非常大的minibatch。使用混合精度来加速训练和节省显存。为了节省内存,gradient checkpointing、半精度 Adam \text{Adam} Adam统计、半精度随机舍入文本编码器权重等技巧被使用。嵌入向量相似度的计算也被分片到独立的 GPU \text{GPU} GPU上,仅计算局部batch内嵌入向量成对相似度的子集。最大的 ResNet \text{ResNet} ResNet模型 RN50x64 \text{RN50x64} RN50x64,在592个V100 GPU \text{GPU} GPU上训练了18天,而最大的 Vision Transformer \text{Vision Transformer} Vision Transformer则在256个v100上训练了12天。对于 ViT-L/14 \text{ViT-L/14} ViT-L/14,作者也以更高的336像素分辨率额外训练来提高表现,类似于 FixRes \text{FixRes} FixRes。我们称这个模型为 ViT-L/14@336px \text{ViT-L/14@336px} ViT-L/14@336px。除非特殊说明,本文中所有报告结果使用的 CLIP \text{CLIP} CLIP模型都是表现最好的模型。

三、实验

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号