MAE:掩码自编码模型--CV无监督学习
Masked Autoencoders Are Scalable Vision Learners
MAE模型第一次在arxiv上发表是2021年11月11日,截止2022年6月15日,大佬发布的最后一版是V3发布日期是2021年12月19日。
论文:https://arxiv.org/abs/2111.06377
代码:https://github.com/facebookresearch/mae
我们注意到,图像和语言是不同性质的信号,必须认真处理这种差异。图像仅仅是记录下来的光,没有语义分解成视觉上类似的单词。我们没有尝试删除对象,而是删除了最有可能不会形成语义段的随机patches。同样,我们的MAE重建的像素不是语义实体。然而,我们观察到(如图4),我们的MAE推断出复杂的整体重建,表明它已经学习了许多视觉概念,即语义。我们假设这种行为是通过MAE内部丰富的隐藏表征产生的。我们希望这一观点将激励今后的工作。
一、MAE名字解析
MAE:就是掩码自编码器(Masked Autoencoders)
论文名就是工作的高度总结:MAE是一个可扩展的视觉学习器
二、图像说明
MAE结构图
预训练过程中,随机mask大量的patches。编码器是在没有被mask的patches上进行编码,然后未mask部分的编码结果结合未编码部分进行图像重构。预训练后,解码器可以扔掉,编码器可以用于识别任务!
MAE算法验证结果
上图,每一个三元组,左边标识随机 mask后的图像,中间是MAE预测图像,右边是gt图像!随机mask掉80%,大概中196个patches中选择39个进行编码!
图三是在COCO数据集上面的验证结果,模型与图二模型是一个,其在ImageNet上面训练!
MAE随机mask的概率
使用预训练的MAE重建ImageNet验证图像,掩码率为75%。预测结果与原始图像似乎有所不同,但是都正确预测出了实例种类,表明该方法可以推广。
图5展示了不同mask率下模型的性能,明显70%~80%之间,模型微调的效果很好,同时linear probing重构效果也是最好的!
MAE的patches采用策略
MAE的训练
模型训练了1.6K个epoch,一般我们就训练200,这里大批量训练,性能还一直在增长,说明模型没有过拟合,实际上mask相当于增加噪声,本身就是防止过拟合,而且这里概率还那么高!
MAE预训练与VIT预训练对比
图8的图例分别是:MAE在IN1K数据集上的预训练模型、VIT在IN1K数据集上的预训练模型(凯明实现)、VIT在IN1K数据集上的预训练模型、VIT在JFT-3B数据集上的预训练模型。明显VAE很优秀,性能都快接近在JFT这种数据上的性能了!
MAE部分微调
这里展示了MAE、MoCo(何凯明关于对比学习的论文)微调时,训练不同的层数模型的性能,明显MAE有更好的性能!
三、表格说明
MAE消融实验
表1告诉我们如下事实:
- 足够深的解码器可以提高 linear probing(线性探测, 这里是只学习最后的线性层)的精度
- 解码器的宽度可以比编码器窄!
- 编码器不使用掩码部分进行编码,精度更高(如果使用,相当于加入相同的噪声,没有任何意义,这部分数据在解码器使用,与位置信息结合就很好的建模了,编码器没有必要冗余)
- 像素级的重构更有效!
- 裁剪和随机尺度数据增强效果更好!
- 随机掩码采样更好!(对照为格子采样、块采样即连通区域)
MAE编码器是否使用掩码token运行时间
这里在VIT两个大模型上进行实验,实验灰色部分是使用mask token进入编码器学习,MAE精度要低很多,速度也慢很多!
MAE与其他模型对比
DINO模型没有接触过,性能较差;MoCoV3是何凯明自己发表过的对比学习模型,效果也是不太好;BEiT这里明显也差一大截!
参考文献:
- DINO模型:https://zhuanlan.zhihu.com/p/440247722
- MoCo模型(2020年):https://www.bilibili.com/video/BV1C3411s7t9/?spm_id_from=333.788&vd_source=ac9c2b828221b37c731806df24550db1
MAE在COCO上的目标检测与实例分割
这里MAE的训练方式在\(AP^{box}\)这个指标上确实是比其他都要优秀,当然\(AP^{mask}\)也一样!
MAE的语义分割性能
经典的UperNet,在语义分割中还是能见到它,简直不要太通用!
MAE预训练分类模型性能
最后两行分别是1.5亿参数量和3.5亿参数量!
MAE中使用像素重构 vs tokens重构
实验证明:像素级别的重构与标准化结合是最好的!