首页 > 其他分享 >论文阅读:Vision Mamba- Efficient Visual Representation Learning with Bidirectional State Space Model

论文阅读:Vision Mamba- Efficient Visual Representation Learning with Bidirectional State Space Model

时间:2024-10-19 23:45:41浏览次数:3  
标签:DeiT Space Efficient Vim SSM Learning Mamba 序列 视觉

文章介绍

  • 本文由华中科技大学、地平线、智源人工智能研究院等机构合作;
  • 提出了一种带有双向Mamba块(Vim)的新通用视觉baseline,它用位置嵌入标记图像序列,并用双向状态空间模型压缩视觉表示。

问题引入

  • 在处理图像和视频等视觉数据方面,基于纯 SSM 的通用baseline尚未得到探索;
  • Visual Transformers(ViT)在视觉任务方面表现出色,但是Transformers 中的自注意力机制在处理长距离视觉相关性(如处理高分辨率图像)时,在速度和内存使用方面表现不佳;
  • 想借鉴语言建模上Mamba的优势,但是Mamba 有两个问题,即单一直观建模和缺乏位置感知。

设计思路

  • 提出一种模型,这种模型结合了双向 SSM,用于数据相关的全局视觉上下文建模,以及用于位置感知视觉识别的位置嵌入;
  • 首先将输入图像分 割成多个图像片段,然后将它们作为向量线性投射到 Vim 模型中。图像补丁被视为 Vim 块中的序列数据, 这就利用所提出的双向序列状态空间有效地压缩了视觉表示。
  • 此外,Vim 块中的位置嵌入提供了对空间信息的感知,这使得 Vim 在密集预测任务中更加稳健。

方法

Vision Mamba (Vim) 的目标是将高级状态空间模型 (SSM),即 Mamba ,引入计算机视觉。本节首先介绍 SSM 的准备工作。然后概述 Vim。然后,我们详细介绍 Vim 块如何处理输入标记序列,并继续说明 Vim 的架构细节。本节最后分析了所提出的 Vim 的效率。

SSM

略,参加另一篇专门讲Mamba结构的文章

Vision Mamba

请添加图片描述

图 2 显示了所提出的 Vim 的概览。标准 Mamba 是为 1-D 序列设计的。为了处理视觉任务,我们首先将 2-D 图像 t ∈ R H × W × C t ∈ R^{H×W×C} t∈RH×W×C 转换为扁平的 2-D 块 x p ∈ R J × ( P 2 ⋅ C ) x_p ∈ R^{J×(P^2·C)} xp​∈RJ×(P2⋅C) ,其中 (H, W) 是输入图像的大小,C 是通道数,P 是图像块的大小。接下来,我们将 x p x_p xp​ 线性投影到大小为 D 的向量并添加位置嵌入 E p o s ∈ R ( J + 1 ) × D E_{pos} ∈ R^{(J+1)×D} Epos​∈R(J+1)×D ,如下所示:

请添加图片描述

其中 t p j t^j_p tpj​ 是 t 的第 j 个 patch, W ∈ R ( P 2 ⋅ C ) × D W ∈ R^{(P^2·C)×D} W∈R(P2⋅C)×D 是可学习的投影矩阵。受 ViT 和 BERT 的启发,我们也使用类 token 来表示整个 patch 序列,记为 t c l s t_{cls} tcls​。然后,我们将 token 序列 $ (T_{l−1})$ 发送到 Vim 编码器的第 l 层,得到输出 Tl。最后,我们对输出类 token T L 0 T^0_L TL0​ 进行归一化,并将其输入到多层感知器 (MLP) 头,得到最终预测 p ^ \hat p p^​,如下所示:
请添加图片描述
其中 Vim 是提出的视觉曼巴块,L 是层数,Norm 是规范化层。

Vim块

原始 Mamba 块是为 1-D 序列设计的,不适合需要空间感知理解的视觉任务。在本节中,我们介绍了 Vim 块,它结合了视觉任务的双向序列建模。Vim 块如图 2 所示。
请添加图片描述

