【论文阅读】Vision Mamba:双向状态空间模型的的高效视觉表示学习

news2024/11/19 23:38:58

文章目录

  • Vision Mamba:双向状态空间模型的的高效视觉表示学习
    • 摘要
    • 介绍
    • 相关工作
      • 用于视觉应用的状态空间模型
    • 方法
      • 准备
      • 视觉Mamba
      • Vim块
      • 结构细节
      • 高效分析
        • 计算效率
    • 实验
      • 图片分类
      • 语义分割
      • 目标检测和实例分割
      • 消融实验
        • 双向SSM
        • 分类设计
    • 总结和未来工作

论文地址:
Vision Mamba

Vision Mamba:双向状态空间模型的的高效视觉表示学习

摘要

在这篇文章,我们展示对于视觉表示学习,不再依赖自注意力,提出一个新的泛用的视觉backbone基于双向Mamba块,通过位置嵌入来标示图片序列,通过双向状态空间模型压缩视觉表示。结果表示,Vim有能力解决在高分辨率图片上应用tranformer类型所导致计算和存储限制,有潜力成为下一代视觉基础模型的backbone。

介绍

最近的工作,Mamba引入时变参数到SSMM而且提出一个硬件感知算法以保持其高效训练和推断,Mamba优秀的缩放表现表明在语言建模是Transformer的有前景的替代。
然而,纯基于SSM的主干网络还没有被探索用于处理视觉数据,例如图片和视频。

相比于卷积神经网络,ViT的核心优势是ViT可以为每张图片切片提供数据\切片依赖的全局上下文信息通过自注意力。不同于卷积核对于所有的位置应用相同的参数。另一个优势是模态不可知建模通过将一张图片当作一系列切片而没有引入2D归纳偏置,使其更适应多模态应用。在同事,Transformer的自注意力机制导致了速度和内存使用的挑战,在处理长距离视觉依赖,例如处理高分辨率图片时。

然而,Mamba有两个主要的挑战,即单向建模和缺乏位置感知。为了解决这些挑战,我们提出了视觉Mamba模型,它结合了用于数据相关的全局视觉上下文建模的双向SSM和用于位置感知视觉识别的位置嵌入。我们首先将输入图片切分为块然后线性映射它们为向量输入Vim。图片块在Vim块中作为序列信息被处理,通过提出的双向选择状态空间模型高效压缩视觉表示。更进一步,Vim块的位置嵌入提供了空间信息的感知,使得Vim对于密集预测任务更加鲁棒。在当前阶段,我们使用ImageNet数据集在有监督图片分类任务上训练Vim模型,之后将预训练Vim作为backbone,为下游密集预测任务即语义分割,目标检测和实例分割实现序列视觉表示学习。如同Transformer,Vim可以在大规模无监督视觉数据集上预训练以获得更好的视觉表示。得益于Mamba更好的效率,Vim可以以更低的计算代价实现。

相比于其他为视觉任务设计的基于SSM模型,Vim是一个纯SSM方法并且以序列风格建模,对于通用高效的backbone来说更有前景。

我们主要的贡献总结如下:

  • 我们提出了视觉Mamba(Vim)结合数据依赖的全局上下文建模的双向SSM和位置感知视觉理解的位置嵌入结合。
  • 不需要attention。
  • 我们在ImageNet分类和密集预测下游任务上完成了大量的实验,展示相比于大家接受和高度优化的plain视觉Transformer例如DeiT的优越性。

相关工作

用于视觉应用的状态空间模型

Long movie clip classification with state-space video models.

使用1D S4处理视频分类的长距离时序依赖

S4nd: ´ Modeling images and videos as multidimensional signals with state spaces.

更近一步拓展1D S4来处理多维数据包括2D图片和3D视频。

Efficient movie scene detection using state-space transformers

结合了S4和自注意力的优势建造了TranS4mer模型,在视频场景检测取得SOTA

Selective structured state-spaces for long-form video understanding

