Masked Autoencoders Are Scalable Vision Learners
耦合这两种设计使本文能够高效地训练大型模型:加速了训练(3倍或更多)并提高了准确性。本文的可扩展方法允许学习泛化能力良好的高容量模型:例如,在仅使用ImageNet-1K数据的方法中,vanilla ViT-Huge模型实现了最好的准确性(87.8%)。下游任务中的传输性能优于有监督的预训练,并显示出有希望的缩放行为。
非对称结构。编码部分仅处理(随机抽样)未被mask的patch;解码部分为轻量级网络,用于将解码输出的表征和mask token进行重构。
Mask ratio可高达75%,是个有趣的自监督任务。
在 ImageNet 上使用一种基于 ViT 的 Encoder-Decoder 结构,预测图像中被随机抹除的部分; 然后在下游任务中使用 Encoder 部分作为 backbone 取得了非常显著的性能提升。 它的优点是:
MAE的输入遵循 ViT,论文将图像划分为规则的非重叠patches。 然后对patches的子集进行采样并屏蔽(即删除)剩余的patches。 采样策略很简单**:按照均匀分布对随机patches进行采样,无需替换**。 简单地将其称为“随机抽样”。
具有高掩码率(即移除补丁的比率)的随机采样在很大程度上消除了冗余,从而创建了一项无法通过从可见相邻patches外推来轻松解决的任务。 均匀分布可防止潜在的中心偏差(即,图像中心附近有更多的掩码patches)。 最后,高度稀疏的输入为设计高效编码器创造了机会。
Introduction
位置编码最好具有一定的值域范围,使用文本长度对每个位置作归一化,得到 P E = p o s T − 1 PE=\frac{pos}{T-1} PE=T−1pos。所有位置编码都落入[0,1]区间,但是问题也是显著的:不同长度文本的位置编码步长是不同的,在较短的文本中紧紧相邻的两个字的位置编码差异,会和长文本中相邻数个字的两个字的位置编码差异一致。
位置编码最核心的就是相对次序关系,尤其是上下文中的次序关系,如果使用这种方法,那么在长文本中相对次序关系会被稀释。
位置编码的需求:
- P E ( p o s ) = s i n ( p o s α ) PE(pos)=sin(\frac{pos}{\alpha}) PE(pos)=sin(αpos),其中 α用来调节位置编码函数的波长,当 α比较大时,波长比较长,相邻字的位置编码之间的差异比较小。
- 如果α 比较大,相邻字符之间的位置差异体现得不明显;如果α 比较小,在长文本中还是可能会有一些不同位置的字符的编码一样,这是因为[-1,1]空间的表现范围有限。
- 既然字嵌入的维度是 d m o d e l d_{model} dmodel ,自然也可以使用一个 d m o d e l d_{model} dmodel维向量来表示某个位置编码 [ − 1 , 1 ] d m o d e l [-1,1]^{d_{model}} [−1,1]dmodel的表示范围要远大于[-1,1]。
- 在不同维度上应该用不同的函数操纵位置编码,这样高维的表示空间才有意义。
位置编码将位置信息注入到输入里,本文使用不同频率的正弦、余弦函数。
- P E ( p o s , 2 i ) = s i n ( p o s 1000 0 2 i d m o d e l ) P E ( p o s , 2 i + 1 ) = c o s ( p o s 1000 0 2 i d m o d e l ) PE(pos,2i)=sin(\frac{pos}{10000^{\frac{2i}{d_{model}}}})\\ PE(pos,2i+1)=cos(\frac{pos}{10000^{\frac{2i}{d_{model}}}}) PE(pos,2i)=sin(10000dmodel2ipos)PE(pos,2i+1)=cos(10000dmodel2ipos)
这里不同维度上sin/cos的波长从 2Π 到 1000·Π都有;区分了奇偶数维度的函数形式。这使得每一维度上都包含了一定的位置信息,而各个位置字符的位置编码又各不相同。
首先,它不是一个单一的数值,它是关于句子中一个特定位置信息的d维的向量。
其次,这种编码没有集成到模型本身上。相反,这个向量用于给每个单词分配一个有关其在句子中位置的信息。换句话说,PE只和输入有关,而和模型无关。
语言和视觉的信息密度是不同的。语言是人类产生的信号,具有高度的语义和信息密度。当训练一个模型来预测每句话中只有几个缺失的单词时,这项任务似乎会诱发复杂的语言理解。相反,图像是具有大量空间冗余的自然信号,例如,丢失的补片可以从相邻的补片恢复,而几乎不需要对部件、对象和场景的高级理解。为了克服这种差异,并鼓励学习有用的特征,本文作者证明了一个简单的策略在计算机视觉中很有效:非常高比例的随机掩蔽补丁。这种策略极大地减少了冗余,并创建了一个具有挑战性的自我监督任务,该任务需要超越低级图像统计的整体理解。为了对重建任务有一个定性的了解,请看下面3张图。
- ImageNet验证图像的示例结果。对于每组的三幅图片,显示了掩蔽图像(左)、MAE重建(中)和ground-truth(右)。屏蔽率为80%,196个补丁中只剩下39个,重建出来的结果还是符合语义约束的。由于没有计算可见补片上的损失,可见补片上的模型输出在质量上更差。人们可以简单地用可见补丁覆盖输出以提高视觉质量。本文有意选择不这样做,这样可以更全面地展示方法的细节。
- COCO验证图像的示例结果,使用在ImageNet上训练的MAE(与上图中的模型权重相同)。观察最右边两个例子中的重构,虽然与ground-truth不同,但在语义上似乎是合理的。
- 使用以75%的掩蔽率预训练的MAE重构ImageNet验证图像,但是应用于具有更高掩蔽率的输入。预测结果与原始图像大相径庭,表明该方法有一定泛化能力。
自动编码器的解码器将潜在表示映射回输入,在重建文本和图像之间扮演不同的角色。在视觉中,解码器重建像素,因此其输出的语义级别低于普通识别任务。这与自然语言相反,在语言中,解码器预测包含丰富语义信息的缺失单词。虽然在BERT中,解码器可能是微不足道的(MLP) ,但本文工作发现,对于图像,解码器设计在确定所学习的潜在表示的语义级别方面起着关键作用。
在这种分析的驱动下,提出了一种简单、有效、可扩展的用于视觉表征学习的掩码自动编码器(MAE)。MAE从输入图像中屏蔽随机碎片,并在像素空间中重建丢失的碎片。它有一个不对称的编解码器设计。本文的编码器只对可见的补丁子集进行操作(没有掩码标记),本文的解码器是轻量级的,可以从潜在表示和掩码标记一起重建输入(下图)。
- MAE框架。在预训练期间,图像补片的大的随机子集(例如,75%)被屏蔽掉。编码器应用于可见补丁的小子集。在编码器之后引入遮罩标志,并且由以像素为单位重构原始图像的小型解码器来处理全套编码的补丁和遮罩标志。在预训练之后,解码器被丢弃,并且编码器被应用于未被破坏的图像(完整的补丁集合)用于识别任务。
在本文的非对称编码器-解码器中,将掩码标记转移到小解码器导致计算量的大幅减少。在这种设计下,非常高的屏蔽率(例如,75%)可以实现双赢的情况:它优化了准确性,同时允许编码器仅处理一小部分(例如,25%)补丁。这可以将总体预训练时间减少3倍或更多,并同样减少内存消耗,能够轻松地将本文的MAE扩展到大型模型。
MAE学习泛化能力非常高的模型。通过MAE预训练,可以在ImageNet-1K上训练像ViT-Large/-Huge 这样的数据匮乏模型,并提高泛化性能。对于一个普通的ViT-Huge模型,当在ImageNet-1K上进行微调时,达到了87.8%的准确率。这优于所有以前仅使用ImageNet-1K数据的结果。
还评估了对象检测、实例分割和语义分割的迁移学习。在这些任务中,本文的预训练取得了比监督预训练更好的结果,更重要的是,通过放大模型观察到了显著的收益。这些观察结果与NLP中的自我监督预训练中所见证的一致,希望它们将使视觉领域能够探索类似的效果。
去噪自动编码器(DAE)
Self-supervised Learning
Related Work
Approach
MAE encoder
MAE decoder
Reconstruction target
Simple implementation.
ImageNet Experiments
Main Properties
Mask token.
Reconstruction target.
Data augmentation
Mask sampling strategy.
Training schedule.
Comparisons with Previous Results
Comparisons with supervised pre-training
Partial Fine-tuning
Transfer Learning Experiments
Semantic segmentation.
Classification tasks.
Pixels vs. tokens
Discussion and Conclusion
Implementation Details
End-to-end fine-tuning.
Linear probing.
cutmix
drop path
color jittering
Partial fine-tuning
Supervised Training ViT-L/H from Scratch
Object Detection and Segmentation in COCO
Semantic Segmentation in ADE20K
Additional Classification Tasks