Masked Autoencoders

研究背景

我们之前介绍了 ViT(传送门),在 ViT 模型中我们也知道了他想要有超过 CNN 的效果的话就需要在超大数据集上进行预训练,在 ImageNet 1K 的效果其实并没有 ResNet 好。这样的话,如果我们需要重新对 ViT 进行训练的话,他的效率是不高的。于是这篇 MAE 在 ViT 的方法上进行了优化,让我们能够在 ImageNet 1K 上也取得较好的效果。当然我们也可以简单的把 MAE 理解为 CV 界的 BERT 模型。下图就简单的介绍了 MAE 的操作是怎么样的。
Masked Autoencoders

问题

深度学习在 CV 领域中由于硬件的快速增长,现有的模型很容易在一百万张图片的数据集中出现过拟合的现象,并且开始需要数亿张带有标记的数据,但是这些数据通常是不会进行公开的,比如 ViT 预训练的 JFT-300M 数据集。对于数据集获取难的问题,我们首先想到的是不是可以使用自监督的方法,毕竟这就是在 NLP 中解决的方法,BERT 中的掩码自动编码器,他们就是删除了一部分数据并学习预测删除的内容,这就可以训练包含超过1000亿个参数的可泛化 NLP 模型。那 CV 领域中能否使用这种屏蔽自编码器的架构呢,当然是可以的,但是 CV 和 NLP 领域之间的掩码自动编码有什么不同呢,主要是有以下几个方面。

架构不同

CV 的架构在过去十年中都是卷积网络占据主导地位,而卷积网络通常都是在规则的网格上运行。但是这种情况下怎么去对掩码位置信息进行表示呢,由于 NLP 中掩盖的是以词为单位,一个词就是一个单位,但是在图像中的话,CNN 是不断的移动的,没有办法进行掩码的表示。当然在 ViT 出来以后,这个架构的差距就已经得到解决了。

信息密度不同

语言是人类生成的具有高度语义和信息密集度的信号,所以当我们训练一个模型去预测每个句子中的缺失词的时候,模型可以很好的训练复杂的语言理解。相反,图像中是具有大量的空间冗余的自然信号–比如可以通过从相邻的块中恢复删除的部分块,而并不需要去理解整张图像的全局信息。但是 MAE 中就提出了随机出大部分的块,将他们都进行掩码操作,这样的话就可以让模型能够通过全局的信息将图像还原,很大程度上面减少了冗余。下图就是论文中还原的图像效果,我们可以感觉的出来,还原的效果还是不错的,而且75%的掩码率的情况下还原情况还是比较好的。
Masked Autoencoders

重建文本和图像不同

在视觉中,解码器重建像素,其输出的语义级别上低于普通的识别任务的,但是在语言中,解码器预测包含了丰富的语义信息的缺失词。所以在 BERT 模型和 ViT 模型中最后只是使用了一个简单的 MLP ,但是 MAE 的论文中我们需要使用到解码器来对像素进行重建。

方法

而 MAE 是从输入图像中屏蔽了随机的块,并通过 Transformer 模块重建像素空间中缺失的块,他具有非对称编码器-解码器设计。编码器只对那些没有掩码标记的块进行操作,将观察到的图像信号映射到潜在表示,而解码器只是一个轻量级的解码器(如同 BERT 中的 MLP 是一样的),用来通过潜在表示和掩码标记重建图像。当然我们真正去使用 MAE 的时候就只需要编码器就可以提取出潜在表示用于后续的工作。

Masking

通过 ViT 我们知道可以将图像划分为规则的非重叠块。然后对块进行随机采样,将得到的子集进行屏蔽。由于 MAE 具有很高的屏蔽率,在一定程度上消除了冗余,从而创建了一个无法简单通过相邻可见块推断来轻松解决的任务。并且均匀分布防止了潜在的中心偏差(即图像的中心附近会有更多的屏蔽块)。

MAE encoder

MAE 的编码器上一个只作用于可见未屏蔽块的 ViT,和标准 ViT 中一样,MAE 的编码器通过添加位置嵌入来添加位置信息,然后通过一系列的 Transformer 块处理。但是和 ViT 不一样的是,MAE 的编码器只会对整个集合的一小部分(25%)的数据进行操作。这样的话我们就可以仅使用一小部分的计算资源来训练非常大的编码器。

MAE decoder

而 MAE 的解码器的输入是一个完整的图像 Token 集合(包含了可见未屏蔽的块和 Mask Token),MAE 的解码器将整个集合中的所有标记都加上位置嵌入。然后解码器也是另一系列的 Transformer 模块。
然而 MAE 解码器仅在预训练期间用于执行图像重建任务。由于 MAE 是独立于编码器设计的解码器架构,所以可以使用轻量级的编码器进行预训练,这样就显著减少了预训练的时间。最后使用一个线性投影,将其的输出通道数等于块中的像素数量,最后 reshape 成图像大小。MAE 对像素空间中的重建像素和原始像素之间使用均方误差(MSE)进行计算。

消融实验

MAE 论文的作者进行了几组消融实验:
Masked Autoencoders

Masking ratio

通过下图我们可以发现在不同的遮蔽率下准确是有所不同的,在75%的遮蔽率下我们可以发现不论是微调还是线性探测都能得到较好的成绩。然后我们可以发现线性探测和微调对于遮蔽率遵循着不同的趋势。对于线性探测(只调最后一层)我们可以发现,准确率随着遮蔽率的增加稳步上升。但是对于微调,准确率对遮蔽率并不敏感,对于所有的遮蔽率都有很好的效果,在40%-80%都能得到比较好的效果。
Masked Autoencoders

Mask token

在论文中,我们可以发现在编码器的架构中 MAE 是没有使用 Mask token 的,通过下图我们可以发现当在编码器中使用了 Mask token 的话,他的效果会更差,并且训练速度大大减少,对于 75% 的遮蔽率来说加速可以大于4倍的,原因就是自注意力机制复杂度是O(n^2)的。并且由于内存大大减小,MAE 就可以训练更大的模型或者是通过大批量训练加快训练速度。
Masked Autoencoders

Data augmentation

通过下图我们可以得知在随机大小裁剪的时候效果最好,加入颜色抖动后会使效果降低。并且我们可以看到不进行任何数据增强他的效果也是很好的,所以 MAE 并不会依赖于数据增强。
Masked Autoencoders

Mask sampling strategy

从下图我们可以得知简单的随机采样的效果是最好的,并且允许更高的遮蔽率,不仅提供了更大的加速优势,还有较好的准确性。
Masked Autoencoders

总结

其实 MAE 的思想其实是很简单的,就是利用 ViT 在 CV 中去实现 BERT 一样的自监督模式,并且通过 Transformer 架构的解码器去直接还原原始的像素信息,简化流程,最后能在 Image-1K 的数据集上使用自监督学习取得了比之前更好的效果。这样的话就让我们能够思考如何使用 Mask 去得到更快的训练速度以及更加丰富的数据集去应用于 CV 领域。

上一篇:超越CNN的ViT模型及其应用前景


下一篇:iBOT:使用在线Tokenizer对图像进行BERT式预训练