为S4提出了一种新的选择机制,大大提升了S4在长格式视频理解中的表现

Diffusion models without attention

抛弃了注意力机制,使用一个更可缩放的基于SSM的backbone来生成高分辨率图像和在可负担的计算条件下处理细粒度表达。

U-mamba: Enhancing long-range dependency for biomedical image segmentation.

提出了U-Mamba,一个混合CNN-SSM结构,在生物医学图像上处理长距离依赖。

上述的工作要么是应用SSM到特定的视觉应用或者建立一个结合SSM和卷积或注意力的混合结构。和它们不同,我们建立了一个纯-SSM模型,可以作为一个通用视觉backbone

方法

准备

基于SSM的模型即状态空间序列模型(S4)和Mamba受连续系统启发。这一部分介绍和离散化参见

【论文翻译】Mamba 中的状态空间模型背景-CSDN博客

【论文翻译】MODELING SEQUENCES WITH STRUCTURED STATE SPACES 附录A.1-CSDN博客

视觉Mamba

图二展示了Vim的概览,标准的Mamba是为1-D序列设计的。为了处理视觉任务,我们首先将2-D图像 t ∈ R H × W × C t\in \mathbb R^{H\times W\times C} tRH×W×C到展平的2-D切块 x p ∈ R J × ( P 2 ⋅ C ) x_p\in{\mathbb{R}^{J\times(P^{2}\cdot C)}} xpRJ×(P2C),其中 ( H , W ) (H,W) (H,W)是输入图像的尺寸, C C C是通道的数量, P P P是图片切片的尺寸。接着,我们将 x p x_p xp象形映射为一个长度D的向量

并加入位置嵌入 E p o s ∈ R J + 1 × D E_{pos} \in \mathbb{R}^{J+1\times D} EposRJ+1×D如下:
T 0 = [ t c l s ; t p 1 W ; t p 2 W ; t p J W ] + E p o s T_0 = [t_{cls};t_p^1W;t_p^2W;t_p^JW]+E_{pos} T0=[tcls;tp1W;tp2W;tpJW]+Epos
其中 t p j t_p^j tpj t t t的第 j j j个切片, W ∈ R P 2 ⋅ C × D W\in \mathbb{R}^{P^2\cdot C \times D} WRP2C×D是可学习的映射矩阵。受ViT和BERT启发,我们也是用类别token表示整个patch序列,表示为 t c l s t_cls tcls。我们之后将token序列 T l − 1 T_{l -1} Tl1送入Vim编码器第 l l l层,然后得到输出 T l T_l Tl。最后,我们归一化输出类token T L 0 T^{0}_{L} TL0并将其送入MLP得到最后的预测 p ^ \hat{p} p^如下:
T i = V i m ( T l − 1 ) , f = N o r m ( T L 0 ) . p ^ = M L P ( f ) T_i = Vim(T_{l-1}),\\ f = Norm(T_{L}^{0}).\\ \hat{p} = MLP(f) Ti=Vim(Tl1),f=Norm(TL0).p^=MLP(f)
Vim是提出的视觉mamba块, L L L是层的数目, N o r m Norm Norm是归一化层

Vim块

原始的Mamba块是为1-D序列设计的,并不适宜用于需要空间感知理的解视觉任务。在这个部分,我们提出里Vim块,包含为视觉任务设计的双向序列建模。Vim块如图二

在这里插入图片描述

特别的,我们在算法31展示了Vim块的操作。输入token序列 T l − 1 T_{l-1} Tl1首先被归一化层归一化。接着我们以E维度线性投影归一化序列到x和z。之后我们从前向和后向方向处理x。对于每个方向,我们首先在x应用1-D卷积得到 x o ′ x_{o}^{'} xo。我们接着线性投影 x o ′ x_{o}^{'} xo B o , C o , Δ o B_o, C_o,\Delta_o Bo,Co,Δo Δ o \Delta_o Δo被用于变换 A ‾ o , B ‾ o \overline{A}_o,\overline{B}_o Ao,Bo。最后我们通过SSM计算 y f o r w a r d y_{forward} yforward y b a c k w a r d y_{backward} ybackward之后被变量z门控,并相加得到输出的token序列 T 1 T_1 T1