具体来说,我们在 Algo.21 中介绍了 Vim 块的操作。输入标记序列 T l − 1 T_{l-1} Tl−1​ 首先由规范化层进行规范化。接下来,我们将规范化的序列线性投影到尺寸大小为 E 的 x 和 z。然后,我们从前向和后向处理 x。对于每个方向,我们首先对 x 应用 1-D 卷积并得到 x ′ o x′o x′o 。然后,我们分别将 x ′ o x′o x′o 线性投影到 B o B_o Bo​、 C o C_o Co​、 ∆ o ∆_o ∆o​。然后分别使用 ∆ o ∆_o ∆o​ 来转换 A o ˉ \bar {A_o} Ao​ˉ​、 B o ˉ \bar {B_o} Bo​ˉ​。最后,我们通过 SSM 计算 y f o r w a r d y_forward yf​orward 和 y b a c k w a r d y_backward yb​ackward 。然后, y f o r w a r d y_forward yf​orward 和 y b a c k w a r d y_backward yb​ackward 由 z 进行门控并相加以获得输出标记序列 T l T_l Tl​。
请添加图片描述

结构细节

总而言之,我们的架构的超参数如下:

L : t h e n u m b e r o f b l o c k s , L: the number of blocks, L:thenumberofblocks,
D : t h e h i d d e n s t a t e d i m e n s i o n , D: the hidden state dimension, D:thehiddenstatedimension,
E : e x p a n d e d s t a t e d i m e n s i o n , E: expanded state dimension, E:expandedstatedimension,
N : S S M d i m e n s i o n . N: SSM dimension. N:SSMdimension.

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

效率分析

传统的基于 SSM 的方法利用快速傅里叶变换来增强卷积运算,如公式 (4) 所示。对于数据依赖型方法,例如 Mamba,Algo. 21 第 11 行中的 SSM 运算不再等同于卷积。为了解决这个问题,Mamba 和提出的 Vim 选择了一种现代硬件友好的方式来确保效率。这种优化的关键思想是避免现代硬件加速器 (GPU) 的 IO 限制和内存限制。请添加图片描述

IO 效率

高带宽内存 (HBM) 和 SRAM 是 GPU 的两个重要组件。其中,SRAM 具有更大的带宽,HBM 具有更大的内存大小。Vim 使用 HBM 的 SSM 操作的标准实现需要大约 O(BMEN) 的内存 IO 数量。受 Mamba 的启发,Vim 首先从慢速 HBM 读入 O ( B M E + E N ) O(BME + EN) O(BME+EN) 字节内存 ( ∆ o , A o , B o , C o ) (∆_o, A_o, B_o, C_o) (∆o​,Ao​,Bo​,Co​) 。然后,Vim 在 SRAM 中获取大小为 (B, M, E, N) 的离散 A o ˉ \bar {A_o} Ao​ˉ​、 B o ˉ \bar {B_o} Bo​ˉ​ 。最后,Vim 在 SRAM 中执行 SSM 操作并将大小为 (B, M, E) 的输出写回 HBM。此方法有助于将 IO 从 O ( B M E N ) O(BMEN) O(BMEN) 减少到 O ( B M E + E N ) O(BME + EN) O(BME+EN)。

内存效率

为了避免内存不足问题并在处理长序列时降低内存使用率,Vim 选择与 Mamba 相同的重新计算方法。对于用于计算梯度的大小为 (B、M、E、N) 的中间状态,Vim 会在网络反向传递时重新计算它们。对于中间激活(例如激活函数和卷积的输出),Vim 也会重新计算它们以优化 GPU 内存需求,因为激活值占用大量内存但重新计算速度很快。

计算效率

Vim 块中的 SSM(Algo.21 中的第 11 行)和 Transformer 中的自注意力机制在自适应提供全局上下文方面都发挥着关键作用。给定一个视觉序列 T ∈ R 1 × M × D T ∈ R^{1×M×D} T∈R1×M×D 和默认设置 E = 2D,全局自注意力机制和 SSM 的计算复杂度为:请添加图片描述
其中自注意力与序列长度 M 成二次函数,而 SSM 与序列长度 M 成线性函数(N 是固定参数,默认设置为 16)。计算效率使 Vim 可扩展到具有大序列长度的千兆像素应用。

实验

图像分类

设置

我们在 ImageNet-1K 数据集上对 Vim 进行基准测试,该数据集包含来自 1,000 个类别的 1.28M 张训练图像和 50K 张验证图像。所有模型都在训练集上进行训练,并报告验证集上的 top-1 准确率。为了公平比较,我们的训练设置主要遵循 DeiT。

