ViTMAE:掩码自编码器是可扩展的视觉学习者

摘要

本文展示了掩码自编码器(MAE)作为计算机视觉中的可扩展自监督学习方法。我们的MAE方法很简单:我们对输入图像进行随机掩码,并重建缺失的像素。该方法基于两个核心设计。首先,我们开发了一种非对称的编码器-解码器架构,编码器仅处理可见部分的图像(不含掩码标记),而轻量级的解码器则根据潜在表示和掩码标记重建原始图像。其次,我们发现掩码高比例的输入图像(例如75%)可以生成一个非平凡且有意义的自监督任务。这两种设计的结合使得我们能够高效、有效地训练大型模型:我们加速了训练(提高了3倍或更多),并提高了准确率。我们的可扩展方法使得训练具有高容量的模型成为可能,这些模型能够很好地泛化:例如,基础的ViT-Huge模型在只使用ImageNet-1K数据的情况下达到了最佳准确率(87.8%)。在下游任务中的迁移表现优于监督预训练,并显示出良好的扩展性。

1. 引言

深度学习见证了架构的爆炸式增长,其能力和容量不断提升[29, 25, 52]。得益于硬件的快速进步,今天的模型可以轻松地对超过一百万张图像进行过拟合,并且开始需求数亿张——通常是公开无法访问的——标注图像[16]。
这种对数据的需求在自然语言处理(NLP)中通过自监督预训练得到了成功解决。基于GPT中的自回归语言建模[42, 43, 4]和BERT中的掩码自编码[14]的解决方案概念上很简单:它们去除一部分数据并学习预测缺失的内容。这些方法现在使得训练包含超过一百亿参数的通用NLP模型成为可能[4]。
掩码自编码器的概念——一种更一般的去噪自编码器形式[53]——在计算机视觉中也同样自然且适用。事实上,与BERT密切相关的视觉研究[54, 41]早于BERT出现。
在这里插入图片描述

然而,尽管在BERT成功之后这一想法受到极大关注,视觉领域中的自编码方法进展却落后于NLP。我们问:在视觉和语言中,掩码自编码有什么不同?我们从以下几个角度来尝试回答这个问题:

(i) 直到最近,架构是不同的。在视觉中,卷积网络[30]在过去十年中占主导地位[29]。卷积操作通常作用于规则网格,且并不容易将“指示符”如掩码标记[14]或位置嵌入[52]集成到卷积网络中。然而,这一架构差距已通过引入视觉变换器(ViT)[16]得到了弥补,不再构成障碍。

(ii) 语言和视觉之间的信息密度不同。语言是由人类生成的信号,语义丰富且信息密集。当训练模型预测每个句子中缺失的几个词时,这个任务看起来会促使模型进行复杂的语言理解。相反,图像是自然信号,具有较强的空间冗余——例如,缺失的图像块可以通过邻近的图像块恢复,而不需要对部分、物体和场景有太多高层次的理解。为了克服这一差异并鼓励学习有用的特征,我们展示了一种在计算机视觉中效果良好的简单策略:掩码掉高比例的随机图像块。这种策略大大减少了冗余,创造了一个具有挑战性的自监督任务,要求超越低级图像统计的整体理解。想要获得我们重建任务的定性感受,请参见图2到图4。
在这里插入图片描述

(iii) 自编码器的解码器在重建文本和图像时扮演着不同的角色。在视觉中,解码器重建像素,因此其输出在语义层次上低于常见的识别任务。这与语言不同,在语言中,解码器预测缺失的词,而这些词包含丰富的语义信息。虽然在BERT中,解码器可以是简单的多层感知机(MLP)[14],但我们发现对于图像,解码器的设计在决定学习到的潜在表示的语义层次上起着关键作用。

基于这一分析,我们提出了一种简单、有效且可扩展的掩码自编码器(MAE)形式,用于视觉表示学习。我们的MAE方法通过掩码随机图像块并重建缺失的图像块来学习。它采用了非对称的编码器-解码器设计。我们的编码器仅处理可见部分的图像块(不含掩码标记),解码器则轻量级,利用潜在表示和掩码标记重建输入图像(见图1)。将掩码标记移至小型解码器,在我们的非对称编码器-解码器架构中极大地减少了计算量。在这种设计下,极高的掩码比例(例如75%)能够实现双赢:既优化了准确性,又使得编码器仅处理较少的图像块(例如25%)。这可以将整体预训练时间缩短3倍或更多,同时减少内存消耗,从而使我们能够轻松地将MAE扩展到大型模型。
我们的MAE能够学习出非常高容量且泛化良好的模型。通过MAE预训练,我们可以在ImageNet-1K数据上训练需要大量数据的模型,如ViT-Large/-Huge,并取得更好的泛化性能。使用基础的ViT-Huge模型,当在ImageNet-1K上进行微调时,我们达到了87.8%的准确率。这超越了所有仅使用ImageNet-1K数据的现有结果。我们还评估了在物体检测、实例分割和语义分割任务上的迁移学习。在这些任务中,我们的预训练方法优于监督预训练方法,且更重要的是,随着模型规模的扩大,我们观察到了显著的提升。这些观察结果与NLP中自监督预训练的发现相一致[14, 42, 43, 4],我们希望这些结果能够推动我们领域探索类似的轨迹。

