MAE论文阅读《Masked Autoencoders Are Scalable Vision Learners》

news2025/4/9 0:26:53

文章目录

  • 动机
  • 方法
  • 写作方面参考


Paper: https://arxiv.org/pdf/2111.06377.pdf


动机

首先简要介绍下BERT,NLP领域的BERT是基于Transformer架构,并采取无监督预训练的方式去训练模型。它提出的预训练方法在本质上是一种masked autoencoding,也就是MLM(masked language modeling):去除数据的一部分然后学习恢复。
在这里插入图片描述
自从ViT火了之后,Transformer架构也可以应用于CV领域中了,一些研究者就开始尝试研究ViT的无监督学习,比如Mocov3用对比学习的方法无监督训练ViT,此外也有一些研究开始借鉴BERT中的MLM方法,比如BEiT提出了用于图像的无监督学习方法: MIM(masked image modeling)。但尽管如此,NLP领域已经在BERT的这种masked autoencoding方法下取得了巨大的进展,而CV领域中在无监督预训练这一块远远落后,主流的无监督训练还是对比学习。其中这种masked autoencoding方法并不是没在图像领域应用过,很早便就出现了,比如Denoising Autoencoders。但是至今却未取得像在NLP领域中的巨大发展。MAE论文对这个问题做了以下分析(参考:视觉无监督学习新范式:MAE):

  • 图像的主流模型是CNN,而NLP的主流模型是transformer,CNN和transformer的架构不同导致NLP的BERT很难直接迁移到CV。但是vision transformer的出现已经解决这个问题;
  • 图像和文本的信息密度不同,文本是高语义的人工创造的符号,而图像是一种自然信号,两者采用masked autoencoding建模任务难度就不一样,从句子中预测丢失的词本身就是一种复杂的语言理解任务,但是图像存在很大的信息冗余,一个丢失的图像块很容易利用周边的图像区域进行恢复。也就是说:丢失一个单词去恢复句子很难,用MLM这样的方式去学习这样一个难的任务可以学到一些有意义的信息;但是丢失一个patch去恢复图像却很简单,这只用线性插值就可以实现了,用MIM这样的方式去学习这么简单的任务,几乎学不到什么有价值的信息
  • 用于重建的decoder在图像和文本任务发挥的角色有区别,从句子中预测单词属于高语义任务,encoder和decoder的gap小,所以BERT的decoder部分微不足道(只需要一个MLP),而对图像重建像素属于低语义任务(相比图像分类),decoder需要发挥更大作用:将高语义的中间表征恢复成低语义的像素值。

因此,本文提出了一种简单有效的用于ViT无监督预训练的方法,称为MAE(masked autoencoder)。MAE也属于MIM的范畴,可以将MAE看作是BERT的CV版本:
在这里插入图片描述

方法

MAE方法很简单,整体架构如下。针对以上的分析,MAE采用了MIM的思想,随机mask掉部分patchs然后进行重建,并有两个核心的设计: 1)设计了一个非对称的encoder-decoder结构,这个非对称体现在两方面:一方面decoder采用比encoder更轻量级设计,encoder首先使用linear将patch映射为embedding,然后采用的是ViT模型,decoder是一个包含几个transformer blocks轻量级模块,最后一层是一个linear层采用的是一个;另外一方面encoder只处理visible patchs,而decoder处理所有的patchs(插入masked patchs)。2)MAE采用很高的masking ratio(比如75%甚至更高),这样构建的学习任务大大降低了信息冗余,或者说增加了学习难度,使得encoder能学习到更高级的特征。此外,由于encoder只处理visible patchs,所以很高的masking ratio可以大大降低计算量。 ​
在这里插入图片描述
MAE采用随机mask策略,对于mask ratio的选择如下:
在这里插入图片描述
其中的linear probing和Fine tune的区别是:linear probing把encoder冻结只加一个linear分类器训练,Fine tune是不冻结encoder完全放开训练。注意,decoder部分只是辅助无监督预训练的,具体到下游任务时就不需要它了。