具体来说,我们应用随机裁剪、随机水平翻转、标签平滑正则化、混合和随机擦除作为数据增强。在对 2242 张输入图像进行训练时,我们使用 AdamW ,动量为 0.9,总批次大小为 1024,权重衰减为 0.05,以优化模型。我们使用余弦计划、 1 × 1 0 − 3 1×10^{−3} 1×10−3 初始学习率和 EMA 对 Vim 模型进行 300 次训练。在测试期间,我们在验证集上应用中心裁剪以裁剪出 22 4 2 224^2 2242 张图像。实验在 8 个 A800 GPU 上进行。长序列微调为了充分利用 Vim 高效的长序列建模能力,我们在 ImageNet 预训练之后继续使用长序列设置对 Vim 进行 30 个 epoch 的微调。具体而言,我们在保持块大小不变的情况下将块提取步长设置为 8,恒定学习率为 1 0 − 5 10^{−5} 10−5,权重衰减为 1 0 − 8 10^{−8} 10−8。

结果

表 1 将 Vim 与基于 ConvNet、Transformer 和 SSM 的骨干网络进行了比较。与基于 ConvNet 的 ResNet 相比,Vim 表现出色。例如,在参数大致相似的情况下,VimSmall 的 top-1 准确率达到 80.5,比 ResNet50 高 4.3 个百分点。与传统的基于自注意力机制的 ViT 相比,Vim 在参数数量和分类准确率方面均有显著提升。与高度优化的 ViT 变体 DeiT 相比,在参数数量相当的情况下,Vim 在不同规模上均超越 DeiT:VimTiny 比 DeiT-Tiny 高 3.9 个百分点,Vim-Small 比 DeiT-Small 高 0.7 个百分点。与基于 SSM 的 S4ND-ViTB 相比,Vim 在参数减少 3 倍的情况下实现了更高的 top-1 准确率。经过长序列微调后,Vim-Tiny† 和 Vim-S† 均取得了更高的结果。其中,VimS† 甚至取得了与 DeiT-B 相似的结果。结果表明,Vim 可以轻松适应更长的序列建模并提取更强的视觉表征。
请添加图片描述
图 1 (b) 和 © 比较了微小尺寸 Vim 和 DeiT 的 FPS 和 GPU 内存。随着图像分辨率的提高,Vim 在速度和内存方面表现出更好的效率。具体而言,当图像大小为 512×512 时,Vim 实现了与 DeiT 相似的 FPS 和内存。当图像尺寸增长到 1248×1248 时,Vim 比 DeiT 快 2.8 倍,并节省 86.8% 的 GPU 内存。 Vim 在序列长度上的线性缩放的显著优势使其适用于高分辨率下游视觉应用和长序列多模态应用。请添加图片描述

语义分割

设置

我们在 ADE20K 上进行语义分割实验,并使用 UperNet 作为分割框架。我们在 B 节结果中提供了详细的设置。如表 2 所示,Vim 在不同规模上的表现始终优于 DeiT:Vim-Ti 比 DeiT-Ti 高 1.8 mIoU,Vim-S 比 DeiT-S 高 0.9 mIoU。与 ResNet-101 主干相比,我们的 Vim-S 以几乎少 2 倍的参数实现了相同的分割性能。为了进一步评估下游任务(即分割、检测和实例分割)的效率,我们将主干与常用的特征金字塔网络 (FPN) 模块相结合,并对它们的 FPS 和 GPU 内存进行基准测试。如图 4 和图 3 所示,效率曲线显示了与纯主干(图 1)类似的比较结果,尽管我们在主干上附加了一个重 FPN。卓越的线性缩放性能归功于我们提出的高效主干 Vim,它为以端到端的方式学习千兆像素级视觉表示奠定了基础,而无需多阶段编码(例如,航空图像、医学图像和计算病理学)。

请添加图片描述

请添加图片描述

对象检测和实例分割

设置

