【自监督论文阅读笔记】Emerging Properties in Self-Supervised Vision Transformers

(2021)

Abstract

        在本文中,我们质疑 自监督学习是否为 Vision Transformer (ViT) [16] 提供了与卷积网络 (convnets) 相比突出的新属性。除了 使自监督方法适应这种架构的效果 特别好之外,我们还进行了以下观察:首先,自监督的 ViT 特征包含关于图像语义分割的显式信息,这在有监督的 ViTs 和卷积网络中都没有那么明显。其次,这些特征 也是优秀的 k-NN 分类器,在 ImageNet 上以小 ViT 达到 78.3% top-1。我们的研究强调了 动量编码器 [26]、多裁剪训练 [9] 以及 使用ViT 的小patches 的重要性。我们将我们的发现应用到一种简单的自监督方法中,称为 DINO,我们将其解释为一种 没有标签的自蒸馏 形式。我们通过在 ImageNet 上使用 ViT-Base 进行线性评估获得 80.1% 的 top-1,展示了 DINO 和 ViTs 之间的协同作用

1. Introduction

        Transformers [57] 最近作为卷积神经网络 (convnets) 的替代品出现,用于视觉识别 [16、56、68]。它们的采用与受自然语言处理 (NLP) 启发的训练策略相结合,即 对大量数据进行预训练并对目标数据集进行微调 [15, 45]。由此产生的 Vision Transformers (ViT) [16] 与 convnets 具有竞争力,但它们尚未提供明显的优势:它们在计算上要求更高需要更多的训练数据,并且它们的特征没有表现出独特的特性

        在这篇论文中,我们质疑 Transformers 在视觉上的成功 是否可以 通过在他们的预训练中使用监督来解释。我们的动机是,Transformers 在 NLP 中取得成功的主要因素之一是使用自监督预训练,以 BERT [15] 中的闭过程形式 或 GPT [45] 中的语言建模形式。这些自监督的预训练目标使用句子中的单词来创建前置任务,这些任务 提供 比预测每个句子的单个标签的监督目标 更丰富的学习信号。类似地,在图像中,图像级监督通常会将图像中包含的丰富视觉信息减少为从预定义的几千类对象集中选择的单个概念 [49]。

        虽然 NLP 中使用的自监督前置任务是 特定于文本的,但 许多现有的 使用卷积网络的自监督方法 已经显示出 它们在图像上的潜力 [9、11、23、26]。它们通常共享相似的结构,但具有不同的组件,旨在避免无效解(崩溃)或 提高性能 [14]。在这项工作中,受这些方法的启发,我们 研究了自监督预训练对 ViT 特征的影响。特别有趣的是,我们已经确定了几个有趣的属性,这些属性不会出现在受监督的 ViT 中,也不会出现在卷积网络中

• 自监督 ViT 特征 明确包含场景布局,特别是 对象边界,如图 1 所示。这些信息 可以在最后一个模块的自注意模块中 直接获取

• 自监督 ViT 功能 在基本的最近邻分类器 (k-NN) 上表现特别出色,无需任何微调、线性分类器或数据增强,在 ImageNet 上达到 78.3% 的 top-1 准确度。

        分割掩码的出现似乎是自监督方法共有的一个属性。然而,k-NN 的良好性能只有在结合某些组件时才会出现,例如 动量编码器 [26] 和 多裁剪增强 [9]。我们研究的另一个发现是 使用vit的较小patches 对 提高最终特征质量 的重要性

        总的来说,我们对这些组成部分的重要性的发现使我们设计了一种简单的自监督方法,可以将其解释为一种 没有标签的 知识蒸馏形式 [28]。由此产生的框架 DINO 通过 使用 标准的交叉熵损失 直接预测教师网络(使用动量编码器构建)的输出,从而简化了自监督训练。有趣的是,我们的方法 只能使用 教师输出的 中心化和锐化 来避免崩溃,而其他流行的组件,如预测器 [23]、高级归一化 [9] 或 对比损失 [26] 在稳定性或性能方面几乎没有什么好处。特别重要的是,我们的框架非常灵活可以在 convnets 和 ViTs 上工作,无需修改架构,也不需要调整内部的归一化 [47]。

        我们进一步验证了 DINO 和 ViT 之间的协同作用,通过 使用 带有小patches的 ViT-Base,在 ImageNet 线性分类基准测试中以 80.1% 的 top-1 准确率 超越之前的自监督特征。我们还确认 DINO 通过将最先进的技术与 ResNet-50 架构相匹配 来 与卷积网络一起工作。最后,我们讨论了在计算和内存容量有限的情况下 将 DINO 与 ViTs 结合使用的不同场景。特别是,使用 ViT 训练 DINO 仅需两台 8-GPU 服务器 3 天时间即可在 ImageNet 线性基准测试中达到 76.1%,这优于 基于可比较大小的卷积网络的自监督系统,且 计算要求显著降低 [9, 23]。