在这里插入图片描述

2. 相关工作

掩蔽语言建模及其自回归对偶方法,例如 BERT [14] 和 GPT [42, 43, 4],是自然语言处理(NLP)中非常成功的预训练方法。这些方法通过隐藏部分输入序列,训练模型去预测缺失的内容。研究表明,这些方法具有出色的扩展性[4],大量证据表明,这些预训练表示能很好地推广到各种下游任务。

自编码是一种经典的表示学习方法。它包括一个将输入映射到潜在表示的编码器和一个从潜在表示重建输入的解码器。例如,PCA 和 k-means 是自编码器[26]。去噪自编码器(DAE)[53]是一类自编码器,它通过破坏输入信号并学习重建原始、未破坏的信号。可以将一系列方法看作是在不同破坏方式下的广义 DAE,例如,掩蔽像素[54, 41, 6]或去除颜色通道[64]。我们的 MAE 是一种去噪自编码的形式,但与经典的 DAE 在许多方面有所不同。

掩蔽图像编码方法从被掩蔽的图像中学习表示。早期的工作[54]将掩蔽作为 DAE 中的噪声类型。Context Encoder [41] 使用卷积网络填补大范围的缺失区域。受 NLP 成功的启发,相关的最近方法[6, 16, 2]基于 Transformer [52]。iGPT [6] 处理像素序列并预测未知像素。ViT 论文[16]研究了自监督学习中的掩蔽补丁预测。最近,BEiT [2] 提出了预测离散 token [39, 45]。自监督学习方法在计算机视觉中引起了显著关注,通常专注于不同的预训练任务[15, 55, 37, 64, 40, 17]。最近,对比学习[3, 22]变得流行,例如,[56, 38, 23, 7],它建模了图像之间的相似性和不相似性(或仅相似性[21, 8])。对比学习及相关方法强烈依赖数据增强[7, 21, 8]。自编码追求一种概念上不同的方向,并且它展现了不同的行为,正如我们接下来所展示的那样。

3. 方法

我们的掩蔽自编码器(MAE)是一种简单的自编码方法,给定部分观察,重建原始信号。像所有自编码器一样,我们的方法包含一个将观察到的信号映射到潜在表示的编码器和一个从潜在表示重建原始信号的解码器。与经典自编码器不同,我们采用不对称设计,允许编码器仅在部分观察到的信号(没有掩蔽 token)上操作,并且有一个轻量级解码器从潜在表示和掩蔽 token 中重建完整信号。图 1 展示了这一思想,接下来将介绍。

掩蔽

沿用 ViT [16],我们将图像划分为规则的非重叠补丁。然后,我们从中随机选择一部分补丁,并掩蔽(即移除)剩余的补丁。我们的采样策略非常直接:我们随机采样补丁,且不放回,遵循均匀分布。我们简单地称之为“随机采样”。

具有较高掩蔽比例(即移除的补丁比例)的随机采样会大大减少冗余,从而创造出一个无法通过从可见邻近补丁推断的任务(见图 2 – 4)。均匀分布防止了潜在的中心偏差(即更多掩蔽的补丁靠近图像中心)。最后,极其稀疏的输入为设计高效的编码器提供了机会,接下来将介绍。

MAE 编码器

我们的编码器是 ViT [16],但仅作用于可见的、未掩蔽的补丁。与标准的 ViT 相似,我们的编码器通过线性投影嵌入补丁,并添加位置嵌入,然后通过一系列 Transformer 块处理这些结果。但是,我们的编码器仅在完整集合的小部分(例如,25%)上操作。掩蔽补丁被移除;没有使用掩蔽 token。这样我们就可以用很少的计算和内存训练非常大的编码器。完整的集合由轻量级解码器处理,接下来将介绍。

MAE 解码器

MAE 解码器的输入是包含(i)编码的可见补丁和(ii)掩蔽 token 的完整 token 集合。见图 1。每个掩蔽 token [14] 是一个共享的、学习到的向量,表示一个缺失补丁需要被预测。我们为这个完整集合中的所有 token 添加位置嵌入;如果没有这些位置嵌入,掩蔽 token 将不知道它们在图像中的位置。解码器有一系列 Transformer 块。

MAE 解码器仅在预训练期间用于执行图像重建任务(仅使用编码器生成图像表示用于识别)。因此,解码器架构可以灵活设计,独立于编码器设计。我们实验了非常小的解码器,其宽度和深度都比编码器小。例如,我们的默认解码器在每个 token 上的计算量少于编码器的 10%。通过这种不对称设计,完整的 token 集合仅由轻量级解码器处理,这大大减少了预训练时间。

重建目标