不同mask ratio的效果:
在这里插入图片描述

在ImageNet-1K上与其他自监督方法对比:
在这里插入图片描述

最后的loss只计算masked patchs。

写作方面参考

论文名《Masked Autoencoders Are Scalable Vision Learners》也是一个常用的强有力的句式:xxx are xxx。并且这样的表达会给人一种很客观,站在读者角度上的感觉。

当你做的模型比较大时,用scalable;当你做的模型比较快时,用efficient。

画图的一些细节: MAE的计算量主要出现在encoder部分,所以作者将encoder部分画的比decoder部分大。论文图中的每一个小细节,体现的都是文章的思想。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/414314.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【CSS】定位 ⑤ ( 子元素绝对定位 父元素相对定位 | 代码示例 )

文章目录一、子元素绝对定位 父元素相对定位二、代码示例一、子元素绝对定位 父元素相对定位 绝对定位 要和 带有定位 的 父容器 搭配使用 ; 子元素 使用绝对定位 , 父元素要使用 相对定位 ; 子元素使用 绝对定位 , 在布局中不会保留其位置 , 子元素完全依赖 父容器 的位置 ,…

阿里巴巴春招的后端面经来啦~

操作系统 一个操作系统,我们在衡量它的内存占用的时候,它一般会有哪些内存的部分? 读者答:堆和栈 补充: 这个其实是问你对free命令的理解。 主机的内存做一些清理的动作。你知道这里面会涉及到对哪些内存区域进行操…

大数据任务调度器 —— Azkaban 3.0 进阶应用

文章目录任务依赖任务重试JavaProcess 进程任务提交条件执行自定义条件预定义条件定时执行邮件警告前言:Azkaban 搭建以及基础介绍,查看这篇博客 —— 大数据任务调度器 —— Azkaban 3.0 部署与简单应用 任务依赖 Azkaban 中的任务依赖设置十分简单&…

OpenCV中的相机标定

之前在https://blog.csdn.net/fengbingchun/article/details/130039337 中介绍了相机的内参和外参,这里通过OpenCV中的接口实现对内参和外参的求解。 估计相机参数的过程称为相机标定(camera calibration)。相机标定是使用已知的真实世界模式(例如棋盘)来估计…

从风靡全球到风口,他们是如何做到的?

大家好,我是湖北鑫优尚电子商务。我们是从2019年下半年就注意到了TikTok的风口,并在2020年初,团队就开始投入TikTok的运营及商业变现。从2019年起,围绕TikTok一系列的产品功能迭代和商业模式开放的声音一直不绝于耳,直…

零基础可以学习数据分析吗,有没有好的培训机构推荐?

数据分析从沿海火到了中西部的软件园,从传统互联网企业火到了新经济领域,火到了第一二产业。数字化成为这个时代的标签,而数据也成为了最有价值的资源,更多企业重视数据;因为有了真实数据的支撑,所有的决策…

快速排序(挖坑法 前后指针法 非递归版本)

上一次我们说了快速排序的hoare的版本,但是该版本有很多问题,首先是需要控制很多边界,比较复杂一点 其次就是上一次的快速排序还是有很多的其他问题 我们试着想一下,如果我们用快速排序拍有序数组,那会怎么样&#x…

数字化和自动化的潮流:外贸企业如何应对?

当今世界正面临着数字化和自动化的浪潮,这些技术的应用正在深刻地改变着各个领域的生产、交易和管理方式。尤其在外贸行业,数字化和自动化的应用已成为一种趋势和必然。在本文中,我们将探讨数字化和自动化对外贸行业的影响和挑战,…

Windows环境下实现设计模式——解释器模式(JAVA版)

我是荔园微风,作为一名在IT界整整25年的老兵,今天总结一下Windows环境下如何编程实现解释器模式(设计模式)。 不知道大家有没有这样的感觉,看了一大堆编程和设计模式的书,却还是很难理解设计模式&#xff…