2. Related work

自监督学习。

        大量关于自监督学习的工作 侧重于创造实例分类 [11、17、26、60] 的判别方法,该方法将每个图像视为不同的类别,并通过在不同的数据增强区分它们 来训练模型。然而,显式学习分类器以区分所有图像 [17] 不能很好地适应图像数量。 Wu 等人 [60] 建议 使用噪声对比估计 (NCE) [25] 来比较实例 而不是对它们进行分类。这种方法的一个限制是 它需要同时比较大量图像的特征。实际上,这 需要大批量 [11] 或内存库 [26、60]。几个变体允许以聚类的形式自动对实例进行分组 [2、7、8、21、29、35、61、65、69]。

        最近的工作表明,我们可以在不区分图像的情况下学习无监督特征。特别有趣的是,Grill 等人 [23] 提出了一种称为 BYOL 的度量学习公式,其中通过 将特征与使用动量编码器获得的表示相匹配 来训练特征。已经表明,像 BYOL 这样的方法即使没有动量编码器也能工作,但代价是性能下降 [14、23]。其他几项工作也呼应了这个方向,表明可以训练与 l2 超球面 [5] 上的均匀分布相匹配的特征,或使用白化 [19, 66]。我们的方法从 BYOL 中汲取灵感,但使用不同的相似性匹配损失,并为学生和教师使用完全相同的架构。这样,我们的工作就完成了在 BYOL 中发起的对自监督学习的解释,作为一种没有标签的 Mean Teacher 自蒸馏 [52] 的形式。

自训练 和 知识蒸馏 Self-training and knowledge distillation。

        自训练 旨在 通过将一小部分初始注释 传播到大量未标记实例 来提高特征质量。这种传播可以 通过标签的硬分配 [34、63、64] 或 软分配 [62] 来完成。当使用软标签时,该方法通常被称为知识蒸馏 [6, 28],主要设计用于 训练小型网络 以模仿大型网络的输出 以压缩模型。 Xie 等人 [62] 最近表明,蒸馏可用于 将 软伪标签 传播到自训练流程中的 未标记数据,从而在自训练和知识蒸馏之间建立了本质联系。我们的工作建立在这种关系之上,并 将知识蒸馏扩展到没有标签可用的情况。以前的工作还结合了自监督学习和知识蒸馏,实现了 自监督模型压缩 [20] 和性能提升 [12、38]。然而,这些作品依赖于 预训练的固定教师,而 我们的教师是在训练期间动态构建。这样,知识蒸馏就不会被用作自监督预训练的后处理步骤,而是直接被用作自监督目标。最后,我们的工作还与协同蒸馏codistillation [1] 有关,其中 学生和教师具有相同的架构 并 在训练期间使用蒸馏。然而,codistillation 中的 teacher 也是从 student 中蒸馏出来的,而 在我们的工作中 它是用 student 的动量平均值更新的。

3. Approach

3.1. SSL with Knowledge Distillation

        用于这项工作的框架 DINO 与最近的自监督方法 [9、14、11、23、26] 具有相同的整体结构。然而,我们的方法也与知识蒸馏 [28] 有相似之处,我们从这个角度介绍它。我们在图 2 中说明了 DINO,并在算法 1 中提出了一个伪代码实现。

        知识蒸馏是一种学习范式,指的是 我们训练学生网络 gθs 以匹配给定教师网络 gθt 的输出,分别由 θs 和 θt 参数化。给定输入图像 x,两个网络都输出 Ps 和 Pt 表示的 K 维上的概率分布。概率 P 是通过 使用 softmax 函数对网络 g 的输出进行归一化 而获得的。更确切地说,