我们的 MAE 通过预测每个掩蔽补丁的像素值来重建输入。解码器输出中的每个元素是一个表示补丁的像素值向量。解码器的最后一层是一个线性投影,输出通道数等于补丁中像素值的数量。解码器的输出被重塑为重建的图像。我们的损失函数计算重建图像和原始图像之间的均方误差(MSE),该计算仅对掩蔽补丁进行,类似于 BERT [14]。我们还研究了一种变体,其重建目标是每个掩蔽补丁的归一化像素值。具体来说,我们计算补丁中所有像素的均值和标准差,并用它们对该补丁进行归一化。在我们的实验中,使用归一化像素作为重建目标能够提高表示质量。

简单实现

我们的 MAE 预训练可以高效实现,且重要的是,它不需要任何特殊的稀疏操作。首先,我们为每个输入补丁生成一个 token(通过线性投影并添加位置嵌入)。接下来,我们随机打乱 token 列表,并根据掩蔽比例移除列表的最后一部分。这个过程生成一个用于编码器的小 subset token 集合,等同于不放回的补丁采样。编码后,我们将掩蔽 token 列表附加到编码补丁列表中,并重新打乱这个完整列表(反转随机打乱操作),以使所有 token 与它们的目标对齐。解码器应用于这个完整的列表(并添加位置嵌入)。如前所述,不需要稀疏操作。这个简单的实现几乎不会引入额外的开销,因为打乱和还原打乱操作非常快速。
在这里插入图片描述

4. ImageNet 实验

我们在 ImageNet-1K (IN1K) [13] 训练集上进行自监督预训练。然后,我们通过 (i) 端到端微调或 (ii) 线性探测来评估表示性能。我们报告了单个 224×224 裁剪的 top-1 验证准确率。详细信息见附录 A.1。

基准:ViT-Large。我们在消融实验中使用 ViT-Large (ViT-L/16) [16] 作为骨干网络。ViT-L 非常大(比 ResNet-50 [25] 大一个数量级),且容易发生过拟合。以下是 ViT-L 从头训练与从我们的基准 MAE 微调后的比较:
在这里插入图片描述

我们注意到,从头开始训练监督学习的 ViT-L 是一项复杂的任务,需要一个有效的训练方案并且强大的正则化(82.5%,见附录 A.2)。即便如此,我们的 MAE 预训练仍然带来了显著的提升。在这里,微调仅进行 50 轮(与从头训练的 200 轮相比),这意味着微调准确率在很大程度上依赖于预训练。

4.1 主要特性

我们使用表1中的默认设置(见说明)对 MAE 进行了消融实验,并观察到几个有趣的特性。

遮罩比率。图5展示了遮罩比率的影响。最佳的遮罩比率出乎意料地高。75%的比率对线性探测和微调都表现良好。这种行为与 BERT [14] 相对立,后者的典型遮罩比率为 15%。我们的遮罩比率也远高于计算机视觉中相关工作的比率[6, 16, 2](20%到50%)。该模型推断缺失的补丁,生成不同但合理的输出(图4)。它能够理解物体和场景的整体感,这些内容无法仅通过延伸线条或纹理来完成。我们假设,这种类推推理行为与有用表示的学习有关。图5还显示,线性探测和微调的结果遵循不同的趋势。对于线性探测,随着遮罩比率的增加,准确率稳步上升,直到达到最佳点:准确率差距达到约 20%(54.6% vs. 73.5%)。对于微调,结果对比率的敏感性较低,40%到80%之间的广泛遮罩比率都表现良好。图5中的所有微调结果均优于从头训练(82.5%)。
在这里插入图片描述

解码器设计。我们的 MAE 解码器可以灵活设计,如表1a和1b中所研究的那样。
表1a变化了解码器的深度(Transformer块的数量)。一个足够深的解码器对于线性探测至关重要。这可以通过像素重建任务与识别任务之间的差异来解释:自编码器中的最后几层更加专注于重建,但与识别任务的相关性较低。一个合理深度的解码器可以考虑到重建的专业化,将潜在表示保留在一个更抽象的层次。这种设计可以在线性探测中带来最多 8% 的提升(表1a,“lin”)。然而,如果使用微调,编码器的最后几层可以调整以适应识别任务。解码器深度对于提高微调的效果影响较小(表1a,“ft”)。

有趣的是,我们的 MAE 使用单个块的解码器也能在微调中表现出色(84.8%)。请注意,单个 Transformer 块是将信息从可见标记传播到遮罩标记的最小要求。如此小的解码器还可以进一步加速训练。

在表1b中,我们研究了解码器的宽度(通道数)。默认情况下,我们使用 512-d,它在微调和线性探测下表现良好。一个更窄的解码器在微调时也能良好工作。
总体而言,我们的默认 MAE 解码器是轻量级的。它有 8 个块和 512-d 的宽度(表1中的灰色部分)。每个标记的 FLOP 仅为 ViT-L(24 个块,1024-d)的 9%。因此,尽管解码器处理所有标记,它仍然只占总体计算的很小一部分。
在这里插入图片描述

