当前位置: 首页 > news >正文

论文阅读笔记:MambaOut: Do We Really Need Mamba for Vision?

论文阅读笔记:MambaOut: Do We Really Need Mamba for Vision?

  • 1 背景
  • 2 创新点
  • 3 方法
  • 4 模块
    • 4.1 Mamba适合什么任务
    • 4.2 视觉识别任务是否有很长的序列
    • 4.3 视觉任务是否需要因果token混合模式
    • 4.4 关于Mamba对于视觉的必要性假设
  • 5 效果

论文:https://arxiv.org/pdf/2405.07992

代码:https://github.com/yuweihao/MambaOut

1 背景

在现实中,基于SSM的视觉模型与最先进的卷积模型和基于注意力的模型相比,性能欠佳。这就产生了一个研究问题:在视觉中我们是否真的需要Mamba?

在本文中,作者研究了Mamba的性质,并从概念上总结了Mamba适合任务的两个关键特征:长序列和自回归,这是因为SSM固有的RNN机制。不幸的是,同时具备这两种特性的视觉任务不多。例如ImageNet上的图像分类不符合,而在COCO上的目标检测和实例分割以及ADE20K上的语义分割只符合长序列。另一方面,自回归特性要求每个token仅从之前和当前token中聚合信息,这一概念被称为token混合的因果模式。事实上,所有的视觉任务都属于理解域而非生成域,这意味着模型可以同时看到整幅图像。因此在视觉识别模型中对token混合施加额外的因果约束可能会导致性能下降。虽然该问题可以通过双向分支来缓解,但不可避免的是该问题在每个分支内持续存在。

基于以上的概念性讨论,作者提出如下两个假设:

  • 假设1:SSM对于图像分类时没有必要的,因为这项任务既不符合长序列特征,也不符合自回归特征。

  • 假设2:SSM对于目标检测、实例分割以及语义分割可能是有益的,因为他们遵循长序列特征,尽管他们不是自回归特征。

为了实验假设,作者通过堆叠门控CNN块开发了一系列名为MambaOut的模块。Gated CNN和Mamba block的关键区别在于SSM的存在,如图1(a)所示。实验结果表明,更简单的MambaOut模型在现实中的表现已经超过了Vision Mamba模型的表现,进而验证了假设1。同时,MambaOut在检测和分割任务中的表现不足与最先进的视觉Mamba模型相匹配。这强调了SSM在这些任务上的潜力,并有效的验证了假设2。
在这里插入图片描述

2 创新点

  • 分析了SSM的类RNN机制,并从概念上总结出Mamba适用于具有长序列和自回归特性的任务。

  • 考察了视觉任务的特征,并假设SSM在ImageNet上进行图像分类时不必要的,因为该任务不满足任何一个特征,但探索出SSM在检测和分割任务重的潜力仍然是具有价值的。

  • 基于Gated CNN模块开发了一系列名为MambaOut的模型。

3 方法

在这里插入图片描述

与ResNet类似,MambaOut采用4阶段的分层架构。 D i D_i Di 表示第 i i i 阶段的通道尺寸。其中,Gated CNN块与Mamba块的区别在于Gated CNN块中没有SSM (状态空间模型)。

Gated CNN块的代码:
在这里插入图片描述

4 模块

4.1 Mamba适合什么任务

Mamba的token混合器是选择性SSM,它定义了四个与输入相关的参数 ( Δ , A , B , C ) (\Delta,A,B,C) (Δ,A,B,C),并将他们转换为 ( A ‾ , B ‾ , C ) (\overline{A},\overline{B},C) (A,B,C):
在这里插入图片描述

SSM的序列到序列的变换可以表示为:
在这里插入图片描述

其中, t t t 表示时间步长, x t x_t xt 表示输入, h t h_t ht 表示隐藏状态, y t y_t yt 表示输出。方程2的循环性质将类RNN的SSM与因果注意力区分开。隐藏状态 h h h 可以看作是一个固定大小的存储器,存储了所有的历史信息,通过方程2,该记忆在保持大小不变的情况下更新,固有的大小意味着存储器与当前输入集成的计算复杂度保持恒定。相反,因果注意力存储了来自之前token的所有键值作为他的记忆,它通过在每个新输入中添加当前token的键值来扩展,这种存储器理论上是无损的,然而随着输入的token越来越多,内存大小也越来越大。图2进一步说明了类RNN模型和因果注意力在机制上的差异。
在这里插入图片描述

由于SSM的记忆本质上是有损的,因此在逻辑上不及注意力的无损记忆。因此Mamba无法展示其在处理短序列方面的优势。然而在涉及长序列时,注意力会由于其二次复杂度而变得不稳定。这种情况下,Mamba可以明显的突出他的效率,因此Mamba特别适合处理长序列。
在这里插入图片描述

