MAE论文详解

文章目录

  • 前言
  • 一、MAE理论
  • 二、MAE整体框架
  • 三、MAE简单实现
  • 四、实验
  • 总结


前言

 MAE是Facebook团队在2021年11月发布的一篇论文,《Masked Autoencoders Are Scalable Vision Learners》,带掩膜的自编码器是可扩展的视觉学习器,MAE就是Masked AutoEncoders的缩写,一作是何凯明大神。MAE通过在图片上进行掩码实现在CV领域进行大规模的自监督训练,并且仅通过在ImageNet-IK数据集上进行训练实现了最好的准确率,超过了当时的有监督训练方法。接下来对这篇论文进行详细介绍。

一、MAE理论

 在NLP领域,自监督训练获得了很大的成功,例如BERT和GPT等。ViT实现了将Transformer应用在CV领域,但是其仍然是有监督训练。MAE的目的便是使CV领域可以像NLP中BERT那样通过预测掩码(类似完型填空)实现大规模的自监督预训练。因此,MAE可以看作是BERT的CV版本。那么在CV领域使用预测掩码机制的困难是什么呢?

一、模型架构。在NLP领域用的是Transformer架构,而CV领域中用的多是CNN架构。不过ViT的出现使得Transformer可以用在CV领域中从而解决了这个问题。
二、信息冗余。语言文字具有很强的信息密度和语义性,而图片中有着很多的冗余信息,在预测掩码时模型可以根据周围像素进行插值还原,使得模型预测难度降低,难以学到有用的特征表示。
三、解码器。在BERT中,最终的预测任务是一个词,可以看作的分类任务,因此解码器使用一个简单的MLP层就可以。而在CV中,预测的是大量的像素点,因此解码器的结构应该更加复杂。

 上述三个问题中,第一个问题已经被ViT解决。对于第二个问题,MAE通过增大掩码的比例,减少图片中的冗余信息,迫使模型学习到有用的特征表示,在论文中,MAE对于图片中的75%都打上了掩码。对于第三个问题,在CV中预测掩码相当于是进行图片重构,因此不能用简单的MLP实现,MAE使用的一系列Transformer块堆叠而成。

总结一下就是MAE有两个核心理念:一:在模型结构上使用非对称的编码器-解码器结构来进行自监督训练。二:在训练时对于图片中的大部分区域(75%)都打上Mask。

二、MAE整体框架

 接下来我们介绍一下MAE的整体框架。
在这里插入图片描述
整体流程
 一、首先对于输入的图片,将其划分为Patch,然后随机将75%的Patch打上Mask。
 二、将没有被Mask的图片输入到编码器中进行编码。
 三、 将编码器中的输出和之前被Mask的Patch组合起来输入到解码器中进行解码重构。
 四、将重构后的图片与输入的原图计算MSE Loss。
编码器
 MAE的编码器是ViT,输入是没有被打上Mask的Patch(带位置编码)。
解码器
 MAE的解码器是堆叠的Transformer层,输入由两部分组成:1.编码器的输出。2.Mask的tokens。每一个mask token 都是一个共享的、学习的向量,它指示了这里有一个待预测的 token。然后将这两部分组合起来并加入位置编码告诉模型每一个mask tokens所对应的图像中的位置。
 注意:MAE是一个非对称的结构,其编码器是要比解码器要大,这么设计有两个原因:一:编码器的输入是所有Patch中的25%,而解码器的输入是所有Patch,解码器的计算量相比较要大一些,为了减少训练时间,解码器应该设计的小一点,而编码器由于计算量较少,所以模型结构设计大一点增加特征提取能力也可以接受。二:在进行预测时只用到了编码器进行特征提取,而并没有用到解码器,因此在设计时应该重点关注编码器的能力。

重构目标
 MAE预测的是每一个Patch区域中的像素值。解码器的输出元素(tokens)中,每一个元素是一个向量,代表的是一个掩码Patch中的像素信息表示,然后将其通过一个线性层将元素的向量维度映射成与Patch中的像素数量一样,最后将其Reshape成图片,与原图计算MSELoss。在计算Loss时,只计算掩码区域的Loss。