其中 τs > 0 是一个控制 输出分布锐度的 温度参数,类似的公式适用于温度为 τt 的 Pt。给定一个固定的教师网络 gθt,我们通过 最小化 与学生网络参数 θs 相关的 交叉熵损失 来学习匹配这些分布,θs:

其中 H(a, b) = −a log b

         在下文中,我们将详细介绍如何将等式 (2) 中的问题应用于自监督学习。首先,我们 使用 multi-crop 策略 [9] 构建图像的不同扭曲视图或裁剪。更准确地说,我们从给定的图像生成一组不同的视图 V该集合 包含两个全局视图 x1g 和 x2g 以及 几个较小分辨率的局部视图所有裁剪都通过学生传递,而 只有全局视图通过教师传递,因此 鼓励“ 局部到全局” 的对应。我们 最小化损失

        这种损失是通用的,可以用于任何数量的视图,甚至只有 2 个。但是,我们遵循 multi-crop 的标准设置,使用分辨率为 224^2 的 2 个全局视图覆盖大面积(例如大于 50%)的区域原始图像,以及几个分辨率为96^2的局部视图,仅覆盖原始图像的小区域(例如小于 50%)。除非另有说明,否则我们将此设置称为 DINO 的基本参数化。

        两个网络共享相同的架构 g,具有不同的参数集 θs 和 θt。我们通过 使用随机梯度下降最小化等式 (3) 来学习参数 θs。

Teacher network.

        与知识蒸馏不同,我们 没有给定先验的教师 gθt,因此,我们 从学生网络的过去迭代中 构建它。我们在附录中研究了教师的不同更新规则,并表明在我们的框架中 在一个epoch 内将教师网络冻结的效果出奇地好,而为教师复制学生权重却无法收敛。特别有趣的是,对学生权重使用指数移动平均线 (EMA),即动量编码器 [26],特别适合我们的框架。更新规则是 θt ← λθt + (1 − λ)θs,在训练期间 λ 遵循从 0.996 到 1 的余弦schedule [23]。最初,动量编码器 被引入 作为对比学习中队列的替代品 [26]。然而,在我们的框架中,它的作用不同,因为我们没有队列,也没有对比损失,并且可能 更接近于自训练中使用的Mean Teacher的作用 [52]。事实上,我们观察到这位老师执行了一种类似于 Polyak-Ruppert 平均的模型集成形式,具有指数衰减 [41、48]。使用 Polyak-Ruppert 平均进行模型集成是提高模型性能的标准做法 [31]。我们观察到 教师在整个训练过程中的表现优于学生,因此通过 提供更高质量的目标特征 来指导学生的训练在以前的工作中没有观察到这种动态 [23, 47]。 

Network architecture.

        神经网络 g 由主干f (ViT [16] 或 ResNet [27]) 和 投影头h组成: g = h●f。下游任务中使用的特征是主干f 的输出投影头由一个3层多层感知器(MLP)组成,其隐藏维度为2048,之后是 l2归一化和一个权重归一化的K维全连接层[50],这与SwAV [9]的设计相似。我们已经测试了其他投影头,这种特殊的设计似乎最适合DINO(见附录)。我们不使用预测器[23,14],导致学生和教师网络的架构完全相同。特别有趣的是,我们注意到,与标准convnets不同,ViT架构默认情况下不使用批量归一化(BN)。因此,当 将DINO应用于ViT 时,我们 在投影头中也不使用任何BN,使系统完全不含BN

避免崩溃。

        通过 对比损失[60]、聚类约束[7,9]、预测[23] 或 批量标准化[23,47],几种自监督方法 因 用于 避免崩溃 的操作而异。虽然我们的框架可以通过多次归一化[9]来稳定,但它也可以通过 对动量老师的输出 进行 centering 居中 和 sharpening锐化 来避免模型崩溃。如附录中的实验所示,居中 防止一个维度占主导地位,但 鼓励崩溃到均匀分布,而 锐化具有相反的效果。应用这两种操作平衡了它们的效果,这足以避免在有动量老师的情况下崩溃。选择这种方法来避免崩溃 以稳定性 换取 对批次的更少依赖居中 操作仅取决于一阶批次统计数据,可以解释为 向教师添加偏差项c:gt(x)←gt(x)+c。中心 c 用指数移动平均值进行更新,这使得 该方法在不同的批次中都能很好地工作,如附录所示。