遮罩标记。我们MAE的一个重要设计是跳过编码器中的遮罩标记 [M],并在轻量级解码器中稍后应用它。表1c 研究了这个设计。
如果编码器使用遮罩标记,其性能较差:在线性探测中,准确率下降了 14%。在这种情况下,预训练和部署之间存在差距:在预训练中,编码器输入中有大量遮罩标记,而在未损坏的图像中并不存在这些遮罩标记。这种差距可能会在部署时降低准确率。通过从编码器中去除遮罩标记,我们限制了编码器始终看到真实的补丁,从而提高了准确率。

此外,通过在编码器中跳过遮罩标记,我们大大减少了训练计算量。在表1c中,我们将整体训练 FLOP 数减少了 3.3 倍。这导致了我们实现中的 2.8 倍墙钟加速(见表2)。对于较小的解码器(1块)、更大的编码器(ViT-H)或两者兼有,墙钟加速甚至更大(3.5–4.1 倍)。请注意,对于 75% 的遮罩比率,加速可能超过 4 倍,部分原因是自注意力的复杂度是二次的。此外,内存消耗大幅减少,这可以使得训练更大的模型成为可能,或通过大批量训练进一步加速。时间和内存的高效性使得我们的 MAE 非常适合训练非常大的模型。
在这里插入图片描述

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

我们还比较了一个 MAE 变体,它预测token,这是 BEiT [2] 中使用的目标。具体而言,对于这个变体,我们使用经过 DALLE 预训练的 dVAE [45] 作为分词器,跟随 [2]。在这里,MAE 解码器使用交叉熵损失预测token索引。与未归一化的像素相比,这种token化在微调时提高了 0.4% 的准确率,但与归一化像素相比没有优势。它还会降低线性探测的准确性。在 §5 中,我们进一步展示了在迁移学习中并不需要token化。

我们的基于像素的 MAE 比token化要简单得多。dVAE 分词器需要一个额外的预训练阶段,这可能依赖于额外的数据(250M 图像 [45])。dVAE 编码器是一个大型卷积网络(占 ViT-L FLOP 的 40%),并且增加了不容忽视的开销。使用像素并不会遇到这些问题。

数据增强。表1e研究了数据增强对我们 MAE 预训练的影响。
我们的 MAE 在仅使用裁剪的增强(无论是固定大小还是随机大小,都有随机水平翻转)时表现良好。添加颜色抖动会降低结果,因此我们在其他实验中不使用它。
令人惊讶的是,即使不使用数据增强(仅使用中心裁剪,无翻转),我们的 MAE 也表现得相当不错。这个特性与对比学习和相关方法 [56, 23, 7, 21] 大不相同,这些方法严重依赖于数据增强。已有研究[21]观察到,仅使用裁剪增强会分别使 BYOL [21] 和 SimCLR [7] 的准确率降低 13% 和 28%。此外,目前没有证据表明对比学习可以在没有增强的情况下工作:图像的两个视图是相同的,容易满足一个简单的解决方案。
在这里插入图片描述

在 MAE 中,数据增强的作用主要通过随机遮蔽来实现(下一步将进行消融实验)。每次迭代的遮蔽是不同的,因此它们会生成新的训练样本,无论是否进行数据增强。由于遮蔽任务本身具有挑战性,因此在训练过程中对数据增强的需求较少,且仍能有效地正则化训练。

遮蔽采样策略。表1f中,我们比较了不同的遮蔽采样策略,见图6。
基于块的遮蔽策略,提出于 [2],倾向于去除较大的块(见图6中间)。我们的 MAE 在50%遮蔽比例下使用块状遮蔽表现得相当不错,但在75%时效果下降。这个任务比随机采样更加困难,因为观察到较高的训练损失,并且重建效果也更加模糊。

我们还研究了网格状采样策略,定期保留每四个补丁中的一个(见图6右)。这是一个较容易的任务,具有较低的训练损失,且重建效果更清晰。然而,表示的质量较低。

简单的随机采样是我们 MAE 最佳的采样方式。它允许更高的遮蔽比例,这不仅提供了更大的加速效益,同时也保持了较好的准确率。

训练计划。到目前为止,我们的消融实验基于 800 轮的预训练。图7显示了训练计划长度的影响。随着训练轮次的增加,准确率稳步提高。事实上,即使训练到 1600 轮,我们也未观察到线性探测准确率的饱和现象。这种行为与对比学习方法不同,例如,MoCo v3 [9] 对 ViT-L 的训练在 300 轮时便达到饱和。需要注意的是,MAE 编码器每个轮次只看到 25% 的补丁,而在对比学习中,编码器每个轮次看到的是 200%(双裁剪)甚至更多(多裁剪)补丁。
在这里插入图片描述

4.2 与先前结果的比较

与自监督方法的比较。在表3中,我们比较了自监督 ViT 模型的微调结果。对于 ViT-B,所有方法的表现接近。对于 ViT-L,各方法之间的差距更大,这表明对于更大的模型,减少过拟合是一个挑战。我们的 MAE 模型可以轻松扩展,并且在更大的模型上取得了稳定的改进。我们使用 ViT-H(224 大小)时获得了 86.9% 的准确率。通过使用 448 大小进行微调,我们实现了 87.8% 的准确率,仅使用 IN1K 数据。之前最好的准确率(所有仅使用 IN1K 数据的方法中)是 87.1%(512 大小)[61],该结果基于先进的网络。我们在 IN1K 这一高度竞争的基准测试中,凭借显著的优势超越了现有的最先进方法(不使用外部数据)。我们的结果基于原始 ViT,并且我们预期,使用更先进的网络会取得更好的表现。