三、MAE简单实现

接下来介绍一下MAE的训练流程实现。
1 输入一张照片,将其划分为Patch。
2 将这些Patchs经过一个全连接层变成tokens。
3 将这些tokens加入位置编码。
4 将tokens随机打乱,将打乱后的前25%tokens输入的解码器中。
5 将编码器的输出与可学习的mask tokens组合在一起并且恢复成原来在图片中的位置顺序,使解码器的输入与目标图像中的Patch相对应,然后对这些tokens加入位置编码。
6 经过解码器。
7 将解码器的输出Reshape成图片。

四、实验

 MAE论文中做了很多实验,有关于模型结构的,模型微调的等等。详细的实验结果大家可以去论文中看一下。
 有一个实验是关于编码器的输入的,如果编码器的输入不包含Mask,与编码器输入中包含Mask时相比其不但速度更快,并且精度更高。通过实验说明了为什么编码器的输入中不包含Mask。

总结

 MAE将自监督的学习方法用到了CV领域中并且取得了很好的效果,在ImageNet-1K的数据集上进行训练效果超越了有监督的方法,并且其训练成本与其他大模型相比不算大。ViT的出现是把Transformer用到了CV领域,而MAE则是把NLP中的大模型预训练方法用到了CV领域,实现了CV领域的大模型训练。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot整合Liquibase

1、是什么? Liquibase官网 Liquibase是一个开源的数据库管理工具,可以帮助开发人员管理和跟踪数据库变更。它可以与各种关系型数据库和NoSQL数据库一起使用,并提供多种数据库任务自动化功能,例如数据库迁移、版本控制和监控。Li…

文本分类任务算法演变(二)

文本分类任务算法演变 1.深度学习-pipeline1.1fastText1.2LSTM1.2.1公式详解1.2.2可视化 1.3TextCNN1.4Gated CNN1.5TextRCNN1.6Bert1.6.1取[cls] token对应的向量1.6.2将整句话的向量取max/average pooling1.6.3将Bert编码后的向量再输入LSTM或CNN1.6.4将Bert中间层的结果取出…

Python生成432Hz音频

使用 numpy 来生成信号, 使用 matplotlib 可视化信号, 使用 sounddevice 播放声音。 以下生成和播放 432 Hz 的正弦波信号: import numpy as np import sounddevice as sd import matplotlib.pyplot as plt# 生成单音函数 def generate_to…

gstreamer系列 -- 获取媒体信息

Basic tutorial 9: Media information gathering

windows下的redis7.0.11的下载

天,我找redis7.0.11的安装包就找了好久,终于给我找到了。市面上好多是linux版本的。 安装包:Release Redis 7.0.11 for Windows zkteco-home/redis-windows GitHub 解压之后是这样的。 然后你要测试能不能启动: 1、指定配置文…

C语言-部分字符串函数详解 1-4

C语言-部分字符串函数详解 1-4 前言1.strlen1.1基本用法1.2注意事项\0size_t 1.3模拟实现 2.strcpy2.1基本用法2.2注意事项**源字符串必须以 \0 结束****会将源字符串中的 \0拷贝到目标空间****目标空间必须可修改****目标空间必须能容纳下源字符串的内容** 2.3模拟实现 3.strn…

RabbitMQ的核心概念

RabbitMQ是一个消息中间件,也是一个生产者消费者模型,负责接收,存储和转发消息。 核心概念 Producer 生产者,是RabbitMQ Server的客户端,向RabbitMQ发送消息。 Consumer 消费者,是RabbitMQ Server的客…

使用亮数据爬虫工具解锁复杂爬虫场景

在当今数据驱动型时代,数据采集和分析能力算是个人和企业的核心竞争力。然而,手动采集数据耗时费力且效率低下,而且容易被网站封禁。 我之前使用过一个爬虫工具,亮数据(Bright Data) ,是一款低…