其中 m > 0 是速率参数,B 是批量大小。通过在 teacher softmax 归一化中 使用较低的温度 τt 值来获得输出锐化

3.2.实施和评估协议

         在本节中,我们将提供使用DINO进行训练的实施细节,并展示我们实验中使用的评估协议。

Vision Transformer

        我们简要描述了Vision Transformer (ViT) [16,57] 的机制,并参考Vaswani等人[57]关于Transformer 的详细信息,以及 Dosovitskiy等人[16]关于其适应图像的信息。我们遵循DeiT [56]中使用的实现。我们在表1中总结了本文中使用的不同网络的配置。ViT架构将分辨率为N × N的非重叠连续图像patches网格作为输入,在本文中,我们通常使用N = 16 (“/16 “)或N = 8 (“/8 “)。然后,这些patches通过一个线性层形成一组嵌入。我们 在序列中添加了一个额外的可学习标记token [15,16]。这个标记的作用是从整个序列中聚集信息,我们 在它的输出端附加投影头h。为了与之前的作品[15,16,56]保持一致,我们 将这个token 称为 类token [CLS],即使在我们的情况下它没有附加任何标签或监督patch tokens 和 [CLS]token 的集合 被馈送到 具有 “ pre-norm预范数 ” 层归一化的标准Transformer 网络[10,32]。Transformer 是一系列 自注意力层 和 前馈层,与跳跃连接并行。自注意层 通过 使用注意机制 [3] 查看其他标记的表示 来更新标记表示

Implementation details.

        我们在没有标签的 ImageNet 数据集 [49] 上预训练模型。我们使用 adamw 优化器 [37] 和批量大小 1024 进行训练,在使用 ViT-S/16 时分布在 16 个 GPU 上。学习率在前 10 个时期内线性上升到其基值,该基值由以下线性缩放规则 [22] 确定:lr = 0.0005 * batchsize/256。在这次热身之后,我们用余弦时间表 [36] 衰减学习率。权重衰减也遵循从 0.04 到 0.4 的余弦schedule。温度 τs 设置为 0.1,而我们在前 30 个时期使用 τt 从 0.04 到 0.07 的线性预热。我们遵循 BYOL [23](颜色抖动、高斯模糊和日晒)和 多裁剪 [9] 的数据增强,使用双三次插值使位置嵌入适应尺度 [16、56]。重现我们结果的代码和模型可在 https://github.com/facebookresearch/dino 上公开获得(权重国内可下载)

Evaluation protocols.

        自监督学习的标准协议是在冻结的特征 [67、26] 上学习线性分类器,或者在下游任务上微调特征。对于线性评估,我们在训练期间应用随机调整裁剪 和 水平翻转增强,并报告中央裁剪的准确性。对于微调评估,我们使用预训练的权重初始化网络 并在训练期间调整它们。然而,这两种评估都对超参数敏感,例如,当改变学习率时,我们观察到运行之间的准确性存在很大差异。因此,我们还使用 [60] 中的简单加权最近邻分类器 (k-NN) 来评估特征的质量。我们冻结预训练模型来计算和存储下游任务训练数据的特征。然后,最近邻分类器 将 图像的特征 与 投票给标签的 k 个最近的存储特征 进行匹配。我们扫过不同数量的最近邻居,发现 20个NN 在我们的大部分运行中始终表现最佳。该评估协议不需要任何其他超参数调整,也不需要数据增强,只需通过下游数据集一次即可运行,从而大大简化了特征评估

4. Main Results

        我们首先使用 ImageNet 上的标准自监督基准验证了本研究中使用的 DINO 框架。然后,我们研究用于检索、目标发现和迁移学习的结果特征的属性。

4.1.与 ImageNet 上的 SSL 框架比较

        我们考虑两种不同的设置:与相同架构的比较 和 跨架构的比较

