Vision Mamba:使用双向状态空间模型进行高效视觉表示学习

模型效果

在这里插入图片描述
将DeiT和Vim模型之间的性能和效率比较,为了进行准确性比较,我们首先在IN1K分类数据集上预训练DeiT和Vim,然后在不同的下游密集预测任务上微调通用主干,即,语义分割、目标检测、实例分割。结果表明,所提出的Vim优于DeiT的预训练和微调任务。在处理高分辨率图像时,Vim的计算和内存效率也比DeiT高。例如,Vim比DeiT快2.8倍,在对分辨率为1248×1248的图像进行批量推理提取特征时,节省86.8%的GPU内存,即每张图片节省6084个token。

前言

该方法利用位置嵌入对图像序列进行标记,并利用双向状态空间模型对视觉表示进行压缩。

VIT的优点:

  • ViT可以通过自注意为每个图像块提供数据/块相关的全局上下文
  • 通过将图像视为没有2D归纳偏差的补丁序列来进行模态不可知建模,这使其成为多模态应用的优选架构

VIT的缺点:处理长距离视觉依赖时的速度和内存使用较差

Mamba用于视觉任务的挑战:单向建模和缺乏位置意识

  • 本文提出Vision Mamba(Vim),它采用了双向SSM数据相关的全局视觉上下文建模和用于位置感知视觉理解的位置嵌入
  • 在不需要注意的情况下,所提出的Vim具有与ViT相同的建模能力,而它仅具有次二次时间计算和线性存储复杂度。具体来说,Vim比DeiT快2.8倍,在1248×1248分辨率的图像上进行批量推理提取特征时,节省了86.8%的GPU内存。
  • 本文对ImageNet分类和密集预测下游任务进行了广泛的实验。结果表明,与成熟且高度优化的普通视觉Transformer相比,Vim实现了更好的性能

方法

关于SSM和Mamba的知识参见下面的资料,这里不再详细赘述。

S4论文-SSM离散化公式推导 - coco的文章 - 知乎
https://zhuanlan.zhihu.com/p/677787187
一文通透想颠覆Transformer的Mamba:从SSM、S4到mamba、线性transformer(含RWKV解析)
http://t.csdnimg.cn/o0lXt

Vision Mamba

ViM模型首先将输入图像分成小块,然后将小块投影成token。然后将这些令牌输入 ViM 编码器。然后序列中的每个标记经历两个单独的线性变换。该算法在向前和向后两个方向上处理这些转换后的令牌,模拟双向神经网络层。与用于建模文本序列的 Mamba 模型不同,ViM 编码器可以向前和向后处理标记序列。对于每个方向,该过程涉及应用一维卷积,然后应用 Sigmoid 线性单元 (SiLU) 激活函数。对于像 ImageNet 分类这样的任务,额外的可学习分类标记会添加到标记标记序列中(该标记是 BERT 开始一致使用的标记)。
ViM 的突出特点之一是其类似于 LSTM 工作原理的双向处理能力。与许多以单向方式处理数据的模型不同,ViM 的编码器可以向前和向后方向处理标记。双向模型可以更丰富地理解图像上下文,这是准确图像分类和分割的关键因素。
一旦令牌被卷积并激活,算法就会执行额外的线性变换并应用 softplus 函数,以确保输出值保持正值。这些转换为 SSM 序列建模功能准备标记。
SSM 操作之后,该算法应用门控机制,通过 SSM 输出与 SiLU 激活的前向和后向序列的元素相乘来调制信息流。这种门控机制可能被设计为控制每个方向处理的贡献。
最后一步结合了残差连接,将原始输入序列添加到门控输出,这有助于保留早期层的信息并解决梯度消失问题。整个过程的输出是一个新的令牌序列,该序列可能经历了复杂的转换,捕获了序列两个方向上的复杂依赖关系。该算法通过返回这个转换后的标记序列来结束。
在这里插入图片描述

vim block

原始的Mamba块是为1-D序列设计的,这不适合需要空间感知理解的视觉任务。在本节中,我们将介绍Vim块,它包含视觉任务的双向序列建模。
在这里插入图片描述

架构细节

