当前位置:   article > 正文

MAE ViT过程,随机选取75%的patch mask掉。将原始图像分块作为一个list,然后random shuffle一遍,选取shuffle后在list中排在后75%的 patch,将他们ma_使用mae在推理时也需要mask 75%的图像吗

使用mae在推理时也需要mask 75%的图像吗

 

在看到ViT出来的时候,我就在想,既然都已经把图像token化了,并且结构上都保持与BERT一致,那为什么最后的预训练目标非得是图像分类而不直接保持BERTMask Language Model的预训练目标呢?果然,在MAE中就尝试了这种方法,并且只在ImagNet-1k上预训练就达到了top 1 acc 超过87%,一举超过了所有在ImageNet-21k上预训练的所有ViT极其变体的性能。下面我们来看一下MAE的做法。

论文地址:https://arxiv.org/pdf/2111.06377.pdf

一、背景简介

读这篇论文前,需要对ViT以及BERT(当然,对bert不了解也不影响看懂MAE在做什么,只是如果想挖的更深的话建议读一下BERT这篇论文)有一定的了解。这个我之前都有总结过。有需要可以直接跳转以下链接:

1)VIT:ICLR2021-谷歌大脑团队Vision Transformer:AN IMAGE IS WORTH 16X16 WORDS

2)BERT:长文解读综述NLP中的预训练模型(纯干货)

二、MAE

总体的框架如图所示:


整体的做法分为以下步骤:

1)随机选取75%patch mask掉。具体的做法:首先将原始图像分块作为一个list,然后random shuffle一遍,选取shuffle后在list中排在后75%的 patch,将他们mask掉。并从这个list里面剔除,并形成送入encoder的patch list

2)encoder就采用ViT的结构;

3)将mask的patch按照反shuffle插入这些没有mask的patch list里面。这里需要注意的是,所有的mask的patch共同由一个可学习的向量表示,也即是所有的mask patch共享这个向量。相当于BERT里面的「MASK」这个token标记。让模型知道这个位置是被mask掉的。

4)将所有的patch送入decoder中,经过处理最终将token化patch还原成图像形式

5)预训练目标:就是将还原出的图像与原始图片计算MSE损失。当然,与BERT一致,这里只会去计算被mask部分的像素点的MSE。

整体上看上去,MAE与BERT不能说是100%相像吧,思想上简直就是一摸一样。只不过MAE中需要将图像token化然后还需要加上一个decoder。

不过,MAE是有重大意义的,我之前也做过类似的mask与重建的实验(但是不是重建原图),企图用这种image mask model的自监督形式来进行预训练。性能上有轻微提升,但是效果不明显。看到MAE之后,向我们证明了直接重建原图也可以做到效果十分之满意。并且想感叹一下CV与NLP的结合真的是能碰撞出特别大的火花的,并且我也相信是以后的一种趋势。

三、实验效果

1)先看一下重建的可视化效果,是真的很强:


2)在图像分类任务上finetune,直接到了87.8


3)在语义分割上finetune:


4)在目标检测上finetune:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/552971
推荐阅读
相关标签
  

闽ICP备14008679号