浅探空间智能

空间智能,这一概念在人工智能领域逐渐升温,部分归功于AI界的领军人物李飞飞博士所领导的创新项目。 Seeing is for doing and learning. 【精校】TED:李飞飞 | 空间智能让AI理解真实世界 2024.5 李飞飞在 X 上介绍称,「空间智能…

消防认证-火灾显示盘GB 17429-2011

一、消防认证 消防认证是指消防产品符合国家相关技术要求和标准,且通过了国家认证认可监督管理委员会审批,获得消防认证资质的认证机构颁发的证书,消防产品具有完好的防火功能,是住房和城乡建设领域验收的重要指标。 二、认证依据…

10结构型设计模式——桥接模式

一、桥接模式 桥接模式(Bridge Pattern)是结构型的设计模式之一。桥接模式基于类的最小设计原则,通过使用封装,聚合以及继承等行为来让不同的类承担不同的责任。它的主要特点是把抽象(abstraction)与行为实…

SystemUI下拉框新增音量控制条

Android产品下拉框一直只有亮度条没有音量控制条。 为了方便控制音量,普遍都是底部导航栏添加音量加减按钮,在Android10以后,大家普遍用上了手势导航,去掉底部导航栏。 目前需要再下拉框中可以直接控制音量。 文章目录 前言需求及…

day33

一、linux系统中的库 库在linux系统中是一个二进制文件,它是由XXX.c(不包含main函数)文件编译而来的,分为静态库和动态库。 库在系统中的内容是不可见的,是一个二进制乱码 当程序需要使用库中的相关函数时,…

安装docker 遇到异常Could not resolve host: mirrorlist.centos.org; 未知的错误

问题 安装docker 遇到异常 Could not retrieve mirrorlist http://mirrorlist.centos.org/?release7&archx86_64&repoos&infrastock error was 14: curl#6 - “Could not resolve host: mirrorlist.centos.org; 未知的错误” 1、安装Docker依赖包 yum install …

基于SpringBoot的论坛系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图详细视频演示技术栈系统测试为什么选择我官方认证玩家,服务很多代码文档,百分百好评,战绩可查!!入职于互联网大厂,可以交流,共同进步。有保障的售后 代码参考数据库参…

Android 12系统源码_多屏幕(二)模拟辅助设备功能开关实现原理

前言 上一篇我们通过为Android系统开启模拟辅助设备功能开关,最终实现了将一个Activity显示到多个屏幕的效果。 本篇文章我们具体来分析一下当我们开启模拟辅助设备功能开关的时候,Android系统做了什么哪些操作。 一、模拟辅助设备功能开关应用位置 …

存储实验:华为异构存储在线接管与在线数据迁移(Smart Virtualization Smart Migration 特性)

目录 目的实验环境实验步骤参考文档1. 主机安装存储多路径2. v2存储创建Lun,映射给主机;主机分区格式化,写数据3. 将v2存储映射该成映射到v3存储上(v3存储和v2之间链路搭建,测通,远端设备)(Smar…

便利店(超市)管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图详细视频演示技术栈系统测试为什么选择我官方认证玩家,服务很多代码文档,百分百好评,战绩可查!!入职于互联网大厂,可以交流,共同进步。有保障的售后 代码参考数据库参…

中国:“虚拟资产”交易被列为公认的洗钱方式之一!最高法院承认加密货币交易!

2024年8月19日,最高人民法院和最高人民检察院表示,根据他们对反洗钱法的新解释,“虚拟资产”交易现已被列为公认的洗钱方式之一。这是中国首次针对此类资产类别采取此类举措,说明为应对加密货币和其他虚拟资产日益增长的使用&…

IO进程线程8.20

1.使用fgets获取文件的行号 #include <myhead.h> int main(int argc, const char *argv[]) {FILE *fp fopen("./1.txt","r");if(fpNULL){perror("fp");return -1;}char buf[30];int count 0;while(fgets(buf,sizeof(buf),fp)){count;}p…