【无监督】2、MAE

2023-11-06

在这里插入图片描述

论文:Masked Autoencoders Are Scalable Vision Learners

代码:https://github.com/facebookresearch/mae

出处:CVPR2022 Oral | 何凯明 | FAIR

一、背景

本文的标题突出了两个词:

  • masked:借鉴了 BERT 中的 mask 方法,在视觉中引入了 mask 的操作,随机 mask 掉一些图像块,然后预测这个图像块
  • scalable:说明模型有很好的扩展性

auto:自回归模型,特点就是标签和样本来自于同一个东西

  • 比如 NLP 中一个被 mask 掉一些 word 的句子是输入样本, mask 掉的单词是学习的标签,这两个东西都来自于同一个句子。所以说不说 auto 都是可以的
  • 但在视觉任务中,很少有样本和标签是来自于同一个东西的,一般标签是文本,样本是图片
  • 所以这里的 auto 的意思就是说,在模型训练的时候,训练的样本和标签是来自于一个图片的,所以引入了 auto 这个前缀
  • autoencoder 就表示自编码器

MAE 是怎么做的:

  • 随机的盖住图片中的一些块儿,然后再去重构这些被盖住的像素
  • 思想来自于 BERT,这里 mask 掉的是一个 patch

核心设计:

  • 非对称的 encoder-decoder 架构,非对称是指编码器是作用在可见的像素上,解码器是作用在所有块的特征上的(对被 mask 掉的块来说,解码器是要学习不可见的块)。解码器相比编码器更小,开销不到编码器的 1/10
  • 作者发现当遮掉图像中绝大部分的像素(如 75%)时,那么会得到一个很有意义的自监督的任务(因为如果遮住很少的部分可能插值就能重构了,而学习不到更深层的表征)

效果:

  • 在 ViT-H 上使用小的数据集 ImageNet-1k 的时候,就能得到在 ViT 中使用百倍以上图片训练的效果(87.8%),而且是没有使用标签的
  • MAE 主要是用来做迁移学习的,在迁移学习上表现的比较好,在物体检测、示例分割、语义分割上都挺好的,所以通过不带标签的数据使用自监督方法训练出来的模型,在迁移学习上的效果也很不错,达到了 BERT 在 NLP 中的效果。

MAE 和对比学习的不同(对比学习也是自监督学习的一种):

  • MAE 是对一张图像随机 mask 掉像素,通过模型来还原像素
  • 对比学习是使用代理任务(如数据增强)来将一张图像变成 两张不同的图像,通过对比学习来让模型学习哪些图像是正样本对,从而学习出图像特征

二、方法

在这里插入图片描述

注意:

  • encoder 的输入是经过 mask 的 patch embedding
  • decoder 的输入是 encoder 的输出 embedding 被 mask 掉的 token 编码,这里 mask 掉的 token 编码是待学习的的向量,而不是直接把原图信息输入了

预训练过程:

  • 输入是被打 patch 然后遮盖一些 patch,灰色表示被 mask 掉,对 patch 得到 patch embedding ,且加上位置编码,然后随机打乱这些 patch embedding,如果要删除80%的话,就把最后的 80% patch 拿掉就可以了,和随机抹除 mask 的意义是一样的。
  • 把保留的可见的 patch embedding 送入 encoder(ViT),得到每个块的特征表示(较大的绿色块),经过提取后的特征块会根据之前块的编号重新拉长,也就是恢复到打乱顺序之前的顺序,被 mask 掉的块也会放上原来的像素特征(小的灰色块)
  • 重新放回原来位置的特征序列送入 decoder,用于恢复全部的像素信息,然后计算 MSE loss
  • 而且这里的编码器灰色块比解码器更大一些,说明主要的计算量来自编码器,因为对图像信息的编码很重要,而且编码器接收的是少量的没有被盖住的图片,计算量相对少一点

怎么重构出原图:

  • 解码器的最后一层是线性层,如果一天 patch 是 16x16 的话,就输出 256 维度的特征,拿到后 reshape 到 16x16 即可