我们在 COCO 2017 数据集上进行了对象检测和实例分割实验,并使用 ViTDet 作为基本框架。我们在 B 节结果中提供了详细的设置。表 3 使用级联 Mask R-CNN 框架将 Vim-Ti 与 DeiT-Ti 进行了比较。Vim-Ti 比 DeiTTi 好 1.3 个 box AP 和 1.1 个 mask AP。对于中型和大型物体,Vim-Ti 比 DeiT-Ti 好 1.6 APbox m /1.3 APmask m 和 1.4 APbox l /1.8 APmask l,表现出比 DeiT 更好的远程上下文学习能力(图 5)。我们强调,由于 DeiT 配备了窗口注意功能,而 Vim 以纯序列建模方式工作,因此准确度优势并不简单。具体来说,为了对高分辨率图像(即 1024×1024)进行表征学习,我们遵循 ViTDet 并使用 2D 窗口注意修改 DeiT 主干,这注入了 2D 先验并打破了 Transformer 的顺序建模性质。得益于第 3.5 节图 1 和图 3 中所示的效率,我们可以直接将 Vim 应用于 1024×1024 输入图像并学习顺序视觉表征以进行对象检测和实例分割,而无需在主干中使用 2D 先验。
请添加图片描述
请添加图片描述

消融研究

双向 SSM

我们使用 ImageNet-1K 分类和 ADE20K 上的 Segmenter 语义分割框架,消除了 Vim 的关键双向设计。为了充分评估学习表征在 ImageNet 上的能力,我们使用只有 2 层的简单 Segmenter 头对语义分割进行迁移学习。我们研究了以下双向策略:

  • 无。我们直接采用 Mamba 块来处理仅具有前向的视觉序列。
  • 双向序列。在训练期间,我们随机翻转视觉序列。这就像数据增强一样。
  • 双向块。我们将堆叠的块配对。每对的第一个块以前向处理视觉序列,每对的第二个块以后向处理。
  • 双向 SSM。我们为每个块添加一个额外的 SSM 来处理后向的视觉序列。
  • 双向 SSM + Conv1d。基于双向 SSM,我们进一步在后向 SSM 之前添加一个后向 Conv1d(如图 2)。

如表 4 所示,直接采用 Mamba 块在分类方面取得了良好的效果。然而,不自然的单向方式对下游密集预测提出了挑战。具体来说,使用双向块的初步双向策略在分类上实现了低 7 个点的 top-1 准确率。然而,它在语义分割上的表现比普通单向 Mamba 块高出 1.3 mIoU。通过添加额外的后向 SSM 和 Conv1d,我们实现了卓越的分类准确率(73.9 top-1 acc vs. 73.2 top-1 acc)和卓越的分割优势(35.9 mIoU vs. 32.3 mIoU)。我们在 Vim 块中使用双向 SSM + Conv1d 策略作为默认设置。请添加图片描述

分类设计

我们简化了 Vim 的分类设计,以 ImageNet-1K 分类为基准。我们研究了以下分类策略:

  • 均值池。我们对最后一个 Vim 块的输出特征采用均值池,并对该池化特征进行分类。
  • 最大池。我们首先在视觉序列的每个标记上调整分类头,然后对序列执行最大池以获得分类预测结果。
  • 头类标记。按照 DeiT 的方法,我们将类标记连接到视觉序列的头部并进行分类。
  • 双类标记。基于头类标记策略,我们在视觉序列的尾部另外添加了一个类标记。
  • 中间类标记。我们在视觉序列的中间添加一个类标记,然后对最终的中间类标记进行分类。

如表 5 所示,实验表明,中间类标记策略可以充分利用 SSM 的循环性质和 ImageNet 中的中心对象先验,显示出 76.1 的最佳 top-1 准确率。请添加图片描述

总结和展望

  • 我们提出了 Vision Mamba (Vim) 来探索最新的高效状态空间模型 Mamba 作为通用视觉主干。
  • 与之前使用混合架构或等效全局 2D 卷积核的视觉任务状态空间模型不同,Vim 以序列建模的方式学习视觉表征,并且不会引入特定于图像的归纳偏差。
  • 得益于提出的双向状态空间建模,Vim 实现了数据相关的全局视觉上下文,并享有与 Transformer 相同的建模能力,同时计算复杂度更低。
  • 受益于 Mamba 的硬件感知设计,Vim 在处理高分辨率图像时,推理速度和内存使用率明显优于 ViT。
  • 在标准计算机视觉基准上的实验结果验证了 Vim 的建模能力和高效率,表明 Vim 有很大潜力成为下一代视觉baseline。

在未来的工作中,具有位置嵌入的双向 SSM 建模的 Vim 适用于无监督任务,例如掩模图像建模预训练,而与 Mamba 类似的架构可实现多模态任务,例如 CLIP 样式预训练。基于预训练的 Vim 权重,探索 Vim 在分析高分辨率医学图像、遥感图像和长视频(可视为下游任务)方面的实用性非常简单。

