MAE

news/2025/2/28 17:53:11/文章来源:https://www.cnblogs.com/xiaxuexiaoab/p/18561017

一、大体内容

PDF: https://arxiv.org/abs/2111.06377
CODE: https://github.com/facebookresearch/mae (原文采用tensorflow 和 TPU 没有开源)

前面已经介绍了Transformer、BERT、ViT,这里理一下大概关系。首先Transformer将注意力机制引入到NLP领域,得到很大的提升,接着BERT借助Transformer的编码器并采用完型填空的方式对其进行自监督训练,而ViT通过将图片分块的方式将Transformer的结构引入到了CV领域,这一篇的MAE可以理解成在ViT和BERT的基础上对图片进行自编码训练。

1.1 出发点

Transformer和BERT等在NLP领域应用效果非常好,但在CV领域却没有展开应用。作者引入了一个问题:自编码器在NLP和CV存在哪些不同?以这个问题展开从三个方面给出了解释。

  1. 架构还是不同的。在视觉上卷积网络在过去十年中占据主导地位,卷积通常在规则网格上运行,将掩码或位置编码等“指标”集成到卷积网络中并不简单。然而,ViT的提出使得架构差距得到了解决。
  2. 信息密度不一样。语言是人类生成的信号具有高度的语义和信息密度。当训练一个模型来预测每句话中只有几个缺失的单词时,都会是一个复杂的语言理解任务。相反,图像信息具有更多的冗余性。我们可以从相邻的补丁中直接通过插值恢复出缺失的区域,而无需对物体和场景进行高级理解。为了克服这种差异并使得网络学习到有用的特征,我们随机去掉非常多的块,这种策略大大减少了冗余,并创建了一个具有挑战性的自我监督任务,需要从低层次去全面理解图像。
  3. 自编码器的解码器不同。CV借助其还原低层次的像素。在NLP中解码器预测包含丰富语义信息的缺失单词,虽然在BERT中,解编码器可以是MLP,但对于图像来说,解码器设计在确定学习到的潜在表示的语义方面起着关键作用

因此本文提出MAE: 随机遮住大量的图像块,然后利用解码器重构出被遮挡的块的像素信息。

1.2 整体结构和流程


先随机对图像块进行遮挡,遮挡比例为75%,然后将可见的图像块经过映射得到特征编码,加上位置编码后输入到ViT(encoder部分),将输出特征再恢复至原先顺序,被遮挡的块加上位置编码后再输入到Decoder,恢复出遮挡区域信息。

二、贡献点

  • 采用大量随机遮挡图像块的方式在CV领域进行自监督训练
  • 遮挡大量块后可以节省训练时间,便于后续扩充
  • Decoder是独立的,可以用训练好的Encoder输出作为下游任务的输入

三、细节

3.1 自编码器和编码器有啥区别

自编码强调标签和样本都来源于同一个样本。MAE中训练的标签就是原图像的部分区域块,和训练样本来源一样。

3.2 图像遮挡

和ViT一样,先把图片划分成没有重叠的patch,再采用随机的方式进行遮挡,遮挡少了的话可以通过插值恢复,容易学不到特征。

  • 采样比例
    通过实验对比分析,遮挡75%左右预训练效果较好

  • 采样方式
    还对比了不同的遮挡方式,发现随机遮挡效果也较好且比较容易实现。

3.3 MAE Encoder

Encoder结构采用的是ViT,将未被遮挡的块经过一个线性层后得到特征编码,再加上位置信息输入到ViT,注意被遮挡的块直接移除,不作为Encoder的输入

训练好的Encoder可以直接作为下游任务,也有都采用的,比如这一篇文章将MAE和目标检测结合:https://arxiv.org/pdf/2205.09613

3.4 MAE Decoder

输入是可见Patch经过Encoder得到的特征 + 不可见patch的位置编码,并恢复至原有图像的顺序,Decoder只是在进行图片重构的预训练任务中用到,其和Encoder相对独立,其他下游任务可以直接采用训练好的Encoder。
重构的目标是和被遮挡区域进行对比,Decoder的每一个输出都表示一个patch的信息,最后一层对其进行线性映射得到和patch块像素个数一致的大小,然后reshape后和原有图像进行MSE。在实现上还对每个patch块进行了归一化处理。

  • 预训练效果好

  • 训练次数和精度
    随着次数的增加精度还在提高

四、效果

  • 和其他方法在ImageNet-1K上比较

  • 和其他预训练方法比较
    MAE在较小的数据集上就能取得很好的效果

  • 微调效果

  • 目标检测

  • 语义分割

  • 分类

  • 重建

  • 重建和真实图对比



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

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

相关文章

数字孪生如何赋能智慧工厂?核心作用详解