总之,我们的架构的超参数如下所示:
L:块的数量,D:隐藏状态维度,E:扩展状态维度,N:SSM维度。

和ViT和DeiT一样,我们首先使用16×16内核大小的投影层来获得非重叠补丁嵌入的一维序列。随后,我们直接堆叠L个Vim块。默认情况下,我们将块的数量L设置为24,SSM维度N设置为16。为了与DeiT系列的模型尺寸保持一致,我们将隐藏状态维度D设置为192,将扩展状态维度E设置为384。对于小尺寸变体,我们将D设置为384,E设置为768。

结论

本文提出了一种在视觉任务中应用 Mamba 的技术,使用双向状态空间模型 (SSM) 进行全局视觉上下文建模和位置嵌入。这种方法表明传统的注意力机制可能会过时,因为 ViM 可以有效地捕获视觉数据的位置上下文,而无需依赖基于 Transformer 的注意力机制。
ViM 以其次二次计算时间和线性内存复杂性而脱颖而出,这与 Transformer 模型中常见的二次增长形成鲜明对比。这种效率使得 ViM 特别擅长处理高分辨率图像。
对 ImageNet 分类等基准测试的广泛测试证实了 ViM 的性能和效率,展示了其作为计算机视觉领域强大工具的潜力。

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

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

相关文章

VIO第5讲:后端优化实践

VIO第5讲后端优化实践:逐行手写求解器 文章目录 VIO第5讲后端优化实践:逐行手写求解器1 非线性最小二乘求解流程1.1 H矩阵不满秩的解决办法1.2 H矩阵的构建1.2.1 确定维度1.2.2 构建海塞矩阵 1.3 初始化μ—LM算法1.4 求解线性方程1.4.1 非SLAM问题—求逆…

【架构】GPU架构总结

文章目录 GPU架构GPU渲染内存架构Streaming Multiprocessor(SM)CUDA CoreTensor CoreRT CoreCPU-GPU异构系统GPU资源管理模型 GPU架构演进G80 架构Fermi 架构Maxwell架构Tesla架构Pascal架构Volta 架构Turing架构Ampere 架构Hopper架构 参考文献 GPU架构 主要组成包括&#xf…

【C语言】指针初阶

正文开始之前,我们要记住一个东西就是:地址指针 目录 一、指针的解释二、指针变量和地址1、取地址操作符2、指针变量和解引用操作1、指针变量2、拆解指针类型3、解引用操作符4、注意事项 3、指针变量的大小4、指针的解引用5、void*指针 三、指针的运算1、…

【Java程序设计】【C00277】基于Springboot的招生管理系统(有论文)

基于Springboot的招生管理系统(有论文) 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的招生管理系统 本系统分为系统功能模块、管理员功能模块以及学生功能模块。 系统功能模块:在系统首页可以查看首页、专业…

Linux——静态库

Linux——静态库 静态库分析一下 ar指令生成静态库静态库的使用第三方库优化一下 gcc -I(大写的i) -L -l(小写的l),头文件搜索路径,库文件搜索路径,连接库 今天我们来学习静态库的基本知识。 静态库 在了解静态库之前,我们首先来…

【Linux】MySQL数据库的使用

【Linux】MySQL数据库的使用 一、访问MySQL数据库二、创建及删除库和表1、创建新的库2、创建新的表3、删除一个数据表4、删除一个数据库 三、管理表中的数据记录1、插入数据记录2、查询数据记录3、修改数据记录4、删除数据记录 四、数据库用户授权1、授予权限2、查看权限3、撤销…

C/C++暴力/枚举/穷举题目持续更新(刷蓝桥杯基础题的进!)