与相同的架构进行比较。

        在表 2 的顶部面板中,我们将 DINO 与具有相同架构的其他自监督方法进行比较,ResNet-50 [27] 或 ViT-small (ViT-S) [56]。选择 ViT-S 的动机是它与 ResNet-50 在几个轴上的相似性:参数数量(21M vs 23M)、吞吐量(1237/sec VS 1007 im/sec)和 ImageNet 上的监督性能,训练过程为 [ 56](79.3% 对 79.8%)。我们在附录中探讨了 ViT-S 的变体。首先,我们观察到 DINO 在 ResNet-50 上的表现与最先进的技术相当,验证了 DINO 在标准设置中的工作。当我们切换到 ViT 架构时,DINO 在线性分类方面优于 BYOL、MoCov2 和 SwAV + 3.5%,在 k-NN 评估方面优于 +7.9%。更令人惊讶的是,简单的 k-NN 分类器的性能几乎与线性分类器相当(74.5% 对 77.0%)。此属性 仅在将 DINO 与 ViT 架构一起使用时出现,并且不会出现在其他现有的自监督方法或 ResNet-50 中

跨架构比较。

        在表 2 的底部面板中,我们比较了跨架构获得的最佳性能。此设置的目的不是直接比较方法,而是评估在迁移到更大的体系结构时 使用 DINO 训练的 ViT 的局限性虽然使用 DINO 训练更大的 ViT 可以提高性能,但 减小patch的大小(“/8”变体)对性能有更大的影响。虽然减少patch大小不添加参数,但它仍然会导致运行时间的显著减少 和 更大的内存使用。尽管如此,使用 DINO 训练的具有 8 × 8 patch的基础 ViT 在线性分类中达到 80.1% top-1,使用 k-NN 分类器达到 77.4%,参数减少 10 倍,运行时间比以前的现有技术快 1.4 倍 [12] ]。

4.2.使用 SSL 训练的 ViT 的属性

        我们根据最近邻搜索评估 DINO 特征的属性,保留有关目标位置的信息和到下游任务的可转移性。

4.2.1 使用 DINO ViT 检索最近邻

        ImageNet 分类的结果揭示了我们的特征在依赖最近邻检索的任务中的潜力。在这组实验中,我们进一步巩固了这一关于地标检索和复制检测任务的发现。

图像检索。

        我们考虑重新访问 [43] 牛津和巴黎图像检索数据集 [40]。它们包含查询/数据库对的 3 种不同的渐进难度的拆分。我们报告了中 (M) 和硬 (H) 拆分的平均精度 (mAP)。在表 3 中,我们比较了通过监督训练或 DINO 训练获得的不同现成特征的性能。我们冻结特征并直接应用 k-NN 进行检索。我们观察到 DINO 特征优于在带有标签的 ImageNet 上训练的特征

        SSL 方法的一个优点是它们可以在任何数据集上进行训练,而不需要任何形式的注释。我们在 Google Landmarks v2 (GLDv2) [59] 的 1.2M 干净集上训练 DINO,这是一个为检索目的而设计的地标数据集。在 GLDv2 上训练的 DINO ViT 特征非常好,优于先前发布的基于现成描述符的方法 [55、46]。

Copy detection.

        我们还评估了使用 DINO 训练的 ViT 在copy检测任务中的性能。我们报告了 INRIA Copydays 数据集 [18] 的“强”子集的平均精度。任务是识别因模糊、插入、打印和扫描等而扭曲的图像。在之前的工作 [4] 之后,我们添加了从 YFCC100M 数据集 [53] 中随机抽取的 10k 干扰图像。我们直接对从我们的预训练网络获得的特征进行余弦相似度的重复检测。这些特征是作为输出 [CLS] 标记和 GeM 池 [44] 输出patch标记的串联获得的。这导致 ViT-B 的 1536d 描述符。在 [4] 之后,我们对特征应用白化。我们在来自 YFCC100M 的额外 20K 随机图像上学习这种转换,与干扰物不同。表 4 显示,用 DINO 训练的 ViT 在复制检测方面非常有竞争力

4.2.2 场景语义布局的发现

        如图 1 定性所示,我们的自注意力图包含有关图像分割的信息。在这项研究中,我们在标准基准上测量此属性,并通过直接探测从这些注意力图生成的掩码的质量来测量

