论文:Masked Autoencoders Are Scalable Vision Learners
别再无聊地吹捧了,一起来动手实现 MAE(Masked Autoencoders Are Scalable Vision Learners) 玩玩吧! - 知乎
本文是2021.11.11发布在Arxiv上的文章,主要工作是在Vision Transformer基础上,引入自监督训练,跟BERT一样通过完形填空来获取对于图片的理解,相当于将BERT应用到CV领域,把整个训练拓展到没有标号的数据上面。最终MAE只需要Vision Transformer百分之一规模的数据集上预训练,就能达到同样的效果。而且在目标检测、实例分割、语义分割等任务上,效果都很好。
1 标题
masked autoencoder are scalable vision learners:带掩码的自编码器是一个可拓展的视觉学习器
- scalable:可拓展的
- vision learner:这里没有写成classifier或者其他的东西,因为它能够用到的地方相对广一些,他是一个backbone模型
- masked:masked来源于BERT,每次挖掉一些东西然后去预测被挖掉的东西
- autoencoder:这里的auto不是自动的意思,而是“自”的意思,标号和样本(y和x)来自于同一个东西。在NLP中,大家都是可以理解的,但是在计算机视觉中,图片的标号很少来自图片本身,所以作者在这里加上了auto,意在指出和计算机视觉中其他的encoder相比,这里的标号也就是图片本身,这样能跟之前的很多工作区分开来
2 摘要
MAE的实现路径非常简单,随机地盖住图片中地一些块(patches),然后再去重构这些被盖住的像素(the missing pixels),这个思想来自于BERT中的带掩码的语言模型。
2.1 两个核心的设计
通过一下两个设计,MAE可以更高效地训练大的模型
1 非对称的encoder-decoder架构
实际上任何模型都有一个编码器和一个解码器,比如说在BERT中的解码器就是最后一个全连接输出层,因为BERT预测的东西相对来讲比较简单,所以它的解码器就是一个简单的全连接层就可以了,但是本文中可能相对复杂一点,因为需要预测一个块中所有的像素。
- 编码器只作用在可见的patch中,对于丢掉的patch,编码器不会对它进行编码,这样能够节省一定的计算时间
- 解码器是一个比较轻量的解码器,拿到编码器的输出之后,重构被遮挡住的块
2、遮住了大量的块(比如说把75%的块全部遮住),迫使模型去学习一些更好的特征,从而得到一个较好的自监督训练效果。如果只是遮住几块的话,只需要进行插值就可以出来了,模型可能学不到特别的东西。编码器只需要编码1/4大小的图片,可以降低计算量,训练加速3倍或者以上
结果:最终作者只使用一个最简单的ViT-Huge模型(模型来自ViT这篇文章),在ImageNet-1K(100万张图片)上预训练,精度也能达到87.8%
在ViT这篇文章的最后一段有提到过怎样做自监督学习,作者说效果并不是很好,结论是:用有标号的模型和更大的训练集可以得到很好的效果。本文亮点是,只使用小的数据集(ImageNet-1k,100万张图片),而且是通过自监督,就能够做到跟之前可能效果一样好的模型了。
这个模型主要是用来做迁移学习,它证明了在迁移学习的其他任务上表现也非常好