在这里插入图片描述

结构细节

总结,我们结构的超参数如下:

L:块的数目

D:隐藏状态的维度

E:扩展的状态维度

N:SSM维度

追随ViT和DeiT,我们首先应用一个16x16的映射层得到一个无重叠的切块嵌入的1-D序列。之后,我们直接堆叠 L L L个Vim块。在默认情况下,我们将 L L L设置为24,SSM维度 N N N为16。来对齐DeiT系列的模型大小,对于tiny变种我们将隐藏状态模型D设置为192并且将扩展状态维度 E E E设置为384。对于small变种我们将隐藏状态模型D设置为384并且将扩展状态维度 E E E​设置为768.

高效分析

传统的基于SSM的方法应用了快速傅里叶变换来加快等式4所示的卷积操作。遂于数据依赖的方法,例如Mamba,SSM操作不再等价于卷积。为了解决这个问题,Mamba和我们提出的Vim选择一个现代硬件友好的方式确保高效。这个优化的关键想法在于避免IO和存储限制。

计算效率

Vim块中的SSM和Transformer中的自注意力都在自适应提供全局上下文中扮演关键角色。给定一个视觉序列 T ∈ R 1 × M × D T\in R^{1\times M\times D} TR1×M×D和默认设置 E = 2 D E = 2D E=2D,自注意力和SSM的计算复杂度为:
Ω ( s e l f − a t t e n t i o n ) = 4 M D 2 + w M 2 D Ω ( S S M ) = 3 M ( 2 D ) N + M ( 2 D ) N \Omega(self-attention) = 4MD^2+wM^2D\\ \Omega(SSM) = 3M(2D)N+M(2D)N Ω(selfattention)=4MD2+wM2DΩ(SSM)=3M(2D)N+M(2D)N

实验

图片分类

在这里插入图片描述

语义分割

在这里插入图片描述

目标检测和实例分割

在这里插入图片描述

得益于SSM相对于序列长度的线性复杂度,在输入分辨率提高的情况下,其相对于平方复杂度的Transformer类模型会展现出极大优势。

消融实验

双向SSM

在这里插入图片描述

为了全面评估在ImageNet上学习到的表达能力,我们使用一个简单的只有两层的Segmenter头来实现在语义分割上的迁移学习。我们研究了这些双向策略:

  • None。我们直接采用Mamba block的前向方向来处理视觉序列
  • 双向序列。在训练过程中,我们随机翻转视觉序列,类似于数据增强。
  • 双向块。我们将堆叠块配对。每对的第一个块以前向方向处理视觉视觉序列,第二个块以后向方向处理视觉序列
  • 双向SSM,对于每个块我们添加了额外的SSM来以后向方向处理视觉序列
  • 双向SSM+Conv1d。基于双向SSM,我们进一步在后向SSM前增加了后向Conv1d

如表4所示,直接应用Mamba块在分类中取得了良好的表现。然而,其不自然的非方向性的方式为下游密集预测任务造成了挑战。特别是,原始的使用双向块的双向策略在分类上低了2.3个点,但相比于原始的无方向性Mamba块在语义分割上提升了1.3mIoU。通过加入二外的后向SSM和Conv1d,我们实现了更好的分类准确性和巨大的分类提升。我们使用双向SSM+Conv1d作为Vim块的默认设置。

分类设计

在这里插入图片描述

我们在Vim的分类设计上进行了消融实验。我们研究论下列分类策略:

  • 平均池化
  • 最大池化 我们首先在视觉序列中的每个token上调整分类头,接着在需略上应用最大池化得到预测结果
  • 头类别token 跟随DeiT,我们拼接视觉序列地头部的类别token,并进行分类
  • 双类别tokrn 基于头部类别token策略,我们在视觉序列的尾部额外添加了一个类别token
  • 中类别token 我们在视觉序列的中部添加了一个视觉序列之后再最后的中部类别token上进行分类。

