【ICCV 2022】(MAE)Masked Autoencoders Are Scalable Vision Learners

news/2024/7/7 18:26:13

何凯明一作文章:https://arxiv.org/abs/2111.06377


本文的出发点:是BERT的掩码自编码机制:移除一部分数据并对移除的内容进行学习。mask自编码源于CV但盛于NLP,恺明对此提出了疑问:是什么导致了掩码自编码在视觉与语言之间的差异?尝试从不同角度进行解释并由此引申出了本文的MAE。

恺明提出一种用于计算机视觉的可扩展自监督学习方案Masked AutoEncoders(MAE)。所提MAE极为简单:对输入图像的随机块进行mask并对遗失像素进行重建。它基于以下两个核心设计:

  • 我们设计了一种非对称编解码架构,其中解码器仅作用于可见块(无需mask信息),而解码器则通过隐表达与mask信息进行原始图像重建;
  • 我们发现对输入图像进行高比例mask(比如75%被mask掉)可以产生一项重要且有意义的自监督任务。

上述两种设计促使我们可以更高效的训练大模型:我们加速训练达3x甚至更多,同时提升模型精度。所提方案使得所得高精度模型具有很好的泛化性能:仅需ImageNet-1K,ViT-Huge取得了87.8%的top1精度 。下游任务的迁移取得了优于监督训练的性能,证实了所提方案的可扩展能力。

整体架构:

图 1:我们的 MAE 架构。

1、在预训练期间,图像patches 的大量随机子集(例如 75%)被mask。

2、Encoder应用于可见patches的小子集。

3、将encoder后的所有patches masked tokens由小型decoder处理,该解码器以像素为单位重建原始图像。

4、预训练后,decoder被丢弃,encoder应用于未损坏的图像(完整的patches)以进行识别任务。

方法:

我们的MAE是一种简单的自动编码方法,可以在给定部分观察的情况下重建原始信号。与所有AE一样,我们的方法具有将观察到的信号映射到 latent representation 的encoder,以及从 latent representation 重建原始信号的decoder。与经典AE不同,我们采用非对称设计,允许编码器仅对部分观察到的信号(没有掩码标记)进行操作,并采用轻量级解码器,从 latent representation 和 mask tokens 中重建完整信号。图 1 说明了接下来介绍的想法。

Masking

我们的采样策略非常简单:服从均匀分布的无重复随机采样 。我们将该采样策略称之为“随机采样”。具有高掩码比例的随机采样可以极大程度消除冗余,进而构建一个不会轻易的被近邻块推理解决的任务。而均匀分布则避免了潜在的中心偏置问题。【提升自监督学习任务的难度

MAE Encoder

编码器用于生成用于:encoder image + 识别的完整图像的representations 

MAE中的编码器是一种ViT,但仅作用于未被Mask的块。类似于标准ViT,该编码器通过线性投影于位置嵌入对块进行编码,然后通过一系列Transformer模块进行处理。然而,由于该编解码仅在未mask的patches(比如25%)进行处理。这就使得我们可以用很小的计算资源训练一个非常大的编码器 。

MAE Decoder:

 MAE解码器的输入包含:(1) encoded visible patches;(2) mask token。如Figure1所示,每个mask token共享的可学习向量,它用于指示待预测mask块。我们还会对所有token添加位置嵌入信息。解码器同样包含一系列Transformer模块。

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

Reconstruction target

基本:我们的 MAE 通过预测每个mask patch的像素值来重建输入。解码器输出中的每个元素是vector of pixel values representing a patch。解码器的最后一层是线性投影,其输出通道的数量等于patch 中像素值的数量。decoder的输出从a reconstructed image被reshaped。我们的损失函数计算像素空间中重建图像和原始图像之间的均方误差(MSE)。我们仅在mask patches上计算损失,类似于 BERT [14](计算所有像素的损失会导致精度略有下降)。

变体:我们还研究了一种变体,其重建目标是每个masked patch的归一化像素值。具体来说,我们计算补丁中所有像素的平均值和标准差,并使用它们来标准化该 patch。使用归一化像素作为重建目标可以提高我们实验中的表示质量。

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.
我们的 MAE 预训练可以高效地实施,而且重要的是,不需要任何专门的稀疏操作(sparse operations)。