损失函数:MSE

  • 预测像素和真正像素做相减,然后做平方和
  • 而且只在被 mask 掉的像素块上做 MSE,因为有一些像素是没有被盖住的,本来模型就是可见的,所以不用计算 MSE

如果像用这个结构做一些其他的视觉任务:

  • 只需要编码器,不需要解码器,将这个结构当做一个特征提取器
  • 具体的做法就是,输入的图像不用 mask,只需要打成 patch 序列,然后经过 encoder 得到对应的特征就可以了

效果展示:

图 2 是使用 MAE 在 ImageNet 验证集上构造的图片,这些是测试结果,图像没有参与训练

  • 左边一列是遮住 80% 的图像
  • 中间一列是重构的图像
  • 右边一列是真实的图片
  • 虽然细节比较模糊,但是这种能重构的思路已经很惊人了

在这里插入图片描述

在这里插入图片描述

图 4 展示了遮盖不同比例的图像的重构效果:

在这里插入图片描述

BERT 在 NLP 上取得了很大的成功,计算机视觉这边也有很多使用 BERT 思想的方法,但都不是很成功,作者认为有三个原因:

  • 第一,视觉任务上之前大多使用的都是 CNN 这种操作方式,通过不断叠加卷积核,来提取聚合的图像像素信息,但是 mask 这种操作不太适合 CNN,因为在 transformer 中,mask 掉的是一个单词,这个词是一个特定的词,会一直保留下来,和别的单词区分开来。如果在卷积上做 mask,也就是把部分像素盖住或者换上特定的值,在卷积时,无法把这部分所表达的信息识别出来,所以在后面的时候比较难还原这块到底是什么,不好加入位置编码。但现在 ViT 在视觉上的成功,已经能解决了。
  • 第二,信息的粒度不同,NLP 中每个词表示的是有语义信息的,如果去掉某些词可能会导致语义变化。但是在图片中,会有冗余的像素信息,如果去掉一个块的话,可以使用插值还原。所以作者将高比率的块随机去掉,就能极大降低图像的冗余性。这样的策略是自监督的模式,就是图像自己监督自己,会驱使模型学习全局的信息,而不是局部的信息(可以看图 2 和图 4)
  • 第三,解码器要还原的东西不同,在 NLP 中,mask 掉的是单词,解码器要还原的是单词,单词是有个哦层语义信息的,而在视觉中,mask 掉的像素,解码器要还原的是相似,像素是比较低层的信息。所以 BERT 中使用的一层全连接层解码器在图像中是不可用的,图像中需要更大的解码器来还原更复杂的特征

MAE 可以看做 BERT 在视觉上的扩展,但语言和视觉有很多不同:

  • 语言中,一个单词是有语义信息的
  • 图像中,一个 patch 虽然是图像的一部分,但不是独立的个体,不是一个含有语义信息的分割,可能是多个物体的一小块
  • 但 MAE 学到了比较好的效果,也能做一些复杂的任务,所以说 MAE 或 transformer 确实能学习一些隐藏的表达

三、效果

  • 左侧:ViT 原文在 ImageNet-1k 上训练的结果
  • 中间:作者重构和改进的的 ViT 方法(因为原文训练的不太稳定),主要是加了一些正则化的方法,因为 BiT 论文当时说 transformer 需要在很大的数据集上才能训练好,但后面大佬们就发现加入一些正则化的项也能在小的数据集上训练出好的结果
  • 右侧:MAE 在 ImageNet-1k 上预训练,再在 ImageNet 微调

在这里插入图片描述

各种消融实验:

在这里插入图片描述

mask 比例:75% 最好

在这里插入图片描述

mask 方式:随机采样最好

在这里插入图片描述

预训练轮数和微调轮数:

在这里插入图片描述

