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

VMamba: Visual State Space Model论文笔记

文章目录

  • VMamba: Visual State Space Model
    • 摘要
    • 引言
    • 相关工作
    • Preliminaries
    • 方法
      • 网络结构
      • 2D-Selective-Scan for Vision Data(SS2D)

VMamba: Visual State Space Model

论文地址: https://arxiv.org/abs/2401.10166
代码地址: https://github.com/MzeroMiko/VMamba

摘要

  • 卷积神经网络(CNN)和视觉Transformer(ViT)是视觉表示学习的两种最流行的基础模型
  • CNN表现出卓越的可扩展性和线性复杂度。
  • ViT在图像分辨率方面超过了CNN, 但是复杂性确实二次方。Vit通过结合全局感受野和动态权重实现了卓越的视觉建模性能。
  • 作者在继承上述组件的情况下引入了状态空间模型,提出了视觉状态空间模型(VMamba)。该模型在不牺牲全局感受野和动态权重的情况下实现了线性复杂度。
  • 通过引入交叉扫描模块(CSM)解决方向敏感问题。
  • 实验证明,VMamba在各种视觉任务表现良好,并且随着图像分辨率的提高而表现出更明显的优势。

引言

  • 视觉表示学习是计算机视觉领域最基本的研究课题之一。深度基础模型主要分为卷积神经网络(CNN)和Vision Transformer(ViTs)两个主要类别。

  • 然而,注意力机制在图像大小方面需要二次方的 复杂度,这在处理下游密集预测任务时计算开销昂贵。为了解决这个问题,人们投入大量的经历通过限制计算窗口的大小或步幅来提高注意力的效率。但是这种是以限制感受野的规模为代价的。因此,作者设计了一种具有线性复杂度的心得视觉基础模型,同时仍然保留与全局感受野和动态权重相关的优势。

  • 引入了视觉状态空间模型(VMamba), 用于高效的视觉表示学习。它通过继承自选择性扫描性状态序列模型(S6)。但是因为无法估计和未知扫描补丁的关系,直接使用这种策略会导致接受域受限。作者称这种问题为"方向敏感"问题,并引入交叉扫描模块(CSM)来解决。CSM采用四向扫描策略,即从整个特征的四个角开始扫描映射到相反的为止。如下图所示。该策略保持特征图中的每个元素集成自不同方向的所有其他位置的信息,从而在不增加线性计算复杂度的情况下呈现全局感受野。
    0

  • VMamba的Tiny、Small、Base分别包含22M、44M、75M参数量。能够在FLOPs稳步增加的情况下获得与ViT相当的性能。

  • 贡献:

    • 提出了VMamba, 一种具有全局感受野和动态权重的视觉状态空间模型,用于视觉表示学习。
    • 引入交叉扫描模块(CMS)是为了弥补一维阵列扫描和二维平面扫描之间的差距,促进S6在不影响接受范围的情况下扩展到视觉数据
    • 证明VMamba在图像分类、目标检测和语义分割等各种视觉任务具有强大的潜力。

相关工作

具体内容略,主要为卷积神经网络(CNN)、Vision Transformer(ViTs)和状态空间模型(SSMs), 状态空间模型详解可参考Mamba

Preliminaries

状态空间模型与相关工作一样可参考Mamba
连续时间的SSM可以表示为线性常微分方程(ODEs, linear ordinary differential equations):
h ′ ( t ) = A h ( t ) + B μ ( t ) , y ( t ) = C h ( t ) + D μ ( t ) , \begin{aligned} h'(t)&=\mathbf{A}h(t)+\mathbf{B}\mu(t),\\ y(t)&=\mathbf{C}h(t)+D\mu(t), \end{aligned} h(t)y(t)=Ah(t)+Bμ(t),=Ch(t)+Dμ(t),
其中, A ∈ R N × N , B ∈ R N × 1 , C ∈ R 1 \mathbf{A}\in\mathbb{R}^{N\times N}, \mathbf{B}\in\mathbb{R}^{N\times1}, \mathbf{C}\in\mathbb{R}^1 ARN×N,BRN×1,CR1是权重参数

SSM的离散化: 状态空间模型(SSMs)作为连续时间模型,需要进行离散化才能更好的集成到深度学习算法中。可以参照Mamba中S4的部分。

选择扫描机制: 为了解决LTI SSMs(SSMs原始公式)获取上下文信息的局限性,Gu等人提出了一种新的SSMs参数化方法, 该方法集成了一个输入依赖的选择机制(S6)。然而,在选择性SSMs的情况下,卷积不适应动态权重导致时变加权参数对隐藏状态难以进行有效计算。而离散化可以使用线性复杂度的关联扫描算法有效地计算出 y b y_b yb

方法

网络结构

