MAE

作者: Valar_Morghulis | 来源:发表于2021-11-15 10:22 被阅读0次

    Masked Autoencoders Are Scalable Vision Learners

    https://github.com/facebookresearch/mae

    https://arxiv.org/abs/2111.06377

    摘要:本文表明,屏蔽自动编码器(MAE)是用于计算机视觉的可扩展自监督学习器。我们的MAE方法很简单:我们屏蔽输入图像的随机图块并重建丢失的像素。它基于两个核心设计。首先,我们开发了一个非对称编码器-解码器架构,其中编码器仅在可见的图块子集上运行(没有屏蔽标记),同时还有一个轻量级解码器,用于从潜在表示和屏蔽标记重建原始图像。其次,我们发现屏蔽高比例的输入图像(例如75%)会产生一项不平凡且有意义的自监督任务。将这两种设计结合起来,使我们能够高效地训练大型模型:我们加快训练速度(3倍或更多)并提高准确性。我们的可扩展方法允许学习具有良好通用性的高容量模型:例如,在仅使用ImageNet-1K数据的方法中,vanilla ViT巨型模型的精确度最高(87.8%)。下游任务中的迁移性能优于有监督的预训练,并显示出良好的扩展行为。

    1.介绍

    深度学习见证了能力和容量不断增长的架构的爆炸式增长[28,24,47]。在硬件快速增长的帮助下,如今的模型很容易超过一百万张图像[13],并开始需要数亿张通常无法公开访问的标签图像[16]。

    自然语言处理(NLP)通过自监督预训练成功地解决了这种对数据的偏好。基于GPT[40,41,4]中的自回归语言建模和BERT[14]中的屏蔽自动编码的解决方案在概念上很简单:它们删除部分数据并学习预测删除的内容。这些方法现在可以训练包含超过1000亿个参数的可推广NLP模型[4]。

    屏蔽自动编码器是一种更为通用的去噪自动编码器[48],它的思想很自然,也适用于计算机视觉。事实上,与视觉密切相关的研究[49,39]先于BERT。然而,尽管随着BERT的成功,人们对这一想法产生了极大的兴趣,但视觉中自动编码方法的进展却落后于NLP。我们问:是什么让屏蔽自动编码在视觉和语言之间有所不同?我们试图从以下角度回答这个问题:

    (i) 直到最近,架构还是不同的。在视觉上,卷积网络[29]在过去十年中占主导地位[28]。卷积通常在规则网格上运行,并且将诸如屏蔽 token[14]或位置嵌入[47]等“指示符”集成到卷积网络中并不容易。然而,随着视觉transformer(ViT)[16]的引入,这一架构差距已经得到解决,不应再构成障碍。

    (ii)语言和视觉的信息密度不同。语言是人类产生的信号,具有高度的语义和信息密度。当训练一个模型来预测每个句子中只有几个遗漏的单词时,这项任务似乎可以引出复杂的语言理解。相反,图像是具有高度空间冗余的自然信号,例如,在对部件、对象和场景缺乏高层次理解的情况下,可以从相邻的图块中恢复缺失的图块。为了克服这一差异并鼓励学习有用的特性,我们展示了一种简单的策略在计算机视觉中很有效:屏蔽很高比例的随机图块。这一策略大大减少了冗余,并创建了一个具有挑战性的自监督任务,需要对低级图像统计之外的整体理解。要从质量上了解我们的重建任务,请参见图2-4。

    (iii)自动编码器的解码器将潜在表示映射回输入,在重建文本和图像之间起着不同的作用。在视觉中,解码器重建像素,因此其输出的语义级别低于普通识别任务。这与语言相反,在语言中,解码器预测包含丰富语义信息的缺失单词。虽然在BERT中,解码器可能是微不足道的(一个MLP)[14],但我们发现,对于图像,解码器设计在确定学习到的潜在表示的语义水平方面起着关键作用。(The autoencoder’s decoder, which maps the latent representation back to the input, plays a different role between reconstructing text and images. In vision, the decoder reconstructs pixels, hence its output is of a lower semantic level than common recognition tasks. This is in contrast to language, where the decoder predicts missing words that contain rich semantic information. While in BERT the decoder can be trivial (an MLP) [14], we found that for images, the decoder design plays a key role in determining the semantic level of the learned latent representations.)

    在这一分析的推动下,我们提出了一种简单、有效、可扩展的屏蔽自动编码器(MAE),用于视觉表征学习。我们的MAE从输入图像中屏蔽随机图块,并在像素空间中重建丢失的图块。它具有非对称编码器设计。我们的编码器只对可见的图块子集(不带屏蔽 token)进行操作,我们的解码器是轻量级的,可以从潜在表示和屏蔽 token重建输入(图1)。在我们的非对称编码器-解码器中,将屏蔽 token迁移到小型解码器会大大减少计算量。在这种设计下,非常高的屏蔽率(例如75%)可以实现双赢方案:它优化了精度,同时允许编码器仅处理一小部分(例如25%)图块。这可以将总体预训练时间减少3倍或更多,同样可以减少内存消耗,使我们能够轻松地将MAE扩展到大型模型。

    我们的MAE学习非常高容量的模型,这些模型具有很好的通用性。通过MAE预训练,我们可以在ImageNet-1K上训练像ViT Large/-Huge[16]这样的数据饥饿模型,从而提高泛化性能。使用原始ViT巨型模型,在ImageNet-1K上进行微调时,我们实现了87.8%的精度。这比以前所有只使用ImageNet-1K数据的结果都要好。我们还评估了迁移学习在目标检测、实例分割和语义分割方面的应用。在这些任务中,我们的预训练比其监督的预训练对手取得了更好的结果,更重要的是,我们通过扩展模型观察到了显著的收益。这些观察结果与NLP自监督预训练[14,40,41,4]中的观察结果一致,我们希望它们将使我们的领域能够探索类似的轨迹。

    2.相关工作

    屏蔽语言建模及其自回归模型,如BERT[14]和GPT[40,41,4],是NLP中非常成功的预训练方法。这些方法保留了输入序列的一部分,并训练模型来预测缺失的内容。这些方法已被证明具有很好的可扩展性[4],大量证据表明,这些经过预训练的表示法可以很好地推广到各种下游任务。

    自动编码是学习表示的经典方法。它有一个将输入映射到潜在表示的编码器和一个重建输入的解码器。例如,PCA和k-均值是自动编码器[25]。去噪自动编码器(DAE)[48]是一类损坏输入信号并学习重建原始未损坏信号的自动编码器。可以将一系列方法视为不同损坏下的广义DAE,例如,屏蔽像素[49、39、6]或移除颜色通道[59]。我们的MAE是一种去噪自动编码形式,但在许多方面与经典DAE不同。

    屏蔽图像编码方法从被屏蔽损坏的图像中学习表示。[49]的开创性工作将屏蔽作为DAE中的一种噪声类型。上下文编码器[39]使用卷积网络修复大型缺失区域。受NLP成功的推动,最近的相关方法[6,16,2]基于transformer[47]。iGPT[6]对像素序列进行操作并预测未知像素。ViT论文[16]研究了用于自监督学习的屏蔽图块预测。最近,BEiT[2]提出预测离散token[37,43]。

    自监督学习方法对计算机视觉非常感兴趣,通常专注于不同的借口任务,用于预训练[15,50,35,59,38,17]。最近,对比学习[3,21]已经很流行,例如[51,36,22,7],它对两个或多个视图之间的图像相似性和差异性(或仅相似性[20,8])进行建模。对比和相关方法强烈依赖于数据增强[7,20,8]。自动编码追求一个概念上不同的方向,它表现出我们将要介绍的不同行为。

    3.方法

    我们的屏蔽自动编码器(MAE)是一种简单的自动编码方法,它根据原始信号的部分观测结果重建原始信号。像所有的自动编码器一样,我们的方法有一个编码器将观察到的信号映射到潜在表示,还有一个解码器从潜在表示重建原始信号。与经典的自动编码器不同,我们采用了一种非对称设计,允许编码器仅对部分观察信号(无屏蔽标记)进行操作,并采用一种轻量级解码器,从潜在表示和屏蔽标记重建完整信号。图1说明了下面介绍的想法。

    屏蔽。    按照ViT[16],我们将图像划分为规则的非重叠图块。然后,我们对一个子集的图块进行采样,并屏蔽(即移除)剩余的图块。我们的采样策略很简单:我们在不替换的情况下,按照均匀分布对随机块进行采样。我们简单地称之为“随机抽样”。(we sample random patches without replacement, following a uniform distribution.)

    具有高屏蔽率(即移除的图块的比率)的随机采样在很大程度上消除了冗余,因此创建了一个无法通过从可见相邻图块外推来轻松解决的任务(见图2-4)。均匀分布可防止潜在的中心偏移(即,图像中心附近有更多屏蔽图块)。最后,高度稀疏的输入为设计高效编码器创造了机会,下面介绍。

    MAE编码器。    我们的编码器是ViT[16],但仅适用于可见的、无屏蔽的图块。就像在标准ViT中一样,我们的编码器对图块(图块是线性投影和位置嵌入相加得到)做编码,图块是线性投影和位置嵌入相加得到,然后通过一系列Transformer块处理得到的集合。然而,我们的编码器只在整个集合的一小部分(例如25%)上运行。去除屏蔽图块;不使用屏蔽 token。这使我们能够用一小部分的计算和内存来训练非常大的编码器。整个集合由轻量级解码器处理,如下所述。

    MAE解码器。    MAE解码器的输入是由(i)编码可见图块和(ii)屏蔽 token组成的全套token。参见图1。每个屏蔽标记[14]都是一个共享的学习向量,表示存在要预测的缺失图块。我们向这个完整集合中的所有标记添加位置嵌入;如果没有这一点,屏蔽 token将没有关于其在映像中位置的信息。解码器具有另一系列transformer块。

    MAE解码器仅在预训练期间用于执行图像重建任务(仅编码器用于生成用于识别的图像表示)。因此,解码器架构可以以独立于编码器设计的方式灵活地设计。我们用非常小的解码器进行实验,比编码器更窄、更浅。例如,与编码器相比,我们的默认解码器每个token的计算量不到10%。通过这种非对称设计,全套token仅由轻量级解码器处理,这大大减少了预训练时间。

    重建目标。    我们的MAE通过预测每个屏蔽图块的像素值来重建输入。解码器输出中的每个元素都是表示图块的像素值向量。解码器的最后一层是一个线性投影,其输出通道的数量等于图块中像素值的数量。解码器的输出被reshaped 以形成重构图像。我们的损失函数计算像素空间中重建图像和原始图像之间的均方误差(MSE)。我们只计算屏蔽图块的损失,类似于BERT[14]。(Our MAE reconstructs the input by predicting the pixel values for each masked patch. Each element in the decoder’s output is a vector of pixel values representing a patch. The last layer of the decoder is a linear projection whose number of output channels equals the number of pixel values in a patch. The decoder’s output is reshaped to form a reconstructed image. Our loss function computes the mean squared error (MSE) between the reconstructed and original images in the pixel space. We compute the loss only on masked patches, similar to BERT [14].1)(注释1:只计算屏蔽图块的损失不同于传统的去噪自动编码器计算所有图块的损失,之所以这样选择是因为实验结果,计算所有图块的损失会导致~0.5%的准确度下降)

    我们还研究了一种变体,其重建目标是每个屏蔽图块的归一化像素值。具体来说,我们计算一个图块中所有像素的平均值和标准偏差,并使用它们来规范化该图块。在我们的实验中,使用归一化像素作为重建目标提高了表示质量。

    简单的实现。    我们的MAE预训练可以有效实施,而且重要的是,不需要任何专门的稀疏操作。首先,我们为每个输入图块生成一个标记(通过添加位置嵌入的线性投影)。接下来,我们随机洗牌token列表,并根据屏蔽率删除列表的最后一部分。此过程为编码器生成一小部分token,相当于在不替换的情况下采样图块。编码后,我们将屏蔽标记列表附加到已编码图块列表中,并此完整列表unshuffle回来(反转随机shuffle操作),以将所有标记与其目标对齐。解码器应用于这个完整列表(添加了位置嵌入)。如前所述,不需要稀疏操作。这个简单的实现引入了可忽略不计的开销,因为shuffle和unshuffle操作速度很快。(Simple implementation. Our MAE pre-training can be implemented efficiently, and importantly, does not require any specialized sparse operations. First we generate a token for every input patch (by linear projection with an added positional embedding). Next we randomly shuffle the list of tokens and remove the last portion of the list, based on the masking ratio. This process produces a small subset of tokens for the encoder and is equivalent to sampling patches without replacement. After encoding, we append a list of mask tokens to the list of encoded patches, and unshuffle this full list (inverting the random shuffle operation) to align all tokens with their targets. The decoder is applied to this full list (with positional embeddings added). As noted, no sparse operations are needed. This simple implementation introduces negligible overhead as the shuffling and unshuffling operations are fast.)

    4.ImageNet实验

    我们在ImageNet-1K(IN1K)[13]训练集上进行自监督的预训练。然后我们进行有监督的训练,用(i)端到端微调或(ii)线性探测来评估表示。我们报告了单个224×224 crop的top-1验证精度。详情见附录A.1。

    基线:ViT-Large。

    在我们的消融研究中,我们使用ViT-Large(ViT-L/16)[16]作为主干。ViT-L非常大(比ResNet-50[24]大一个数量级),并且倾向于过度拟合。以下是从零开始训练的ViT-L与从基线MAE微调的ViT-L之间的比较:

    我们注意到,从无到有地训练有监督的ViT-L是不寻常的,需要一个具有强正则性的好配方(82.5%,见附录a.2)。即使如此,我们的MAE预训练也有很大的改进。在这里,微调仅50个epoch(与从头开始的200个epoch相比),这意味着微调精度在很大程度上取决于预训练。

    4.1. 主要性能

    我们使用表1中的默认设置消融MAE(见标题)。观察到一些有趣的性质。

    屏蔽比。图5显示了屏蔽率的影响。最佳比率出人意料地高。75%的比率适用于线性探测和微调。这种行为与BERT[14]相反,BERT[14]的典型屏蔽率为15%。我们的屏蔽率也远高于计算机视觉相关工作[6,16,2]中的屏蔽率(20%至50%)。

    模型推断缺失的图块,以产生不同但似乎合理的输出(图4)。它可以理解物体和场景的完型(gestalt),而这不能简单地通过延伸线条或纹理来完成。我们假设这种类似推理的行为与学习有用的表征有关。

    图5还显示了线性探测和微调结果遵循不同的趋势。对于线性探测,精度随着屏蔽率的增加而稳定增加,直到达到最佳点:精度差距达到∼20%(54.6%对73.5%)。对于微调,结果对比率的敏感度较低,并且大范围的屏蔽比率(40–80%)工作良好。图5中的所有微调结果都优于从头开始的训练(82.5%)。

    表1. MAE消融实验。使用ViT-L/16和ImageNet-1K。 我们报告微调精度(ft)和线性探测(lin)精度(%)。 如果没有特别指定,默认设置是解码器的深度是8,宽度是512。 重建的目标是没有归一化的像素。 数据增强是随机缩放裁剪。 屏蔽率是75%。预训练800epochs。 默认设置显示为灰色。

    解码器设计。

    我们的MAE解码器可以灵活设计,如表1a和1b所示。

    表1a改变了解码器深度(transformer块的数量)。足够深的解码器对于线性探测非常重要。这可以通过像素重建任务和识别任务之间的差距来解释:自动编码器中的最后几层更专门用于重建,但与识别无关。一个合理深度解码器可以考虑重建的定制化,使潜在表示处于更抽象的层次。这种设计可以使线性探测提高8%(表1a,“lin”)。但是,如果使用微调,编码器的最后一层可以进行调整以适应识别任务。解码器深度对改善微调的影响较小(表1a,“ft”)。(Table 1a varies the decoder depth (number of Transformer blocks).A sufficiently deep decoder is important for linear probing. This can be explained by the gap between a pixel reconstruction task and a recognition task: the last several layers in an autoencoder are more specialized for reconstruction, but are less relevant for recognition. A reasonably deep decoder can account for the reconstruction specialization, leaving the latent representations at a more abstract level. This design can yield up to 8% improvement in linear probing (Table 1a, ‘lin’). However, if fine-tuning is used, the last layers of the encoder can be tuned to adapt to the recognition task. The decoder depth is less influential for improving fine-tuning (Table 1a, ‘ft’).)

    有趣的是,我们使用单块解码器的MAE可以在微调(84.8%)时表现出色。请注意,单个transformer块是将信息从可见token传播到屏蔽 token的最低要求。这种小型解码器可以进一步加快训练速度。

    在表1b中,我们研究了解码器宽度(通道数)。我们默认使用512-d,它在微调和线性探测下表现良好。更窄的解码器也可以很好地进行微调。

    总的来说,我们默认的MAE解码器是轻量级的。它有8个块,宽度为512-d(表1中为灰色)。与ViT-L(24个块,1024-d)相比,每个token只有9%的FLOPs。因此,虽然解码器处理所有token,但它仍然是整个计算的一小部分。

    屏蔽token。

    我们MAE的一个重要设计是编码器中跳过屏蔽 token[M],然后将其应用到轻量级解码器中。表1c研究了该设计。

    如果编码器使用屏蔽标记,则性能更差:在线性探测中,其精度下降14%。在这种情况下,预训练和部署之间存在差距:此编码器在预训练的输入中有很大一部分屏蔽 token,而未损坏的图像中不存在这些token。此差别可能会降低部署的准确性。通过从编码器中移除屏蔽标记,我们约束编码器始终看到真实的图块,从而提高精度。

    此外,通过跳过编码器中的屏蔽token,我们大大减少了训练计算。在表1c中,我们将整体训练FLOPs减少了3.3倍。在我们的实现中,这导致了2.8倍的wall-clock加速(见表2)。对于较小的解码器(1块)、较大的编码器(ViT-H)或两者兼而有之,wall-clock加速比甚至更大(3.5–4.1×)。请注意,当屏蔽率为75%时,加速比可以大于4倍,部分原因是自注意复杂性是二次的。此外,内存大大减少,这可以使训练更大的模型或通过大批量训练加快速度。时间和内存效率使我们的MAE有利于训练非常大的模型。

    重建目标。

    我们比较了表1d中的不同重建目标。到目前为止,我们的结果是基于(每个图块)没有标准化的像素。使用像素标准化可以提高精度。这种逐块标准化增强了局部对比度。在另一个变体中,我们在图块空间中执行PCA,并使用最大的PCA系数(此处为96)作为目标。这样做会降低准确性。两个实验都表明高频分量在我们的方法中是有用的。

    我们还比较了预测token的MAE变体,即BEiT中使用的目标[2]。特别是对于这种变体,我们使用DALLE预训练的dVAE[43]作为tokenizer,如[2]。这里,MAE解码器使用交叉熵损失预测token indices。与未标准化像素相比,这种 tokenization 将微调精度提高了0.4%,但与标准化像素相比没有优势。它还降低了线性探测精度。在§5中,我们进一步表明, tokenization在迁移学习中是不必要的。

    我们基于像素的MAE比 tokenization简单得多。dVAE标记器还需要一个预训练阶段,这可能取决于额外的数据(250M图像[43])。dVAE编码器是一个大型卷积网络(ViT-L的40%FLOPs),增加了不寻常的开销。使用像素不会遇到这些问题。

    数据增强。

    表1e研究了数据增强对我们MAE预训练的影响。

    我们的MAE使用仅裁剪的增强效果很好,无论是固定大小还是随机大小(都具有随机水平翻转)。添加颜色抖动会降低结果,因此我们不会在其他实验中使用它。

    令人惊讶的是,即使不使用数据增强(只使用中心裁剪,不使用翻转),我们的MAE也能正常工作。这一特性与对比学习和相关方法[51,22,7,20]截然不同,后者严重依赖于数据增强。据观察[20],对于BYOL[20]和SimCLR[7],仅使用裁剪增强将准确度分别降低13%和28%。此外,没有证据表明对比学习可以在没有增强的情况下工作:图像的两个视图是相同的,很容易满足一个简单的解决方案。

    在MAE中,数据增强的作用主要通过随机屏蔽(下一步烧蚀)来实现。每个迭代的屏蔽都不同,因此它们生成新的训练样本,而不考虑数据的增加。借口任务由于屏蔽而变得困难,并且需要较少的增强以正则化训练。

    屏蔽采样策略。

    在表1f中,我们比较了不同的掩模取样策略,如图6所示。

    [2]中提出的block-wise屏蔽策略倾向于移除大的块(图6)。我们的MAE采用block-wise屏蔽,在50%的比率下工作良好,但在75%的比率下降解。这项任务比随机抽样更难,因为观察到更高的训练损失。重建也更加模糊。

    我们还研究了网格采样,它保持每四个图块中的一个(图6右侧)。这是一项更简单的任务,训练损失也更低。重建更为sharper.。然而,表示质量较低。

    简单随机抽样最适合我们的MAE。它允许更高的屏蔽比,这提供了更大的加速优势,同时也享受良好的准确性。

    Training schedule.。

    到目前为止,我们的烧蚀是基于800个epoch的预训练。图7显示了训练计划长度的影响。随着训练时间的延长,准确度稳步提高。事实上,我们甚至在1600个epoch也没有观察到线性探测精度的饱和。这种行为不同于对比学习方法,例如,MoCo v3[9]在ViT-L的300个epoch处饱和。请注意,MAE编码器在每个epoch中仅看到25%的图块,而在对比学习中,编码器在每个epoch中看到200%(两次裁剪)甚至更多(多次裁剪)图块。

    4.2. 与以前结果的比较

    与自监督方法的比较。

    在表3中,我们比较了自监督ViT模型的微调结果。对于ViT-B,所有方法的性能都很好。对于ViT-L,方法之间的差距更大,这表明大型模型面临的挑战是减少过度拟合。

    我们的MAE可以很容易地扩展,并且与更大的型号相比已经显示出稳定的改进。我们使用ViT-H(224号)获得86.9%的准确率。通过使用448大小进行微调,我们仅使用1K数据就实现了87.8%的精度。在所有仅使用1K数据的方法中,先前的最佳精度为87.1%(512大小)[56],并且是使用更先进的网络。我们在极具竞争力的基准IN1K(无外部数据)中以不平凡的优势超越了最先进的技术。我们的结果基于vanilla ViT,我们预计更先进的网络将表现得更好。

    与BEiT[2]相比,我们的MAE更精确,同时更简单、更快。与预测标记的BEiT相比,我们的方法重建像素:当使用ViT-B重建像素时,BEiT报告了1.8%的退化[2](注释2)。我们不需要dVAE预训练。此外,我们的MAE比BEiT快得多(每个epoch3.5倍),原因如表1c所示。

    (注释2,我们发现BeiT使用ViT-L也会产生退化,85.2% (tokens) and 83.5% (pixels),基于官方代码的复现)

    表3中的MAE模型经过1600个epoch的预训练,以获得更高的精度(图7)。即使如此,如果在相同的硬件中进行训练,我们的总预训练时间也比所有其他方法要短。例如,对于ViT-L,我们的MAE的训练时间对于1600个epoch是31小时,而MoCo v3的训练时间对于300个epoch是36小时[9],使用相同的128个TPU-v3核。

    与监督预训练进行比较。在最初的ViT论文[16]中,当在1K中训练时,ViT-L会退化。参见图8。我们改进的监督配方对于从头开始的训练效果更好(图8,“我们的impl.”见A.2),但精确度已经饱和。我们的MAE预训练仅使用1K,可以更好地推广:相比从头训练,容量越大的模型的增益就越大。这一趋势与[16]中的JFT-300M监督预训练类似。这一比较表明,我们的MAE可以帮助扩大模型尺寸。

    4.3. 部分微调

    表1显示,线性探测和微调结果在很大程度上是不相关的。在过去的几年里,线性探测已经成为一种流行的协议;然而,它错过了追求强烈但非线性特征的机会,而这正是深度学习的优势。作为中间地带,我们研究了一个局部微调协议:微调最后几层,同时冻结其他层。该协议也用于早期工作,例如[54、59、35]。图9显示了结果。值得注意的是,仅微调一个transformer块可将精度从73.5%显著提高到81.0%。此外,如果我们只微调最后一个块(即其MLP子块)的“一半”,我们可以得到79.1%,比线性探测要好得多。这种变体本质上是对MLP头进行微调。微调几个块(例如,4或6)可以获得相当高的精度,与冻结主干相比,这仍然是一个小的微调头。

    在图9中,我们还比较了MoCo v3[9],这是一种与ViT-L结果对比的方法。它比我们的MAE具有更高的线性探测精度。然而,它的所有部分微调结果都比我们的差。微调4个块时,差距为2.6%。这些结果表明,MAE表示的线性可分离性较差,但它们具有较强的非线性特征,并且在非线性头微调时表现良好。

    这些观察结果表明,线性可分性不是评价表征质量的唯一指标。还观察到(例如,[8])线性探测与迁移学习性能(例如,目标检测)没有很好的相关性。据我们所知,在NLP中,线性评估并不经常用于基准预训练。

    5.迁移学习实验

    我们评估了迁移学习在COCO[32]上的目标检测和分割以及在ADE20K[60]上的语义分割。我们使用表3中预训练的模型。

    目标检测和分割。    我们在COCO上对Mask R-CNN[23]进行端到端的微调。ViT主干适合与FPN[31]一起使用(见附录A.3)。我们将此对象检测系统应用于表4中的所有条目。我们报告用于对象检测的box AP和用于实例分割的mask AP。

    与有监督的预训练相比,我们的MAE在所有配置下都表现得更好(表4)。对于较小的ViT-B,我们的MAE比监督训练前高2.4个百分点(50.3比47.9,APbox)。更重要的是,随着ViT-L的增大,我们的MAE预训练比有监督的预训练高出4.0分(53.3比49.3)。

    基于像素的MAE优于或等同于基于token的BEIT,而MAE则更简单和更快。MAE和BEiT均优于MOCO V3,MOCO V3与监督预训练一致。

    语义分割。    我们在ADE20K上的实验按照[2]中的代码使用SuperNet[52]。详情见A.4。表5显示,我们的MAE显著改善了ViT-L的迁移结果,比有监督的训练前对应者(53.6比49.9)好3.7分。基于像素的MAE优于基于token的BEiT。这些观察结果与COCO中的一致。

    分类任务。表6研究了iNaturalists[56]和Places[71]任务的迁移学习(见A.5)。在iNat上,我们的方法显示出强大的扩展行为:使用更大的模型,精度会显著提高。我们的成绩大大超过了以前最好的成绩。在Places,我们的MAE优于之前的最佳结果[19,40],这些结果是通过对数十亿张图像进行预训练获得的

    像素与token。表7给出了作为MAE重建目标的像素与标记的全面比较。虽然使用dVAE标记比使用非标准化像素要好,但在统计上,它与在我们研究的所有任务和模型中仅使用标准化像素类似。它再次表明,标记化对于我们的MAE是不必要的。

    6 讨论和结论

    扩展性好的简单算法是深度学习的核心。在NLP中,简单的自监督学习方法(例如,[40,14,41,4])可以从指数扩展模型中获益。在计算机视觉中,尽管在自监督学习方面取得了进展,但实际的预训练范例仍主要是监督学习(例如[28,44,24,16])。在这项研究中,我们在ImageNet和迁移学习中观察到,自动编码器——一种简单的自监督方法,类似于NLP中的技术——提供了可扩展的优势。视觉中的自监督学习现在可能正走上与NLP类似的轨道。

    另一方面,我们注意到,图像和语言是不同性质的信号,必须认真处理这种差异。图像只是光照记录,没有语义分解成文字的视觉模拟。我们不尝试删除对象,而是删除最有可能不形成语义段的随机图块。同样,我们的MAE重建像素,而像素不是语义实体。然而,我们观察到(如图4),我们的MAE推断出复杂的整体重建,表明它已经学习了许多视觉概念,即语义。我们假设这种行为是通过MAE内部丰富的隐藏表征发生的。我们希望这一观点将启发今后的工作。On the other hand, we note that images and languages are signals of a different nature and this difference must be addressed carefully. Images are merely recorded light without a semantic decomposition into the visual analogue of words. Instead of attempting to remove objects, we re�move random patches that most likely do not form a seman�tic segment. Likewise, our MAE reconstructs pixels, which are not semantic entities. Nevertheless, we observe (e.g., Figure 4) that our MAE infers complex, holistic reconstructions, suggesting it has learned numerous visual concepts, i.e., semantics. We hypothesize that this behavior occurs by way of a rich hidden representation inside the MAE. We hope this perspective will inspire future work

    更广泛的影响。    所提方法基于训练数据集的学习统计数据预测内容,因此将反映这些数据中的偏见,包括具有负面社会影响的偏见。模型可能会生成不存在的内容。这些问题需要进一步的研究和考虑时,在这项工作的基础上生成图像。

    A.实施细节

    A.1。ImageNet实验

    ViT架构。我们遵循标准的ViT架构[16]。它有一个transformer块堆栈[47],每个块由一个多头自注意力块和一个MLP块组成,两者都具有LayerForm(LN)[1]。编码器以LN结尾。由于MAE编码器和解码器的宽度不同,我们在编码器后采用线性投影层进行匹配。我们的MAE将位置嵌入[47](正弦-余弦版本)添加到编码器和解码器输入。我们的MAE不使用相对位置或layer scaling(在[2]的代码中使用)。

    我们从编码器输出中提取特征,用于微调和线性探测。由于ViT有一个类token[16],为了适应这种设计,在我们的MAE预训练中,我们在编码器输入端附加了一个辅助虚拟token。该标记将被视为用于在线性探测和微调中训练分类器的类标记。我们的MAE在没有这个token的情况下也能很好地工作(使用平均池化)。

    预训练。

    默认设置如表8所示。我们不使用颜色抖动、 drop path或 gradient clip。我们使用xavier uniform[18]按照ViT的官方代码[16]初始化所有transformer块。我们使用线性lr扩展规则[19]:lr=基本lr×batchsize/256。

    端到端微调。

    我们的微调遵循有监督的ViT训练的常规做法。默认设置如表9所示。我们使用[2]中的逐层lr衰减[10]。

    线性探测。

    我们的线性分类器训练如下[9]。见表10。我们观察到,线性探测需要与端到端微调完全不同的方法。特别是,正则化通常对线性探测有害。在[9]之后,我们禁用了许多常见的正则化策略:我们不使用mixup[58]、cutmix[57]、drop path[26]或颜色抖动,并将权重衰减设置为零。

    在训练经典线性分类器(例如,SVM[11])时,通常将分类器输入标准化。同样,在训练线性探测分类器时,对预训练的特征进行归一化也是有益的。在[15]之后,我们采用了一个额外的BatchNorm层[27],没有仿射变换(affine=False)。该层应用于编码器生成的预训练特征,并位于线性分类器之前。我们注意到,该层不会破坏线性特性,并且可以在训练后吸收到线性分类器中:它本质上是一个重参数化的线性分类器。(注释3:或者,我们可以预先计算特征的均值和标准差,并使用归一化特征来训练线性分类器。)引入该层有助于校准烧蚀中不同变体的特征大小,因此,他们可以使用相同的设置,而无需进一步的lr搜索。

    部分微调。

    我们的MAE部分微调(§4.3)遵循表9中的设置,但我们调整微调epoch数。我们观察到,微调更少的块需要更长的时间表。我们将微调时间段的数量设置为{50,100,200},并为每个调整的块数使用最佳时间段。

    A.2。从头开始监督训练ViT-L/H

    我们发现,在ImageNet-1K上从头开始训练有监督的ViT-L/H是很不容易的。训练不稳定。虽然对于较小的型号,公开提供的实施方案[46]具有很强的基线,但对于较大的ViT-L/H的配方尚未探索。将以前的方法直接应用于这些较大的模型是行不通的。在训练期间经常观察到NaN损失。

    我们在表11中提供了我们的配方。我们使用0.3的wd,4096的大批量,以及长时间预热,遵循原始ViT[16]。我们使用β2=0.95,如[6]。我们使用表11中列出的正则化,并禁用其他正则化,如[53]。所有这些选择都是为了提高训练稳定性。我们的配方可以完成训练而不出现NaN损失。ViT-L的准确率为82.6%(不含EMA的话是81.5%),ViT-H的准确率为83.1%(不含EMA的话是80.9%)。如果不使用EMA,ViT-L和ViT-H均显示过度拟合趋势。

    作为副产品,我们的配方训练ViT-B有82.3%准确度(不含EMA的为82.1%),而[46]中的准确率为81.8%。

    A.3。COCO中的目标检测与分割

    我们对原始ViT进行了调整,以便在Mask R-CNN[23]中使用FPN主干[31]。ViT有一个transformer块堆栈,所有transformer块都以单一尺度生成特征图(例如,步幅16)。我们将该堆栈平均划分为4个子集,并应用卷积对中间特征映射进行上采样或下采样,以产生不同的比例(步长4、8、16或32,与标准ResNet相同[24])。FPN是建立在这些多尺度特征图上的。

    为了在不同方法之间进行公平比较,我们搜索表4中每个条目的超参数(包括所有竞争对手)。我们搜索的超参数是学习速率、权重衰减、drop path率和微调epochs。我们将发布带有特定配置的代码。有关完整的模型和训练细节,以及其他实验,请参见[30]。(Yanghao Li, Saining Xie, Xinlei Chen, Piotr Dollar, Kaiming He, and Ross Girshick. Benchmarking detection transfer learning withvision transformers. In preparation, 2021.)

    A.4。ADE20K中的语义分割

    我们在[2]的语义分割代码之后使用了UperNet[52]。我们对100个epoch的端到端进行微调,批量大小为16。我们为表5中的每个条目(包括所有竞争对手)搜索最佳lr。

    [2]的语义分割代码使用相对位置偏置[42]。我们的MAE预训练不使用它。为了公平比较,我们仅在迁移学习期间启用相对位置偏差,初始化为零。我们注意到,我们的BEiT复现在预训练和微调中都使用了相对位置偏差,遵循它们的代码。

    A.5。额外的分类任务

    我们遵循表9中的设置微调 iNaturalist和Places并进行微调(表6)。我们调整每个数据集的lr和微调epochs。

    B. 线性探测结果的比较

    在§4.3中,我们已经证明,线性探测精度和微调精度在很大程度上是不相关的,它们对线性可分性有不同的关注。我们注意到,现有的屏蔽图像编码方法在线性探测中的竞争力通常较低(例如,与对比学习相比)。为了完整性,在表12中,我们比较了线性探测精度和基于屏蔽的方法。

    我们使用ViT-L的MAE具有75.8%的线性探测精度。这比以前基于屏蔽的方法要好得多。另一方面,它仍然落后于本协议下的对比方法:例如,MoCo v3[9]对ViT-L的线性探测精度为77.6%(图9)。

    C.ImageNet的稳健性评估

    在表13中,我们评估了我们的模型在ImageNet验证集的不同变体上的稳健性。我们使用在原始ImageNet(表3)上微调的相同模型,只在不同的验证集上运行推断,而没有任何专门的微调。表13显示,我们的方法具有很强的扩展性:增加模型尺寸具有显著的收益。我们的结果要显著优于先前的最优结果(先前的最优结果是个定制化的系统)

    相比之下,监督训练的表现要差得多(下表13;A.2中描述的模型)。例如,在ViT-H中,我们的MAE预训练在IN-A中比在监督下的对应训练好35%(68.2%对33.1%)。

    相关文章

      网友评论

          本文标题:MAE

          本文链接:https://www.haomeiwen.com/subject/ihfozltx.html