![](https://img-blog.csdnimg.cn/img_convert/794408fc9c4ffbeef2bcc8a9a449fd2c.png)
论文链接:https://arxiv.org/pdf/2111.06377.pdf
本文参考:https://blog.csdn.net/abbcdc/article/details/123915967
https://blog.csdn.net/NGUever15/article/details/122692362
摘要
MAE是一种可扩展的计算机视觉自监督学习者。MAE方法简单:屏蔽输入图像的随机补丁,并重建缺失的像素。它基于两个核心设计。首先,我们开发了一个非对称编码器-解码器架构,其中编码器只对补丁的可见子集(没有掩码标记)进行操作,以及一个轻量级解码器,从潜在的表示和掩码标记重建原始图像。其次,屏蔽输入图像的高比例可以产生一个自我监督任务。
整体框架
![](https://img-blog.csdnimg.cn/img_convert/3c7f896f2c015a49f14b53a2ec24543f.png)
将图像分割成多个像素块后,随机对其中的一部分像素块进行遮蔽,然后将没有遮蔽的像素块按顺序排列,送入Transformer Encoder中,获得特征向量;之后将遮蔽的像素块(只包含位置信息)按原来的位置插入特征向量中,再放入Decoder中,由Decoder重构像素信息,生成原始图片。Encoder比Decoder大一些,是因为Encoder是一个标准的Transformer编码器,计算量比较大,而Decoder结构比较简单。当用于不同的下游任务时,Decoder可以替换成任意结构,而Encoder作为特征提取器需要保持不变。重点在于Encoder。
MAE使用的是非对称的Encoder-Decoder架构,即编码器只处理未被遮蔽的部分像素块信息,提取这些部分的特征,而解码器解码的是所有像素块的特征信息。
方法
1、Masking
MAE采用ViT中的方法,将图像划分为规则的非重叠的patch,然后在patch中随机抽样选择一部分保留,其他部分则删除(即进行屏蔽),抽样保证是随机、不更换、均匀的。采样的均匀分布防止了潜在的中心偏差(即在图像中心附近有更多的被屏蔽的补丁),同时,采用高屏蔽比(约屏蔽75%的patch),目的是减少patch之间的信息冗余,这种高度稀疏的输入为重建任务带来了更大挑战,迫使模型进行高效地学习图像的全局信息。
2、MAE Encoder
Encoder采用的是ViT模型中的Transformer Encoder,编码器通过添加位置嵌入的线性投影来嵌入补丁,然后通过一系列Transformer块来处理结果集。同时,需要注意的是,Encoder的输入为未被屏蔽补丁(25%),该操作节省了计算开销,允许训练大的Encoder。
![](https://img-blog.csdnimg.cn/img_convert/42dd988fd19370fb90bd459da350d53b.png)
3、MAE Decoder
Decoder需要重构那些被遮蔽的像素,因此MAE Decoder的输入是由两部分组成:未被遮蔽的patch通过编码器生成的特征向量和插入原位的被遮蔽的patch。
该Decoder只在预训练阶段使用,用于执行图像重建任务(仅编码器用于产生图像表示进行识别)。 因此,Decoder体系结构可以以独立于编码器设计的方式灵活设计,可以用非常小的Decoder进行实验,减少预训练时间。
4、Reconstruction target
Decoder的最后一层是一个线性层。
Decoder输出的每个元素都是代表一个patch的像素值向量。Decoder的最后一层是一个线性投影,其输出通道数等于一个patch中的像素值数,Decoder的输出被重塑以形成重构图像。即假设patch的大小是16×16,则线性层的输出维度就为256,然后再reshape为16×16,则得到了重构后的像素块。
损失函数是MSE函数,计算重建图像和原始图像在像素空间中的均方误差(MSE),即原始像素和重构后的像素相减再求平方和。只需要在被遮蔽的patch上计算损失,因为未被遮蔽的patch信息已经作为输入进入Encoder和Decoder。
5、Simple implementation
简单说明整个实现流程。
首先,将输入序列进行线性投影并加上位置编码,为每个patch生成一个token
然后,进行shuffle操作,随机打乱
选取前25%的token作为Encoder的输入,删除列表的最后一部分,完成随机采样
将Encoder的输出和表示被遮蔽的patch的向量拼接,进行unshuffle操作,还原原始像素块的排列顺序,
最后加入位置编码,送入Decoder中,完成像素重构。