[论文分享]MR-MAE:重构前的模拟:用特征模拟增强屏蔽自动编码器

news/2024/4/20 17:32:21/文章来源:https://blog.csdn.net/weixin_48018951/article/details/131727487

论文题目:Mimic before Reconstruct: Enhancing Masked Autoencoders with Feature Mimicking

论文地址:https://arxiv.org/abs/2303.05475

代码地址:https://github.com/Alpha-VL/ConvMAE(好像并未更新为MR-MAE模型)

MR-MAE是在ConvMAE基础上提出的后续文章

ConvMAE相关信息如下:

论文题目:ConvMAE: Masked Convolution Meets Masked Autoencoders

论文地址:https://arxiv.org/abs/2205.03892

代码地址:https://github.com/Alpha-VL/ConvMAE

摘要

掩模自编码器(MAE)是一种流行的大规模视觉表征预训练方法。然而,MAE仅在解码器之后重建低级RGB信号,缺乏对编码器高级语义的监督,因此存在次优学习表征和较长的预训练时间。为了缓解这一问题,以前的方法只是用预训练图像(DINO)或图像语言(CLIP)对比学习的编码特征替换75%的掩码标记的像素重建目标。与这些研究不同的是,我们提出了先模仿后重建的掩膜自编码器,称为MR-MAE,它在预训练过程中不受干扰地共同学习高级和低级表征对于高级语义,MR-MAE使用来自编码器的超过25%的可见标记的模拟损失来捕获在CLIP和DINO中编码的预训练模式。对于低级结构,我们继承MAE中的重建损失来预测解码器后75%掩码令牌的RGB像素值。由于MR-MAE在不同的分区分别应用高级和低级目标,它们之间的学习冲突可以自然地被克服,并有助于为各种下游任务提供更好的视觉表征。在ImageNet-1K上,预训练仅400 epoch的MR-MAE基础在微调后达到85.8%的top-1精度,比1600 epoch的MAE基础高出2.2%,比之前最先进的BEiT V2基础高出0.3%。代码和预训练模型将在https://github.com/Alpha-VL/ConvMAE上发布。

提炼

MR-MAE出发点:MAE仅在解码器之后重建低级RGB信号,缺乏对编码器高级语义的监督

已有方法:用预训练图像(DINO)或图像语言(CLIP)对比学习的编码特征替换75%的掩码标记的像素重建目标

MR-MAE方法:

  • 结合DINO、CLIP和MAE,联合学习高级和低级表示;

  • 使用Mimic避免冲突

  • 使用encoder输出高级表示,decoder输出低级表示

创新点

  • MR-MAE同时利用高级表示和低级表示,并通过对这两个目标的学习来促进编码器的预训练

  • 重建损失遵循MAE,学习低级表示。原始的MAE随机抽取25%的可见标记,并由编码器处理它们。然后,将混合位置嵌入的编码标记送入轻量级解码器,用于预测75%掩码标记的像素值。

  • MR-MAE通过模拟损失学习高级表示,该模拟损失仅应用于编码器之后的可见token。模拟损失最小化了MAE编码器输出与由现成的预训练图像语言(CLIP)或图像-图像(DINO)生成的高级特征之间的L2距离。

  • 模拟损失和重建损失应用于不同的令牌组(25%可见vs 75%掩码)和不同的网络层(编码器vs解码器的输出),MRMAE很好地解决了低级和高级学习目标之间的监督冲突。

相关工作

MAE

蒙面语言建模(MLM)通过大规模预训练彻底改变了自然语言理解。受此启发,MAE将 MLM 范式应用到视觉表示学习中。MAE只编码25%的可见图像标记,并重建其他75%掩码标记的RGB像素值

与MLM相比,MAE存在以下缺点:

  • 首先,与语言建模中的高级监督不同,MAE 的低级RGB信号过于原始和冗余,无法充分释放掩码自编码对下游视觉任务的理解能力。

  • 其次,MAE 采用了重编码器和轻解码器的非对称架构,其中编码器经过预训练后保留,用于下游迁移学习。然而,MAE只对解码器的输出进行预训练监督,不足以引导编码器,并且减慢了预训练阶段的收敛速度。

对比学习

对比学习通过从信号源的增强视图中提取不变性,在学习有效的视觉表征方面取得了巨大的成功。DINO和CLIP是对比学习范式中的两种典型方法。

DINO通过图像-图像对比学习预训练的ViT产生了强烈的对象性。CLIP通过图像-文本对对比学习,展示了惊人的零样本学习能力。但是,DINO和CLIP在下游任务上的微调性能不如通过 MAE 方式学习的表征。

为了构建更有效的重构目标,现有的部分方法探索现成的预训练DINO、CLIP或在线动量特征作为高级监督。但是,考虑到不同目标同时重建造成的干扰,以往的方法都是简单地用高阶特征代替原有的RGB像素目标,只利用高阶特征来监督解码器的输出