视频实例分割

        在 Tab 5 中,我们评估了 DAVIS-2017 视频实例分割基准 [42] 上的输出补丁标记。我们遵循 Jabri 等人 [30] 中的实验协议,并在连续帧之间使用最近邻分割场景;因此,我们不会在特征之上训练任何模型,也不会为任务微调任何权重。我们在 Tab 5 中观察到,尽管我们的训练目标和我们的架构都是为密集任务设计的,但性能在此基准上具有竞争力。由于网络没有微调,模型的输出一定保留了一些空间信息。最后,对于这个密集的识别任务,带有小补丁(“/8”)的变体表现得更好(+9.1% (J &F)m for ViT-B)。

探测自注意力图

        在图 3 中,我们展示了不同的头部可以关注图像的不同语义区域,即使它们被遮挡(第三行的灌木丛)或很小(第二行的旗帜)也是如此。使用 480p 图像获得可视化,从而产生 ViT-S/8 的 3601 个标记序列。在图 4 中,我们表明有监督的 ViT 在质量和数量上都不能很好地处理存在杂乱的对象。我们报告了通过对自注意力图进行阈值化以保持 60% 的质量而获得的真值和分割掩码之间的 Jaccard 相似性。请注意,自注意力映射图是平滑的,并且没有针对生成掩码进行优化。尽管如此,我们看到监督模型或 DINO 模型之间存在明显差异,在 Jaccard 相似性方面存在显着差异。请注意,自监督的 convnets 也包含关于分割的信息,但它需要专门的方法从它们的权重中提取它 [24]。

4.2.3 下游任务的迁移学习

        在表 6 中,我们评估了在不同下游任务上使用 DINO 预训练的特征的质量。我们与在 ImageNet 上接受监督训练的相同架构的特征进行比较。我们遵循 Touvron 等人 [56] 中使用的协议,并对每个下游任务的特征进行微调。我们观察到,对于 ViT 架构,自监督的预训练迁移比监督训练的特征更好,这与在卷积网络 [9、26、51] 上所做的观察一致。最后,自监督预训练极大地提高了 ImageNet 上的结果 (+1-2%)。

5. DINO 的消融研究

        在本节中,我们对 DINO 应用于 ViT 进行了实证研究。整个研究考虑的模型是 ViT-S。我们还建议读者参阅附录以进行更多研究。

不同组件的重要性

        我们展示了 从自监督学习中添加不同组件 对使用我们的框架训练的 ViT 的影响

        在表 7 中,我们报告了添加或删除组件时的不同模型变体。首先,我们观察到在没有动量的情况下,我们的框架不起作用(第 2 行)并且需要更高级的操作,例如 SK,以避免崩溃(第 9 行)。然而,随着动量的增加,使用 SK 的影响很小(第 3 行)。此外,比较第 3 行和第 9 行突出了动量编码器对性能的重要性。其次,在第 4 行和第 5 行,我们观察到 DINO 中的多裁剪训练和交叉熵损失是获得良好特征的重要组成部分。我们还观察到,向学生网络添加预测器几乎没有影响(第 6 行),而在 BYOL 中它对于防止崩溃至关重要 [14、23]。为了完整起见,我们在附录中提出了该消融研究的扩展版本。

patch大小的重要性。

        在图 5 中,我们比较了使用 16×16、8×8 和 5×5 的不同patch大小训练的 ViT-S 模型的 k-NN 分类性能。我们还比较了 ViT-B 的 16×16 和 8× 8 个patch。所有模型都训练了 300 个 epoch。我们观察到,随着我们减小patch的大小,性能会大大提高。有趣的是,在不添加额外参数的情况下可以大大提高性能。然而,使用较小patch的性能提升是以吞吐量为代价的:当使用 5×5 patch时,吞吐量降至 44 im/s,而 8×8 补丁为 180 im/s。

6. 结论

        我们已经展示了自监督预训练标准 ViT 模型的潜力,实现了与专门为此设置设计的最佳卷积网络相媲美的性能。我们还看到出现了两个可以在未来应用中利用的属性:k-NN 分类中的特征质量具有图像检索的潜力。特征中场景布局信息的存在也有利于弱监督图像分割。

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
xiaoxingxing的头像xiaoxingxing管理团队
上一篇 2023年6月17日
下一篇 2023年6月17日

相关推荐