如表格五所示,实验表明,中部类别token策略可以完整的利用SSM天然的循环性和ImageNet的中心物体先验,展示了最好的top-1准确度76.1。

总结和未来工作

我们提出里视觉Mamba(Vim)来探索最近高效的状态空间模型,即Mamba,作为一个通用的视觉backbone。不像先前为视觉任务设计的的状态空间模型使用了混合结构或者等价于全局2D卷积核,Vim实现了数据依赖的全局视觉上下文并且拥有和Transformer一般的建模能力,但拥有更小的计算复杂度。受益于Mamba的硬件感知设计,推理速度和内存使用显著优于ViT在处理高分辨率的图片情况下。实验结果证明了Vim的建模能力和高效,展示了Vim在成为下一代视觉backbone方面的巨大潜力。

在未来的工作,位置编码的双向SSM建模Vim对于例如掩膜图像建模预训练和由相似结构的Mamba可以适合多模态任务例如CLIP类型的预训练。基于预训练的Vim权重,探索在高分辨率医学图像,遥感图像和长视频方面,即下游任务Vim的用处,是显而易见的。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C语言】qsort函数的使用

👑个人主页:啊Q闻 🎇收录专栏:《C语言》 🎉道阻且长,行则将至 前言 这篇博客主要是介绍qsort函数的使用,以及利用冒泡排序的方式模拟实现qsort 一.初识qsort函数 我们可以在…

LJXpaper

表1-3引用出现较滞后 1.3文献[42]有问题 如图 如图 如图 如图 👇 👇 👇 👇 👇 👇 👇 要不要加连接词:4-11 4-12之间 &#…

数码管的动态显示(二)

1.原理 这个十六进制是右边的dp为高位。 数码管的动态显示,在第一个计数周期显示个位,在第二个周期显示十位,在第三个周期显示百位由于人眼的视觉和数码管的特性,感觉就是显示了234,每个数码管的显示需要从输入的数据里…

AHU 数据库 实验五

【实验名称】 实验5 数据库的数据更新与视图管理 【实验目的】 1. 熟悉数据更新操作的概念与操作类型; 2. 熟练掌握INSERT、UPDATE、DELETE语句的基本语法; 3. 熟练运用INSERT、UPDATE、DELETE语句实现数据的插入、修改与删除…

应对恶意IP攻击的有效方法

在当今数字化时代,网络攻击已经成为了互联网安全的重大挑战之一。恶意IP攻击是网络安全领域中的一种常见威胁,它可能导致数据泄露、服务中断、系统瘫痪等严重后果。因此,有效地应对恶意IP攻击至关重要。IP数据云将深入探讨如何应对恶意IP攻击…

OpenHarmony开源项目—工程管理

DevEco Studio的基本使用,请参考DevEco Studio使用指南。本章主要介绍如何使用DevEco Studio进行多设备应用开发。 说明: 本章的内容基于DevEco Studio 3.1.1 Release版本进行介绍,如您使用DevEco Studio其它版本,可能存在文档与产…

Oracle PL/SQL Programming 第9章:Numbers 读书笔记

总的目录和进度,请参见开始读 Oracle PL/SQL Programming 第6版 本章谈3点: 可使用的数字数据类型如何在数字和文本间转换PL/SQL 内置数值函数 Numeric Datatypes NUMBER:平台无关的实现,适合处理货币金额PLS_INTEGER 和 BINA…

HBuilder发行微信小程序

首先需要完善mainifest.json中的基本配置 这个需要组测dcloud才可以获取,注册后点击重新获取就可以。 然后发行前还需要完成dcloud的信息,这个他会给你网址 点击连接完成信息填写就可以了 然后就可以发行了。 发行成功后会自动跳转微信小程序&#xff…

uniapp封装统一请求(get和post)