与 BEiT [2] 比较,我们的 MAE 方法不仅更加准确,同时也更简单且更快速。我们的 MAE 通过重建像素来进行训练,而 BEiT 则是通过预测 token:在使用 ViT-B 时,BEiT 在重建像素时报告了 1.8% 的性能下降[2]。我们不需要进行 dVAE 预训练。此外,正如表 1c所研究的那样,我们的 MAE 在每个 epoch 的训练速度比 BEiT 快 3.5 倍。
在这里插入图片描述

MAE模型的训练时间。表3中的 MAE 模型经过了 1600 个 epoch 的预训练以获得更好的准确性(见图 7)。即便如此,我们的总预训练时间仍然低于其他方法,且在相同硬件上训练。例如,使用 128 个 TPU-v3 核心训练 ViT-L时,我们的 MAE 训练时间为 1600 个 epoch 需要 31 小时,而 MoCo v3 训练 300 个 epoch 则需要 36 小时[9]。

与监督预训练的比较。在原始的 ViT 论文中[16],ViT-L 在 IN1K 数据集上训练时表现下降。我们实现的监督训练(见 A.2)效果更好,但准确率会饱和,详见图 8。我们的 MAE 预训练,仅使用 IN1K 数据集,可以更好地泛化:对于更高容量的模型,其从头开始训练的增益更大。这一趋势与 [16] 中的 JFT-300M 监督预训练相似。这个对比表明,我们的 MAE 能够帮助扩大模型规模。

4.3 部分微调

表 1 显示了线性探测和微调结果大体上没有相关性。线性探测近年来非常流行;然而,它忽略了追求强大但非线性特征的机会——而这恰恰是深度学习的强项。作为折衷方案,我们研究了部分微调协议:只微调最后几层,其它层被冻结。这一协议也在早期的工作中使用过,例如[59, 64, 37]。

图 9 显示了结果。值得注意的是,仅微调一个 Transformer 块就能显著提升准确率,从 73.5% 提升至 81.0%。此外,如果我们仅微调最后一块的“半部分”(即其 MLP 子块),我们可以达到 79.1%,明显高于线性探测。这一变体本质上是在微调一个 MLP 头。微调几个块(例如 4 或 6 个块)可以获得接近全微调的准确率。

在图 9中,我们还与 MoCo v3 [9] 进行了对比,后者是一个对比学习方法,且提供了 ViT-L 的结果。MoCo v3 在线性探测准确率上更高;然而,它的所有部分微调结果都逊色于 MAE。当微调 4 个块时,差距为 2.6%。虽然 MAE 的表示不那么线性可分,但它们是更强的非线性特征,在微调非线性头时表现优异。
在这里插入图片描述

这些观察表明,线性可分性并不是评估表示质量的唯一指标。也有研究表明(例如,[8]),线性探测与迁移学习性能并没有很好地相关,例如在物体检测任务中。据我们所知,线性评估在 NLP 中并不常用于预训练基准测试。

5. 迁移学习实验

我们使用表 3 中预训练的模型评估下游任务中的迁移学习。

物体检测和分割

我们在 COCO 数据集 [33] 上对 Mask R-CNN [24] 进行端到端微调。ViT 主干网络被调整为与 FPN [32] 配合使用(见 A.3)。我们对表 4 中的所有条目应用了这一方法。我们报告了物体检测的框 AP 和实例分割的掩码 AP。与监督预训练相比,我们的 MAE 在所有配置下表现更好(见表 4)。对于较小的 ViT-B,MAE 比监督预训练高出 2.4 分(50.3 vs. 47.9, APbox)。更显著的是,对于更大的 ViT-L,MAE 预训练在监督预训练上超出了 4.0 分(53.3 vs. 49.3)。基于像素的 MAE 优于或与基于 token 的 BEiT 不相上下,而 MAE 更加简单且更快。MAE 和 BEiT 都优于 MoCo v3,且 MoCo v3 与监督预训练相当。

语义分割

我们在 ADE20K [66] 上使用 UperNet [57] 进行实验(见 A.4)。表 5 显示了我们的预训练显著提高了与监督预训练的结果,例如 ViT-L 提高了 3.7 分。我们的基于像素的 MAE 也优于基于 token 的 BEiT。这些观察与在 COCO 中的结果一致。

分类任务

表 6 研究了 iNaturalist [51] 和 Places [65] 任务上的迁移学习(见 A.5)。在 iNat 上,我们的方法展现出了强大的扩展能力:随着模型规模的增大,准确率显著提升。我们的结果大幅超越了之前的最佳结果。在 Places 上,我们的 MAE 超越了之前的最佳结果 [19, 36],这些结果是通过在数十亿张图像上进行预训练得到的。