目录 前言 一、百钱买百鸡 二、百元兑钞 三、门牌号码(蓝桥杯真题) 四、相乘(蓝桥杯真题) 五、卡片拼数字(蓝桥杯真题) 六、货物摆放(蓝桥杯真题) 七、最短路径(蓝…

文献阅读:Large Language Models are Null-Shot Learners

文献阅读:Large Language Models are Null-Shot Learners 1. 文章简介2. 方法介绍3. 实验考察 & 结论 1. 基础实验 1. 实验设计2. 实验结果 2. 消融实验 1. 小模型上的有效性2. ∅CoT Prompting3. 位置影响4. 组成内容 4. 总结 & 思考 文献链接&#xff1…

双重检查锁定与延迟初始化

双重检验锁:多线程下的单例模式。 懒加载模式:延迟初始化。

域名系统与IP地址分配

域名 域名的概述 域名是一个逻辑的概念,它不反映主机的物理地点 域名结构 由于数字形式的IP地址难以记忆和理解,为此人们采用英文符号来表示IP地址,这就产生了域名,域名长度不超过255各字符,每一层域名长度不超过6…

利用psutil库检查脚本是否在运行

摘要 如果要判断某一脚本是否在运行,可以通过psutil库获取所有进程的cmdline,并判断指定的文件名是否在cmdline中。 目录 1.psutil库简介 2.检查代码及说明 2.1检查思路 2.2异常捕获 2.3执行方法 1.psutil库简介 psutil 是一个跨平台(…

算法沉淀——动态规划之简单多状态 dp 问题(上)(leetcode真题剖析)

算法沉淀——动态规划之简单多状态 dp 问题上 01.按摩师02.打家劫舍 II03.删除并获得点数04.粉刷房子 01.按摩师 题目链接:https://leetcode.cn/problems/the-masseuse-lcci/ 一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接。在…

【Unity】提示No valid Unity Editor liscense found.Please active your liscense.

有两个软件,如果只有一个,点黑的不会有效果、、、、(楼主是这个原因,可以对号入座一下) 简而言之,就是去下载Unity Hub,再里面激活管理通行证 问题情境: 点击unity出现以下弹窗&a…

防御保护--入侵防御系统IPS

目录 DFI和DPI技术 --- 深度检测技术 入侵防御(IPS) 签名 入侵防御策略的配置 内容安全:攻击可能只是一个点,防御需要全方面进行 IAE引擎 DFI和DPI技术 --- 深度检测技术 DPI--深度包检测技术--主要针对完整的数据包&#xff0…

操作符详解3

✨✨ 欢迎大家来到莉莉的博文✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 前面我们已经讲过算术操作符、赋值操作符、逻辑操作符、条件操作符和部分的单目操作 符,今天继续介绍一部分。 目录 1.操作符的分类 2…

typescript 类型声明文件

typescript 类型声明文件概述 在今天几乎所有的JavaScript应用都会引入许多第三方库来完成任务需求。这些第三方库不管是否是用TS编写的,最终都要编译成JS代码,才能发布给开发者使用。6我们知道是TS提供了类型,才有了代码提示和类型保护等机…

K8S—集群调度

目录 前言 一 List-Watch 1.1 list-watch概述 1.2 list-watch工作机制 二 集群调度 2.1 调度过程 2.2 Predicate 和 Priorities 的常见算法和优先级选项 2.3 调度方式 三 亲和性 3.1 节点亲和性 3.2 Pod 亲和性 3.3 键值运算关系 3.4 Pod亲和性与反亲和性 3.5 示例…

《高质量的C/C++编程规范》学习

目录 一、编程规范基础知识 1、头文件 2、程序的板式风格 3、命名规则 二、表达式和基本语句 1、运算符的优先级 2、复合表达式 3、if语句 4、循环语句的效率 5、for循环语句 6、switch语句 三、常量 1、#define和const比较 2、常量定义规则 四、函数设计 1、参…

Python及Pycharm专业版下载安装教程(Python 3.11版)附JetBrains学生认证教程

目录 一、Python下载及安装1、Python下载2、Python安装3、验证是否安装成功 二、PyCharm下载及安装1、PyCharm下载2、PyCharm安装3、激活PyCharm 三、JetBrains学生认证 本篇主要介绍Python和PyCharm专业版的下载及安装方式,以及通过两种方式进行JetBrains学生认证。…

Meta AI | 指令回译:如何从大量无标签文档挖掘高质量大模型训练数据?

Meta AI | 指令回译:如何从大量无标签文档挖掘高质量大模型训练数据? 文章来自Meta AI,self-Alignment with Instruction Backtranslation[1]:通过指令反向翻译进行自对准。 一种从互联网大量无标签数据中挖掘高质量的指令遵循数据…