赞
踩
论文地址:Vision Mamba
代码地址:Vim
总结了论文中提出的Vision Mamba(Vim)模型的动机、设计以及其在视觉任务上的表现。
首先,指出了状态空间模型(SSM)在长序列建模方面的潜力,尤其是Mamba模型在硬件效率方面的优势。纯粹基于 SSM 构建高效且通用的视觉 backbone 是一个有吸引力的方向。
然后提到,尽管在视觉数据表示上存在挑战,例如视觉数据的位置敏感性和视觉理解对全局上下文的需求,但作者成功地展示了不必完全依赖自注意力机制来学习视觉表示。
文章介绍了Vim模型,这是一种新的通用视觉基础模型,它利用双向Mamba块(bidirectional Mamba blocks (Vim))和位置嵌入 (position embeddings)来处理图像序列,并在ImageNet分类、COCO对象检测和ADE20K语义分割任务上取得了比现有的视觉Transformer模型(如DeiT)更好的性能。
Vim在处理高分辨率图像时,不仅计算和内存效率显著提高(例如,比DeiT快2.8倍,GPU内存减少86.8%),而且还能够克服Transformer在高分辨率图像理解上的计算和内存限制,显示出成为下一代视觉基础模型的巨大潜力。
简而言之,强调了SSM在捕获长范围依赖方面的优势,Mamba模型在此基础上的进一步发展,以及将SSM应用于视觉数据处理的未来潜力。
总的来说,强调了ViT在全局上下文理解和多模态应用中的优势,同时也指出了它在处理复杂视觉任务时可能遇到的性能瓶颈。
这段话讨论了如何将Mamba模型从语言建模领域转移到视觉领域,并介绍了Vision Mamba(Vim)模型的设计理念、挑战和应用。
简而言之,解释了如何将Mamba的成功应用于视觉领域,提出了解决其在视觉任务中存在的挑战的Vim模型,并描述了Vim的实现和训练过程,以及其在各种视觉任务中的应用。
Vision Mamba(Vim)模型在处理视觉任务方面相比其他基于状态空间模型(SSM)和Transformer模型的优势,尤其是在图像分类、处理高分辨率图像以及执行密集预测任务方面。
简言之,Vim通过其独特的双向SSM结构和对空间信息的有效编码,在视觉表示学习的通用性、效率和性能方面超越了现有的SSM和Transformer模型,尤其是在处理复杂视觉任务和高分辨率图像时的表现。
Vim的提出:首先,作者提出了Vision Mamba(Vim),这是一种集成了双向状态空间模型(SSM)的新模型,用于数据依赖的全局视觉上下文建模,并加入位置嵌入来实现对空间信息敏感的视觉理解。这表明Vim能够捕获和理解图像中的全局和局部信息,对位置进行编码,从而提高模型对视觉数据的理解能力。
Vim的计算和内存效率:Vim的一个显著特点是它不依赖于传统的注意力机制,但仍保持与视觉Transformer(ViT)相当的建模能力,同时具有低于二次时间的计算复杂度和线性内存复杂度。具体来说,在处理1248×1248分辨率的图像进行批量推断时,Vim的速度比DeiT快2.8倍,并且节省了86.8%的GPU内存。这一点对于需要处理大量高分辨率图像的应用尤为重要,表明Vim能够在保持高性能的同时大幅降低计算资源消耗。
广泛的实验验证:作者在ImageNet分类任务和多个密集预测下游任务上对Vim进行了广泛测试。实验结果显示,Vim在性能上超过了现有的高度优化的视觉Transformer模型,即DeiT。这证明了Vim不仅在理论上具有创新性,在实际应用中也具有显著的性能优势。
Vision Mamba(Vim)是如何从这些发展中获得灵感并提出一种新的架构的。
早期架构:最初,卷积神经网络(ConvNet)是计算机视觉的标准网络设计,为各种视觉应用提供了视觉基础模型。随后,提出了多种卷积神经网络架构,以提高性能和效率。
Vision Transformer(ViT)的创新:ViT改变了传统视觉模型的格局,通过将图像视为一系列扁平化的2D块并直接应用纯Transformer架构,使得在图像分类任务上取得了令人惊讶的结果,促进了许多后续工作的产生。这些工作包括将2D卷积先验引入ViT的混合架构设计,以及改进传统2D卷积网络的工作。
Transformer模型的挑战与发展:尽管Transformer模型因其较大的模型容量、统一的多模态表示能力、以及对自监督学习友好等优势而成为首选架构,但其面临的一个主要挑战是处理视觉任务时的计算复杂度问题,这限制了视觉标记的数量。针对这一挑战,已有多种工作尝试寻找解决方案,但很少有工作专注于视觉应用。
Vim的灵感与目标:受到Mamba模型在处理序列数据方面高效性的启发,本工作探索了构建一种不使用注意力机制的纯SSM(状态空间模型)基础模型作为通用视觉基础架构的可能性。该模型旨在保留ViT的序列化、模态不可知的建模优点,同时解决Transformer在视觉表示学习中的计算复杂度问题。
S4模型:首先介绍了结构化状态空间序列(S4)模型,这是一种新的替代传统CNN和Transformer的模型,能够模拟长距离依赖性。S4模型的一个重要特性是,其计算复杂度随序列长度线性增长,这一点对于长序列数据处理尤为重要。
S5层:进一步的探索中,提出了S5层,通过引入多输入多输出(MIMO)SSM和高效的并行扫描技术到S4层,以增强模型的处理能力。
H3层:另一个重要的发展是H3层的设计,该层几乎填补了SSM和Transformer注意力机制在语言模型中的性能差距,展示了SSM在捕获长距离依赖性方面的潜力。
门控状态空间层:通过在S4基础上引入更多的门控单元构建了门控状态空间层,以提高模型的表达能力。
Mamba模型:最近,提出了依赖于数据的SSM层并构建了Mamba模型,这是一个通用的语言模型 backbone,它在处理大规模实际数据时能够超越各种大小的Transformer模型,并且同样享有随序列长度线性增长的计算复杂度。
在这项工作中,作者探索了将Mamba模型的成功转移到视觉领域的可能性,即构建一个纯粹基于SSM而非依赖于注意力机制的通用视觉基础架构。这表明,借鉴SSM在语言模型中的成功经验,通过适当的改进和调整,有可能为视觉任务提供一个高效且能够处理复杂依赖性的新型架构。
1D S4在视频分类中的应用:提到使用一维S4模型来处理视频分类任务中的长期时间依赖问题。
扩展至多维数据:介绍了将1D S4扩展到包括二维图像和三维视频在内的多维数据处理。
TranS4mer模型:结合了S4模型和自注意力机制的优势,创建了TranS4mer模型,该模型在电影场景检测任务上取得了最先进的性能。
S4的选择性机制:通过引入一种新颖的选择性机制到S4中,显著提高了S4在长视频理解任务上的性能,并大幅降低了内存占用。
更可扩展的SSM基础架构:提出了一种用SSM基础架构替代注意力机制的方法,以生成高分辨率图像并在可承受的计算成本下处理细粒度表示。
U-Mamba模型:提出了一个混合的CNN-SSM架构,名为U-Mamba,用于处理生物医学图像分割中的长距离依赖问题。
这段讨论指出,虽然之前的工作要么将SSM应用于特定的视觉应用,要么通过结合SSM与卷积或注意力机制构建混合架构,但与之不同的是,作者构建了一个纯粹基于SSM的模型,旨在作为一个通用的视觉 backbone。这表示Vision Mamba(Vim)模型旨在不依赖于传统注意力机制的情况下,通过利用SSM的优势,提供一个能够高效处理图像和视频中长距离依赖关系的强大工具,这在视觉任务中是非常重要的。
这段内容介绍了状态空间模型(SSM)及其在S4和Mamba模型中的离散化形式,包括它们如何从连续系统的理论启发而来的。
状态空间模型:SSM是一种将一维函数或序列 x ( t ) ∈ R x(t)\in \mathbb{R} x(t)∈R 通过隐藏状态 h ( t ) ∈ R N h(t)\in \mathbb{R}^{\text{N}} h(t)∈RN 映射到 y ( t ) ∈ R y(t)\in \mathbb{R} y(t)∈R 的系统。系统利用演化参数 A ∈ R N × N \mathbf{A}\in \mathbb{R}^{\text{N} \times \text{N}} A∈RN×N 和投影参数 B ∈ R N × 1 \mathbf{B}\in \mathbb{R}^{\text{N} \times 1} B∈RN×1和 C ∈ R 1 × N \mathbf{C}\in \mathbb{R}^{1 \times \text{N}} C∈R1×N。
连续系统的数学形式:连续系统可以用以下微分方程来表示:
离散化的状态空间模型:S4和Mamba模型是连续系统的离散版本,引入了一个时间尺度参数 Δ \Delta Δ 来将连续参数 A \mathbf{A} A 和 B \mathbf{B} B 转换为离散参数 A ‾ \overline{\mathbf{A}} A 和 B ‾ \overline{\mathbf{B}} B。
离散化的方法:通常用于变换的方法是零阶保持(Zero-Order Hold, ZOH),定义如下:
这里, exp ( ⋅ ) \exp(\cdot) exp(⋅) 表示矩阵指数,是将线性系统的连续时间演化转换为离散时间的标准方法。 Δ A \Delta A ΔA 和 Δ B \Delta B ΔB 是连续演化矩阵和输入影响矩阵的离散等效物。 I I I 是单位矩阵。
这个转换是必要的,因为在实际的数据处理和计算机模拟中,我们通常是在离散时间点上工作,而不是连续时间。这样的离散化使得SSM可以用于数字计算和实时数据处理。
然后对连续时间状态空间模型的离散化版本进行了说明。当 A \mathbf{A} A 和 B \mathbf{B} B 被离散化后,原本连续时间的动态方程被转换为离散时间的方程,以适应在数字计算中的使用。这里的 A ‾ \overline{\mathbf{A}} A, B ‾ \overline{\mathbf{B}} B, 和 C \mathbf{C} C 是离散化版本的参数。
这里:
离散时间的状态空间模型是为了在数字系统中模拟连续系统的行为。在计算机视觉等数字信号处理应用中,这种模型特别有用,因为它可以捕捉输入数据序列随时间的动态变化。在Vision Mamba论文中,这种离散化的状态空间模型被用作视觉任务的建模工具,特别是处理序列数据,例如视频或者由序列组成的图像。
离散时间的状态空间模型是为了在数字系统中模拟连续系统的行为。在计算机视觉等数字信号处理应用中,这种模型特别有用,因为它可以捕捉输入数据序列随时间的动态变化。在Vision Mamba论文中,这种离散化的状态空间模型被用作视觉任务的建模工具,特别是处理序列数据,例如视频或者由序列组成的图像。
最后,模型通过全局卷积从状态空间模型(SSM)中计算输出:
K
‾
=
(
C
B
‾
,
C
A
B
‾
,
…
,
C
A
‾
M
−
1
B
‾
\mathbf{\overline{K}} = (\mathbf{C\overline{B}}, \mathbf{C\overline{AB}}, \ldots, \mathbf{C\overline{A}^{M-1}\overline{B}}
K=(CB,CAB,…,CAM−1B
y
=
x
∗
K
‾
\mathbf{y} = \mathbf{x} *\mathbf{\overline{K}}
y=x∗K
具体来说,它定义了一个结构化的卷积核
K
‾
\mathbf{\overline{K}}
K 并展示了如何使用这个核与输入序列
x
\textbf{x}
x 进行卷积以生成输出
y
\textbf{y}
y。
卷积核 K ‾ \mathbf{\overline{K}} K:它是通过连接不同时间步上的参数 C \mathbf{C} C 和 A ‾ \overline{\textbf{A}} A 与 B ‾ \overline{\textbf{B}} B 的乘积来构造的。 K ‾ \mathbf{\overline{K}} K 的每个元素 C A ‾ i B ‾ \mathbf{C\overline{A}^{i}\overline{B}} CAiB(其中 i i i 是从 0 到 M − 1 \text{M}-1 M−1 的指数)代表了状态空间模型在不同时间步上的影响。这表示输出不仅取决于当前的输入和状态,而且还受到前 M − 1 \text{M}-1 M−1 步的影响。
全局卷积:一旦卷积核 K ‾ \mathbf{\overline{K}} K 被构建,就可以将其应用于整个输入序列 x \textbf{x} x 上。这里的卷积操作 ∗ * ∗ 指的是全局卷积,其中 K ‾ \mathbf{\overline{K}} K 作用于 x \textbf{x} x 的每一段以生成输出序列 y \textbf{y} y。
其中, M \text{M} M 是输入序列 x \mathbf{x} x 的长度, K ‾ ∈ R M \mathbf{\overline{K}} \in \mathbb{R}^\text{M} K∈RM 是构造的结构化卷积核。通过全局卷积操作,模型可以在整个序列上捕捉长距离依赖,这对于时间序列数据或其他顺序数据(如视频或文本)特别有用。在视觉模型中,这样的全局卷积可以帮助模型捕捉图像内的复杂空间关系。
Vision Mamba(Vim)的处理流程:
在您提供的图片中,描述了Vision Mamba(Vim)的处理流程,这是一个针对视觉任务设计的模型。这个过程包括以下几个主要步骤:
输入图像转换:首先,将二维图像 t ∈ R H × W × C t \in \mathbb{R}^{H \times W \times C} t∈RH×W×C 转换为扁平化的二维图像块 x p ∈ R J × ( P 2 ⋅ C ) x_p \in \mathbb{R}^{J \times (P^2 \cdot C)} xp∈RJ×(P2⋅C),其中 H H H 和 W W W 是输入图像的大小, C C C 是通道数, P P P 是图像块的大小, J J J 是图像块的数量。
线性投影:接着,将这些图像块线性投影到一个更高维度的空间中,尺寸为 D D D,并为这些投影后的向量添加位置嵌入 E p o s ∈ R ( J + 1 ) × D \mathbf{E}_{pos} \in \mathbb{R}^{(J+1) \times D} Epos∈R(J+1)×D。
类标记:受ViT和BERT的启发,使用一个额外的类标记 t c l s \mathbf{t}_{cls} tcls,表示整个图像块序列。将类标记与投影后的图像块一起,形成序列 T 0 \mathbf{T}_0 T0。
通过Vim模型处理:然后,将这个序列 T l − 1 \mathbf{T}_{l-1} Tl−1 送入Vim编码器的第 l l l 层,并获得输出 T l \mathbf{T}_l Tl。这里, Vim \textbf{Vim} Vim 是提出的视觉mamba块。
标准化和预测:最后,将输出的类标记 T 0 L \mathbf{T}_0^L T0L 标准化,并通过多层感知机( MLP \textbf{MLP} MLP)头部获得最终的预测 p ^ \hat{p} p^。
整个过程可以用以下数学表达式描述:
T 0 = [ t c l s ; t p 1 W ; t p 2 W ; … ; t p J W ] + E p o s ( 5 ) \mathbf{T}_0 = [\mathbf{t}_{cls}; \mathbf{t}^1_p\mathbf{W}; \mathbf{t}^2_p\mathbf{W}; \ldots ; \mathbf{t}^J_p\mathbf{W}] + \mathbf{E}_{pos}\ \ \ (5) T0=[tcls;tp1W;tp2W;…;tpJW]+Epos (5) T l = Vim ( T l − 1 ) + T l − 1 \mathbf{T}_l = \textbf{Vim}(\mathbf{T}_{l-1}) +\mathbf{T}_{l-1} Tl=Vim(Tl−1)+Tl−1 f = Norm ( T 0 L ) ( 6 ) \textbf{f} = \textbf{Norm}(\mathbf{T}_0^L) \ \ \ \ (6) f=Norm(T0L) (6) p ^ = MLP ( f ) \hat{p} = \textbf{MLP}(\mathbf{f}) p^=MLP(f)
这里 T 0 \mathbf{T}_0 T0 是初始的输入序列, T l \mathbf{T}_l Tl 是通过Vim模块处理后的序列, W \mathbf{W} W 是学习到的线性投影矩阵, Norm \textbf{Norm} Norm 是标准化层, MLP \textbf{MLP} MLP 是多层感知机,用于生成最终的输出或预测。这种架构允许模型学习图像的综合表示,并能够应用于各种视觉任务,如分类、检测和分割。
The original Mamba block is designed for the 1-D sequence, which is not suitable for vision tasks requiring spatial-aware understanding. In this section, we introduce the Vim block, which incorporates the bidirectional sequence modeling for the vision tasks. The Vim block is shown in Fig. 2.
Specifically, we present the operations of Vim block in Algo. 21. The input token sequence T l − 1 \mathbf{T}_{l-1} Tl−1 is first normalized by the normalization layer. Next, we linearly project the normalized sequence to the x \mathbf{x} x and z \mathbf{z} z with dimension size E E E. Then, we process the x \mathbf{x} x from the forward and backward directions. For each direction, we first apply the 1-D convolution to the x \mathbf{x} x and get the x o ′ \mathbf{x}'_o xo′ . We then linearly project the x o ′ \mathbf{x}'_o xo′ to the B o \mathbf{B}_o Bo, C o \mathbf{C}_o Co, Δ o \mathbf{\Delta}_o Δo, respectively. The Δ o \mathbf{\Delta}_o Δo is then used to transform the A ‾ o \mathbf{\overline{A}}_o Ao, B ‾ o \mathbf{\overline{B}}_o Bo, respectively. Finally, we compute the y f o r w a r d \mathbf{y}_{forward} yforward and y b a c k w a r d \mathbf{y}_{backward} ybackward through the SSM. The y f o r w a r d \mathbf{y}_{forward} yforward and y b a c k w a r d \mathbf{y}_{backward} ybackward are then gated by the z \mathbf{z} z and added together to get the output token sequence T l \mathbf{T}_l Tl.
这段话介绍了Vision Mamba(Vim)模型的关键构件——Vim block的设计和功能,特别是针对视觉任务调整的部分。逐步解析这一段的意义:
Mamba block的局限性:原始的Mamba block是为一维(1-D)序列设计的,不适合需要空间感知的视觉任务。这是因为传统的一维序列建模通常不会考虑输入数据中的空间结构。
Vim block的引入:为了适应视觉任务的空间需求,提出了Vim block。这个模块利用双向序列建模来捕捉视觉数据中的前后文关系和空间信息。
Vim block的操作:接下来,详细描述了Vim block的操作过程:
Vim block的目的:这种设计允许Vim block同时考虑图像序列中每个位置的前后信息,从而为视觉任务提供一个更为丰富和精确的信息表示。通过将信息从两个方向传递并整合,Vim能够更好地理解和利用视觉数据中的空间关系。
总之,Vim block是为了在视觉任务中处理二维数据而设计的,它通过双向处理和空间信息的集成来克服原始Mamba模型在处理图像时的限制。通过这样的结构,Vim block可以有效地作为处理图像和视频数据的视觉基础模型。
图片中提供的算法是Vision Mamba(Vim)的一个核心组成部分——Vim Block的处理流程。这个算法详细描述了如何在Vision Mamba模型中处理输入的token序列,并生成输出的token序列。以下是算法的逐步解释:
输入与输出:
步骤1:使用标准化层(Norm)对输入的 t o k e n token token 序列 T l − 1 \mathbf{T}_{l-1} Tl−1 进行标准化。
步骤2-3:将标准化后的 t o k e n token token 序列分别通过两个线性变换层 Linear X \textbf{Linear}^X LinearX 和 Linear Z \textbf{Linear}^Z LinearZ 来生成两个新的序列 x \mathbf{x} x 和 z \mathbf{z} z。
步骤4-15:对于序列 x \mathbf{x} x,分别从前向和后向进行处理:
步骤16-20:处理完前向和后向序列后,通过 z \mathbf{z} z 对 y f o r w a r d \mathbf{y}_{forward} yforward 和 y b a c k w a r d \mathbf{y}_{backward} ybackward 进行门控,并将它们加在一起来生成输出序列 T l \mathbf{T}_l Tl。
步骤21:将 y f o r w a r d + y b a c k w a r d \mathbf{y}_{forward} + \mathbf{y}_{backward} yforward+ybackward通过一个线性层 L i n e a r T \mathbf{Linear}^T LinearT,与原始输入 T l − 1 \mathbf{T}_{l-1} Tl−1 进行残差连接(加和),以得到最终的输出 T l \mathbf{T}_l Tl。
这个算法突出了Vim Block如何利用双向序列建模来处理视觉任务,它允许模型捕捉序列数据中的前后依赖关系,并增加了对空间细节的感知能力,这在处理图像这类高维度数据时特别重要。此外,算法中的门控机制允许模型根据上下文动态地调整每个方向上信息的贡献,从而提高模型对复杂视觉模式的理解。
配图 2 从高层次展示了 Vision Mamba (Vim) 模型的工作流程。这个图解阐明了 Vim 模型如何处理输入图像并产生预测的步骤:
输入图像:模型首先接收一个输入图像。
图像分割与投影:这个图像被分割成多个块,每个块被称作一个“patch”。每个 patch 通过一个投影层转换成一个嵌入向量,这些向量被称作 patch tokens。
位置嵌入:为了让模型理解各个 patch 在原始图像中的位置,给每个 patch token 加上位置嵌入。
类标记:除了 patch tokens,还引入一个额外的 learnable token,称为类标记 (class token),它在模型最后用于分类预测。
展平和线性投影:接下来,这些带有位置信息的 patch tokens 和类标记被展平(flatten)并通过线性变换得到嵌入的 patches。
Vision Mamba 编码器:这些嵌入的 patches 作为 token 序列输入到 Vim 编码器。编码器的结构如右侧所示,主要包含以下部分:
门控机制和残差连接:前向和后向的输出被结合起来,并且与输入序列的残差连接相加,得到最终的 token 序列 ( T_l )。
多层感知机 (MLP) 和预测:处理后的 token 序列被送入 MLP,MLP 头部用于对类标记进行分类预测。
这个图示说明了 Vim 的整个流程,从输入图像到生成最终的分类预测。通过这种结构,Vim 能够有效捕获图像的空间信息,并对长序列数据进行建模。
Vision Mamba(Vim)架构的超参数以及如何设置这些参数来构建模型的细节。
超参数:
模型构建:
通过这些设置,可以构建不同大小的模型,以适应不同的计算需求和任务复杂性。小型变体可能适用于资源受限的情况,而大型变体可能在需要处理更复杂任务时使用。这些超参数的设置对模型的性能和效率有直接影响。例如,增加隐藏状态的维度 D D D 可能会增强模型捕捉特征的能力,但也会增加模型的参数数量和计算需求。同样,SSM的维度 N N N 对模型处理序列数据的能力至关重要。
传统的基于ssm的方法利用快速傅里叶变换来增强卷积运算,如式(4)所示。对于依赖于数据的方法,如Mamba, 上面图中的 Algo. 第11行SSM操作不再等同于卷积。为了解决这个问题,Mamba和提出的Vim选择了一种现代硬件友好的方式来确保效率。这种优化的关键思想是避免现代硬件加速器(gpu)的io限制和内存限制。
讨论了模型的I/O效率,特别是在使用GPU进行计算时如何优化内存的读写操作。这里的目标是减少在高带宽内存(HBM)和静态随机存取内存(SRAM)之间传输的数据量,因为这些操作可能成为模型运行中的瓶颈。
I/O效率的关键点包括:
内存组件:
标准实现:
优化方法:
效果:
总体而言,通过在快速的SRAM中执行大多数计算,并减少对大容量但慢速HBM的依赖,可以显著提高模型的性能,特别是在大规模数据处理的情况下。这对于训练和部署大型深度学习模型来说是一个重要的考量,因为内存访问速度往往会影响总体的运算速度。
讨论了Vision Mamba(Vim)模型在提高内存效率方面的策略。主要内容如下:
避免内存不足问题:为了避免处理长序列时出现的内存不足问题,Vim采用了与Mamba相同的重新计算方法。
中间状态的重新计算:
激活函数和卷积的中间激活:
这种方法在深度学习训练中是一种常见的优化技术,称为激活重新计算或检查点技术。它的核心思想是,在模型训练的反向传播阶段,不存储某些中间激活(这些通常会在正向传播期间计算并存储以便于后续的梯度计算),而是在需要时重新计算它们。这样可以在增加一些计算负担的同时大幅减少内存占用,特别是在处理长序列或大批量数据时尤为重要,因为这些情况下内存需求尤其高。通过这种方式,模型可以在有限的硬件资源下训练更大的模型或更长的序列,提高了内存的使用效率。
SSM in Vim block (Line 11 in Algo.21) and self-attention in Transformer both play a key role in providing global context adaptively. Given a visual sequence T ∈ R 1 × M × D \mathbf{T} ∈ \mathbb{R}^{1×M×D} T∈R1×M×D and the default setting E = 2 D E = 2D E=2D, the computation complexity of a global self-attention and SSM are:
Ω ( self-attention ) = 4 MD 2 + 2 M 2 D , \Omega(\text{self-attention}) = 4\text{MD}^2 + 2\text{M}^2\text{D}, Ω(self-attention)=4MD2+2M2D, Ω ( SSM ) = 3 M ( 2 D ) N + M ( 2 D ) N \Omega(\text{SSM}) = 3\text{M}(2\text{D})\text{N} + \text{M}(2\text{D})\text{N} Ω(SSM)=3M(2D)N+M(2D)N
where self-attention is quadratic to sequence length M, and SSM is linear to sequence length M (N is a fixed parameter, set to 16 by default).
The computational efficiency makes Vim scalable for gigapixel applications with large sequence lengths.
这段话讲述了在Vision Mamba(Vim)模型中,状态空间模型(SSM)的计算复杂度与Transformer中的自注意力(self-attention)机制的复杂度相比较的情况。
全局上下文提供:
计算复杂度对比:
效率与可扩展性:
综上所述,由于自注意力机制的计算复杂度较高,处理长序列时可能会非常耗时和内存密集。相比之下,SSM由于其线性复杂度特性,可以更高效地扩展到大型图像和其他高分辨率应用,这是Vim在处理大规模视觉数据时具有潜在优势的原因。这样的效率对于在实际应用中实现实时或近实时的图像分析尤为重要。
该图展示了不同图像分辨率下小型版本的 Vim 和 DeiT 模型之间的每秒帧数 (FPS) 和 GPU 内存使用情况的比较。
速度效率(图1(b)):
内存效率(图1(c)):
线性缩放:
对应用的影响:
总之,文中强调 Vim 的架构对于处理高分辨率图像或长数据序列特别有利,使其成为复杂且要求苛刻的视觉应用的有前途的模型。
配图 1 展示了 Vision Mamba (Vim) 模型和 DeiT 模型在不同视觉任务和性能指标上的比较。图表分为三个部分:准确性比较、速度比较和GPU内存比较。
准确性比较 (a):
速度比较 (b):
GPU内存比较 (c):
总结:
Vision Mamba(Vim)在图像分类任务中的实验设置和微调过程。
实验设置:
长序列微调:
对 Vision Mamba(Vim)模型在多个方面与其他流行架构进行比较,
与ResNet的比较:
与ViT的比较:
与DeiT的比较:
与基于SSM的S4ND-ViTB的比较:
长序列微调后的性能:
对于长序列建模的适应性:
讨论了在ADE20K数据集上进行的语义分割任务的实验设置和结果。
实验设置:
实验结果:
后续任务的效率评估:
总之,这段话强调了Vim在视觉表示学习方面的高效性和优势,特别是在处理具有大量像素的高分辨率图像时。Vim的线性扩展能力使其适合于需要处理长序列数据的复杂视觉任务,例如在高分辨率的医学和航空图像分析中。
这张图表(图 3)展示了 Vision Mamba(Vim)和 DeiT 在不同图像分辨率下的GPU内存效率比较。
内存使用对比:
性能优势:
适用性:
总结来说,这张图表凸显了 Vim 在高分辨率图像处理方面相较于 DeiT 的明显优势,尤其是在GPU内存使用效率上。这一点对于开发能够有效利用有限硬件资源的视觉识别系统是非常重要的。
配图 4 显示了在不同分辨率下,DeiT-Ti和Vim-Ti两种模型的帧率(FPS)对比。FPS是衡量图像处理速度的一个指标,高FPS意味着模型能够更快地处理图像。
从图中可以看到:
在512×512分辨率下,Vim和DeiT的FPS相似,这表明在较低分辨率时两者处理速度接近。
随着分辨率的提高,Vim的FPS始终高于DeiT。特别是在1248×1248的高分辨率下,Vim的处理速度是DeiT的2.8倍。
FPS的对数标度:图表的Y轴采用对数标度,这有助于在范围较大时更清晰地展示性能差异。
性能随分辨率的变化:图中的曲线展示了性能随着分辨率增加而变化的趋势。随着输入图像分辨率的增加,Vim能够维持较高的FPS,说明它在处理高分辨率图像时具有更好的速度效率。
总的来说,这张图表突出了Vim模型在高分辨率图像处理方面的速度优势,特别是在对大量数据进行批量推理时。这种速度优势使得Vim在需要实时或近实时图像处理的应用中非常有价值,如视频监控分析、在线图像识别服务等场景。
讨论了在COCO 2017数据集上进行的对象检测和实例分割任务的实验设置和结果。
实验设置:
实验结果:
准确性优势的强调:
这说明了Vim模型在处理复杂视觉任务时的有效性,特别是在不需要额外的2D结构先验的情况下,它能够学习丰富的视觉特征,并在高分辨率图像分析中取得很好的效果。这使得Vim非常适合于高分辨率的视觉应用,如医学图像分析和卫星图像处理。
这张图5是一幅可视化比较图,展示了DeiT-Ti和Vim-Ti在Cascade Mask R-CNN框架下的性能差异。通过三个不同的图像,可以看到:
GT (Ground Truth):显示了真实情况,即标准的标注结果,其中“airplane”和“person”都被正确标记。
DeiT-Ti:这是DeiT-Ti模型的预测结果,从图像中可以看出它没有检测到整个飞机,这表明DeiT-Ti可能没有学习到捕获大型物体的长距离上下文信息。
Vim-Ti:而Vim-Ti的预测结果中,飞机被准确检测并标记了出来,且置信度为86%。这表明Vim-Ti能够更好地捕捉图像中的大型物体,这可能归因于其在捕捉长距离上下文方面的优势。
图5表明,与DeiT-Ti相比,Vim-Ti在处理长距离上下文信息,尤其是在检测图像中的大型物体时表现更佳。这种能力是Vim-Ti特有的,因为它利用了状态空间模型(SSM)的长范围上下文学习能力,这是其设计的一部分。此结果强调了Vim-Ti在复杂视觉任务中的实际应用潜力。
图表4是Vision Mamba论文中的消融研究部分,旨在评估双向状态空间模型(SSM)设计对性能的影响。研究中考虑了多种不同的双向策略,通过在ImageNet-1K分类和ADE20K数据集上进行的语义分割来测试它们的有效性。
消融研究分析:
无双向策略:直接使用Mamba模块,仅处理视觉序列的前向方向。分类准确度为73.2%,ADE20K的mIoU为32.3。
双向序列:在训练期间,随机翻转视觉序列,相当于数据增强。这种方法对分类的影响较大,导致分类准确度下降了约7个百分点,但在语义分割上比单向Mamba块表现出1.3 mIoU的提升。
双向模块:成对堆叠块,每对的第一个块处理视觉序列的前向方向,第二个块处理后向方向。
双向SSM:为每个模块添加一个额外的SSM以处理视觉序列的后向方向。
双向SSM + Conv1d:在双向SSM的基础上,进一步在后向SSM之前添加一个后向的一维卷积(Conv1d)。
结果:
结论:
这项消融研究证明了在Vim模型中引入双向处理(特别是结合SSM和Conv1d)可以显著提高模型在分类和语义分割任务上的性能。选择双向SSM + Conv1d作为默认设置表明,在解决高分辨率图像的复杂视觉任务时,双向处理对提升模型性能至关重要。这种设计使Vim模型能够更有效地捕获长距离上下文信息,从而在视觉任务中表现出更好的理解和预测能力。
这段内容讲述了Vision Mamba(Vim)在ImageNet-1K数据集上的分类设计消融研究。研究测试了不同的分类策略,以了解哪种策略能最有效地使用Vim模型进行图像分类。
消融研究的分类策略:
平均池化(Mean pool):
最大池化(Max pool):
头部类别标记(Head class token):
双类别标记(Double class token):
中间类别标记(Middle class token):
实验结果:
这表明在视觉序列的中间引入一个分类用的类别标记,可能比在序列的头部或尾部添加类别标记更能有效地提取和利用图像特征。这种设计可能有助于捕获图像中的中心对象,并在分类任务中实现更好的性能。总体而言,这项消融研究强调了在设计视觉表示学习模型时,探索不同的分类策略对优化模型性能的重要性。
概述了Vision Mamba(Vim)模型的提出背景、设计特点、性能优势以及未来的应用前景。
提出背景:
设计特点:
性能优势:
验证结果:
未来应用:
总结来说,这段话强调了Vim模型在视觉建模领域的革新性,展示了其在多个标准任务上的有效性,并提出了多个未来的研究和应用方向。
这段文字是Vision Mamba论文中附加设置部分的内容,描述了用于语义分割和对象检测与实例分割的具体实验设置。
语义分割设置:
对象检测与实例分割设置:
这些详细的设置说明了论文作者在进行实验时采取的具体方法和策略,这对于重现实验结果和理解模型性能至关重要。通过这些设置,可以确保在不同视觉任务中的实验是在公平和一致的条件下进行的。
在这篇论文中,作者提出了将序列建模中的Mamba模型应用到视觉领域,并特别强调了双向建模(bidirectional modeling)的重要性。这是因为视觉数据通常包含丰富的空间信息,而这些信息在图像的不同部分之间可能有复杂的相互依赖关系。使用双向建模可以更有效地捕捉和利用这些依赖关系,以提高模型对图像的整体理解能力。
如果使用单向建模(unidirectional modeling)来处理视觉数据,主要存在以下不足:
空间上下文的有限捕获:单向建模通常只能从一个方向(如从左到右或从上到下)处理数据,这可能导致模型无法充分理解图像中的空间关系。例如,在处理图像时,单向模型可能会错过图像右侧或下侧的上下文信息,这些信息可能对整体识别和理解至关重要。
不对称的信息处理:在单向模型中,序列的早期元素会影响后续元素的处理,但后续元素对早期元素的影响却被忽略。这种不对称的信息流可能导致模型在处理具有复杂内部结构的图像(如场景图像中的多个互动对象)时表现不佳。
局限的表示能力:单向模型在某些情况下可能不足以捕获所有相关特征,尤其是在图像的不同部分需要相互作用以识别整体模式的情况下。
因此,双向建模通过同时从两个方向处理数据,可以更全面地捕捉图像中的空间上下文和关系,从而提高模型的表现力和准确性。这种方法特别适用于视觉任务,因为视觉数据的内部结构和关系往往是多方向和高度交互的。
这是因为与语言数据不同,图像数据中的元素(像素或者 patches)有其固有的空间关系。在自然语言处理(NLP)中,序列模型如 Transformer 依赖位置嵌入来理解单词在句子中的顺序,因为Transformer模型本身并不具备处理序列顺序的能力。在图像中,每个 patch 的位置同样非常重要,因为它决定了该 patch 如何与其他 patch 相互关联。
如果没有位置信息,模型将无法区分不同位置的相同内容,这会导致如下问题:
丢失空间信息:在图像中,物体的位置和布局是理解图像内容的关键部分。没有位置嵌入,模型就不能捕捉到这些关键的空间关系。
交换性问题:神经网络的许多操作,特别是全连接层或者卷积层,本质上是交换性的(permutation invariant),这意味着如果你交换了输入序列的元素,输出将保持不变。但在处理图像时,如果你交换了 patches,图像的含义可能完全不同。位置嵌入是打破这种交换性,使模型能够识别不同位置上的相同内容的一种方法。
顺序和方向:在视觉任务中,对象的相对顺序和方向也很重要。例如,一个人的头部通常位于身体的上方。位置嵌入能够帮助模型识别这种空间层次结构。
在 Vim 模型中,位置嵌入是通过直接加到每个 patch 的表示上来实现的,这样每个 patch 不仅包含了自身的视觉信息,还包含了其在整个图像中位置的信息。通过这种方式,Vim 能够学习到不同位置的 patches 如何共同构成整个图像的视觉内容。
在 Vision Mamba (Vim) 的架构中,使用 声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。