Masked Autoencoders Are Scalable Vision Learners
作者:
He, Kaiming and Chen, Xinlei and Xie, Saining and Li, Yanghao and Doll{\'a}r, Piotr and Girshick, Ross
链接:CVPR 2022 Open Access Repository
代码(非官方):https://github.com/pengzhiliang/MAE-pytorch
深度学习架构的学习能力和容量不断增长,但对有标签的图片的需求不断增加——自然语言处理中需要大量的数据,用自监督学习方法来解决数据需求问题——BERT语言处理模型中提出的掩膜自编码技术masked autoencoding,即移除一部分数据并学习去预测移除的文本——掩膜自编码器masked autoencoders,即一种去噪的自编码器
本文作者想要去探究,什么导致了掩膜编码在视觉图像和文本上的不同表现:(i)架构的不同,即卷积神经网络和ViT的不同(ii)图像和文本的数据稠密程度不同——为了让模型学习到更强的语义信息,引入了掩膜操作。(iii)在文本和图像重构的过程中,自编码器中的解码器起到的作用并不相同——在对图像处理的过程中,解码器的设计非常重要,决定了学到的潜在特征的表达水平
本文提出的掩膜自编码器(masked autoencoder ,MAE) ,给输入的图像随机打上补丁,然后在像素空间中对缺失的图块进行重构。MAE用一个不对称的编码器——解码器设计,编码器仅对图块的可见子集进行操作(在没有掩膜标记的情况下),解码器则是一个轻量级的设计,在有掩膜标记的情况下对潜在表达重构为输入的图片,见图1所示。
这个重构过程的计算消耗是非常高的。于是,选择高的掩膜率(比如,75%),可以得到比较好的结果,优化了精度,同时允许编码器只处理一小部分(比如,25%)的图块。
掩膜语言模型
自编码
掩膜图像编码
自监督学习
MAE是一个简单的自编码器方法,输入部分的观察数据,将原始信号进行重构出来。与其他的自编码器相似,MAE使用一个编码器将观察到的信号映射到一个潜在的特征表达,然后用解码器将潜在的特征表达重构成原始的输入信号。与传统自编码器不同,MAE使用了一个非对称的编码器结构,使得编码器可以只对部分图块进行处理,然后用一个轻量级解码器对原始信号进行一个重构。如图1所示。
与ViT相似,将输入的图像分割成不重叠的图块。从图块中选择一个子集,然后将剩余的图块用掩膜掩盖起来。抽样策略很简单:按照均匀分布的方式随机抽样,不进行替换,称之为“随机抽样”。
高掩膜率的随机采样,极大程度的减少了计算负担,于是创造了一个不能依靠邻居图块而简单的推理原始图像的任务。平均分布避免了潜在中心偏置(即,大多数掩膜存在于中心位置)。高度稀疏的输入图像,使得可以设计一个高效的编码器。
MAE的encoder是一个ViT,但是只应用在可观察到的没有被掩盖的图块上。仅仅使用一个标准的ViT,编码器将会通过一个带有潜在编码的线性映射对图块进行一个编码,最后用一系列Tansformer blocks对得到的结果集合进行处理。编码器只对全集的一个子集(25%)进行操作。掩盖的图块将会被移除,没有任何的掩膜标记会被使用。这使得我们可以只用一小部分的计算和内存来训练非常大的编码器。
MAE的decoder的输入是一整组tokens,由以下内容组成(i)编码后的可见图块(ii)掩膜tokens。如图1所示,每一个掩膜的标签都是共享的,表示待预测缺失的图块的学习向量。对全部的token标签添加了位置编码;没有这的话,掩膜将会无法携带图片的位置信息。解码器中有一些列的Transformer blocks。
解码器只有在预训练的过程中,对图像进行重构的情况下才使用。因此,解码器的设计是动态的,与编码器的设计是相互独立的。
MAE通过预测每一个掩膜处的像素值来对输入数据进行一个重构。解码器输出的每一个元素,是代表一个图块的像素值的向量。解码器的最后一层是一个线性投影器linear projector,投影器的输出维度与每个图块的像素值个数相同。解码器的输出会进行一个reshape,以适应输入图像的尺寸。使用均方误差MSE来衡量原始图像和重构图像的差异。
本文还研究了一种以每个掩模块的归一化像素值为重建目标的变体。即,对图块中的所有像素计算均值和标准差,然后对图块进行一个归一化。使用归一化的像素作为重构目标会提升模型效果。
MAE的预训练可以有效地实施,重要的是,不需要任何专门的稀疏操作。首先,对每一个图块生成一个对于的token标签。然后,对token的列表进行基于掩膜率的随机打乱。这个过程会生成一组小的token子集,并且与无替换的图块采样是等价的。编码过程,对编码过后的图块列表添加一个列表的掩膜token,并且做一个打乱的逆操作,将token与其对应的目标进行对齐。解码器对全局列表进行操作。值得注意的是,不需要使用稀疏操作。这个简单的实现引入的开销可以忽略不计,因为打乱和反打乱操作非常快。
掩膜率
解码器的设计
掩码token
重构目标
数据增广
掩膜采样策略
使用了一个非对称的自编码器设计,编码器是ViT,解码器是一个浅层模型,这种不对称的设计还是非常新颖的,还有将mask作为一个任务的思想。
(1)This appetite for data has been successfully addressed in natural language processing (NLP) by self-supervised pretraining.