模型框架

整个训练过程可以分为预训练和下游任务,下游任务只使用预训练后的教师模型

预训练时的借口任务分别是重构任务和对比任务,目的是联合学习低级表示和高级表示,重构任务基于MAE模式进行

简单来说是在MAE的基础上,并行的添加了一个已经预训练好的模型(DINO或CLIP)对MAE的encoder输出进行约束。

学习低级表示

MAE 采用非对称编码器-解码器设计,给定一个输入图像,MAE首先将其分成均匀的 patch,并随机屏蔽其中的75%。我们分别用 Im 和 Iv 表示被遮挡的和可见的 patch,然后,将25%的可见 patch 进行标记并送到encoder(transformer)中以产生c维中间表示Ev。MAE采用轻量级变压器解码器预测Dm,重建被屏蔽令牌的RGB值。在Dm和Im之间使用L2重构损耗LR:

学习高级表示

MR-MAE使用预训练的现成特征编码器对中间表示进行正则化来增强MAE,即用预训练好的DINO或CLIP产生的高级特征来引导编码器的中间Ev,首先通过将输入图像送到基于transformer的视觉编码器中提取DINO或CLIP特征,表示为Fv,。通过一个线性投影层变换可见表示Ev来模拟Fv。Lm模拟损失定义为:

由于针对可见标记的特征模拟损失LM和针对掩蔽标记的重建损失LR旨在编码输入图像的不同方面,即高级语义和低级纹理,因此它们可以相互补充,以学习更具区别性的表示。

其他技巧

特征选择

MAE采用随机屏蔽策略进行可见令牌选择,这是低电平信号重建的自然选择,无需额外的引导。由于现成预训练模型中的cls token可以通过其注意图清楚地描绘重要区域,因此我们选择教师网络(即DINO/CLIP)注意图中最突出的token进行可见特征模仿。通过这种方式,MR-MAE可以更好地捕获教师网络中编码的信息性高级语义,而不是非显著的低级语义。

多层融合

MAE仅将编码器最后一层的输出令牌馈送到解码器以进行掩码像素重建。由于编码器的不同层可能描述图像的不同抽象层次,我们通过元素值相加来融合来自多个编码器中间层的可见标记,然后利用融合后的标记进行高层特征模拟和低层像素重建。这样,特征模拟的监督可以直接应用到编码器的多层,从而改善视觉表示。

mask的卷积

由于物体存在于不同的尺度,对多尺度视觉信息的探索在计算机视觉任务中取得了巨大的成功。在MCMAE之后,我们在Transformer块之前附加了额外的mask卷积,以有效地捕获高分辨率细节,并应用多尺度逐块掩膜来防止信息泄漏以进行像素重建。这种多尺度编码可以学习分层表示,并在下游任务上取得显著改进。

实验

参数设置

遵循ImageNet-1K的预训练和微调协议。MR-MAE预训练400个epoch,batch size为1024,权重衰减为0.05。采用AdamW优化器和余弦学习率调度器,最大学习率为1.5 × 10−4,预热 80 个epoch。使用25%的mask ratio和8个解码器块。对权重分别为0.5和0.5的重构损失和模拟损失进行了联合优化。选择经过CLIP预训练的ViT-B/16作为高级别教师。

在自监督预训练之后,微调100个epoch,预热5个epoch。采用与预训练相同的批大小、优化器和权重衰减。初始学习率、分层学习率衰减和下降路径率分别设置为3 ×10−4、0.6和0.2。

对比方法

BeiT , MAE , CAE用于预训练视觉变压器,采用低阶像素的重建和各向同性架构

SimMIM、MCMAE和MixMIM在MIM中引入了多尺度特征,与各向同性架构相比,提高了微调精度,仍然重建低水平信号

MaskFeat、data2vec、MVP和MILAN通过整合DINO、动量特征和CLIP,直接用高水平语义目标代替低水平信号的重建

MILAN提出了一种新的提升解码器和语义感知掩蔽,通过重构高级特征来增强特征学习

BeiT V2将原始的DALL-E标记器替换为通过自编码CLIP特征学习的高级语义标记器

CMAE通过对比损失和重建损失的联合优化来学习表征。与CMAE不同的是,MR-MAE使用了大规模图像-文本对比学习预训练的教师模型,该模型包含更丰富的语义知识

DMAE采用了与MR-MAE类似的方法,它模仿预训练的教师生成的特征,重建低级像素

对象检测

MRMAE能够有效提高检测率并缩短了训练轮次

消融实验

主要贡献点

比较文章提出了主要贡献点,包括两种损失以及三种技巧