uniapp封装请求 request.js文件 import Vue from vue // 全局配置 import settings from ./settings.js function computedBaseUrl(url) {// console.log(url);return (url.indexOf(http) -1 ? settings.baseUrl : ) url }// 发送请求 export default (options) > {const…

一.java介绍和idea基础使用

java技术体系 Java技术体系说明Java SE(Java standard Edition):标准版Java技术的核心和基础Java EE(Java Enterprise Edition):企业版企业级应用开发的一套解决方案Java ME(Java Micro Edition):小型版针对移动设备应用的解决方案(认可少,主要是安卓和…

基于Vue移动端电影票务服务APP设计与实现

目 录 摘 要 I Abstract II 引 言 1 1 相关技术 3 1.1 Vue框架 3 1.2 数据库MongoDB 3 1.3 Axios请求 3 1.4 H5、CSS3和JavaScript 4 1.5 本章小结 4 2 系统分析 5 2.1 功能需求 5 2.2 用例分析 5 2.3 用户功能 6 2.4本章小结 6 3 基于Vue电影票务服务APP设计 7 3.1 页面设计 …

Java_8 移除元素

移除元素 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出…

微信小程序之表单组件

1、button 常用的属性: 属性类型默认值必填说明sizestringdefault否按钮的大小 合法值说明default默认大小mini小尺寸typestringdefault否按钮的样式类型 合法值说明primary绿色default白色warn红色plainbooleanfalse否按钮是否镂空,背景色透明disable…

Transformer原理

在《机器学习综述》中大致罗列人工智能常见算法,近些年深度学习发展快速,其中Transformer为甚,其英文的意思是变形金刚,对的就是我们看电影变形金刚的意思。Transformer是大语言模型的基础,比如现在常见的GPT、Bert、P…

详解Python中%r和%s的区别及用法

首先看下面的定义: %r用rper()方法处理对象 %s用str()方法处理对象 函数str() 用于将值转化为适于人阅读的形式,而repr() 转化为供解释器读取的形式(如果没有等价的语法,则会发生SyntaxError 异常) 某对象没有适于人…

数据库增删改查以及联合查询——数据库——day1

今天学习了数据库的知识 首先数据库分为关系型数据库和非关系型数据库 关系型数据库:Mysql OracleSqlServerSqlite 非关系型数据库:RedisNoSQL我们首先来看一下数组、链表、文件、数据库的区别 数组、链表: 内存存放数据的方式(代码运行结束、关机数据丢失) …

JS数组相关知识

获取数组的最大值/最小值&#xff1a; let arrary [2,5,4] let max arrary[0] for(let i 0;i<arrary.length;i){if(arrary[i]>max){max arrary[i]} }console.log(max);//查询数组最小值let arr [2,21,34,23,45] let min arr[0] for(let i 0;i<arr.length;i){if…

“我快无聊死了”用英语怎么说?柯桥英语口语学习,成人零基础学外语

每日一句 Im bored to death. 我快无聊死了。 单词解析&#xff1a; bored / bɔːd / adj.无聊的&#xff0c;厌倦的 bored to d15857575376eath&#xff1a;指非常无聊或厌烦&#xff0c;达到了极点的程度。 "bored" 和 "boring" 都与无聊相关&#…

蓝桥杯练习系统(算法训练)ALGO-980 斐波那契串

资源限制 内存限制&#xff1a;256.0MB C/C时间限制&#xff1a;10.0s Java时间限制&#xff1a;30.0s Python时间限制&#xff1a;50.0s 问题描述 斐波那契串由下列规则生成&#xff1a;   F[0] "0";   F[1] "1";   F[n] F[n-1] F[n-2]…

AI人工智能改变项目管理及控制的5种方式,最后一个你认同吗?

前言 斯蒂芬霍金说&#xff1a;“AI is likely to be either the best or the worst thing to happen to humanity. 人工智能可能是发生在人类身上的最好或最坏的事情”。根据Gartner的说法&#xff0c;它将是前者。它预测到2020年&#xff0c;人工智能将减少1万个就业机会&am…