像素与 token

表 7 比较了将像素与 token 作为 MAE 重建目标。虽然使用 dVAE token 比使用未归一化的像素效果更好,但在我们测试的所有情况下,使用归一化像素与使用 token 的效果统计上相似。这再次表明,token 化对于我们的 MAE 并非必要。

6. 讨论与结论

深度学习的核心是能扩展的简单算法。在 NLP 中,简单的自监督学习方法(例如,[42, 14, 43, 4])使得模型能够从大规模扩展中获益。在计算机视觉中,尽管自监督学习有所进展,但实用的预训练范式仍然以监督学习为主(例如,[29, 46, 25, 16])。在这项研究中,我们观察到,在 ImageNet 和迁移学习中,类似于 NLP 中技术的自监督方法——自动编码器——提供了可扩展的益处。视觉中的自监督学习可能正走在与 NLP 相似的轨迹上。

另一方面,我们也注意到,图像和语言是不同性质的信号,这一差异必须仔细处理。图像仅仅是记录的光线,而没有像词汇那样的语义分解。我们不尝试移除物体,而是移除随机的块,这些块最有可能不会形成语义部分。同样,我们的 MAE 重建的是像素,这些像素并不是语义实体。然而,我们观察到(例如,图 4)我们的 MAE 能够推断出复杂的、整体的重建,表明它学习了众多视觉概念,即语义。我们假设,这一行为可能通过 MAE 内部的丰富隐藏表示发生。我们希望这种观点能激发未来的工作。

更广泛的影响

所提出的方法基于训练数据集的统计特征来预测内容,因此将反映这些数据中的偏见,包括那些可能带来负面社会影响的偏见。模型可能会生成不存在的内容。在基于此工作生成图像时,这些问题值得进一步研究和关注。

A. 实现细节

A.1 ImageNet 实验

ViT 架构
我们遵循标准的 ViT 架构 [16]。该架构由一系列 Transformer 块 [52] 组成,每个块包括一个多头自注意力块和一个 MLP 块,二者都使用了 LayerNorm (LN) [1]。编码器最后使用 LN。由于 MAE 的编码器和解码器宽度不同,我们在编码器后面加入了一个线性投影层以匹配其宽度。我们的 MAE 在编码器和解码器输入中都添加了位置嵌入 [52](采用正弦余弦版本)。我们的 MAE 不使用相对位置或层级缩放(这些在 [2] 的代码中使用)。
我们从编码器的输出中提取特征进行微调和线性探测。由于 ViT 有一个类 token [16],为了适应这一设计,我们在 MAE 的预训练中将一个辅助虚拟 token 附加到编码器输入中。该 token 在进行线性探测和微调时会作为训练分类器的类 token。我们的 MAE 在没有这个 token(使用平均池化)时也能表现得很好。

预训练
默认设置见表 8。我们不使用颜色抖动、路径丢弃或梯度裁剪。我们使用 xavier 均匀初始化 [18] 所有 Transformer 块,遵循 ViT 官方代码 [16]。我们采用线性学习率缩放规则 [20]:lr = base lr × batchsize / 256

端到端微调
我们的微调方法遵循监督 ViT 训练的常见做法。默认设置见表 9。我们使用层级学习率衰减 [10],参照 [2] 的做法。

线性探测
我们的线性分类器训练遵循 [9]。见表 10。我们观察到线性探测与端到端微调需要完全不同的策略。特别地,正则化通常对线性探测有害。按照 [9] 的方法,我们禁用了许多常见的正则化策略:不使用 mixup [63]、cutmix [62]、路径丢弃 [27] 或颜色抖动,并将权重衰减设置为零。

训练传统线性分类器(如 SVM [11])时,常见的做法是对分类器输入进行归一化。同样,当训练线性探测分类器时,归一化预训练特征也是有益的。参照 [15],我们在预训练的特征上采用一个额外的 BatchNorm 层 [28],且不进行仿射变换(affine=False)。该层应用于编码器生成的预训练特征,并位于线性分类器之前。我们注意到该层不会破坏线性属性,且在训练后可以被吸收进线性分类器中:它本质上是一个重新参数化的线性分类器。引入这个层有助于校准我们不同变体中特征的幅度,使它们能够在没有进一步学习率搜索的情况下使用相同的设置。

在这里插入图片描述
部分微调

我们的 MAE 部分微调 (§4.3) 遵循表 9 中的设置,不同之处在于我们调整了微调的训练轮数。我们观察到,微调较少的块需要更长的训练周期。我们将微调的轮数设置为 f50, 100, 200g,并根据每个微调的块数选择最优的轮数。

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

我们发现,从头训练监督 ViT-L/H 在 ImageNet-1K 上是非常复杂的。训练不稳定。尽管对于较小模型已经有强有力的基准,并且有公开的实现 [48],但对于较大的 ViT-L/H 模型,训练的策略尚未深入研究。直接将之前的训练策略应用于这些较大的模型并不起作用。在训练过程中,常常会观察到 NaN 损失。

