【论文阅读】Masked Autoencoders Are Scalable Vision Learners

Masked Autoencoders Are Scalable Vision Learners

引用: He K, Chen X, Xie S, et al. Masked autoencoders are scalable vision learners[C]//Proceedings of the IEEE/CVF conference on computer vision and pattern recognition. 2022: 16000-16009.

论文链接: [2111.06377] Masked Autoencoders Are Scalable Vision Learners

代码链接: GitHub - facebookresearch/mae: PyTorch implementation of MAE

简介

在硬件快速发展的帮助下,今天的模型可以很容易地过度拟合100万张图像,并开始需要数亿张(通常无法公开访问)标记的图像。这种对数据的需求已经在自然语言处理(NLP)中通过自我监督的预训练成功解决。这些解决方案基于GPT 中的自回归语言建模和BERT中的掩码自编码,在概念上很简单:它们删除了一部分数据并学习预测删除的内容。这些方法现在可以训练包含超过一千亿个参数的可泛化 NLP 模型。因此,掩码自动编码器的想法是自然的,也适用于计算机视觉。

在这里插入图片描述

掩码自动编码器(Masked Autoencoder,MAE)是用于计算机视觉的可扩展自监督学习器。MAE 的思路很简单:随机屏蔽输入图像的某些块并重建缺失的像素。与自然语言相反,图像是具有高度空间冗余的自然信号——例如,缺失的补丁可以从相邻的补丁中重新覆盖,而对零件、对象和场景的高级理解很少。因此,屏蔽很高比例的随机补丁在很大程度上减少了冗余,并创造了一项具有挑战性的自我监督任务。首先,MAE提出了一种非对称编码器-解码器架构,该架构的编码器仅在patches的可见子集(没有掩码的tokens)上运行,以及一个轻量级解码器,该解码器从潜在表示和掩码tokens重建原始图像。其次,屏蔽输入图像的很大一部分,例如75%,会产生一个不平凡且有意义的自我监督任务。在仅使用 ImageNet-1K 数据的方法中,普通的 ViT-Huge 模型实现了最佳的准确率 (87.8%)。下游任务中的传输性能优于监督预训练,并显示出有希望的扩展行为。

Approach

在这里插入图片描述

MAE是一种简单的自动编码方法,在给定其部分观测的情况下重建原始信号。MAE包括一个编码器,将观察到的信号映射到潜在表示,一个解码器,从潜在表示重建原始信号。与经典的自动编码器不同,MAE采用了非对称设计,允许编码器仅对部分观察到的信号进行操作(无掩码标记),并采用了轻量级解码器,该解码器根据潜在表示和掩码标记重新构建完整信号。

  • Masking:参考ViT,将图像划分为规则的非重叠补丁。然后,对补丁的子集进行采样,并屏蔽(即移除)剩余的补丁。采样策略很简单:按照均匀分布对随机补丁进行采样,而不进行替换,称之为“随机抽样”。具有高掩蔽比的随机采样(即去除的补丁的数量)在很大程度上消除了冗余,因此产生了一个无法通过从可见的相邻补丁进行外推来轻松解决的任务。均匀分布防止了潜在的中心偏移(即,在图像中心附近有更多的掩模斑块)。最后,高度稀疏的输入为设计高效编码器创造了机会。

  • MAE encoder编码器使用ViT,但仅适用于可见的、未掩码的补丁。就像在标准ViT中一样,编码器通过添加位置嵌入的线性投影嵌入补丁,然后通过一系列Transformer块处理结果集。然而,编码器只对全集的一小部分(例如,25%)进行操作。掩码的补丁被移除;不使用掩码tokens。

  • MAE decoder解码器的输入是由(i)编码的可见补丁和(ii)掩码tokens组成的全部tokens的集合。每个掩码token是一个共享的、学习的向量,指示要预测的掩码补丁的存在。将位置嵌入添加到这个完整集合中的所有标记;如果没有这一点,掩码tokens将没有关于它们在图像中的位置的信息。解码器仅在预训练期间用于执行图像重建任务(仅使用编码器生成图像表示以供识别)。因此,解码器架构可以独立于编码器设计的方式灵活设计。

  • Reconstruction targetMAE 通过预测每个掩码补丁的像素值来重建输入。解码器输出中的每个元素都是表示补丁的像素值向量。解码器的最后一层是线性投影,其输出通道数等于补丁中的像素值数。解码器的输出被重塑以形成重建的图像。损失函数计算像素空间中重建图像和原始图像之间的均方误差 (MSE)使用归一化像素作为重建目标可以提高实验中的表示质量。具体来说就是计算一个补丁中所有像素的平均值和标准差,并使用它们来规范化这个补丁。