虽然SSM的循环性质(方程2)使得Mamba可以搞笑的处理长序列,但它引入了一个显著的限制: h t h_t ht 只能访问上一时间步和当前时间步的信息。如图3所示,这种类型的token混合被称为因果模式,可以表述为:
在这里插入图片描述

其中, x t x_t xt y t y_t yt 分别表示第 t t t 个token的输入和输出。由于其因果性质,这种模式非常适合自回归生成任务。

另一种模式称为完全可见模式,其中每个token可以聚合所有前序和后序令牌的信息。这意味着每个输出token取决于所有输入token:
在这里插入图片描述

其中, T T T 表示token总数。完全可见模式适用于理解任务,其中所有输入都可以被模型一次性访问。

注意力默认处于完全可见模式,但通过在注意力图中应用因果掩码,注意力很容易转变为因果模式。类RNN模型由于其循环特性,本质上是因果模式。由于这种固有特性,类RNN模型无法转化为完全课件模式。虽然使用双向分支可以近似一个完全可见的模式,但每个分支仍然单独地保持因果关系。因此Mamba由于其循环属性的固有限制,非常适合于需要因果token混合的任务。

综上所述,Mamba非常适合表现出以下特征的任务:

  • 特征1:任务涉及处理长序列

  • 特征2:任务需要因果token混合模式

4.2 视觉识别任务是否有很长的序列

考虑一个Transformer模块,其公共MLP比例为4;假设其输入 X ∈ R L × D X∈R^{L×D} XRL×D 的令牌长度为 L L L ,通道维数为 D D D ,则该块的FLOPs可计算为:
在这里插入图片描述

由此,推导出了 L L L 的二次项与线性项的比值:
在这里插入图片描述

L > 6 D L > 6D L>6D 时, L L L 中二次项的计算量超过线性项的计算量。这为判断任务是否涉及长序列提供了一个简单的衡量标准。例如,在ViT - S的384个通道中,阈值 τ s m a l l = 6 × 384 = 2304 \tau_{small} = 6 × 384 = 2304 τsmall=6×384=2304;在ViT - B的768个通道中,阈值 τ b a s e = 6 × 768 = 4608 \tau_{base} = 6 × 768 = 4608 τbase=6×768=4608

对于ImageNet上的图像分类,典型的输入图像大小为 22 4 2 224^2 2242,产生 1 4 2 = 196 14^2=196 142=196 个 token,块大小为 1 6 2 16^2 162。显然 196远小于 τ s m a l l \tau_{small} τsmall τ b a s e \tau_{base} τbase,这表明ImageNet上的图像分类不适合作为长序列任务。

对于COCO上的目标检测和实例分割,其推理长度为 800 × 1280,对于ADE20K上的语义分割,其推理图像大小为512 × 2048,token数量约为4K,给定块大小为 1 6 2 16^2 162。由于 4 K > τ s m a l l 4K > τ_{small} 4K>τsmall 4 K ≈ τ b a s e 4K≈τ_{base} 4Kτbase,COCO上的检测和ADE20K上的分割都可以被认为是长序列任务。

4.3 视觉任务是否需要因果token混合模式

如图3所示,完全可见的token混合模式允许不受限制的混合范围,而因果模式则限制当前token只能从前一个token中获取信息。视觉识别被归类为理解任务,其中模型可以一次性看到整个图像,从而消除了对标记混合的限制。对token混合施加额外的约束可能会降低模型性能。如图3 ( b )所示,当对ViT施加因果限制时,观察到性能显著下降。 一般而言,完全可见模式适合于理解任务,而因果模式更适合于自回归任务。这一说法也可以通过观察得到证实,BERT和ViT( BEiT 和MAE )比GPT-1/2和图像GPT更多地用于理解任务。因此,视觉识别任务不需要因果标记混合模式。

4.4 关于Mamba对于视觉的必要性假设

基于前面的讨论,作者总结了关于在视觉识别任务中引入Mamba的必要性的假设如下:

  • 假设1:不需要在ImageNet上引入SSM进行图像分类,因为该任务不满足特征1或特征2。

  • 假设2:尽管这些任务不满足特征2,但仍然值得进一步探索SSM在视觉检测和分割中的潜力,因为这些任务符合特征1。

5 效果

在图像分类上的效果。
在这里插入图片描述

在目标检测和实例分割上的效果。
在这里插入图片描述

在语义分割上的效果。
在这里插入图片描述

相关文章:

论文阅读笔记:MambaOut: Do We Really Need Mamba for Vision?

论文阅读笔记:MambaOut: Do We Really Need Mamba for Vision? 1 背景2 创新点3 方法4 模块4.1 Mamba适合什么任务4.2 视觉识别任务是否有很长的序列4.3 视觉任务是否需要因果token混合模式4.4 关于Mamba对于视觉的必要性假设 5 效果 论文:https://arxi…...