迁移学习效果:COCO 检测和分割

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【无监督】2、MAE 的相关文章

  • 无监督学习

    无监督学习 9 1 无监督特征学习9 2 概率密度估计 无监督学习 xff08 Unsupervised Learning xff0c UL xff09 是指从无标签的数据中学习出一些有用的模式 xff0e 无监督学习算法一般直接从原始数据
  • 自监督学习(self-supervised learning)(20201124)

    看论文总是会看出来一堆堆奇奇怪怪的名词 从远程监督 有监督 半监督 无监督开始 xff0c 最近又看到了一个自监督 首先先对上面的概念进行简述 xff1a 半监督 xff08 semi supervised learning xff09 x
  • 对比学习simSiam(一)--Exploring Simple Siamese Representation Learning总体理解

    1 从名字上把握 sim是我们熟知的相似的那个单词 这个Siam是孪生的意思 这里使用这个来命名应该是为了指出孪生的重要性 这里的核心其实是在提出一个思想 对比学习这种由孪生网络结构构成的无监督学习的关键其实是孪生网络 两个网络有其中一方停
  • 自监督学习-对比学习-MoCo Momentum Contrast 阅读笔记

    Momentum Contrast for Unsupervised Visual Representation Learning 原文地址 CVPR 2020 Open Access Repositoryhttps openaccess
  • 机器学习中的名词解释(一):监督学习、无监督学习、半监督学习、自监督学习(通俗理解)

    机器学习中有几个带有 监督 二字的名词 易混淆 写篇博客解释一下下 1 监督学习 Supervised Learning 是指从标注数据中学习预测模型的机器学习方法 其本质是学习输入到输出的映射的统计规律 映射 两个集合中元素相互对应的关系
  • Q-learning的强化学习2*2案例C语言实现

    版权声明 本文为CSDN博主 小然 ran 的原创文章 遵循CC 4 0 BY SA版权协议 转载请附上原文出处链接及本声明 原文链接 https blog csdn net qq 23144435 article details 8036
  • 无监督特征选择算法综述

    无监督特征选择算法 Filter方法 只使用数据的内在属性 不使用聚类等其他辅助方法 速度快 单变量 Information based methods SUD Sequential backward selection method fo
  • [Python人工智能] 十五.无监督学习Autoencoder原理及聚类可视化案例详解

    从本专栏开始 作者正式研究Python深度学习 神经网络及人工智能相关知识 前一篇文章详细讲解了循环神经网络LSTM RNN如何实现回归预测 通过sin曲线拟合实现如下图所示效果 本篇文章将分享无监督学习Autoencoder的原理知识 然
  • 【机器学习】机器学习知识点全面总结(监督学习+无监督学习)

    目录 机器学习知识点全面总结 一 监督学习 1 1 单模型 1 1 1 线性回归 1 1 2 逻辑回归 1 1 3 Lasso 1 1 4 K近邻 KNN 1 1 5 决策树 1 1 6 bp神经网络 1 1 7 支持向量机 SVM 1 1
  • 目标检测入门

    目录 R CNN 1 1提取候选区域 1 1 1合并规则 1 1 2多样化与后处理 1 2特征提取 1 2 1预处理 2 Fast RCNN 2 1RoI Pooling Layer Faster RCNN 结构 RPN anchor 目标
  • 个人学习网站指南

    个人学习网站指南 一 书籍 二 视频 三 教程 四 实用 五 工具 六 行业 七 百科综合 八 博客论坛 九 官网 十 学习导航 个人平时使用到的一些网站 以免费为主 主要是为了自己以后需要用到能快速导航 持续更新 一 书籍 Free Co
  • 【无监督】3、SimCLRv1

    文章目录 一 背景 二 方法 2 1 对比学习框架 2 2 训练所使用的 batch size 2 3 数据增强方式 2 4 更大的模型更有利于无监督对比学习 2 5 非线性映射头能带来更好的效果 2 6 更大的 batch size 和更
  • TOP 100值得读的图神经网络----自监督学习与预训练

    清华大学的Top 100 GNN papers 其中分了十个方向 每个方向10篇 此篇为自监督学习与预训练方向的阅读笔记 Top100值得一读的图神经网络 大家好 我是蘑菇先生 今天带来Top100 GNN Papers盘点文 此外 公众号
  • 【无监督】4、BYOL

    文章目录 一 背景和动机 二 方法 2 1 BYOL 网络结构 2 2 实现细节 三 效果 3 1 总体效果 3 2 和 SimCLR 的对比 四 BYOL 真的没有用到负样本吗 BN 之讨论 论文 Bootstrap Your Own L
  • 【论文阅读】BGRL:Bootstrapped Representation Learning on Graphs

    目录 摘要 1 引言 2 Bootstrapped Graph Latents BGRL 2 1 BGRL组件 2 2 BGRL更新步骤 2 2 1 更新 2 2 2 更新
  • 2.基于原型的聚类方法

    基于原型的聚类方法 文章目录 一 概念 二 K Means 2 1 算法流程 2 2 超参数 2 3 特性 2 4 解析 2 5 K Means 2 6 Python实现 三 K Mediods 3 1 概念 3 2 算法对比 四 特性 一
  • 下载Visio2013镜像路径以及安装Visio2013软件

    下载Visio2013镜像路径以及安装Visio2013软件 下载镜像安装路径 https exmail qq com cgi bin ftnExs download k 5736333137c49bbd8e5ddf1c106407561d
  • 机器学习第一周(一)--机器学习引入

    机器学习 监督学习 无监督学习 机器学习 1 机器学习算法主要分为俩大类 监督学习 Supervised Learning 和无监督学习 Unsupervised Learning 监督学习与无监督学习一个最大不同是监督学习的数据是带标签的
  • 自监督学习-MoCo-论文笔记

    论文 Momentum Contrast for Unsupervised Visual Representation Learning CVPR 2020 最佳论文提名 用动量对比学习的方法做无监督的表征学习任务 动量的理解即是指数移动平
  • 机器学习基础-监督学习与无监督学习

    机器学习基础 监督学习与无监督学习 机器学习 Machine Learning 主要研究计算机系统对特定任务的性能 逐步进行改善的算法和统计模型 通过输入海量数据对模型进行训练 使模型掌握数据所蕴含的潜在规律 进而对新输入的数据进行准确的分

