Masked Autoencoders (MAE)
掩码自编码器会遮盖大部分图像块,并训练网络重建缺失像素,从而无需标签即可学习特征。包含掩码代码。
掩码自编码器(MAE)是一种用于图像的自监督学习方法:模型会随机隐藏图像中很大一部分图像块(通常为 75%),并学习根据其余可见部分重建缺失像素。Meta AI 的 Kaiming He 及其同事在 2021 年的论文 Masked Autoencoders Are Scalable Vision Learners 中提出了这种方法,将 BERT 的掩码词预测改用于视觉 Transformer。由于编码器只处理可见图像块,MAE 预训练的速度至少比处理所有图像块快 3 倍;通过这种方式预训练的 ViT-Huge 模型在 ImageNet 上达到 87.8% 的准确率,在当时仅使用 ImageNet-1K 数据的方法中表现最佳。预训练后的编码器随后可作为分类、检测和分割任务的主干网络。
掩码自编码器的工作方式#
MAE 会将图像划分为互不重叠的图像块网格;对于 224x224 的输入,网格包含 196 个 16x16 像素的图像块,然后随机隐藏其中大部分。它的编码器和解码器经过有意设计,规模并不对等。作为标准 ViT 的编码器只处理可见图像块,因此计算量和内存占用降至约四分之一。默认情况下,轻量级解码器包含 8 个 Transformer 块,每个 token 的计算量不到编码器的 10%;它接收编码后的可见图像块,以及用于每个隐藏位置的共享可学习掩码 token,并预测每个隐藏图像块的像素值。损失函数只计算隐藏图像块上的均方误差;将按图像块归一化的像素用作目标,还能进一步提升学到的特征。预训练结束后,解码器会被丢弃:
高掩码率正是这项任务发挥作用的关键。相邻图像块之间存在大量冗余,因此只隐藏少数图像块时,模型可以通过邻近区域插值来填补每个空缺。隐藏 75% 的图像块后,模型必须根据碎片推断完整的物体和场景,这会促使模型学习形状、部件和上下文。相比之下,BERT 只会屏蔽 15% 的词,因为每个词本身已经承载丰富的含义。
MAE 的核心是其掩码步骤,下面用一个包含四张图像的批次通过 PyTorch 展示:
import torch
torch.manual_seed(0)
images = torch.rand(4, 3, 224, 224) # a batch of 4 RGB images
# Patchify: each 224x224 image becomes 196 patches of 16x16 pixels, flattened to 768 values
patches = images.unfold(2, 16, 16).unfold(3, 16, 16).permute(0, 2, 3, 1, 4, 5).reshape(4, 196, 768)
# Random masking as in the MAE reference code: rank patches by random noise and keep the first 25%
keep = int(196 * (1 - 0.75))
ids_keep = torch.argsort(torch.rand(4, 196), dim=1)[:, :keep]
visible = torch.gather(patches, 1, ids_keep.unsqueeze(-1).expand(-1, -1, 768))
# Mask of hidden patches (1 = hidden): the decoder predicts these, and the loss is averaged over them only
mask = torch.ones(4, 196).scatter(1, ids_keep, 0)
print(f"Encoder input: {visible.shape[1]} of {patches.shape[1]} patches per image")
print(f"Reconstruction targets: {int(mask[0].sum())} hidden patches per image")它会输出 Encoder input: 49 of 196 patches per image 和 Reconstruction targets: 147 hidden patches per image。因此,编码器的 Transformer 层处理的序列长度只有整张图像的四分之一;由于注意力会比较每个 token 与其他所有 token,单个注意力分数矩阵的大小只有处理全部 196 个图像块时的十六分之一。
结果与变体#
MAE 特征在微调后表现最出色。采用线性探测时,使用 MAE 预训练的 ViT-L 编码器在 ImageNet 上达到 73.5% 的准确率,低于对比学习方法;但经过微调并迁移到 COCO 上进行目标检测和分割时,MAE 预训练的表现优于监督式预训练。这套方法已成功扩展到静态图像之外:VideoMAE 会遮蔽视频片段中 90% 或更多的时空图像块,SatMAE 在卫星影像上进行预训练,而 ConvNeXt V2 则通过稀疏卷积将掩码自编码引入卷积网络。
掩码预训练也是广泛应用的基础模型的底层技术之一。Meta 的 Segment Anything Model(SAM)在 Ultralytics 软件包中运行,其图像编码器基于 MAE 预训练的 ViT 构建;其 ViT-B 版本 sam_b.pt 是 Ultralytics auto_annotate 中默认的掩码模型,可将 YOLO26 检测器的边界框转换为分割标签。
掩码自编码器与相关术语#
- 自编码器:将整个输入压缩成一个小型编码,再将其重建。MAE 接收不完整的输入,必须预测从未看到的部分;其编码器输出会为每个可见图像块保留一个向量。
- 掩码图像建模:MAE 所属的更广泛方法类别。BEiT 会为被掩码的图像块预测离散视觉 token,SimMIM 会将掩码 token 输入编码器,而 MAE 预测像素,并且不会将掩码 token 输入编码器。
- 对比学习:通过匹配同一图像的不同增强视图进行学习,无需解码器,生成的特征在冻结状态下效果更好;而 MAE 特征经过微调后提升更明显。
- 联合嵌入预测架构(JEPA):同样会隐藏图像区域,但预测的是这些区域的嵌入,而非像素,因此模型不会将容量浪费在纹理细节上。