我们提供的训练策略见表 11。我们使用权重衰减 wd=0.3,大批量训练(batch size=4096),并采用较长的预热阶段,遵循原始 ViT [16]。我们使用 β2=0.95,参照 [6]。我们使用表 11 中列出的正则化方法,并禁用其他正则化方法,参照 [58]。所有这些选择都是为了提高训练稳定性。我们的策略能够在没有 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%),相比之下,[48] 中的 ViT-B 准确率为 81.8%。

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

我们将 Vanilla ViT 适配为 Mask R-CNN [24] 中使用 FPN 主干网络 [32]。ViT 具有一堆 Transformer 块,所有这些块都在一个单一的尺度(例如,步长为 16)上生成特征图。我们将这一堆块均分为 4 个子集,并通过卷积对中间特征图进行上采样或下采样,以产生不同的尺度(步长为 4、8、16 或 32,与标准 ResNet [25] 相同)。FPN 基于这些多尺度特征图构建。

为了在不同方法之间进行公平比较,我们为表 4 中的每个条目(包括所有对比方法)搜索超参数。我们搜索的超参数包括学习率、权重衰减、drop path 率和微调轮数。我们将发布代码及具体配置。有关完整的模型和训练细节以及更多实验,请参见 [31]。

A.4. ADE20K 中的语义分割

我们使用 UperNet [57],并按照 [2] 中的语义分割代码进行训练。我们进行 100 轮的端到端微调,批量大小为 16。我们为表 5 中的每个条目(包括所有对比方法)搜索最优学习率。

[2] 中的语义分割代码使用了相对位置偏差 [44]。我们的 MAE 预训练未使用此项。为了公平比较,我们仅在迁移学习时启用相对位置偏差,且初始化为零。我们注意到,我们的 BEiT 复现使用了相对位置偏差,并在预训练和微调阶段都启用了该功能,参照他们的代码。

A.5. 其他分类任务

对于 iNaturalist 和 Places 的微调(见表 6),我们遵循表 9 中的设置。我们针对每个数据集调整了学习率和微调的轮数。
在这里插入图片描述

B. 线性探测结果对比

在 §4.3 中,我们展示了线性探测准确率和微调准确率之间基本上没有相关性,并且它们对线性可分性的关注点不同。我们注意到,现有的基于掩码的图像编码方法通常在线性探测中不如对比学习等方法有竞争力。为了完整起见,表 12 中对比了基于掩码的方法与线性探测准确率的比较。

我们使用 ViT-L 的 MAE 达到了 75.8% 的线性探测准确率。这显著优于以往的基于掩码的方法。另一方面,在这一协议下,它仍然落后于对比学习方法,例如 MoCo v3 [9] 在 ViT-L 上的线性探测准确率为 77.6%(见图 9)。

在这里插入图片描述
在这里插入图片描述

论文名称:
Masked Autoencoders Are Scalable Vision Learners
论文地址:
https://openaccess.thecvf.com/content/CVPR2022/papers/He_Masked_Autoencoders_Are_Scalable_Vision_Learners_CVPR_2022_paper.pdf

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

全球碳化硅晶片市场深度解析:技术迭代、产业重构与未来赛道争夺战(2025-2031)

