一文讲清楚视觉大模型!CLIP模型论文解读
概览
该论文提出了一种名为CLIP(Contrastive Language-Image Pre-Training)的多模态预训练模型,用于学习图像和文本之间的语义关系。该模型使用自然语言作为监督信号,通过对比预测正确的图像-文本配对和错误的配对来学习特征表示。具体来说,CLIP首先将输入的图像和文本分别编码为高维向量,并在两个空间中计算它们之间的相似度。然后,CLIP使用一个对比损失函数来优化这些向量的表示,以最大化正确配对的相似度并最小化错误配对的相似度。最终,CLIP可以用于各种下游任务,如图像分类、对象检测等。
方法改进
相比于传统的基于标注数据的监督学习方法,CLIP利用了大量未标注的自然语言数据来进行无监督学习,从而提高了模型的表现。此外,CLIP还采用了多种技术来提高效率和性能,包括使用多个GPU进行分布式训练、使用半精度浮点数计算以及使用梯度检查点技术等。
解决的问题
CLIP的主要目标是解决多模态学习中的语义匹配问题,即如何将图像和文本联系起来。传统的方法通常需要大量的标注数据来进行监督学习,而CLIP则可以通过利用未标注的自然语言数据来进行无监督学习,从而减少了对标注数据的依赖。此外,CLIP还可以应用于各种下游任务,如图像分类、对象检测等,具有广泛的应用前景。
1. 选择高效的预训练方式
给定一批 N(图像,文本)对,CLIP 被训练来预测批次中 N × N 可能(图像,文本)对中的哪一个实际发生。为此,CLIP 通过联合训练图像编码器和文本编码器来学习多模态嵌入空间,以最大化批次中 N 个实数对的图像和文本嵌入的余弦相似度,同时最小化 N2 - N 个不正确的配对。我们优化了这些相似性分数的对称交叉熵损失。在图 3 中,我们包含了 CLIP 实现的核心伪代码。
据我们所知,这种批量构建技术和目标首先作为多类 N 对损失 Sohn (2016) 在深度度量学习领域引入,并被 Oord 推广用于对比表示学习。作为 InfoNCE 损失,最近被 Zhang 等人改编为医学成像领域的对比(文本、图像)表示学习。由于我们的预训练数据集很大,过拟合不是主要问题,训练 CLIP 的细节得到了简化。
我们从头开始训练 CLIP,而没有使用 ImageNet 权重初始化图像编码器或使用预训练权重的文本编码器。我们不使用表示和对比嵌入空间之间的非线性投影,相反,我们仅使用线性投影将每个编码器的表示映射到多模态嵌入空间。
我们没有注意到两个版本之间训练效率的差异,并推测非线性投影可能仅在自监督表示学习方法中与当前图像的细节共同适应。我们还简化了图像变换函数t_v 。来自调整大小的图像的随机正方形裁剪是训练期间使用的唯一数据增强。最后,控制 softmax 中 logits 范围的温度参数 τ 在训练期间直接优化为对数参数化乘法标量,以避免转为超参数。
2.选择和扩展模型
我们考虑图像编码器的两种不同架构。
图像编码器
首先,我们使用 ResNet-50 (He et al., 2016a) 作为图像编码器的基础架构,因为它被广泛采用并且经过验证有良好的性能。我们使用 He 等人的 ResNetD 改进对原始版本进行了一些改进,同时采用了 Zhang 的抗锯齿 rect-2 模糊池。我们还用注意力池机制替换了全局平均池层。注意力池被实现为单层“transformer形式”的多头 QKV 注意力,其中查询以图像的全局平均池表示为条件。对于第二种架构,我们试验了最近推出的 Vision Transformer (ViT)。我们密切关注它们的实现,仅对变换器之前的组合补丁和位置嵌入添加额外的层归一化并使用略有不同的初始化方案进行了微小的修改。
文本编码器
文本编码器是一个 Transformer,具有 Radford 等人中描述的架构修改。作为基础尺寸,我们使用具有 8 个注意力头的 63M 参数 12 层 512 宽模型。转换器对具有 49,152 个词汇大小的文本的小写字节对编码 (BPE) 表示进行操作。为了计算效率,最大序列长度上限为 76。文本序列用 [SOS] 和 [EOS] 标记括起来,转换器最高层在 [EOS] 标记处的激活被视为文本的特征表示,该文本被层归一化,然后线性投影到多 -模态嵌入空间。Masked self-attention 在文本编码器中使用,以保留使用预训练语言模型进行初始化或添加语言建模作为辅助目标的能力,尽管对此的探索留待未来的工作。
结合之处
虽然之前的计算机视觉研究通常通过单独增加宽度或深度来缩放模型,但对于 ResNet 图像编码器,我们采用了 Tan & Le(2019)的方法,该方法发现 在所有宽度、深度和分辨率上分配额外的计算优于仅将其分配给模型的一个维度。虽然 Tan & Le (2019) 调整了为其 EfficientNet 架构分配给每个维度的计算比率,但我们使用了一个简单的基线,即平均分配额外的计算以增加模型的宽度、深度和分辨率。对于文本编码器,我们只缩放模型的宽度,使其与计算出的 ResNet 宽度增加成正比,根本不缩放深度,因为我们发现 CLIP 的性能对文本编码器的容量不太敏感。
3.训练过程
我们训练了一系列的 5 个 ResNets 和 3 个 Vision Transformer。对于 ResNet,我们训练了一个 ResNet-50、一个 ResNet-101,然后是另外 3 个,它们遵循 EfficientNet 风格的模型缩放,并使用大约 4 倍、16 倍和 64 倍的 ResNet-50 计算。它们分别表示为 RN50x4、RN50x16 和 RN50x64。对于 Vision Transformers,我们训练了一个 ViT-B/32、一个 ViT-B/16 和一个 ViT-L/14。我们训练所有模型 32 个epoch。我们使用 Adam 优化器将解耦权重衰减正则化应用于所有不是增益或偏差的权重,并使用余弦计划衰减学习率 (Loshchilov & Hutter, 2016) .
当训练 1 个epoch时,初始超参数是使用网格搜索、随机搜索和手动调整的组合在基线 ResNet-50 模型上设置的。由于计算限制,超参数然后启发式地适应更大的模型。
可学习的温度参数 τ 从初始化为相当于 0.07 并被剪裁以防止将 logits 缩放超过 100,我们发现这是防止训练不稳定所必需的。我们使用 32,768 的非常大的minibatch。混合精度用于加速训练和节省内存。为了节省额外的内存,使用了梯度检查点 、半精度 Adam 统计和半精度随机舍入文本编码器权重。嵌入相似度的计算也与单个 GPU 进行了分片,仅计算其本地批量嵌入所需的成对相似度的子集。最大的 ResNet 模型 RN50x64 在 592 个 V100 GPU 上训练了 18 天,而最大的 Vision Transformer 在 256 个 V100 GPU 上训练了 12 天。对于 ViT-L/14,我们还以更高的 336 像素分辨率对一个额外的 epoch 进行了预训练,以提高类似于 FixRes 的性能。我们将此模型表示为 ViT-L/14@336px。除非另有说明,否则本文中报告为“CLIP”的所有结果均使用我们发现性能最佳的模型。
4. 零样本学习
CLIP 经过预训练,可以预测图像和文本片段是否在其数据集中配对在一起。为了执行零样本分类,我们重用了此功能。对于每个数据集,我们使用数据集中所有类的名称作为潜在文本对的集合,并根据 CLIP 预测最可能的(图像,文本)对。更详细一点,我们首先通过各自的编码器计算图像的特征嵌入和一组可能文本的特征嵌入。然后计算这些嵌入的余弦相似度,通过温度参数 τ 缩放,并通过 softmax 归一化为概率分布。请注意,此预测层是一个多项逻辑回归分类器,具有 L2 归一化输入、L2 归一化权重、无偏差和温度缩放。以这种方式解释时,图像编码器是计算图像特征表示的计算机视觉主干,而文本编码器是超网络,它根据指定文本生成线性分类器的权重。
参考:https://arxiv.org/pdf/2103.00020
本文转载自 沐白AI笔记,作者: 杨沐白