Masked AutoEncoder

Yuze-L

Masked AutoEncoder (MAE)

https://arxiv.org/abs/2111.06377

Reference: https://zhuanlan.zhihu.com/p/439554945

概述

MAE做的事情类似于语言模型中的mask,亦即以一定比例随机 mask 掉图片中的一些图像块(patch)然后重建这些部分的像素值。由原来的填词游戏变成了填图游戏。

主要特点:

  • 非对称的decoder和encoder
    • Encoder是对可见的图像块进行编编码
    • Decoder则是解码所有的图像块
  • 较高的Mask比例
    • 通过这种方式模型才能学习到有效的潜在特征表示

CV和NLP中的Mask区别

  • CV一般采用CNN,不方便集成Mask Token和Position Embedding(但是用ViT即可)
  • 信息密度上,图像在空间上是高度冗余的,不需要大量的高级语义信息,所以训练的时候需要Mask比较高的比例。
  • CV重建的是图像块的像素值,是低语义的,解码要慎重

Mask策略

沿袭ViT的做法,把图像分割成一块块的Patch,再用均匀分布(Uniform Distribution)对这些patch随机采样一部分,同时 mask 掉余下的另一部分。被 mask 掉的 patches 占所有 patches 的大部分(实验效果发现最好的比例是 75%),它们不会输入到 Encoder。无论是Fine-tune还是Linear Probing在75%下的Mask比例都是一个很好的选择。

Fine-Tune & Linear Probing

finetune 微调
finetune是使用预训练模型适配下游任务时,对整个预训练模型全部进行参数更新

微调也可以选择不进行全部更新,只对后面一部分模型进行更新,因为模型前几层一般提取的都是比较公共的特征,保留的底层信息较多,可以不用进行微调

linear probing 线性探测
linear probing 是在适配下游任务时,冻住预训练模型,对其参数不进行更新,只对模型最后一层的线性层进行参数更新

线性探测一般用于检验预训练模型的好坏

一般情况下,线性探测的结果会差于微调

Encoder

只在visible, unmasked patches上进行encoder!!!

与ViT的处理方式相同, 把的图像转化成的Patches,其中是原图的高和宽, 是通道数 是每个Patch的分辨率, 一共有个图像, 同时也是Transformer的输入长度。

由于Masked比例很高,所以Unmasked比例就相对较低,计算消耗和空间需求都减少了,因此可以训练更大的Encoder

Decoder

Masked和Unmasked都需要进行decoder

所有的Masked Patch都共享一个向量,通过添加的Position Embedding来进行区分。这个Decoder是为了重建图像,但是实际上我们根据下游任务的不同也可以设计不同的Decoder

重建像素值

Loss Function: Masked Patch部分的MSE loss

  • Title: Masked AutoEncoder
  • Author: Yuze-L
  • Created at : 2024-08-01 15:54:31
  • Updated at : 2024-08-01 17:17:56
  • Link: https://yuze-l.github.io/2024/08/01/MAE/
  • License: This work is licensed under CC BY-NC-SA 4.0.