作者在三个尺度上开发了VMamba: VMamba-Tiny(VMamba-T)、VMamba-Small(VMamba-S)和VMamba-Base(VMamba-B)。VMamba-T架构的概述如下图中的a所示。首先将输入图像 I ∈ R H × W × 3 I\in\mathbb{R}^{H\times W\times 3} IRH×W×3分割成多个patch, 得到一个维度为 H / 4 × W / 4 H/4\times W/4 H/4×W/4的2d的特征图空间。随后,使用多个网络阶段创建分辨率为 H / 8 × W / 8 , H / 16 × W / 16 , H / 32 × W / 32 H/8\times W/8, H/16\times W/16, H/32\times W/32 H/8×W/8,H/16×W/16,H/32×W/32的分层表示。每个阶段都包括一个下采样层(第一阶段除外),然后是一个堆叠的视觉状态空间(VSS)块。
1

VSS块是Mamba块(上图的b)的视觉对应部分。新提出的2d选择扫描模块(SS2D)替换VSS块的初始架构(上图的c)作为Mamba的核心的同时实现全局接受域,动态权重(即选择性)和线性复杂度。

为了进一步提高计算效率,消除了整个乘法分支(上图c中的红框部分),因为门控机制的影响是通过SS2D的选择性来说实现的。因此,生成的VSS块(上图的d)由一个包含两个残差模块的单一网络分支组成,模仿了一个普通transformer的架构。

2D-Selective-Scan for Vision Data(SS2D)

S6中的扫描操作的顺序性质难以用于视觉数据。因为视觉数据本质上是非顺序的,包含空间信息(如局部纹理和全局结构)。为了解决该问题, S4ND用卷积运算重新指定了SSM, 通过外积将内核从一维扩展到二维,然而这种修改使得权重无法独立于输入,从而限制了捕获上下文信息的能力。因此,作者基于选择性扫描方法提出了了2D选择性扫描模块(SS2D),在不影响其优势的情况下使S6适应视觉数据。
2

如上图所示,SS2D中的数据前向包含三个步骤: 交叉扫描、S6的选择性扫描和交叉合并。给定输入数据,SS2D首先沿着输入patch沿着四个不同的遍历路径展开成序列(即交叉扫描),使用单独的S6块并行的处理每个patch序列,然后对合成序列进行重构和合并, 以形成输出映射(即交叉合并)。通过采用互补的以为遍历路径,SS2D使图像中的每个像素能够有效地整合其他所有像素的信息,从而促进在二维空间中建立全局接受域的过程。

相关文章:

  • [PyTorch]:加速Pytorch 模型训练的几种方法(几行代码),最快提升八倍(附实验记录)
  • 入门PHP就来我这(纯干货)05
  • 【CSS】什么是CSS的columns属性
  • 全面了解机器学习
  • 数据结构 - C/C++ - 队列
  • 《刺客信条:英灵殿》找不到emp.dll文件的多种解决方法,亲测有效
  • java 代码块
  • 【C++】main函数及返回值深度解析
  • antd中Select大数据分页触底刷新处理优化
  • 虚拟纪念展馆建设的重大意义:重新定义纪念活动的未来
  • C++——探索智能指针的设计原理
  • 深入Ruby缓存:掌握Memcached的使用艺术
  • 【ARM系列】GIC600AE功能安全
  • modify filename
  • 【有为己之心方能克己】
  • python3.6+scrapy+mysql 爬虫实战
  • 「译」Node.js Streams 基础
  • Android组件 - 收藏集 - 掘金
  • echarts的各种常用效果展示
  • IDEA常用插件整理
  • JavaScript工作原理(五):深入了解WebSockets,HTTP/2和SSE,以及如何选择
  • Java教程_软件开发基础
  • java中的hashCode
  • js 实现textarea输入字数提示
  • Logstash 参考指南(目录)
  • node.js
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • V4L2视频输入框架概述
  • vue2.0一起在懵逼的海洋里越陷越深(四)
  • 官方解决所有 npm 全局安装权限问题
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 前端之Sass/Scss实战笔记
  • 设计模式 开闭原则
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • 想晋级高级工程师只知道表面是不够的!Git内部原理介绍
  • 一道面试题引发的“血案”
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • ionic入门之数据绑定显示-1
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • ###51单片机学习(2)-----如何通过C语言运用延时函数设计LED流水灯
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • $ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (
  • (23)Linux的软硬连接
  • (33)STM32——485实验笔记
  • (C++20) consteval立即函数
  • (附源码)ssm高校社团管理系统 毕业设计 234162
  • (三)Honghu Cloud云架构一定时调度平台
  • (三)终结任务
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • *(长期更新)软考网络工程师学习笔记——Section 22 无线局域网
  • .NET BackgroundWorker
  • .Net Core/.Net6/.Net8 ,启动配置/Program.cs 配置
  • .NET MVC第三章、三种传值方式
  • .NET 服务 ServiceController