【论文阅读】MAE Masked Autoencoders Are Scalable Vision Learners


前言

受自然语言处理中的BERT的启发,在考虑自然语言和图像之间的区别之后,依据图像的特性提出MAE。MAE对图像随机块进行掩盖,重建缺失像素。它核心设计:1.提出了非对称的编码器和解码器架构2. 遮盖很大比例的输入图像产生一个不显然且很有意义的自我监督任务。
论文:https://arxiv.org/abs/2111.06377
代码:https://github.com/facebookresearch/mae


一、为什么提出MAE?

因为硬件的快速发展,今天的模型可以很轻松地过拟合100万张图像,对数据量的要求增加。这种对数据地偏好在自然语言处理里面通过自监督地预训练得到了很好地解决。
BERT取得了很大的成功,但是在视觉领域自动编码方法地发展要落后于NLP。
what makes masked autoencoding different between vision and language?

  1. 架构不同。卷积中使用掩码的话无法区分边界,我的理解就是卷积对整个图像进行处理,一个滑动窗口在整个图片上运动,得到输出,在卷积那里整个图片是连在一起的。但是随着ViT出现,他处理一个图像的多个patch,每个patch是独立的,可以mask。
  2. 信息密度不同。
  3. 自编码器的解码器,将潜在的表示映射回输入,在重构文本与图像之间扮演了不同的角色。文本解码器预测的词包含丰富的语义信息,视觉中,解码器重构像素,输出的语义级别低于常见的识别任务。

二、MAE Approach

在这里插入图片描述

图像具有非常冗余的信息,MAE遮盖住了大部分的图像,强迫模型学习最特别的信息(很有挑战的自监督任务)。
Masking: 根据ViT将图片划分为规则的非重叠块,采样其子集,掩码剩余的部分。策略:按照均匀分布对随机块进行采样。优点:1.遮盖率很高,创建一个不能通过从可见的邻近块外推来轻松解决的任务。2.均匀分布,防止潜在的中心偏差3. 高度稀疏的输入为设计一个高效的编码器创造机会。
MAE encoder: 编码器只处理可见的图像块,和ViT一样,输入带有位置信息的线性投影的图像块。由于去除了遮盖的块,计算和内存下降。
MAE deocoder: 解码器输入:1.编码的可见图像块 2.遮盖的块。这些遮盖的块是表示成同样的一个向量,这个向量可以通过学习得到。
这个decoder只在预训练的时候使用,可以独立于encoder设计,他们使用轻量级的编码器。用在下游任务的时候用训练好的encoder,encoder中学习到了很多有效的图片特征。
Reconstruction target:MAE通过预测每个掩码块的像素值来重建输出,解码器输出中每个元素都代表一个块的像素值向量。Loss只计算掩码块的MSE Loss。还研究了用归一化像素值作为重建目标,提高了训练质量。
Simple implementation:总的来说,先把原始图像生成token列,一个一个patch过来做一次线性的投影+位置信息。把序列随机打乱去掉后面拿掉。 完成了随机采样放入编码器。编码后,把masked token加到编码后得到浅表示的token里面,使它的长度和原来一样。然后unshuffle还原到原来顺序,加位置信息,作为解码器输入。

总结

视觉中自监督学习可能正走上与NLP中类似的轨迹。图像是没有进行语义分解变成文字的视觉模拟。我们不是移除对象,我们使移出最可能不构成语义段的随机图像块。
在这里插入图片描述
MAE推断复杂的,整体的重建,表明它已经学会了许多视觉概念,即语义。我们假设这种行为是通过MAE内部丰富的隐藏表征发生的。我们希望这一视角对未来的工作有所启发。
模型是基于训练集来预测,会反映数据中的偏差,此外该模型可能生成不存在的内容。

沐神的视频:
MAE对ViT有两个改进,ViT说过就是移到BERT中效果不是很好

  1. 遮住了更多的图像块(很强的数据增强方法,文章中写道1600轮性能还可以提高,换个说法这个1600轮这个模型还没有收敛,新的想法,①是不是可以考虑别的数据增强)
  2. ViT当时用了一个线性层输出,他觉得线性层直接输出为图片跨度太大,改进用Transformer输出。(MAE是用的ViT架构,作者也说了可以用其他新的架构试试新的想法,②new model)
    还有新的想法③是不是可以用新的loss。

MAE后续工作:https://zhuanlan.zhihu.com/p/528720386

猜你喜欢

转载自blog.csdn.net/goodenough5/article/details/129702375