HarmonyOS:ForEach:循环渲染

一、前言 ForEach接口基于数组类型数据来进行循环渲染,需要与容器组件配合使用,且接口返回的组件应当是允许包含在ForEach父容器组件中的子组件。例如,ListItem组件要求ForEach的父容器组件必须为List组件。 API参数说明见:ForEa…...

Python3 【函数】项目实战:5 个新颖的学习案例

Python3 【函数】项目实战:5 个新颖的学习案例 本文包含5编程学习案例,具体项目如下: 简易聊天机器人待办事项提醒器密码生成器简易文本分析工具简易文件加密解密工具 项目 1:简易聊天机器人 功能描述: 实现一个简易…...

XSS 漏洞全面解析:原理、危害与防范

目录 前言​编辑 漏洞原理 XSS 漏洞的危害 检测 XSS 漏洞的方法 防范 XSS 漏洞的措施 前言 在网络安全的复杂版图中,XSS 漏洞,即跨站脚本攻击(Cross - Site Scripting),是一类极为普遍且威胁巨大的安全隐患。随着互…...

从 GShard 到 DeepSeek-V3:回顾 MoE 大模型负载均衡策略演进

作者:小天狼星不来客 原文:https://zhuanlan.zhihu.com/p/19117825360 故事要从 GShard 说起——当时,人们意识到拥有数十亿甚至数万亿参数的模型可以通过某种形式的“稀疏化(sparsified)”来在保持高精度的同时加速训…...

【回溯+剪枝】回溯算法的概念 全排列问题

文章目录 46. 全排列Ⅰ. 什么是回溯算法❓❓❓Ⅱ. 回溯算法的应用1、组合问题2、排列问题3、子集问题 Ⅲ. 解题思路:回溯 剪枝 46. 全排列 46. 全排列 ​ 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 …...

Flutter解决macbook M芯片Android Studio中不显示IOS真机的问题

下载了最新的Android Studio LadyBug 下载了最新的xcode16.2 结果,只有安卓真机才在Android studio显示, IOS真机只在xcode显示 IOS真机不在android studio显示。 解决方法是: 在终端运行如下命令: sudo xcode-select -s /Applic…...

自签证书的dockerfile中from命令无法拉取镜像而docker的pull命令能拉取镜像

问题现象: docker pull images拉取镜像正常 dockerfile中的from命令拉取镜像就会报出证书错误。报错信息如下: [bjxtbwj-kvm-test-jenkins-6-243 ceshi_dockerfile]$ docker build . [] Building 0.4s (3/3) FINISHED …...

【MySQL】--- 复合查询 内外连接

Welcome to 9ilks Code World (๑•́ ₃ •̀๑) 个人主页: 9ilk (๑•́ ₃ •̀๑) 文章专栏: MySQL 🏠 基本查询回顾 假设有以下表结构: 查询工资高于500或岗位为MANAGER的雇员,同时还要满足他们的姓名首字母为…...

QT TLS initialization failed

