【自监督学习】 MAE阅读笔记

2023-10-27

1.MAE

Masked Autoencoders Are Scalable Vision Learners

bert+ViT

MAE的主要目的是进行迁移学习的预训练

1.Abstract

随即盖住一些图片中的块(patches),并重建被盖住块中的所有像素。

  1. 一种非对称编码器-解码器体系结构。
  • 编码器只对可见的patches(没有掩码标记)进行操作

  • 轻量级解码器,它从潜在的表示和掩码标记重建原始图像。

  1. 当遮住大量的块(75%)会得到非显然的有意义的自监督任务。
  2. 两种设计结合起来,速度提升三倍,在vit模型中可以达到87.8的精度。

模型结构

  • 理解:对图片进行切割,被盖住的用灰色演示。未盖住的图片放入encoder,得到特征。拉长,将被盖住的块放回原来的位置,恢复为原始图片。灰色的为位置信息。输入解码器中,解码器进行重构。

2.Introduction

  1. 尽管有很多人讲BERT拓展到了cv的应用,但仍然落后于NLP。什么使得带掩码的自编码模型在CV和NLP上不一样?

    1. 在卷积窗口,不容易将MASK的词放进去。Transformer里一个mask是一个特定的词,但卷积里掩码无法区分边界,(无法将掩码里的像素识别为特殊的东西)(通过ViT解决)
    2. 二者的信息密度不同。图像有冗余的像素,为了鼓励学习到更多信息,会屏蔽高比例的随机补丁。避免学习局部,从而学习整体。
    3. 像素级的解码器要比nlp的复杂。

    MAE从输入图像中屏蔽随机块,并在像素空间中重建缺失的块。它有一个非对称的编码器解码器设计。我们的编码器只操作补丁的可见子集(没有掩码标记),解码器重构遮挡的块。可以减轻计算开销。

3. MAE结构

  1. Masking

    和ViT一样将图片分割。每一格为一个patch。

    random sample一些保留。

  2. 编码器。

    与ViT一样,但是只对未遮盖的做编码,把每一块拿出来做线性投影,然后加上位置信息。投入多个transformer进行训练。

  3. 解码器。

    解码器的输入是由1.编码的可见patch通过编码器得到的潜在表示2.掩码标记。

    被盖住的块可以通过共享的同样向量来表示,向量的值可以通过学习得到。

    类似一个transformer,所以应该加入位置信息使用。(不确定:是否对编码的潜表示再加上。)

    解码器一般只在预训练时使用,其他任务只使用编码器即可。

  4. 重构原始像素。

    解码器最后为线性层。reshape原始结构,还原像素信息。损失函数使用的是均方误差MSE。只计算被遮住patch的损失。

  5. 实现。

    首先对patch进行线性投影,加上位置信息,生成token列。再把序列随机shuffle,按照屏蔽比删除列表后面的部分,完成随机采样。

    在解码时,将向量长度补充完整,加上位置信息,重新还原为原来的位置。使得不需要任何稀疏的操作(为什么)。

4. 实验

  1. ImageNet
    1. 先做子监督与训练,在相同数据集上做有label的监督训练。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【自监督学习】 MAE阅读笔记 的相关文章

