MambaVision:一种Mamba-Transformer混合视觉骨干网络
摘要
我们提出了一种新型混合Mamba-Transformer主干网络,称为MambaVision,该网络专为视觉应用而设计。我们的核心贡献包括重新设计Mamba公式,以增强其对视觉特征的高效建模能力。此外,我们还对将视觉Transformer(ViT)与Mamba集成的可行性进行了全面的消融研究。我们的结果表明,在最终层添加几个自注意力模块可以显著提高捕捉长距离空间依赖关系的建模能力。基于我们的发现,我们引入了一系列具有分层架构的MambaVision模型,以满足各种设计标准。在ImageNet-1K数据集的图像分类任务中,MambaVision模型变体在Top-1准确率和图像吞吐量方面达到了新的最先进(SOTA)性能。在MS COCO和ADE20K数据集上的目标检测、实例分割和语义分割等下游任务中,MambaVision优于同等规模的骨干网络,并表现出更优越的性能。代码链接:https://github.com/NVlabs/MambaVision。
1 引言
近年来,Transformer[1]已成为包括计算机视觉、自然语言处理、语音处理和机器人技术在内的不同领域中的事实标准架构。此外,Transformer架构的通用性(主要归因于其注意力机制)及其灵活性,使其非常适合多模态学习任务,在这些任务中,整合和处理来自各种模态的信息至关重要。尽管有这些优点,但注意力机制相对于序列长度的二次复杂度使得Transformer在训练和部署时计算成本高昂。最近,Mamba[2]提出了一种新的状态空间模型(SSM),该模型实现了线性时间复杂度,并在不同的语言建模任务中优于或匹敌Transformer[2]。Mamba的核心贡献是一种新颖的选择机制,该机制能够实现对长序列的高效输入依赖处理,并考虑了硬件感知因素。
最近,还提出了一些基于Mamba的骨干网络[3, 4],以利用其在图像分类和语义分割等视觉任务中的SSM公式的优势。然而,Mamba的自回归公式虽然对需要顺序数据处理的任务有效,但在受益于全感受野的计算机视觉任务中面临限制:(1)与顺序重要的序列不同,图像像素没有相同的顺序依赖关系。相反,空间关系通常是局部的,需要以更并行和集成的方式考虑。因此,这导致处理空间数据效率低下。(2)像Mamba这样的自回归模型逐步处理数据,限制了其在一个前向传递中捕捉和利用全局上下文的能力。相比之下,视觉任务通常需要理解全局上下文才能对局部区域进行准确预测。
Vision Mamba(Vim)[3]和其他研究提出了诸如双向SSM等修改,以解决缺乏全局上下文和空间理解的问题。虽然双向SSM有可能捕捉更全面的上下文,但由于需要在做出预测之前处理整个序列,因此会引入显著的延迟。此外,增加的复杂性可能导致训练挑战、过拟合风险,并且并不总是能提高准确性。由于这些缺陷,基于视觉Transformer(ViT)和卷积神经网络(CNN)架构的骨干网络仍然在不同视觉任务上优于最佳的基于Mamba的视觉模型。
在这项工作中,我们系统地重新设计了Mamba模块,使其更适合视觉任务。我们提出了一种混合架构,该架构由我们提出的公式(即MambaVision Mixer和MLP)以及Transformer模块组成。具体来说,我们研究了不同的集成模式,例如以等参数方式将Transformer模块添加到早期、中期和最终层以及每 l l l层。我们的分析表明,在最终阶段利用几个自注意力模块可以显著增强捕捉全局上下文和长距离空间依赖关系的能力。如第5节所示,与纯Mamba或基于ViT的模型相比,使用混合架构还可以提高图像吞吐量。
我们引入了MambaVision模型,该模型由多分辨率架构组成,并利用基于CNN的残差模块进行大分辨率特征的快速特征提取。如图1所示,MambaVision在ImageNet-1K的Top-1准确率和图像吞吐量方面达到了新的SOTA帕累托前沿,优于Mamba、CNN和基于ViT的模型,有时优势显著。在目标检测和实例分割以及语义分割等下游任务中,具有MambaVision骨干网络的模型在MS COCO和ADE20数据集上分别优于同等规模的对应模型。因此,它验证了MambaVision作为高效骨干网络的有效性和通用性。
据我们所知,MambaVision是首次研究和开发包含Mamba和Transformer的混合架构以用于计算机视觉应用的工作。我们在这项工作中的主要贡献总结如下:
- 我们引入了一个重新设计的视觉友好型Mamba模块,提高了原始Mamba架构的准确率和图像吞吐量。
- 我们对Mamba和Transformer模块的集成模式进行了系统研究,并证明在最终阶段加入自注意力模块可以显著提高模型捕捉全局上下文和长距离空间依赖关系的能力。
- 我们引入了MambaVision,这是一种新型的混合Mamba Transformer模型。分层MambaVision在ImageNet-1K数据集上实现了Top-1准确率和图像吞吐量权衡方面的新SOTA帕累托前沿。
2 相关工作
ViT。视觉Transformer(ViT)[5]作为卷积神经网络(CNN)的一种有前景的替代方案出现,它利用自注意力层来提供更大的感受野。然而,ViT最初缺乏CNN固有的一些优势,如归纳偏置和平移不变性,并且需要大规模的训练数据集才能实现有竞争力的性能。为了解决这些限制,数据高效图像Transformer(DeiT)[6]引入了一种基于蒸馏的训练策略,显著提高了分类准确率,即使在较小的数据集上也是如此。在此基础上,LeViT[7]模型提出了一种混合方法,结合了为快速推理优化的重新设计的多层感知机(MLP)和自注意力模块,提高了效率和性能。此外,交叉协方差图像Transformer(XCiT)[8]引入了一种转置自注意力机制,有效地建模了特征通道之间的交互,提高了模型捕捉数据中复杂模式的能力。金字塔视觉Transformer(PVT)[9]采用了一种分层结构,在每个阶段的开始进行块嵌入和空间维度缩减,从而提高了计算效率。类似地,Swin Transformer[10]提出了一种分层架构,其中自注意力在局部窗口内计算,并通过移动窗口来实现区域之间的交互,平衡了局部和全局上下文。Twins Transformer[11]具有空间可分离自注意力,显著提高了效率。此外,Focal Transformer[12]利用焦点自注意力来捕捉长距离空间交互的细粒度细节。
Mamba。自Mamba引入以来,已经提出了许多努力来利用其能力进行视觉应用。具体来说,Vim[3]提出使用双向状态空间模型(SSM)公式,与Mamba公式相同,其中令牌在前向和后向方向上处理,以捕捉更多的全局上下文并改善空间理解。然而,双向编码增加了计算负载,可能会减慢训练和推理时间。此外,有效地结合来自多个方向的信息以形成连贯的全局理解是具有挑战性的,因为一些全局上下文可能会在过程中丢失。与Vim不同,我们提出的MambaVision使用单个前向传递和重新设计的Mamba块,可以捕捉短距离和长距离信息,并在ImageNet Top-1准确率和吞吐量方面显著优于它。
EfficientVMamba[4]提出了一种基于空洞的选择性扫描和跳跃采样方法,以有效地提取全局空间依赖关系。EfficientVMamba还使用了一种分层架构,由SSM和基于CNN的块组成,其中SSM用于较大的输入分辨率以更好地捕捉全局上下文,而CNN用于较低的分辨率。相比之下,MambaVision在较高分辨率下使用CNN进行快速特征提取,同时在较低分辨率下使用SSM和自注意力来捕捉短距离和长距离空间依赖关系的细粒度细节。我们提出的MambaVision在Top-1准确率和图像吞吐量方面也显著优于EfficientVMamba。
此外,VMamba[13]引入了一种基于Mamba的通用视觉骨干网络,具有交叉扫描模块(CSM),该模块促进了一维选择性扫描并扩大了全局感受野。具体来说,CSM模块采用四路选择性扫描方法(即左上和右下到相反方向)来整合来自所有周围令牌的信息并捕捉更多的全局上下文。此外,VMamba进行了架构更改,例如使用深度卷积和分层多分辨率结构。尽管CSM模块的设计更适合视觉任务,但感受野仍然受到交叉扫描路径的限制。与VMamba相比,我们提出的MambaVision混合器的设计更简单,可以捕捉短距离和长距离依赖关系。MambaVision还使用基于CNN的层进行快速特征提取,而VMamba在所有阶段都使用相同的块结构。此外,MambaVision模型在具有显著更高的图像吞吐量的同时优于VMamba对应模型。
3 方法
3.1 宏观架构
在本节中,我们介绍了MambaVision,这是我们提出的在ImageNet-1K数据集上具有最先进(SOTA)性能的新型架构。如图2所示,MambaVision具有分层架构,由4个不同的阶段组成。前两个阶段由基于CNN的层组成,用于在较高的输入分辨率下快速提取特征,而阶段3和4包括提出的MambaVision和Transformer块。具体来说,给定大小为 H × W × 3 H \times W \times 3 H×W×3的图像,输入首先被转换为大小为 H 4 × W 4 × C \frac{H}{4} \times \frac{W}{4} \times C 4H×4W×C的重叠块,并通过由两个连续的 3 × 3 3 \times 3 3×3 CNN层(步长为2)组成的stem投影到 C C C维嵌入空间中。阶段之间的下采样器由一个批归一化的 3 × 3 3 \times 3 3×3 CNN层(步长为2)组成,该层将图像分辨率减半。此外,阶段1和2中的CNN块遵循通用的残差块公式,如下所示:
z ^ = GELU ( BN ( Conv 3 × 3 ( z ) ) ) z = BN ( Conv 3 × 3 ( z ^ ) ) + z \begin{array}{l} \hat{\mathbf{z}}=\operatorname{GELU}\left(\operatorname{BN}\left(\operatorname{Conv}_{3 \times 3}(\mathbf{z})\right)\right) \\ \mathbf{z}=\operatorname{BN}\left(\operatorname{Conv}_{3 \times 3}(\hat{\mathbf{z}})\right)+\mathbf{z} \end{array} z^=GELU(BN(Conv3×3(z)))z=BN(Conv3×3(z^))+z
其中, GELU \operatorname{GELU} GELU和 BN \operatorname{BN} BN分别表示高斯误差线性单元激活函数和批归一化。
3.2 微观架构
在本节中,我们首先回顾Mamba和SSM的初步知识。然后,我们介绍阶段3和4的微观架构设计,并更详细地讨论MambaVision公式。
3.2.1 Mamba初步知识
Mamba是结构化状态空间序列模型(S4)的扩展,能够将一维连续输入 x ( t ) ∈ R x(t) \in \mathbb{R} x(t)∈R转换为 y ( t ) ∈ R y(t) \in \mathbb{R} y(t)∈R,通过可学习的隐藏状态 h ( t ) ∈ R M h(t) \in \mathbb{R}^{M} h(t)∈RM和参数 A ∈ R M × M \boldsymbol{A} \in \mathbb{R}^{M \times M} A∈RM×M、 B ∈ R 1 × M \boldsymbol{B} \in \mathbb{R}^{1 \times M} B∈R1×M和 C ∈ R 1 × M \boldsymbol{C} \in \mathbb{R}^{1 \times M} C∈R1×M,如下所示:
h ′ ( t ) = A h ( t ) + B x ( t ) , y ( t ) = C h ( t ) \begin{aligned} h^{\prime}(t) & =\boldsymbol{A} h(t)+\boldsymbol{B} x(t), \\ y(t) & =\boldsymbol{C} h(t) \end{aligned} h′(t)y(t)=Ah(t)+Bx(t),=Ch(t)
离散化 上述公式中的连续参数 A \boldsymbol{A} A、 B \boldsymbol{B} B和 C \boldsymbol{C} C进一步转换为离散参数,以提高计算效率[16]。具体来说,假设一个时间尺度 Δ \Delta Δ,可以应用零阶保持规则来获得离散参数 A ‾ ∈ R M × M \overline{\boldsymbol{A}} \in \mathbb{R}^{M \times M} A∈RM×M、 B ‾ ∈ R 1 × M \overline{\boldsymbol{B}} \in \mathbb{R}^{1 \times M} B∈R1×M和 C ‾ ∈ R 1 × M \overline{\boldsymbol{C}} \in \mathbb{R}^{1 \times M} C∈R1×M,如下所示:
A ‾ = exp ( Δ A ) B ‾ = ( Δ A ) − 1 ( exp ( Δ A ) − I ) ⋅ ( Δ B ) , C ‾ = C \begin{array}{l} \overline{\boldsymbol{A}}=\exp (\Delta \boldsymbol{A}) \\ \overline{\boldsymbol{B}}=(\Delta \boldsymbol{A})^{-1}(\exp (\Delta \boldsymbol{A})-\boldsymbol{I}) \cdot(\Delta \boldsymbol{B}), \\ \overline{\boldsymbol{C}}=\boldsymbol{C} \end{array} A=exp(ΔA)B=(ΔA)−1(exp(ΔA)−I)⋅(ΔB),C=C
然后,公式(2)可以用离散参数表示为:
h ( t ) = A ‾ h ( t − 1 ) + B ‾ x ( t ) , y ( t ) = C ‾ h ( t ) \begin{aligned} h(t) & =\overline{\boldsymbol{A}} h(t-1)+\overline{\boldsymbol{B}} x(t), \\ y(t) & =\overline{\boldsymbol{C}} h(t) \end{aligned} h(t)y(t)=Ah(t−1)+Bx(t),=Ch(t)
此外,对于大小为 T T T的输入序列,可以应用核为 K ‾ \overline{\boldsymbol{K}} K的全局卷积来计算公式(4)的输出,如下所示:
K ‾ = ( C B ‾ , C A B ‾ , … , C A ‾ T − 1 B ‾ ) y = x ∗ K ‾ \begin{aligned} \overline{\boldsymbol{K}} & =\left(\boldsymbol{C} \overline{\boldsymbol{B}}, \boldsymbol{C} \overline{\boldsymbol{A B}}, \ldots, \boldsymbol{C} \overline{\boldsymbol{A}}^{T-1} \overline{\boldsymbol{B}}\right) \\ \boldsymbol{y} & =\boldsymbol{x} * \overline{\boldsymbol{K}} \end{aligned} Ky=(CB,CAB,…,CAT−1B)=x∗K
选择性 Mamba通过引入选择机制进一步扩展了S4公式,该机制允许进行输入依赖的序列处理。这允许模型的参数 B \boldsymbol{B} B、 C \boldsymbol{C} C和 Δ \Delta Δ根据输入动态调整,并过滤掉无关信息。进一步的离散化细节在[2]中提供。
3.2.2 层架构
假设输入 X ∈ R T × C X \in \mathbb{R}^{T \times C} X∈RT×C具有序列长度 T T T和嵌入维度 C C C,阶段3和4中层 n n n的输出可以计算为:
X ^ n = Mixer ( Norm ( X n − 1 ) ) + X n − 1 X n = MLP ( Norm ( X ^ n ) ) + X ^ n \begin{array}{l} \hat{X}^{n}=\operatorname{Mixer}\left(\operatorname{Norm}\left(X^{n-1}\right)\right)+X^{n-1} \\ X^{n}=\operatorname{MLP}\left(\operatorname{Norm}\left(\hat{X}^{n}\right)\right)+\hat{X}^{n} \end{array} X^n=Mixer(Norm(Xn−1))+Xn−1Xn=MLP(Norm(X^n))+X^n
其中, Norm \operatorname{Norm} Norm和 Mixer \operatorname{Mixer} Mixer分别表示层归一化和令牌混合块的选择。不失一般性,使用层归一化作为 Norm \operatorname{Norm} Norm。给定 N N N层,前 N 2 \frac{N}{2} 2N层使用MambaVision混合器块,而剩余的 N 2 \frac{N}{2} 2N层使用自注意力。我们在下面描述每个混合器的细节。
MambaVision混合器 如图3所示,我们重新设计了原始的Mamba混合器,使其更适合视觉任务。首先,我们提出用常规卷积替换因果卷积,因为因果卷积将影响限制在一个方向上,这对视觉任务来说是不必要且有限制的。此外,我们添加了一个没有SSM的对称分支,由一个额外的卷积和SiLU激活组成,以补偿由于SSM的顺序约束而丢失的任何内容。然后,我们连接两个分支的输出,并通过一个最终的线性层进行投影。这种组合确保了最终的特征表示同时结合了顺序和空间信息,利用了两个分支的优势。我们注意到,每个分支的输出被投影到一个大小为 C 2 \frac{C}{2} 2C的嵌入空间中(即原始嵌入维度的一半),以保持与原始块设计相似的参数数量。给定输入 X in X_{\text{in}} Xin,MambaVision混合器 X out X_{\text{out}} Xout的输出计算如下:
X 1 = Scan ( σ ( Conv ( Linear ( C , C 2 ) ( X in ) ) ) ) X 2 = σ ( Conv ( Linear ( C , C 2 ) ( X i n ) ) ) X out = Linear ( C 2 , C ) ( Concat ( X 1 , X 2 ) ) \begin{array}{l} X_{1}=\operatorname{Scan}\left(\sigma\left(\operatorname{Conv}\left(\operatorname{Linear}\left(C, \frac{C}{2}\right)\left(X_{\text {in }}\right)\right)\right)\right) \\ X_{2}=\sigma\left(\operatorname{Conv}\left(\operatorname{Linear}\left(C, \frac{C}{2}\right)\left(X_{i n}\right)\right)\right) \\ X_{\text {out }}=\operatorname{Linear}\left(\frac{C}{2}, C\right)\left(\operatorname{Concat}\left(X_{1}, X_{2}\right)\right) \end{array} X1=Scan(σ(Conv(Linear(C,2C)(Xin ))))X2=σ(Conv(Linear(C,2C)(Xin)))Xout =Linear(2C,C)(Concat(X1,X2))
其中, Linear ( C in , C out ) ( ⋅ ) \operatorname{Linear}\left(C_{\text{in}}, C_{\text{out}}\right)(\cdot) Linear(Cin,Cout)(⋅)表示具有输入和输出嵌入维度 C in C_{\text{in}} Cin和 C out C_{\text{out}} Cout的线性层, Scan \operatorname{Scan} Scan是[2]中的选择性扫描操作, σ \sigma σ是激活函数,使用Sigmoid线性单元(SiLU)[17]。此外, Conv \operatorname{Conv} Conv和 Concat \operatorname{Concat} Concat分别表示一维卷积和连接操作。在算法1中,我们提供了类似PyTorch的MambaVision混合器的伪代码。一般来说,我们提出的修改导致了更丰富的特征表示、更好的泛化能力以及计算机视觉任务上性能的提升。我们还在第X节中通过实验验证了每个设计选择的有效性。
自注意力 我们使用通用的多头自注意力机制,如下所示:
Attention ( Q , K , V ) = Softmax ( Q K ⊤ d h ) V \operatorname{Attention}(Q, K, V)=\operatorname{Softmax}\left(\frac{Q K^{\top}}{\sqrt{d_{h}}}\right) V Attention(Q,K,V)=Softmax(dhQK⊤)V
其中, Q Q Q、 K K K、 V V V分别表示查询、键和值, d h d_{h} dh是注意力头的数量。不失一般性,注意力公式可以以类似于先前工作[10, 18]的窗口化方式计算。
4 实验
在ImageNet-1K数据集[19]上进行图像分类实验。我们遵循先前工作[10, 12, 29]的标准训练方案,以便对不同模型的性能进行可比分析。具体来说,所有模型均训练了300个epoch,使用余弦衰减调度器,该调度器分别为预热和冷却阶段额外使用20个epoch。此外,我们使用LAMB优化器[30],全局批量大小为4096,初始学习率为0.005,权重衰减为0.05。我们注意到,与传统AdamW[31]相比,使用LAMB优化器取得了更好的结果,这尤其得益于其对较高学习率的鲁棒性。我们使用32块A100 GPU进行分类任务。
为了评估下游任务的性能,我们将预训练模型用作目标检测、实例分割和语义分割任务的骨干网络,并分别使用MS COCO数据集[32]和ADE20K数据集[33]。具体来说,对于目标检测和实例分割,我们使用Mask-RCNN[34]头,其超参数如 × 3 \times 3 ×3学习率调度(初始学习率为0.0001)、批量大小为16和权重衰减为0.05。对于语义分割,我们使用UperNet网络[35]头,采用Adam-W[31]优化器,初始学习率为 6 × 1 0 − 5 6\times10^{-5} 6×10−5,全局批量大小为16。我们使用8块A100 GPU进行所有下游任务。
5 结果
5.1 图像分类
在表1中,我们展示了ImageNet-1K分类结果。具体来说,我们将模型与不同系列的模型(如基于卷积的、基于Transformer的、卷积-Transformer混合的和基于Mamba的)进行比较,并证明在考虑ImageNet Top-1准确率和图像吞吐量的情况下,我们的模型显著优于先前的工作。例如,与流行的模型如ConvNeXt和Swin Transformers相比,MambaVision-B(84.2%)优于ConvNeXt-B(83.8%)和SwinB(83.5%),同时还具有显著更好的图像吞吐量。与基于Mamba的模型相比,我们也观察到了类似的趋势。具体来说,MambaVision-B(84.2%)在图像吞吐量显著更高的情况下优于VMamba-B(83.9%)。我们还注意到,尽管我们的主要设计目标是准确率和吞吐量的权衡,但与类似规模的对应模型相比,MambaVision模型变体的FLOPs要低得多。例如,MambaVision-B的GFLOPs比MaxViT-B少56%。
5.2 目标检测和分割
我们在表2中展示了MS COCO数据集[32]上的目标检测和实例分割结果。具体来说,我们训练了不同检测规模的模型,以进一步验证MambaVision在不同场景下的有效性。我们还注意到,我们的目标不是在这些任务中实现最先进(SOTA)性能,而是将我们的骨干网络与规模相当的流行视觉骨干网络进行比较,并验证其有效性。使用简单的Mask-RCNN检测头,我们的预训练MambaVision-T骨干网络在框AP和掩码AP方面分别达到了46.4和41.8,优于ConvNeXt-T[20]和Swin-T[10]模型。使用Cascade Mask-RCNN网络,MambaVision-T、MambaVision-S和MambaVision-B均优于竞争对手。具体来说,在框AP和掩码AP方面,MambaVision模型分别优于ConvNeXt-T(+0.6和+0.6)、ConvNeXt-S(+0.2和+0.2)和ConvNeXt-B(+0.1和+0.1)。类似地,在框AP和掩码AP方面,MambaVision分别优于Swin-T(+0.6和+0.6)、Swin-S(+0.1和+0.2)和Swin-B(+0.9和+0.7)。
我们在表3中展示了ADE20K数据集[33]上的语义分割基准。对于这些实验,我们使用UPerNet[35]以与其他模型进行比较。我们观察到,对于不同变体,MambaVision模型均优于规模相当的竞争模型。例如,在mIoU方面,MambaVision-T、MambaVision-S和MambaVision-B分别优于Swin-T、Swin-S和Swin-B(+0.6、+0.6和+1.0)。尽管我们没有对下游任务的超参数调优进行大量优化,但这些结果证明了MambaVision作为不同视觉任务骨干网络的可行性,尤其是在高分辨率设置中。
5.3 消融实验
令牌混合器的设计:在本节中,我们对MambaVision令牌混合器进行系统设计的全面消融研究。我们的目标是修改现有的Mamba块以用于计算机视觉任务,并评估其在不同任务(如分类、目标检测、实例分割和语义分割)中的性能。所有实验均基于与MambaVision-T模型相似的架构布局。
如表4所示,我们首先使用原始Mamba公式,在SSM分支中使用因果卷积层(即conv1),而在我们提出的对称分支中不使用额外的卷积层(即conv2)。不出所料,这种公式实现了次优性能,Top-1准确率为80.9%(-1.8%),框AP和掩码AP分别为44.8(-1.6)和40.2(-1.6),mIoU为44.2%(-1.4%)。然后,我们将SSM分支的因果卷积(即conv1)替换为常规卷积层,并观察到由于这一变化,所有指标均有所改善。此外,我们添加了conv2层,但使用Mamba的相同门控机制而不是连接。这一变化提高了性能,Top-1准确率为81.3%,框AP和掩码AP分别为45.3和41.0,mIoU为45.7%。最后,添加连接显著提高了所有指标的性能,在ImageNet Top-1、MS COCO的框AP和掩码AP以及ADE20K数据集的mIoU方面分别提高了+1.0%、+1.1%、+0.8%和+0.9%。因此,这验证了我们的假设,即连接两个分支(即SSM和非SSM)的输出有助于学习更丰富的特征表示并增强全局上下文理解。
混合模式:在本节中,我们全面研究了自注意力和MambaVision令牌混合器的不同混合集成模式的影响。对于所有实验,架构遵循MambaVision-T布局,并且我们保持模型等参数以进行公平比较。这些模式用于具有混合功能的阶段3和阶段4。我们从使用随机模式开始,实现了次优的Top-1准确率81.3%。这证实了我们之前的直觉,即简单地使用自注意力而不采用特定模式可能并不有效。然后,我们在每个阶段的前 N / 2 N/2 N/2层中使用自注意力块( N N N表示阶段层的总数),并观察到Top-1准确率提高了+0.2%(81.5%)。然而,使用自注意力/MambaVision混合器的混合层模式会使准确率略微降低-0.1%(81.4%)。相反,通过使用MambaVision/自注意力反转混合层的顺序,性能得到了提高,并达到了Top-1准确率81.6%。然后,我们仅在每个阶段的最后 N / 4 N/4 N/4层中使用自注意力块,并观察到准确率立即提高了+0.3%(81.9%)。这验证了我们的假设,即在每个阶段的最后几层中使用自注意力块是一种有效的设计。然而,其表示学习能力需要根据MambaVision层进行调整。将自注意力块的数量增加到每个阶段的最后 N / 2 N/2 N/2层时,实现了最佳性能82.3%。
6 结论
在这项工作中,我们介绍了MambaVision,这是第一个专门为视觉应用设计的Mamba-Transformer混合骨干网络。我们提出了对Mamba公式的重新设计,以增强全局上下文表示学习能力,并呈现了混合设计集成模式的全面研究。MambaVision在Top-1准确率和图像吞吐量方面实现了新的SOTA帕累托前沿,显著优于基于Transformer和Mamba的模型。我们希望这些发现能够成为一类新的混合视觉模型的基础。
相关文章:
MambaVision:一种Mamba-Transformer混合视觉骨干网络
摘要 我们提出了一种新型混合Mamba-Transformer主干网络,称为MambaVision,该网络专为视觉应用而设计。我们的核心贡献包括重新设计Mamba公式,以增强其对视觉特征的高效建模能力。此外,我们还对将视觉Transformer(ViT&…...
目标跟踪之DeepSort算法(4)
目标跟踪之DeepSort 1 安装1.1 代码下载与安装1. 2 DeepSort检测流程1.3 模型初始化流程 2. 模型推理2.1 模型推理代码解析2.2 对预测结果跟踪代码解析2.3 轨迹预测2.4 轨迹跟踪2.5 轨迹与特征匹配2.6 计算轨迹与检测的特征余弦距离2.7 用轨迹与检测的马氏距离跟新cost_matrix矩…...
速通大厂测开
最近26届暑期实习招聘和25届春招已经开始,测开学习圈也有同学拿到offer了 今天分享一位25届秋招圈友快速拿到大厂测开offer的经历,希望对大家有所帮助 我是某211本科生,在去年暑假准备考研的间隙意外收获了某大厂测开实习offer,…...
LightRAG简要概述
文章目录 索引流程问答流程naivelocalglobalhybridmix 中文prompt 官方仓库:LightRAG 没有废话,直接进入主题。 索引流程 1、提取实体与关系 2、LLM判断是否有漏掉的实体与关系,如有则接着提取 3、合并实体,根据多个实体描述&a…...
【Mac】安装 Parallels Desktop、Windows、Rocky Linux
一、安装PD 理论上,PD只支持试用15天!当然,你懂的。 第一步,在 Parallels Desktop for Mac 官网 下载 Install Parallels Desktop.dmg第二步,双击 Install Parallels Desktop.dmg 第三步,双击安装Paralle…...
Unity利用噪声生成动态地形
引言 在游戏开发中,地形是构建游戏世界的基础元素之一。传统的地形创建方法通常依赖于手动建模或预设资源,这种方式虽然精确但缺乏灵活性,且工作量巨大。而使用噪声算法生成地形则提供了一种程序化、动态且高效的解决方案。本文将详细介绍如…...
【Linux】Ext系列文件系统(上)
目录 一、 理解硬件 1-1 磁盘 1-2 磁盘物理结构 1-3 磁盘的存储结构 1-4 如何定位一个扇区 1-4 磁盘的逻辑结构 1-4-1 理解过程 1-4-2 真实过程 1-5 CHS && LBA地址 二、文件系统 2-1 "块"概念 2-2 "分区"概念 2-3 "inode"…...
解决diffusers加载stablediffusion模型,输入prompt总是报错token数超出clip最大长度限制
1. StableDiffusion1.5 在加载huggingface中的扩散模型时,输入prompt总是会被报错超过clip的最大长度限制。 解决方案:使用compel库 from diffusers import AutoPipelineForText2Image import torch import pdb from compel import Compeldevice torc…...
metersphere接口测试(1)使用MeterSphere进行接口测试
文章目录 前言接口文档单接口测试环境配置梳理接口测试场景测试接口 接口自动化怎么写复用性高的自动化测试用例 总结 前言 大汉堡工作第203天,本篇记录我第一次接触接口测试任务,最近有些懈怠啊~ 接口文档 首先就是接口地址,接口测试时用…...
Android第三次面试总结(网络篇)
在计算机网络领域,网络模型是理解通信原理的基础框架。本文将详细解析 OSI 参考模型和 TCP/IP 模型的分层结构、核心功能及实际应用,并通过对比帮助读者建立完整的知识体系。 一、OSI 参考模型:七层架构的理论基石 OSI(开放系统…...
AirtestIDE用法
包括airtest和poco 1. airtest 安装python3.7.9 64 python3 -m pip install -U airtest 或者: git clone https://github.com/AirtestProject/Airtest.git pip install -e airtest 无界面的airtest用法: 打开手机中的 开发者选项 , 以及 允许USB调…...
【面试手撕】非常规算法,多线程常见手撕题目
【面试手撕】非常规算法,多线程常见手撕题目 生产者消费者ReentrantLock实现的生产苹果/消费苹果synchronized实现的生产消费LinkedBlockingQueue阻塞队列方法实现多条件资源分配分布式任务调度模拟 交替打印两个线程交替打印1-100之间的数ReentrantLock 实现synchr…...
MySQL复合查询
目录 多表查询 自连接 子查询 单行子查询 多行子查询 in关键字 all关键字 any关键字 多列子查询 from中使用子查询 合并查询 union 操作符 union all 操作符 内外连接 内连接 外连接 左外连接 右外连接 前几期我们已经学习了MySQL的基本查询&…...
登录Xshell主机及Linux基本指令
✅博客主页:爆打维c-CSDN博客 🐾 🔹分享c、c知识及代码 🐾 🔹Gitee代码仓库 五彩斑斓黑1 (colorful-black-1) - Gitee.com 一、操作系统简介 Linux其实跟我们熟知的Window一样,它们都是操作系统。 &#x…...
[LevelDB]关于LevelDB存储架构到底怎么设计的?
本文内容组织形式 LevelDB 存储架构重要特点总体概括LevelDB中内存模型MemTableMemTable的数据结构背景:SkipListSkiplist的数据结构 Skiplist的数据访问细节 SkipList的核心方法Node细节源代码 MemTable的数据加速方式Iterator 的核心方法 MemTable 的读取&写入…...
深入解析 React Diff 算法:原理、优化与实践
深入解析 React Diff 算法:原理、优化与实践 1. 引言 React 作为前端领域的标杆框架,采用 虚拟 DOM(Virtual DOM) 来提升 UI 更新性能。React 的 Diff 算法(Reconciliation) 是虚拟 DOM 运行机制的核心&a…...
【从零开始】Air780EPM的LuatOS二次开发——OneWire协议调试注意事项!
当涉及到与传感器、执行器等外部设备交互时,OneWire协议的高效调试成为决定项目成败的关键环节。OneWire协议(单总线协议)以其仅需一根数据线即可实现设备通信的极简特性,被广泛应用于温度传感器、身份识别模块等场景。 一、LuatO…...
响应(Response)
在 Flask 中,视图函数可以返回多种类型的响应,例如字符串、HTML、JSON、文件等。Flask 提供了 make_response 函数,用于生成和自定义 HTTP 响应。 2.1 默认响应 默认情况下,视图函数返回的字符串会被 Flask 包装成一个 HTTP 响应…...
C++学习之云盘项目fastDFS
1.资料介绍 1.1 一些概念 1. 什么是服务器 硬件 : 一台配置高的电脑 软件 : 电脑必须有一个能够解析 http 协议的软件 2. 常见的 Web 服务器 tomcat 服务器 apache 组织产品 , 开源的免费服务器 weblogic 服务器 bea 公司 , 收费的服务器 不交费 , 访问量受限…...
使用vue3+el-form实现动态新增名称,值,并对名称进行必填校验
使用vue3el-form实现动态新增名称,值,并对名称进行必填校验 效果图 代码 <template><el-form :model"form" :rules"rules" ref"dynamicForm"><!-- 动态添加的名称和值 --><el-row v-for"(ite…...
Spring Boot 集成高德地图电子围栏
摘要:本文手把手教你通过 Spring Boot 调用高德地图 API 实现电子围栏功能,涵盖云端围栏创建、设备位置监控与本地算法校验,附带完整代码和避坑经验! 一、电子围栏核心原理 1.1 什么是电子围栏? 虚拟地理边界&#x…...
3.JVM-内部结构
栈结构 动态链接 栈中的对象指向堆中的实际引用 符号引用: 比如一个类的名称 直接引用: 具体堆中数据信息 方法返回 栈中上一层的结果和下一层的指令 操作数栈 局部变量 该线程中需要的变量 PC计数器 程序计数器:存当前执行到那一步 操作数栈里面将计算完之后的结果推入局…...
Spring 框架中常用注解和使用方法
Spring 框架中常用注解的详细解释与应用场景,结合核心功能和实际开发需求进行分类说明: 1.组件定义注解 1.1 Component 作用:通用注解,将普通 Java 类标记为 Spring 管理的 Bean,由容器实例化和管理,相当…...
神策数据接入 DeepSeek,AI 赋能数据分析与智能运营
在 AI 技术迅猛发展的浪潮下,神策数据正在加速推进人工智能在数据分析和智能运营领域的深度应用。近日,神策数据宣布全面接入 DeepSeek,为企业客户带来更加智能化、高效的数据分析与智能运营服务。这一举措展现了神策数据在人工智能方向的探索…...
微软OneNote无法同步解决方案
目录 前言原因UWP特性 解决方案C***h注册表 参考链接 前言 假设有多台Windows电脑,最方便且免费的多设备笔记同步方案就是微软自家的OneNote,使用OneDrive自带的5G云存储。 但是在国内大陆的OneNote,经常会出现无法同步、同步失败࿱…...
一般机器学习有哪些算法?
传统的机器学习算法主要依赖统计学和优化方法,不依赖深层神经网络,通常具有较高的可解释性且适用于中小规模数据集。以下是经典的传统机器学习算法分类及代表性模型: 一、监督学习(Supervised Learning) 1. 回归&…...
RAGFlow部署与使用(开源本地知识库管理系统,包括kibana配置)
一、RAGFlow 简介 戳我访问RAGFlow RAGFlow 是一款基于深度文档理解构建的开源 RAG(Retrieval-Augmented Generation)引擎。它可以给我们搭建本地知识库,将用户的知识文档上传到RAGFlow后,通过文档切分、向量入库,在…...
STM32G070CBT6读写FLASH中的数据
向FLASH中写入数据函数 /*函数说明:向FLASH中写数据形参:addr-要写入数据的起始地址 data-准备写入数据 len-数据大小返回值:1-成功,0-失败 */ uint8_t FlashWriteData(uint64_t addr,uint8_t data[],size_t len) {uint32_t Fir…...
如何使用HACS一键集成米家与果家设备到HomeAssistant玩转智能家居
文章目录 前言1. 下载HACS源码2. 添加HACS商店3. 绑定米家设备 前言 各位科技潮人和智能家居发烧友们,是不是也梦想着把家里变成一个高科技的空间?有了群晖NAS这位得力助手,不仅存储空间大得吓人,还能通过Docker轻松安装各种应用…...
Flutter_学习记录_状态管理之GetX
1. 状态管理、Flutter Getx介绍 1.1 状态管理 通俗的讲:当我们想在多个页面(组件/Widget)之间共享状态(数据),或者一个页面(组件/Widget)中的多个子组件之间共享状态(数…...
DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加列宽调整功能,示例Table14_09自定义单元格的固定表头表格
前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加列宽调整功能,示例Table14_09自定义单元格…...
基于 Prometheus + Grafana 监控微服务和数据库
以下是基于 Prometheus Grafana 监控微服务和数据库的详细指南,包含架构设计、安装配置及验证步骤: 一、整体架构设计 二、监控微服务 1. 微服务指标暴露 Spring Boot 应用: xml <!-- 添加 Micrometer 依赖 --> <dependency>…...
文件解析漏洞
一,IIS解析漏洞 1,IIS6.X 目录解析 在iis的⽹站根⽬录新建⼀个名为q.asp的⽂件,在q.asp中新建⼀个txt⽂件 在外部浏览器中访问windows2003的iis⽹站中的1.txt 发现asp代码被执⾏ 2,IIS6.X 畸形文件解析 在iis的⽹站根⽬录新建⼀…...
C++学习笔记(二十一)——文件读写
一、文件读写 作用: 文件读写指的是将数据从程序存储到文件,或从文件读取数据,以实现数据的持久化存储。 C 提供了 fstream 头文件,用于文件操作,主要包括: ofstream(输出文件流)—…...
Ubuntu上部署Flask+MySQL项目
一、服务器安装python环境 1、安装gcc(Ubuntu默认已安装) 2、安装python源码 wget https://www.python.org/ftp/python/3.13.2/Python-3.13.2.tar.xz 3、安装Python依赖库 4、配置python豆瓣源 二、服务器安装虚拟环境 1、安装virtualenv pip3.10 ins…...
Unity WebGL项目访问时自动全屏
Unity WebGL项目访问时自动全屏 打开TemplateData/style.css文件 在文件最下方添加红色框内的两行代码 使用vscode或者其他编辑器打开index.html 将按钮注释掉,并且更改为默认全屏...
C#RTSP代理推流程序
将不支持rtsp的相机通过rtspserver实现推流 主要功能 1. rtsp交互 2. udp推流 3. Bitmap转H264,RTP打包 4. 支持多路播放...
Redis--渐进式遍历
目录 一、引言 二、介绍 三、命令 四、总结 一、引言 本篇文章将介绍Redis中的渐进式遍历 二、介绍 一般使用keys * 来获取所有的key,但这样的操作如果数据量很大的时候,会将服务器给卡死,所以通过渐进式遍历,就会避免这个问题…...
PyTorch深度学习框架60天进阶学习计划 - 第23天:Transformer架构解析
让我继续完成机器翻译示例的代码: PyTorch深度学习框架60天进阶学习计划:第23天 Transformer架构解析 学习目标 推导自注意力机制数学公式详解位置编码的傅里叶基函数设计对比编码器-解码器结构的信息流动差异 1. Transformer架构概述 Transformer架…...
《C#上位机开发从门外到门内》3-4:基于TCP/IP的远程监控系统设计与实现
文章目录 一、项目概述二、系统架构设计三、通信协议设计四、功能模块实现五、系统安全性与稳定性六、性能优化与测试七、实际应用案例八、结论 随着信息技术的飞速发展,远程监控系统在工业自动化、智能家居、环境监测等领域的应用日益广泛。基于TCP/IP协议的远程监…...
【MySQL】MySQL审计工具Audit Plugin安装使用
MySQL审计工具Audit Plugin安装使用 https://www.cnblogs.com/waynechou/p/mysql_audit.html MySQL 5.6 开启审计功能 https://blog.51cto.com/u_15127556/4344503 MySQL之添加日志审计功能 https://blog.csdn.net/weixin_43279032/article/details/105507170 MySQL开启日志记录…...
Flutter 按钮组件 ElevatedButton 详解
目录 1. 引言 2. ElevatedButton 的基本用法 3. 主要属性 4. 自定义按钮样式 4.1 修改背景颜色和文本颜色 4.2 修改按钮形状和边框 4.3 修改按钮大小 4.4 阴影控制 4.5 水波纹效果 5. 结论 相关推荐 1. 引言 在 Flutter 中,ElevatedButton 是一个常用的…...
AndroidStudio+Android8.0下的Launcher3 导入,编译,烧录,调试
文章目录 编译完成搜索输出文件Android.mk配置gradle编译环境报错一报错二报错三输出文件下载INSTALL_FAILED_TEST_ONLY查找系统签名查找签名工具开始签名查看签名签名问题重新生成秘钥解决方案生成成功挽救错误:重新刷机更换testkey秘钥keystore生成keystoreINSTALL_FAILED_S…...
【差分约束】P5590 赛车游戏|省选-
本文涉及知识点 【数学 线性代数】差分约束 P5590 赛车游戏 题目描述 R 君和小伙伴打算一起玩赛车。但他们被老司机 mocania 骗去了秋名山。 秋名山上有 n n n 个点和 m m m 条边,R 君和他的小伙伴要从点 1 1 1 出发开往点 n n n,每条边都有一个…...
咪咕MG101_晨星MSO9380芯片_安卓5.1.1_免拆卡刷固件包
咪咕MG101_晨星MSO9380芯片_安卓5.1.1_免拆卡刷固件包(内有教程) 刷机教程简单说明: 1、把下载好的刷机包,U盘里建立一个upgrade文件夹,固件放入此文件夹里,放入U盘中,注意升级包为压缩包不要对…...
【软件工程】06_软件设计
6.1 软件设计概述 1. 软件设计的目标 软件设计的最基本目标就是回答 “概括地描述系统如何实现用户所提出来的功能和性能等方面的需求?” 这个问题。 软件设计的目标是根据软件需求分析的结果,设想并设计软件,即根据目标系统的逻辑模型确定目标系统的物理模型。包括软件体系…...
在Flutter中使用Future读取一个大文件会导致线程阻塞吗
目录 一、Future 与文件读取的机制 1. Dart 的异步 I/O 原理 2. 代码示例 二、什么情况下会阻塞主线程? 1. I/O 操作本身不会阻塞 2. 数据处理可能阻塞 3. 示例对比 三、如何避免阻塞主线程? 1. 将耗时操作移到 Isolate 2. 使用 compute 函数(简化 Isolate 操作)…...
2025-03-17 Unity 网络基础1——网络基本概念
文章目录 1 网络1.1 局域网1.2 以太网1.3 城域网1.4 广域网1.5 互联网(因特网)1.6 万维网1.7 小结 2 IP 地址2.1 IP 地址2.2 端口号2.3 Mac 地址2.4 小结 3 客户端与服务端3.1 客户端3.2 服务端3.3 网络游戏中的客户端与服务端 1 网络 在没有网络之前…...
2025-03-17 学习记录--C/C++-PTA 习题4-8 高空坠球
合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。💪🏻 一、题目描述 ⭐️ 习题4-8 高空坠球 皮球从某给定高度自由落下,触地后反弹到原高度的一半,再落下&…...
Java网络编程socket
一、UDP 特点: ① 用户数据报协议(User Datagram Protocol) ② UDP是面向无连接通信协议 ③ 速度快,一次只能传输64KB数据,数据不安全,容易丢失 (1)单播 一对一 客户端…...