qt使用QNetworkAccessManager下载文件(给出的链接可以在浏览器里面下载文件),下载失败, 提示“TLS initialization failed”通常是由于Qt在使用HTTPS进行文件下载时,未能正确初始化TLS(安全传输层协议&…...

系统学英语 — 句法 — 复合句

目录 文章目录 目录复合句型主语从句宾语从句表语从句定语从句状语从句同位语从句 复合句型 复合句型,即:从句。在英语中,除了谓语之外的所有句子成分都可以使用从句来充当。 主语从句 充当主语的句子,通常位于谓语之前&#x…...

指针的介绍2前

1.数组名的理解 #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h>int main() {int arr[] { 1,2,3,4,5,6,7,8,9 };printf("&arr[0] %p\n", &arr[0]);printf("arr %p\n", arr);return 0; } 观察得到&#xff0c;数组名就是数组首…...

16.Word:石油化工设备技术❗【28】

目录 题目 NO1.2 NO3 NO4 题目 NO1.2 F12&#xff1a;另存为将“Word素材.docx”文件另存为“Word. docx”&#xff08;“docx”为文件扩展名&#xff09; 光标来到表格上方→插入→形状→新建画布→单击选中→格式→高度/宽度&#xff08;格式→大小对话框→取消勾选✔锁定…...

Python-基础环境(01) 虚拟环境,Python 基础环境之虚拟环境,一篇文章助你完全搞懂!

Python的虚拟环境是一种工具&#xff0c;它能够创建一个隔离的独立Python环境。每个虚拟环境都有自己独立的Python解释器和安装的包&#xff0c;不会与其他虚拟环境或系统的全局Python环境发生冲突。虚拟环境特别适用于以下情况&#xff1a; 项目隔离&#xff1a;不同的项目可…...

Dest1ny漏洞库:用友 U8-CRM 系统 ajaxgetborrowdata.php 存在 SQL 注入漏洞

用友U8-CRM系统ajaxgetborrowdata.php存在SQL注入漏洞&#xff0c;文件多个方法存在SQL注入漏洞&#xff0c;未经身份验证的攻击者通过漏洞执行任意SQL语句&#xff0c;调用xp_cmdshell写入后门文件&#xff0c;执行任意代码&#xff0c;从而获取到服务器权限。 hunter app.n…...

java.sql.Date 弃用分析与替代方案

引言 java.sql.Date 是 Java 标准库中的一个类&#xff0c;它继承自 java.util.Date&#xff0c;主要用于在 Java 应用程序与数据库之间进行日期数据的传输。然而&#xff0c;随着 Java 语言的发展&#xff0c;java.sql.Date 以及其父类 java.util.Date 逐渐被认为存在设计缺陷…...

HarmonyOS:状态管理最佳实践

一、概述 在声明式UI编程范式中&#xff0c;UI是应用程序状态的函数&#xff0c;应用程序状态的修改会更新相应的UI界面。ArkUI采用了MVVM模式&#xff0c;其中ViewModel将数据与视图绑定在一起&#xff0c;更新数据的时候直接更新视图。如下图所示&#xff1a; ArkUI的MVVM模式…...

如何提高新产品研发效率

优化研发流程、采用先进工具、提升团队协作、持续学习与改进&#xff0c;是提高新产品研发效率的关键。其中&#xff0c;优化研发流程尤为重要。通过简化流程&#xff0c;减少不必要的环节和复杂性&#xff0c;企业可以显著提升研发效率。例如&#xff0c;采用自动化测试工具和…...

MongoDB平替数据库对比

背景 项目一直是与实时在线监测相关&#xff0c;特点数据量大&#xff0c;读写操作大&#xff0c;所以选用的是MongoDB。但按趋势来讲&#xff0c;需要有一款国产数据库可替代&#xff0c;实现信创要求。选型对比如下 1. IoTDB 这款是由清华大学主导的开源时序数据库&#x…...

JavaScript系列(46)-- WebGL图形编程详解

JavaScript WebGL图形编程详解 &#x1f3a8; 今天&#xff0c;让我们深入探讨JavaScript的WebGL图形编程。WebGL是一种基于OpenGL ES的JavaScript API&#xff0c;它允许我们在浏览器中渲染高性能的2D和3D图形。 WebGL基础概念 &#x1f31f; &#x1f4a1; 小知识&#xff…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

stm32G473的flash模式是单bank还是双bank?

今天突然有人stm32G473的flash模式是单bank还是双bank&#xff1f;由于时间太久&#xff0c;我真忘记了。搜搜发现&#xff0c;还真有人和我一样。见下面的链接&#xff1a;https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...

label-studio的使用教程(导入本地路径)

文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销&#xff0c;平衡网络负载&#xff0c;延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

Unity3D中Gfx.WaitForPresent优化方案

前言 在Unity中&#xff0c;Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染&#xff08;即CPU被阻塞&#xff09;&#xff0c;这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案&#xff1a; 对惹&#xff0c;这里有一个游戏开发交流小组&…...

无法与IP建立连接,未能下载VSCode服务器

如题&#xff0c;在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈&#xff0c;发现是VSCode版本自动更新惹的祸&#xff01;&#xff01;&#xff01; 在VSCode的帮助->关于这里发现前几天VSCode自动更新了&#xff0c;我的版本号变成了1.100.3 才导致了远程连接出…...

Go 语言接口详解

Go 语言接口详解 核心概念 接口定义 在 Go 语言中&#xff0c;接口是一种抽象类型&#xff0c;它定义了一组方法的集合&#xff1a; // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的&#xff1a; // 矩形结构体…...

tree 树组件大数据卡顿问题优化

问题背景 项目中有用到树组件用来做文件目录&#xff0c;但是由于这个树组件的节点越来越多&#xff0c;导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多&#xff0c;导致的浏览器卡顿&#xff0c;这里很明显就需要用到虚拟列表的技术&…...

GC1808高性能24位立体声音频ADC芯片解析

1. 芯片概述 GC1808是一款24位立体声音频模数转换器&#xff08;ADC&#xff09;&#xff0c;支持8kHz~96kHz采样率&#xff0c;集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器&#xff0c;适用于高保真音频采集场景。 2. 核心特性 高精度&#xff1a;24位分辨率&#xff0c…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式

今天是关于AI如何在教学中增强学生的学习体验&#xff0c;我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育&#xff0c;这并非炒作&#xff0c;而是已经发生的巨大变革。教育机构和教育者不能忽视它&#xff0c;试图简单地禁止学生使…...