随机推荐

  • [激光原理与应用-27]:《激光原理与技术》-13- 激光产生技术 - 激光稳频技术

    目录 前言 第1章 什么频率的稳定性和可复现性 1 1 频率的稳定度 1 2 频率复现性 第2章 影响激光频率稳定的因素 2 1 温度引起腔长变化 则有 2 2 大气变化引起折射率的变化 2 3 机械振动对频率稳定性的影响 2 4 外部因素
  • 关于Activity中onStop和onPause调用时机的各种误解

    源码 https github com w g b ActivityReview 正确结果 假设当前的FirstActivity为A 要调用A的onPause方法而不调用onStop方法 1 在AndroidManifest文件中 将Thi
  • Mysql中Blob类型字段的插入、查看、截取和拼接

    导航 前言 数据库版本 创建测试表 插入数据 查看数据 截取数据 拼接数据 进制转换 实际处理 总结 前言 本来并没有太注意到Blob这个类型 在游戏的开发中存储数据常常使用这个类型 这里的使用其实是 机械 的使用 因为应用程序和Mysql
  • 一个简单词法分析器的C语言实现

    一个简单词法分析器的C语言实现 1 1实验描述 例如 对源程序 begin x 9 if x gt 9 then x 2 x 1 3 end 的源文件 经过词法分析后输出如下序列 lt 1 begin gt lt 10 x gt lt 18
  • 探究安全帽识别系统的原理及应用

    安全帽识别这一词想必大家都有所耳闻 但是他的工作原理和应用大家可能不太了解 富维图像作为资深的安全帽识别设计者 将为大家追本溯源 让大家了解安全帽识别的庐山真面目 安全帽识别系统是基于人工智能图像识别技术的高科技产物 近些年来 图像识别技术
  • 业界最全遥感图像语义分割Benchmark发布啦!还有提高小目标分割性能的C2FNet等你pick!

    遥感图像语义分割是图像分割领域的一个重要的垂类应用 有着广泛的需求和实际应用价值 尤其在灾害评估 农作物产量估计和土地变化监测等领域有着不可替代的作用 相比于自然图像的语义分割 遥感图像语义分割由于有其自身的特殊性和挑战性 如遥感图像存在大
  • js 字典的使用(入门级)

    2023 1 18今天我学习了如何使用字典 首先是字典的形式 dict a 1 b 2 c 3 字典是一种以键 值为一队存储的数据结构 key value key相当于字典的索引 key不允许重复 Array既是字典也是数组 一 定义数组
  • 剑指 Offer 09. 用两个栈实现队列

    leetcode题目 用两个栈实现一个队列 队列的声明如下 请实现它的两个函数 appendTail 和 deleteHead 分别完成在队列尾部插入整数和在队列头部删除整数的功能 若队列中没有元素 deleteHead 操作返回 1 示例
  • 聚簇索引和非聚簇索引的区别

    一 聚簇索引和非聚簇索引 1 聚簇索引和非聚簇索引 我拿查字典做一个比喻 字典的页面就好比是物理排列顺序 物理排列顺序是固定的 查询的方式就好比是索引 区别是聚簇索引就好比是拼音查询 每一个字母查询出来的页面顺序是跟你字母的顺序一致的 a字
  • Go项目布局建议

    我们编写的 如果是Go 程序都是简单程序 一般由一个或几个 Go 源码文件组成 而且所有源码文件都在同一个目录中 但是生产环境中运行的实用程序可不会这么简单 通常它们都有着复杂的项目结构布局 弄清楚一个实用 Go 项目的项目布局标准是 Go
  • MapReduce优劣,理解MapReduce与Hadoop

    MapReduce是一种计算模型 用于大规模数据集 大于1TB 的并行运算 概念 Map 映射 和 Reduce 归约 是它们的主要思想 都是从函数式编程语言里借来的 还有从矢量编程语言里借来的特性 它极大地方便了编程人员在不会分布式并行编
  • Tor相关网站

    2017 03 21 docker搭建 https github com antitree private tor network stem库 https stem torproject org tutorials examples lis
  • 【Oracle SQL语句 某字段重复数据只取一条】

    问题描述 环境 甲方系统用了Oracle 我用的是MySQL 业务场景 开发中模拟甲方数据库 缺少某视图 遂自行根据部分数据表内容 创建数据 数据主要有两项内容 一个是name 一个是code code理论上唯一 一个code只对应一个na
  • Java代码实现非对称加密RSA

    非对称加密算法中 生成两个密钥一个公钥和一个私钥 它们是一对要搭配使用 如果用公钥进行加密 只有用对应的私钥才能解密 如果用私钥进行加密 只有用对应的公钥才能解密 非对称加密算法实现机密信息的交换过程为 甲方生成一对密钥并将其中一个作为公钥
  • 基于医疗RFID手术用品智能柜管理应用方案

    基于 西班牙巴塞罗那Consorci Sanitari DE L ANOIA最近布署Palex出示的名叫DYANE聪慧柜子的RFID应用方案 来管理高价位手术用品 确保了库存量的实时性并避免了药物到期状况 该系统软件还有药物应用追溯作用 降
  • ubuntu16.04安装sougo输入法 值得总结

    ubuntu16 04按照搜索 ubuntu16 04安装搜狗输入法 的百度经验就行安装后 输入法总是出不来 折腾了一天各种尝试也没搞定 第二天比较清醒 发现昨天安装没问题 是我没看输入法管理的这些快捷键没把输入法切换过来 因为输入法管理器
  • [从零开始学习FPGA编程-54]:高阶篇 - 基于IP核的FPGA开发-PLL锁相环IP核的原理与配置(Altera)

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 前言 现代数字电路少不了时钟 时钟是时序电路的心跳 没有时钟 时序电路就无法工作 但是不同功能的时序电路 其所需要的时钟频率是不同的 不太可
  • ADXL345传感器介绍

    今天小白给大家介绍一款当下比较流行的三轴加速度传感器 ADXL345 通过本文的介绍让大家学会如何使用这款功能强大的三轴加速度传感器 欢迎一起交流学习 1 ADXL345传感器简介 该款传感器如下图 ADXL345 是 ADI 公司推出的基
  • springboot整合activiti7

    一 添加依赖
  • 【无监督】2、MAE

    文章目录 一 背景 二 方法 三 效果 论文 Masked Autoencoders Are Scalable Vision Learners 代码 https github com facebookresearch mae 出处 CVPR