随机推荐

  • maven 插件之maven-source-plugin

    在很多情况下 需要对于Maven工程的源代码进行源文件的打包 可以利用source插件来完成 利用Maven的Source插件 对Maven工程的源码进行打jar包 Plugin http maven apache org plugins
  • C语言中的函数(超详细)

    C语言中的函数 超详细 一 函数概述 二 C语言中函数的分类 1 库函数 2 自定义函数 三 函数的参数 1 实际参数 实参 2 形式参数 形参 四 函数的调用 1 传值调用 2 传址调用 五 函数的嵌套调用和链式访问 1 嵌套调用 2 链
  • idea新建springboot项目pom文件报错

    前言 之前也有过类似的情况 只不过都是把spring boot starter parent版本号改成本地仓库已经有的 然后继续开发 今天想写个demo 就新建了一个 然后版本号不一致 就一直报错 所以找了一天问题 才解决 太可怕了 新建s
  • 计算机存储盘教程,手把手的硬盘分区教程

    现在有些小伙伴们对于给电脑硬盘分区想必比较头疼 给电脑硬盘分区分为两种情况 一种是在安装系统之前给系统硬盘分区 另一种是在安装系统之后给硬盘分区 我们现在购买的品牌机和笔记本的用户比较多 而且笔记本和品牌机在买回来后只要简单的释放下系统就好
  • Unity--上传、下载文件并保存到本地

    目录 1 上传文件到服务 2 传参下载到本地 3 直接下载 4 存本地 1 上传文件到服务 public void UpFileToServer StartCoroutine UpLoadFiles StartCoroutine UpLoa
  • jemalloc Linux 安装与使用方法

    jemalloc 在Github上开源了 你可以选择下载release 版本 或者直接clone 源码编译 我选择的是源码编译 clone 项目 git clone https github com jemalloc jemalloc gi
  • visual stdio报错集锦

    error C2220 警告被视为错误 没有生成 object 文件 C 报错 The build tools for v141 Platform Toolset v141 cannot be found vs错误 使用 简体中文GB231
  • 机器学习算法优缺点及适用场景总结

    文章目录 机器学习算法优缺点及适用场景总结 1 线性回归 1 LinearRegression 2 Ridge 3 Lasso 2 LR 逻辑回归 3 KNN 最近邻算法 4 朴素贝叶斯 5 SVM 支持向量机 6 决策树 7 RF 随机森
  • python转换函数使用_Python不使用int()函数把字符串转换为数字实例讲解

    Python不使用int 函数把字符串转换为数字 不使用int 函数的情况下把字符串转换为数字 如把字符串 12345 转换为数字12345 方法一 利用str函数 既然不能用int函数 那我们就反其道而行 用str函数找出每一位字符表示的
  • hikari配置断开重连_Spring boot 数据库连接断线重连问题

    问题描述 我正在做的这个项目 数据库是跨区并且不由自己管理的 防火墙会每隔一段时间就自动断开数据库连接 于是需要对application properties的datasource进行配置 Ps 我使用是mybatis连接数据库 配置及具体
  • MOSFET、IGBT的结构与工作原理详解

    来自百度百科 先学习一下MOSFET 图1是典型平面N沟道增强型NMOSFET的剖面图 它用一块P型硅半导体材料作衬底 在其面上扩散了两个N型区 再在上面覆盖一层二氧化硅 SiO2 绝缘层 最后在N区上方用腐蚀的方法做成两个孔 用金属化的方
  • 剑指Offer - 面试题27:二叉树的镜像

    题目 请完成一个函数 输入一棵二叉树 该函数输出它的镜像 二叉树节点的定义如下 typedef int TElemType 树结点的数据类型 目前暂定为整型 struct BianryTreeNode TElemType m nValue
  • unity手指触摸事件

    Unity 触屏操作 当将Unity游戏运行到IOS或Android设备上时 桌面系统的鼠标左键可以自动变为手机屏幕上的触屏操作 但如多点触屏等操作却是无法利用鼠标操作进行的 Unity的Input类中不仅包含桌面系统的各种输入功能 也包含
  • 龙芯mips64el -适配electron及打包

    背景 内网机器 uos龙芯版 一开始把项目从外网考过去 运行 electron报错 后来发现 electron 没有mips架构的 只能自己改造了 直接干货 记得给打上哦 1 从http www loongnix org index php
  • NFS Provisioner

    一个自动配置卷的程序 它使用现有的和已配置的nfs服务器支持通过持久卷动态配置kubernetes持久卷 持久卷被配置为 namespace namespace namespace pvcName pvName 注意使用这个组件必须要提前配
  • 服务架构基本概念

    单体 所有业务都集中在一个项目中开发一个服务然后打一个包部署 分布式 分布式是指将不同的业务分布在不同的地方 集群指的是将几台服务器集中在一起 实现同一业务 分布式的每一个节点 都可以做集群 而集群并不一定就是分布式的 把单体系统拆分多个子
  • nginx配置指南

    nginx conf配置 找到Nginx的安装目录下的nginx conf文件 该文件负责Nginx的基础功能配置 配置文件概述 Nginx的主配置文件 conf nginx conf 按以下结构组织 配置块 功能描述 全局块 与Nginx
  • 微服务学习资料(持续更新)

    文章目录 微服务学习资料 持续更新 微服务介绍 微服务架构模式 从单体架构到微服务架构 绞杀者模式 微服务API设计 微服务安全 认证与鉴权 微服务数据架构 微服务事务管理 CAP理论 分布式事务 Saga模式 服务网格 服务版本管理 架构
  • Tensorflow导入报"Failed to load the native TensorFlow runtime."解决方案

    问题描述 在ubuntu服务器端测试import tensorflow 导入正常 但是使用pycharm远程访问连接使用pycharm时 出现tensorflow环境出现问题 为什么 这和之前在服务器安装过程中导入pycharm出错的原因一
  • 【自监督学习】 MAE阅读笔记

    1 MAE Masked Autoencoders Are Scalable Vision Learners bert ViT MAE的主要目的是进行迁移学习的预训练 1 Abstract 随即盖住一些图片中的块 patches 并重建被盖