可以看出Lm对结果产生了较大帮助,提升了1.7%得到准确率,另外三个技巧分别提升了0.2%,0.1%和0.5%

任务目标

由于低级目标和高级目标包含不同的视觉语义,它们的联合监督可能会相互冲突。如上表第4、5行所示,低水平和高水平目标直接联合重建使ImageNet-1K微调精度下降-1.7%。

另外,不同的高级目标也会影响模型性能。由于图像-图像对比学习(DINO)和图像-语言对比学习(CLIP)编码了不同的高级语义,用不同的高级语义来降低MR-MAE库的性能。

  • CLIP生成的特征可以超过DINO +1%。这意味着图像-语言对比学习比图像-图像对比学习提供了更强的高级语义。

  • 用不同的高阶目标对MR-MAE进行预训练和微调,然后将两个模型集成。CLIP/DINO (Sep.)可以超过CLIP/DINO (Joint) +1.7%,验证了不同目标学习到的互补表示。

模型大小和训练次数

引入高级目标可以使MIM方法收敛得更快,MR-MAE在各种尺寸的模型上效果都优于MAE和MCMAE

可视化结果

可视化不同模型的最后一个自注意层的 CLS token 的注意图

  • MAE的目标是低级像素重建,因此其注意力偏向于纹理模式

  • DINO的注意力过分强调突出对象的部分信息

  • MR-MAE的注意力可以捕获完整的目标信息。

总结

  • MR-MAE保留了MAE的结构,在保证encoder学习低级表示的同时,加入了高级表示学习部分

  • MR-MAE模型使用了已经预训练好的DINO/CLIP模型作为学习高级表示的教师模型,迫使encoder学习高级表示

  • MR-MAE性能的提升也用到了一些其他技巧:可见token的选择,多层特征融合,mask卷积

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

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

相关文章

从Vue2到Vue3【零】——Vue3简介及创建

系列文章目录 内容链接从Vue2到Vue3【零】Vue3简介及创建 文章目录 系列文章目录前言一、Vue3的发布带来了什么1.1 性能提升1.2 源码升级1.3 支持TypeScript1.4 新特性 二、创建Vue3.0工程2.1 什么是Vite2.2 利用Vite创建Vue3.0工程2.3 利用vue-cli脚手架创建Vue3.0工程 三、 …

美团JVM面试题

1. 请解释一下对象创建的过程? Java对象创建的过程主要分为以下五个步骤: 类加载检查 Java虚拟机在读取一条new指令时候,首先检查能否在常量池中定位到这个类的符号引用,并且检查这个符号引用代表的类是否被加载、解析和初始化。如果没有&a…

C#开发的OpenRA游戏之维修按钮

C#开发的OpenRA游戏之维修按钮 前面分析物品的变卖按钮,如果理解这个流程,再看其它按钮的流程,其实是一样的,所以前面的文章是关键,只有理解通透的基础之上,才能继续往下。 维修按钮的存在价值,就是当建筑物受到敌方破坏,还没有完全倒掉之前,可以使用金币来进行修理。…

快速排序的非递归实现、归并排序的递归和非递归实现、基数排序、排序算法的时间复杂度