巧用千寻位置GNSS软件|CAD功能全解析

千寻位置GNSS软件中的CAD功能,用于已有 CAD的图形的导入和编辑,并且可以对 CAD图形已有线条进行线放样,在日常测绘工作中十分常见。下面向各位介绍CAD功能的使用技巧。点击【测量】->【CAD】,进入 CAD功能如图 5.3-1所示。以下…

三、线程状态【3/12】【多线程】

线程的状态3. 线程的状态3.1 观察线程的所有状态3.2 线程状态和状态转移的意义3.3 观察线程的状态和转移3. 线程的状态 3.1 观察线程的所有状态 线程的状态是一个枚举类型 Thread.State public class ThreadState {public static void main(String[] args) {for (Thread.State…

项目7:(aliyun)实现短信的发送和验证微服务和上传文件删除文件微服务

项目7:实现短信的发送和验证 1.对gulimall-common补充 2.短信验证的流程(aliyun的sms) 3.具体接口的编写(新建微服务service-sms) 4.上传和删除文件流程(aliyun的oss) 5.具体接口的编写&am…

区块链智能合约开发学习

最近正在肝区块链知识学习,入手学习智能合约的开发,由于网上资料实在是太少了,好不容易东拼西凑完成了智能合约的开发、编译、部署、web3js调用(网页页面)和web3j调用(java调用),赶紧…

Linux 内存回收,思维导图记录

最近天天跟内存斗智斗勇,整理下学习的记录 一些图片 参考 Tuning Linux Kernel Parameters For PostgreSQL Optimization PostgreSQL recommendations - Documentation for BMC Client Management 12.6 - BMC Documentation PostgreSQL load tuning on Red Hat E…

【vSphere | Python】vSphere Automation SDK for Python Ⅵ—— VM Guest Processes APIs

目录12. VM APIs12.1 VM Guest Processes APIsProcesses 进程Operations 操作(1)List Guest Processes(2)Get Guest Processes(3)Create Guest Processes(4)Delete Guest Processes参…

PaddleHub 更改模型默认下载位置

文章目录1.PaddleHub介绍2.PaddleHub安装3.PaddleHub使用中出现的问题4.更改PaddleHub模型的默认下载位置5. PaddleHub的简单使用1.PaddleHub介绍 PaddleHub 是基于 PaddlePaddle 开发的预训练模型管理工具,可以借助预训练模型更便捷地开展迁移学习工作&#xff0c…

docker内部执行nvidia-smi无任何显示的解决方法

docker内部执行nvidia-smi无任何显示的解决方法 贺志国 2023.4.11 今天在Docker内部编译程序,发现与CUDA相关的代码居然没有编译,于是在Docker内部执行Nvidia显卡驱动检测命令nvidia-smi,执行完毕后,无任何输出,也没…

计算机视觉面试题-网络结构相关问题总结-未完待续

VGG卷积核为什么取33 ? VGG使用33卷积核的优势是什么? Resnet 主要解决什么问题 为什么会有ResNet? 深度网络退化的原因 Resnet的针对网络退化提出的残差网络 Resnet网络结构 Resnet网络结构中如何实现的下采样 Resnet50网络结构Resnet特点 vgg16与 res…

Java并发篇二

ForkJoin 在JDK1.7,并行执行任务,提高效率,大数据量才会使用 特点:大任务拆分成小任务,工作窃取,里面维护的是双端队列 package com.kuang.forkjoin;import java.util.concurrent.RecursiveTask;/*** 如…

(PCB系列三)AD六层板布线经验累积

目录 1、布局: 2、创建电源类PWR 3、高速部分可以加屏蔽罩, 4、EMMC和NANDFLASH采取兼容放置(创建联合) 5、HDMI设计 6、就近原则摆放 7、AV端口 8、模拟信号(1字型或L型走线) 9、WIFI模块 10、局…