怎么说呢,何老师出品,必属精品!遵循的一个原则就是:非常好理解,容易阅读,可谓大道至简!
就是对硬件设备的要求太高了,普通科研狗,想复现都难(crying.jpg)
1. 出处
2021 何凯明老师组(CVPR 2022 )
2. 核心思想
MAE mask输入图像的随机patches,重建缺失的pixels。
两个主要设计:
-
一个不对称的encoder-decoder架构
encoder只对可见的patches子集(不包括mask tokens)进行操作
轻量级的decoder在隐含表示和mask tokens上重构原始图像
-
mask输入图像的大部分(75%)能够产生重要的自监督任务
结合这两种设计,能够高效地训练大模型,加速训练过程(3X甚至更多)并提高准确率。
3. 整体结构
3.1 结构
流程:
- 在预训练阶段,图像大量的随机子块被遮住
- encoder被用于剩余小部分可见的patches上
- encoder后,引入mask tokens,全部encoded patches和mask tokens通过decoder被处理,重构原始的图像。
- 预训练后,丢弃decoder,保留encoder,用于检测任务中原始图像特征提取。
3.2 Masking
采样图像中一部分patches,遮住剩下的。
采样策略:无放回随机采样,依照均匀分布。均匀分布能够防止潜在的中心偏差(例如,很多masked patchea靠近图像中心的情况)
3.3 MAE Encoder
本文使用的encoder是ViT,但只用于可见的,未被遮住的patches。
正如标准的ViT中的操作,encoder通过附加位置编码的线性映射来embed patches,然后通过一系列Transformer块处理结果。
3.4 MAE Decoder
MAE decoder的输入是全部的tokens,包括:编码的可视patches和mask tokens。每个mask token是一个共享的,学习的向量,表示一个缺失的待预测的patch.
对集合中的所有tokens添加位置编码。
结构:decoder是另外的一系列Transformer块
MAE decoder只在预训练阶段用来完成图像重构任务,只有decoder用于产生图像特征用于识别任务。因此,decoder可以灵活设计,独立于encoder的设计。
3.5 重构目标
MAE通过预测每个masked patch的像素值来重构输入,decoder输出中的每个元素,是像素值向量,代表一个patch.
decoder的最后一层是线性映射,输出通道的数量等于每个patch像素值的数量。
decoder的输出重组,形成一个重构图像。
损失函数:计算重构图像和原始图像在像素空间上的MSE,只计算masked patches的损失。