文章目录 快速排序的非递归三数取中法选取key快速排序三路划分 归并排序的递归归并排序的非递归计数排序稳定性排序算法的时间复杂度 快速排序的非递归 我们使用一个栈来模拟函数的递归过程,这里就是在利用栈分区间。把一个区间分为 [left,keyi-1][key][keyi1,right…

Android 进程与进程之间的通信--AIDL详细教程,以传递对象为例,两个app实现

我这里案例是 通过 IPC 传递对象 (以DemoBean类为例) 如下: AIDL 使用一种简单语法,允许您通过一个或多个方法(可接收参数和返回值)来声明接口。参数和返回值可为任意类型,甚至是 AIDL 生成的其…

如何将jar 包下载到自定义maven仓库

下载命令 mvn install:install-file -Dfileartifactid-version.jar -DgroupIdgroupid -DartifactIdartifactid -Dversionversion -Dpackagingjar -DlocalRepositoryPath. -DcreateChecksumtrue参数解释 在上述命令中,需要替换以下参数: artifactid-vers…

计算机组成原理课程设计 报告

在我的博客查看:https://chenhaotian.top/study/computer-composition-principles-course-design/ 计算机组成原理课程设计 报告 一、目的和要求 深入了解计算机各种指令的执行过程,以及控制器的组成,指令系统微程序设计的具体知识&#xf…

【前端知识】React 基础巩固(二十六)——Portals 的使用

React 基础巩固(二十六)——Portals 的使用 Portals 通常&#xff0c;组件会渲染到 root 节点下。可使用 Portals 将组件渲染至其他节点。 添加 id 为 more、modal 的 div 元素 <div id"root"></div> <div id"more"></div> &l…

工作:三菱PLC之CC-Link IE Field Network通讯知识及应用

工作&#xff1a;三菱PLC之CC-Link IE Field Network通讯知识及应用 一、理论 1. 简介连接 CC-LINK-IE通讯分别有 CC-Link IE TSN&#xff0c;CC-Link IE Control Network&#xff0c;CC-Link IE Field Network&#xff0c;CC-Link IE Field Network Basic几种形式&#xff…

成功解决wget下载报错 : wget HTTP request sent, awaiting response... 403 Forbidden

成功解决wget下载报错 : wget HTTP request sent, awaiting response... 403 Forbidden 问题描述解决方案原理什么是User Agent解决 问题描述 –2023-07-15 02:32:57-- https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2023.03-Linux-x86_64.sh Resolving mi…

PyTorch: 池化-线性-激活函数层

文章和代码已经归档至【Github仓库&#xff1a;https://github.com/timerring/dive-into-AI 】或者公众号【AIShareLab】回复 pytorch教程 也可获取。 文章目录 nn网络层-池化-线性-激活函数层池化层最大池化&#xff1a;nn.MaxPool2d()nn.AvgPool2d()nn.MaxUnpool2d()线性层激…

linux 下如何安装 tar.gz包

linux 下如何安装 tar.gz包 解压缩进入解压后的文件目录下 解压缩 tar -zxvf pycharm-community-2023.1.3.tar.gz进入解压后的文件目录下 ./pycharm.sh可执行Pycharm 建议将目录转移到其他位置 我习惯使用2020版本的 下载地址

源码阅读: echo 回显程序

文章目录 1. 目的2. 原始代码3. 化简和跨平台支持4. 修改后代码的代码分析5. References 1. 目的 阅读 netbsd 9.3 的 echo.c, 练习 C 语言源码阅读的技能。 2. 原始代码 https://github.com/NetBSD/src/blob/trunk/bin/echo/echo.c /* $NetBSD: echo.c,v 1.23 2021/11/16 …

2023年Java最新面试题

由【后端面试题宝典】提供 和 equals 的区别是什么&#xff1f; 对于基本类型&#xff0c;比较的是值&#xff1b;对于引用类型&#xff0c;比较的是地址&#xff1b;equals不能用于基本类型的比较&#xff1b;如果没有重写equals&#xff0c;equals就相当于&#xff1b;如果重…

基于JavaSwing+Mysql的仓库销售管理系统

点击以下链接获取源码&#xff1a; https://download.csdn.net/download/qq_64505944/88049275 JDK1.8 MySQL5.7 功能&#xff1a;管理员与员工两个角色登录&#xff0c;基础数据查找&#xff0c;仓库查找&#xff0c;增删改查仓库信息、商品等 源码数据库文件配置文件课程设…

5分钟构建电商API接口服务 | python小知识

1. 什么是API 我们经常会使用一些API接口来完成特定的功能&#xff0c;比如查询天气的数据&#xff0c;下载股票的数据&#xff0c;亦或是调用ChatGPT模型的结构等等。 API全称是Application Programming Interface&#xff0c;即应用程序接口&#xff0c;它通常提供了一个功…

Mysql单表多表查询练习

题目要求&#xff1a; 1.查询student表的所有记录 2.查询student表的第2到4条记录 3.从student表查询所有的学生的学号&#xff08;id&#xff09;&#xff0c;姓名&#xff08;name&#xff09;&#xff0c;和院系&#xff08;department&#xff09;的信息 4.从student表…

SpringAMQP - 消息传输时,如何提高性能?解决 SQL 注入问题?

目录 一、问题背景 二、从消息转化器根源解决问题 1.引入依赖 2.在服务生产者和消费者中都重新定义一个 MessageConverter&#xff0c;注入到 Spring 容器中 一、问题背景 在SpringAMQP的发送方法中&#xff0c;接收消息的类型是Object&#xff0c;也就是说我们可以发送任意…

用 GPU 并行环境 Isaac Gym + 强化学习库 ElegantRL:训练机器人Ant,3小时6000分,最高12000分

前排提醒,目前我们能 “用 ppo 四分钟训练 ant 到 6000 分”,比本文的 3 小时快了很多很多,有空会更新代码 https://blog.csdn.net/sinat_39620217/article/details/131724602 介绍了 Isaac Gym 库 如何使用 GPU 做大规模并行仿真,对环境模块提速。这篇帖子,我们使用 1 …

class文件反编译成Java文件

下载jad158g.win压缩包解压到指定的磁盘下&#xff08;下载目录&#xff1a;https://varaneckas.com/jad/&#xff09; 操作命令&#xff1a;jad -o -r -s java -d src classes/**/*.class 此处src为生成Java文件存放的文件夹&#xff0c;classes则为需要转化成Java的class文件…