实验

MAE 在 ImageNet-1K (IN1K) 训练集上进行自我监督预训练。然后,进行监督训练,通过(i)端到端微调或(ii)线性探测来评估表示。

在这里插入图片描述
在这里插入图片描述

75%的比率适用于线性探测和微调。这种行为与BERT形成鲜明对比,BERT的典型掩码率为15%。在计算机视觉方面,掩码率也远高于相关著作(20%至50%)。该模型推断缺失的补丁,以产生不同但合理的输出(图 4)。它使物体和场景的格式塔变得有意义,这不能简单地通过延伸线条或纹理来完成。假设这种类似推理的行为与学习有用的表征有关。
在这里插入图片描述

更长的训练计划会带来明显的改善。

在这里插入图片描述

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

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

相关文章

UE4_官方动画内容示例1.3_ 运动混合空间(Locomotion BlendSpace)

如何使用运动(Locomotion)混合空间将Actor在不同方向上及不同速度的运动混合起来。(例如,展示了一个混合了以不同速度向后、前、左和右走路/跑步动作的Actor)。 一、相关知识点: 混合空间是允许根据多个输…

联想笔记本的声音键没有反应怎么办?

如果我的联想笔记本电脑上的声音按钮没有响应,该怎么办? 如果我的联想笔记本电脑上的声音按钮没有响应,该怎么办? 按下按钮后我无法控制声音。 我该怎么办? 以下是我为您整理的关于联想笔记本声音按键无反应的相关资料…

批量插入集合数据Lists.partition(list, 2000)

批量插入集合数据&#xff08;集合数据量比较大&#xff09;&#xff0c;可以将集合拆分成每次多少条一组&#xff0c;循环插入数据库中。 引入依赖 <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><versio…

[Open3d]: 知识记录

python api 官方手册&#xff1a;http://www.open3d.org/docs/release/ 可视化&#xff1a;http://www.open3d.org/docs/release/tutorial/visualization/visualization.html python-vis 参考代码&#xff1a;https://github.com/isl-org/Open3D/tree/master/examples/python/v…

设计模式的六大基本原则

写代码设计原则是指在编写代码时&#xff0c;遵循一些通用的指导原则&#xff0c;以确保代码的可读性、可维护性、可扩展性和可重用性。这些原则有助于开发人员创建出高质量的软件系统。下面我将介绍几个常见的代码设计原则&#xff0c;并通过C代码例子来说明它们的应用。 1. 单…

Android 10.0 app获取当前已连接wifi列表ssid和密码功能实现

1.前言 在10.0的系统定制化开发中,在一些关于wifi的定制中,有产品需求app中要求获取当前连接wifi和密码功能,在系统原生wifi中 是禁止获取wifi连接的密码的,所以就需要对wifi模块进行一部分的修改,来满足app中获取wifi的ssid和密码功能,接下来就来 实现这个功能 如图:…

金融知识分享系列之:支撑阻力

金融知识分享系列之&#xff1a;支撑阻力 一、支撑阻力原理二、支撑阻力作用1.识别市场资金的预期2.作为入场和平仓的重要参考 三、寻找支撑阻力四、延伸思考五、支撑阻力总结 一、支撑阻力原理 支撑阻力核心要素&#xff1a; 锚定效应订单驱动 支撑阻力原理&#xff1a; 市…

爬虫系列-CSS基础语法

&#x1f308;个人主页&#xff1a;会编程的果子君 &#x1f4ab;个人格言:“成为自己未来的主人~” CSS全称层叠样式表 &#xff0c;主要用来定义页面内容展示效果的一门语言&#xff0c;HTML&#xff1a;页面骨架&#xff0c;素颜CSS&#xff1a;页面效果美化&#xff1a…

01分布式搜索引擎ES

分布式搜索引擎ES 1.初识elasticsearch1.1.了解ES1.2.倒排索引1.3.es的一些概念 2.索引库操作2.1.mapping映射属性2.2.索引库的CRUD 3.文档操作3.1.新增文档3.2.查询文档3.3.删除文档3.4.修改文档3.5.总结 4.RestAPI4.0.导入Demo工程4.1.创建索引库4.2.删除索引库4.3.判断索引库…

免费PDF转换和编辑工具 PDFgear 2.1.4