近年来,随着智能制造的发展,数字孪生技术逐渐成为智慧工厂的核心技术之一。它通过将物理世界的生产设备、流程和环境实时映射到虚拟空间,实现了物理与数字的无缝连接。这种融合不仅提升了工厂运营效率,还为企业实现更高层次的智能化转型奠定了基础。那么,数字孪生在智慧工…

python+pymysql(16)

python操作mysql 一、python操作数据库 1、下载pymysql 库, 方法一:pip3 install pymysql 或pip install pymysql方法二:在pycharm中setting下载pymysql =============================== 2、打开虚拟机上的数据库=============================== 3、pymysql连接(1…

量化存储墙以及功耗优化空间

CMOS 计算和存储工艺发展步调并不一致,SOTA Memory 最高频率的远远低于 SOTA CMOS。如下图所示[1]:除了性能,能耗上存储也远远高于计算能耗,存储能耗受诸多譬如大小、宽度等参数影响,但不妨粗略进行数量级估计计算,如图 2014 年 ISSCC 经典的数据 45 nm 0.9V 下,计算和能…

国产云游戏平台价格盘点,性价比首选竟是ToDesk!

当5G逐渐走进人们的生活,游戏行业随之迎来云游戏的热潮。无需高端硬件设备,只需稳定的网络连接,就能畅玩各种游戏大作,云游戏已成为用户玩游戏的首选平台。 短短两年时间,国内涌现出大大小小数十家云游戏平台,各平台基本围绕“低价低配玩3A大作”、“手机畅玩各类端游”进…

SOLIDWORKS软件是免费使用的吗?

SOLIDWORKS是一款三维计算机辅助设计软件,它被广泛应用于建筑设计、机械设计、产品设计、工业设计等领域。SOLIDWORKS提供了强大的建模工具,可以用于创建各种复杂的三维模型,包括机械结构、零件、装配等。此外,它还拥有直观的用户界面和操作方式,支持多种文件格式,方便用…

远程连接 USB 设备

需要的工具: ① USB redirector technician edition(服务端)(我们自己的电脑) ② USB Redirector Technician Edition-custormer module(客户端)(客户的电脑) 设置 USB Redirector Technician Edition客户端的操作。 1、在客户端直接双击打开 USB Redirector Technician Edi…

vue2-vuex

专门在 Vue 中实现集中式状态(数据)管理的一个 Vue 插件,对 vue 应 用中多个组件的共享状态进行集中式的管理(读/写),也是一种组件间通信的方式,且适用于任意组件间通信 应用场景:多个组件依赖于同一状态、共享数据 来自不同组件的行为需要变更同一状态 vuexvuex原理每一…

一文读懂基线扫描和漏洞扫描的区别

在网络安全领域,基线扫描和漏洞扫描是两种常见的安全评估手段。它们都旨在保护企业免受网络威胁,但它们的作用、方法和目的各有不同。本文将为您详细解析这两种扫描技术的区别。 一、基线扫描 基线扫描是一种评估系统配置是否符合特定安全标准的扫描技术。它通常用于确保系统…

【AutoCAD Mechanical 2024机械版下载与安装教程】

‌‌‌AutoCAD Mechanical与基础版AutoCAD的主要区别在于其专业领域和功能扩展: 应用领域和功能扩展 AutoCAD Mechanical是专门为制造业设计的,主要用于加速机械设计流程。它包含了AutoCAD的所有基础功能,并增加了许多专门用于机械工程设计的工具,如自动生成机械构件、标注…

性能测试指标

一、吞吐量吞吐量、带宽、并发量的区别吞吐量在网络中:指网络、设备、端口或其他设备在单位时间内成功地传输数据的数量,通常比bit/byte为单位,它代表了网络设备实际传输数据的速率(在现实情况种可能受网络拥堵、设备性能的影响) 在性能测试中:可以用事务数量(TPS)或请…

Nuxt.js 应用中的 webpack:compile 事件钩子

title: Nuxt.js 应用中的 webpack:compile 事件钩子 date: 2024/11/22 updated: 2024/11/22 author: cmdragon excerpt: webpack:compile 钩子是 Nuxt.js 和 Webpack 集成中的一个重要部分,它允许开发者在实际编译过程开始之前执行一些自定义逻辑。通过这一钩子,您可以获取…

PTA题目集4~6的总结性Blog

前言 本次的三个作业,由答题判题程序- 4、家居强电电路模拟程序- 1、家居强电电路模拟程序 -2组成。 答题判题程序-4是对前三次判题程序的最后升级,设计多个子类继承于基础题类来实现对每种题型的判断和计算分值;而家居强电电路模拟程序-1则是对输入的各个设备在串联关系中的…