一、行业全景:从“材料突破”到“能源革命”的核心引擎 碳化硅(SiC)作为第三代半导体材料的代表,凭借其宽禁带(3.26eV)、高临界击穿场强(3MV/cm)、高热导率(4.9W/cmK&…

AWS Glue ETL设计与调度最佳实践

一、引言 在AWS Glue中设计和调度ETL过程时,需结合其无服务器架构和托管服务特性,采用系统化方法和最佳实践,以提高效率、可靠性和可维护性。本文将从调度策略和设计方法两大维度详细论述,并辅以实际案例说明。 二、调度策略的最…

数据结构手撕--【二叉树】

目录 定义结构体: 初始化: 手动创建一个二叉树: 前序遍历: 中序遍历: 后序遍历 二叉树节点个数: 叶子节点个数: 二叉树第k层节点个数: 二叉树的高度: 查找值为x…

2025 Java 开发避坑指南:如何避免踩依赖管理的坑?

在 Java 开发的世界里,依赖管理就像是一座看不见的桥梁,连接着项目所需的各种第三方库和框架。然而,这座桥梁并非总是稳固,稍有不慎就可能掉入 “依赖地狱”,导致项目编译失败、运行异常。2025 年,随着开源…

用node打开一个网页

前言 使用node打开网页,要求跨平台 方案 使用子进程来用命令行打开网页链接就可以了,需要注意的是Mac系统使用的是open命令,Windows系统使用的是start命令,Linux等系统使用xdg-open命令。针对不同的操作系统使用不同的命令。 封…

使用功能包组织C++节点的具体教程

在 ROS(Robot Operating System)中,使用功能包(package)来组织 C 节点是一种常见且有效的方式,它能让代码结构更清晰、便于管理和复用。 1. 环境准备 确保已经安装了 ROS,这里以 ROS 2 Humble…

二项式分布html实验

二项式分布html实验 本文将带你一步步搭建一个纯前端的二项分布 Monte-Carlo 模拟器。 只要一个 HTML 文件,打开就能运行: 动态输入试验次数 n、成功概率 p 与重复次数 m点击按钮立刻得到「模拟频数 vs 理论频数」柱状图随着 m 增大,两组柱状…

通过 API 对接应用网络商城实现订单自动化

前言 API(Application Programming Interface)即应用程序编程接口,是一种允许不同软件应用程序之间进行交互和数据共享的工具。它通过定义一组明确的规则和协议,使得各个软件系统能够以标准化的方式相互通信。 在支付领域&#x…

openwrt作旁路由时的几个常见问题 openwrt作为旁路由配置zerotier 图文讲解

1 先看openwrt时间,一定要保证时间和浏览器和服务器是一致的,不然无法更新 2 openwrt设置旁路由前先测试下,路由器能否ping通主路由,是否能够连接外网,好多旁路由设置完了,发现还不能远程好多就是旁路由本…

FANUC机器人GI与GO位置数据传输设置

FANUC机器人GI与GO位置数据传输设置(整数小数分开发) 一、概述 在 Fanuc 机器人应用中,如果 IO 点位足够,可以利用机器人 IO 传输位置数据及偏移位置数据等。 二、操作步骤 1、确认通讯软件安装 首先确认机器人控制柜已经安装…

UE5 Assimp 自用

记录一下配assimp库到ue中的过程。因为想在ue里面实现一些几何处理(虽然ue好像有相关的geo的代码),遂配置了一下assimp。 1. 编译整理生成自己所需要的文件。cmake编译,下载github 的官方的assimp-master,然后cmake都是默认的就行…

第18章:MCP在创作领域中的应用

第18章:MCP在创作领域中的应用 创意过程,无论是写作、绘画、音乐创作还是设计,往往充满了不确定性、迭代和灵感的迸发。传统 AI 在创意领域的应用常常局限于风格迁移、简单内容生成等。MCP 框架通过其对记忆、上下文和规划的整合,为 AI Agent 参与和辅助更深层次的创意活动…

电子电子架构 --- 主机厂视角下ECU开发流程

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 简单,单纯,喜欢独处,独来独往,不易合同频过着接地气的生活,除了生存温饱问题之外,没有什么过多的欲望,表面看起来很高冷,内心热情,如果你身…

【Agent】LangManus深度解析:AI自动化框架的对比与langgraph原理

LangManus深度解析:AI自动化框架的技术演进与实践 本文将带你深入探索LangManus这一AI自动化框架的核心技术与其基于langgraph的实现原理,并与OpenManus进行全面对比,助你掌握多智能体系统的前沿技术。 本文3万字,没有时间的话可以…

机器学习-08-推荐算法-案例

总结 本系列是机器学习课程的系列课程,主要介绍机器学习中关联规则 参考 机器学习(三):Apriori算法(算法精讲) Apriori 算法 理论 重点 MovieLens:一个常用的电影推荐系统领域的数据集 23张图&#x…

OpenCV 图形API(63)图像结构分析和形状描述符------计算图像中非零像素的边界框函数boundingRect()

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 计算点集或灰度图像非零像素的 upright(不旋转)边界矩形。 该函数计算并返回指定点集或灰度图像非零像素的最小 upright …

Redis ⑥-string | hash | list

string类型基本介绍 Redis 中的字符串,是直接按照二进制的方式进行存储的。也就是说,在存取的过程中,是不会做任何编码转换的。存的是啥,取的时候就是啥。 Redis 的这个机制,就使得 Redis 非常适合用来存储各种各样的…

星火燎原:大数据时代的Spark技术革命在数字化浪潮席卷全球的今天,海量数据如同奔涌不息的洪流,传统的数据处理方式已难以满足实时、高效的需求。

星火燎原:大数据时代的Spark技术革命 在数字化浪潮席卷全球的今天,海量数据如同奔涌不息的洪流,传统的数据处理方式已难以满足实时、高效的需求。Apache Spark作为大数据领域的璀璨明星,凭借其卓越的性能和强大的功能&#xff0c…

通信算法之273 : 循环自相关函数和自相关函数

一、循环自相关函数定义与计算流程 ‌定义式‌: 循环自相关函数为时间平均自相关函数的傅里叶变换: Rxα(τ)=1T∫−T/2T/2Rx(t+τ2,t−τ2)e−j2παtdtRxα​(τ)=T1​∫−T/2T/2​Rx​(t+2τ​,t−2τ​)e−j2παtdt 其中,Rx(t,τ)Rx​(t,τ) 是信号的自相关函数,α为循…

使用 VMware 安装一台 Linux 系统之Centos

使用 VMware 安装一台 Linux 系统之Centos 想体验一下 Linux 的魅力,又不想在现有电脑上进行大刀阔斧的改动?使用 VMware 虚拟机是一个绝佳的选择。它能让你在 Windows 或 macOS 系统中轻松创建一个独立的 Linux 环境。本文将手把手带你完成从下载 VMwa…