PDFgear是一款功能强大的 PDF 阅读及转换软件。 它支持多种文件格式的转换和编辑&#xff0c;同时还提供了丰富的功能模块&#xff0c;如签名、表单填写等&#xff0c;方便用户进行多样化的操作。 该软件界面简洁美观&#xff0c;操作简单易懂&#xff0c;适合不同层次的用户…

java static

1、static概念 &#xff08;1&#xff09;static 关键字是静态的意思&#xff0c;可以修饰成员方法&#xff0c;成员变量 &#xff08;2&#xff09;static 修饰的特点 ① 被类的所有对象共享&#xff0c;这也是我们判断是否使用静态关键字的条件。 ② 可以通过类名调用&…

机器学习-06-回归算法

总结 本系列是机器学习课程的系列课程&#xff0c;主要介绍机器学习中回归算法&#xff0c;包括线性回归&#xff0c;岭回归&#xff0c;逻辑回归等部分。 参考 fit_transform,fit,transform区别和作用详解&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&am…

ActiViz三维场景的基本要素——相机

文章目录 前言一、基本属性和方法二、相机操作三、高级功能四、 示例代码和应用五、总结前言 在ActiViz中,vtkCamera是一个非常重要的类,用于定义观察场景的视角和位置。作为三维可视化的核心组件之一,vtkCamera决定了用户在三维场景中所看到的图像内容和视角,因此它对于呈…

突破编程_C++_STL教程( queue 的基础知识)

1 std::queue 概述 std::queue 是 C 标准模板库&#xff08;STL&#xff09;中的一种容器适配器&#xff0c;它提供了队列&#xff08;Queue&#xff09;这种数据结构的功能。队列是一种特殊的线性表&#xff0c;它只允许在表的前端&#xff08;front&#xff09;进行删除操作…

Linux运维_Bash脚本_编译安装Apache(httpd-2.4.54)

Linux运维_Bash脚本_编译安装Apache(httpd-2.4.54) Bash (Bourne Again Shell) 是一个解释器&#xff0c;负责处理 Unix 系统命令行上的命令。它是由 Brian Fox 编写的免费软件&#xff0c;并于 1989 年发布的免费软件&#xff0c;作为 Sh (Bourne Shell) 的替代品。 您可以在…

基于Java中的SSM框架实现在线通用旅游平台网站系统项目【项目源码+论文说明】计算机毕业设计

基于Java中的SSM框架实现在线通用旅游平台网站系统演示 摘要 近几年来&#xff0c;计算机网络的发展得到了飞速的提升&#xff0c;由此展开的一系列行业大洗牌也由此开始。早些年只是人们只是对于计算机和互联网有了些基础的认识&#xff0c;现在它正在悄悄的改变着我们生活的…

富格林:运用可信技巧揪出暗箱黑幕

富格林悉知&#xff0c;在伦敦金中&#xff0c;对于市场中的暗箱黑幕骗局投资者应该从容应对&#xff0c;利用可信技巧顺利盈利。在市场投资中&#xff0c;投资者需要不断的学习伦敦金基础知识&#xff0c;总结可信的做单方法&#xff0c;更要从以往案例分析受害原因正规预防。…

安装MySQL5.7.19 + 解决数据库乱码

文章目录 1.删除mysql服务 sc delete mysql2.解压到D:\mysql5.7下3.配置管理员环境变量4.D:\mysql5.7\mysql-5.7.19-winx64下创建my.ini1.创建文件2.文件内容 5.管理员打开cmd&#xff0c;切换到 D:\mysql5.7\mysql-5.7.19-winx64\bin6.输入 mysqld -install 安装mysql服务7.初…

网页无插件视频播放器,支持录像、截图、音视频播放,多路播放等,提供源码下载

前言 本播放器内部采用jessibuca插件接口&#xff0c;支持录像、截图、音视频播放等功能。播放器播放基于ws流&#xff0c;分屏操作支持1分屏、4分屏、6分屏、9分屏方式。 jessibuca工作原理是通过Emscripten将音视频解码库编译成Js&#xff08;WebAssembly&#xff0c;简称was…

Java集合Collection之LinkedList

LinkeList LinkedList&#xff08;双向链表&#xff09;是一种常见的线性数据结构&#xff0c;但是并不会按线性的顺序存储数据。它由一系列节点组成&#xff0c;每个节点包含数据部分和一个指向下一个节点的引用。相比于数组&#xff0c;链表具有动态大小、插入和删除效率高的…