标签:DeiT,Space,Efficient,Vim,SSM,Learning,Mamba,序列,视觉
From: https://blog.csdn.net/weixin_49641282/article/details/143085818

相关文章

  • flume传输数据报错“Space for commit to queue couldn‘t be acquired. Sinks are li
        最近在写一个数据量比较大的项目时候,需要使用flume将kafka中的数据传输到HDFS上进行存储,方便后续的数仓搭建,但是flume在传输数据中却报错如下日志org.apache.flume.ChannelFullException:Spaceforcommittoqueuecouldn'tbeacquired.Sinksarelikelynot......
  • 从蹲在碎片前沉思到SpaceX“筷子回收”,马斯克用20年把梦想照进现实!
    2006年,一片荒芜的沙漠中,火箭残骸散落一地。伊隆·马斯克蹲在爆炸后的碎片旁,眼中满是失望和沮丧。这个场景成为了SpaceX发展历程中的一个重要转折点。SpaceX的故事始于2002年,马斯克带着火星移民的梦想创立了这家公司。早期的SpaceX面临着巨大的挑战。连续三......
  • 牛马阅读(知识+重点翻译) Advanced Deep-Learning Techniques for Salient and Category
    ABSTRACT目标检测,包括目标检测(OD)、显著目标检测(SOD)和特定类别的目标检测(COD),是计算机视觉界最基本但最具挑战性的问题之一。在过去的几十年中,研究人员已经做出了巨大的努力来解决这个问题,因为它在其他计算机视觉任务(如活动或事件识别、基于内容的图像检索和场景理解)中得......
  • 强化学习算法笔记之【Q-learning算法和DQN算法】
    强化学习笔记之【Q-learning算法和DQN算法】前言:强化学习领域,繁冗复杂的大段代码里面,核心的数学公式往往只有20~40行,剩下的代码都是为了应用这些数学公式而服务的这可比遥感图像难太多了,乱七八糟的数学公式看得头大本文初编辑于2024.10.5CSDN主页:https://blog.csdn.net/rvd......
  • PyTorchStepByStep - Bonus Chapter: Feature Space
      ......
  • Machine Learning的学习旅途
    交叉验证cross_val_scorecross_val_score是Scikit-learn中的一个函数,用于执行交叉验证(cross-validation),它可以帮助评估模型的泛化能力。交叉验证是一种常见的模型评估方法,通过将数据集分成多个训练和测试集,避免模型过拟合并评估它在不同数据划分上的表现。使用及常见参数......
  • 机器学习(MachineLearning)(8)——模型评估与优化
    机器学习(MachineLearning)(1)——机器学习概述机器学习(MachineLearning)(2)——线性回归机器学习(MachineLearning)(3)——决策树回归机器学习(MachineLearning)(4)---------分类_逻辑回归机器学习(MachineLearning)(5)——分类_决策树机器学习(MachineLearning)(6)——分类_支持向量机机......
  • No space left on device or exceeds fs.inotify.max_user_watches?
     sudosysctl-n-wfs.inotify.max_user_watches="99999999"fs.inotify.max_queued_events:表示调用inotify_init时分配给inotifyinstance中可排队的event的数目的最大值,超出这个值的事件被丢弃,但会触发IN_Q_OVERFLOW事件。fs.inotify.max_user_instances:表示每一个realuse......
  • DBPM: 增强时间序列对比学习:一种动态坏对挖掘方法《Towards Enhancing Time Series Co
    今天是2024年10月12日,思路枯竭,还是论文看的太少了,继续看论文.论文:TowardsEnhancingTimeSeriesContrastiveLearning:ADynamicBadPairMiningApproach或者是:TowardsEnhancingTimeSeriesContrastiveLearning:ADynamicBadPairMiningApproachGitHub:https://git......
  • JAVA中的Xms、Xmx、MetaspaceSize、MaxMetaspaceSize都是什么意思?
    原文链接:JAVA中的Xms、Xmx、MetaspaceSize、MaxMetaspaceSize都是什么意思?–每天进步一点点(longkui.site)某天需要修改一个web服务器的配置文件,看到了下面这样一行配置JAVA_OPTS="-Xms64m-Xmx512m-XX:MetaspaceSize=64M-XX:MaxMetaspaceSize=512m-Djava.net.preferIPv......