首先,我们为每个输入 patch 生成一个 token(通过添加位置嵌入的线性投影)。

接下来,我们根据 masking ratio 随机打乱 token 列表并删除列表的最后部分。此过程为编码器生成一小部分tokens ,相当于对不带替换的patches进行采样。

编码后,我们将掩码令牌列表附加到编码补丁列表中,并取消对这个完整列表的洗牌(反转随机洗牌操作)以使所有令牌与其目标对齐。解码器应用于此完整列表(添加了位置嵌入)。如前所述,不需要稀疏操作。由于洗牌和解洗操作速度很快,这种简单的实现引入的开销可以忽略不计。

何恺明最新一作:简单实用的自监督学习方案MAE,ImageNet-1K 87.8%! - 知乎

文献阅读:MAGE: MAsked Generative Encoder to Unify Representation Learning and Image Synthesis-CSDN博客


http://lihuaxi.xjx100.cn/news/1898645.html

相关文章

【手撕算法系列】BN

BN的计算公式 BN中均值与方差的计算 所以对于输入x: b,c,h,w 则 mean: 1,c,1,1var: 1,c,1,1代码 class BatchNorm(nn.Module):def __init__(self, num_features, num_dims):# num_features&#xff1a;完全连接层的输出数量或卷积层的输出通道数。# num_dims&#xff1a;2表示…

电子元器件介绍——电容(二)

电子元器件 文章目录 电子元器件前言2.1 电容的基本知识2.2 电容的等效电路2.3 电容的分类2.4电容的特性参数2.5电容的作用旁路&#xff08;去耦&#xff09;高低通滤波 2.6 两端电容2.7电容的失效 总结 前言 这节我们介绍电容。 2.1 电容的基本知识 电容器是一种能储存电荷…

docker-compose的介绍与使用

一、docker-compose 常用命令和指令 1. 概要 默认的模板文件是 docker-compose.yml&#xff0c;其中定义的每个服务可以通过 image 指令指定镜像或 build 指令&#xff08;需要 Dockerfile&#xff09;来自动构建。 注意如果使用 build 指令&#xff0c;在 Dockerfile 中设置的…

图书管理系统jsp + servlet+mysql

图书管理系统 项目使用jsp servletmysql实现&#xff1b; 登陆注册 首页 首页显示图书信息 图书管理 1添加书籍 2查询书籍 3预览书籍 4修改书籍 用户管理 1查询用户 2修改用户 3 删除用户 链接&#xff1a;https://pan.baidu.com/s/1QXK--ypb6OadbmKFlc0jUQ

ios苹果app应用程序录屏开发有哪些难点和注意点?

Hello&#xff0c;各位同学们好&#xff0c;我是咕噜铁蛋&#xff0c;老朋友们应该知道我经常关注并分享各种移动应用开发的技术和经验。在这篇文章中&#xff0c;铁蛋将为大家介绍分享苹果iOS录屏开发的难点和注意点&#xff01; 首先&#xff0c;让我们简单了解一下iOS录屏的…

FC-13A(用于汽车应用的kHz范围晶体单元,低轮廓贴片)

FC-13A晶体非常适合用在汽车导航系统设计中的应用&#xff0c;是一种具有优异的频率性能和AEC-Q200标准认证的汽车工业级高精度晶体,FC-13A是一款尺寸为3.2 1.5 0.9mm&#xff0c;频率范围32.768KHz耐高温晶振&#xff0c;频率温度系数仅为-0.04ppm/℃&#xff0c;并且其老化…

springboot 学习网站

Spring Boot 系列教程https://www.docs4dev.com/ Spring Boot 教程汇总 http://www.springboot.wiki/ Spring Cloud 微服务教程 http://www.springboot.wiki/ 1、自定义banner   https://www.cnblogs.com/cc11001100/p/7456145.html 2、事件和监听器   https://blog.csd…

“Kubernetes完全解析:从初学者到专家”

K8S已经成为容器编排和管理的标准&#xff0c;并且已经在各行各业中广泛应用&#xff0c;随着云计算&#xff0c;微服务和DevOps的进一步发展&#xff0c;它已经成为未来的趋势&#xff0c;那么如何快速入门K8s呢&#xff1f;下面我们快速对K8s进行入门。 1、容器技术概念&…