SF-Mamba:重新思考视觉 Mamba 的信息流与并行效率
论文信息
论文题目:SF-Mamba: Rethinking State Space Model for Vision
论文地址:arXiv:2603.16423
这篇论文关注的不是“怎样把 Mamba 搬到视觉里”,而是一个更尖锐的问题:
现有视觉 Mamba 为什么理论上是线性的,实际却经常没有我们期待得那么快、那么强?
作者给出的答案有两部分:
- 第一,
单向 scan有因果约束,前面的 patch 看不到后面的 patch。 - 第二,视觉任务里的序列通常偏短,Mamba 的 scan kernel 在 GPU 上吃不满并行度。
因此,SF-Mamba 的核心不是再加更多大模块,而是直接瞄准这两个瓶颈:
- 用
Auxiliary Patch Swapping解决 future-to-past 信息流。 - 用
Batch Folding with Periodic State Reset解决短序列下的 GPU 利用率问题。
先看结论:它想优化的是速度-精度权衡

这张图基本概括了整篇论文的目标。横轴是吞吐,纵轴是 Top-1 精度。作者追求的不是只提精度,也不是只冲速度,而是让模型整体往右上角移动。
和 MambaVision 相比,SF-Mamba 在三个模型规模上都同时变快、变准:
SF-Mamba-T:82.5% / 7600 img/s,MambaVision-T:82.3% / 6662 img/sSF-Mamba-S:83.5% / 5639 img/s,MambaVision-S:83.3% / 4933 img/sSF-Mamba-B:84.4% / 3534 img/s,MambaVision-B:84.2% / 2974 img/s
这也是全文最重要的主张:作者不是牺牲速度换精度,而是在更高吞吐下稳定拿到更好的结果。
动机:现有视觉 Mamba 的两个瓶颈
1. 单向扫描天然缺 future-to-past 信息流
Mamba 本质上是递推扫描。对图像 patch 序列来说,如果按从前到后的顺序扫,那么前面的 token 只能看到已经经过的位置,看不到后面区域的内容。
这在语言里很自然,在图像里却不自然。图像没有严格的因果顺序,左上角 patch 往往也需要知道右下角 patch 的上下文。
现有工作常用的补救方式是双向扫描或多方向扫描,但它们通常要做:
- 双路甚至四路扫描
- 反转或重排整段 token
- 额外的数据搬运和实现开销
2. 视觉里的序列太短,GPU 并行吃不满
视觉 backbone 里,特别是深层 stage,patch 序列长度经常只有几十到几百。论文指出,Mamba 的 scan kernel 在这种短序列下效率并不理想,因为每条序列分到的 GPU 线程太少,线程利用率偏低。
这就是 SF-Mamba 的第二个切入口:不是 Mamba 理论不行,而是视觉任务的序列长度让工程实现没发挥出来。
第一个模块:Auxiliary Patch Swapping

这是论文最核心的建模模块,目的非常直接:
让单向 scan 也能把“后面的信息”传回“前面的 patch”。
它的做法并不复杂,但很巧。
它具体做了什么
给原始 patch 序列两端各加一个辅助 token:
x_head^auxx_tail^aux
于是原来的序列
[x1, x2, ..., xT]
会变成
[x_head^aux, x1, x2, ..., xT, x_tail^aux]
在每个 stage 的第一个 Mamba block 里,这两个辅助 token 都用 avg(X) 初始化,也就是当前 patch 序列在序列维度上的平均特征。
为什么这能传递全局信息
因为 Mamba 还是按单向顺序扫描,最后那个 x_tail^aux 在这一层结束后,会得到一个新的输出 y_tail^aux。它在被更新时,已经“看过”整条序列,因此可以把它理解成当前层提炼出的全局摘要。
然后作者做了一步极轻量的 swap:
- 下一层的头部辅助 token 用上一层的
y_tail^aux - 下一层的尾部辅助 token 用上一层的
y_head^aux
于是,上一层末端聚合出来的全局信息,在下一层会被送回最前面。这样前面的 patch 虽然在同一层里仍然是单向扫描,但在下一层一开始就能接触到“看过整张图”的全局提示。
这个设计为什么比双向扫描便宜
传统双向扫描的额外代价在于:
- 序列要跑两遍
- 还要对整段 token 做
O(n)反转或重排
而这里:
- 只多了两个辅助 token,长度从
T变成T + 2 - 只交换两个 token,开销更接近
O(1)
所以它的本质可以概括为:
不直接做同层双向,而是把单向 scan 层末形成的全局摘要,跨层送回前端。
第二个模块:Batch Folding with Periodic State Reset

第二个模块不解决信息流,而是解决吞吐。
直觉很简单:把很多短序列临时拼成长序列
原始输入张量形状是:
[B, D, T]
作者把它 reshape 成:
[B1, D, (B2 * T)],其中 B = B1 * B2
你可以把它理解成:把 batch 里的 B2 条短序列首尾拼成一条更长的“虚拟长序列”,让 scan kernel 更容易吃满 GPU。
但这样会带来信息泄漏
如果直接把不同样本拼起来递推,前一个样本的 hidden state 会流到下一个样本,导致不同图片之间串信息。
作者的解决办法是:
每隔
T步就重置一次状态。
论文实现上是在边界处令状态转移里的 A_t = 0,等价于重新初始化 hidden state。这样虽然数据形式上被拼成了长序列,但每个样本在递推上仍然保持独立。
它为什么有效
论文在 SSM kernel 上直接测了加速收益:

作者报告,当把 batch 维“折叠”进 sequence 维后,SSM 计算部分能拿到大约 110% 到 180% 的 speedup,尤其在短序列设置下收益更明显。
还要额外处理卷积边界
Mamba block 里不只有 scan,还有 1D depthwise convolution。因此作者额外实现了适配 batch-folded 数据的卷积,确保卷积不会跨越不同样本的边界。
所以这个模块不是简单的 reshape trick,而是一套完整的执行优化:
- 通过 folding 拉长有效序列
- 通过 periodic reset 保持样本独立
- 通过边界安全卷积维持等价计算
还有一个工程补充:Adaptive B1
Batch Folding 里并不是“拼得越多越好”。如果 folding 太弱,加速不明显;如果 folding 过猛,重排和边界处理的额外成本又会上来。
所以作者又加了一个 Adaptive B1 机制,根据 batch size、序列长度、模型维度和 state size,从离线构建的查找表里选一个更合适的 folding 比例。
这不是新的建模创新,但它很重要,因为它解释了为什么论文不仅在方法上成立,在真实吞吐上也能稳定跑出来。
实验 1:ImageNet-1K 分类
分类实验最能说明它是不是一个“普适 backbone 改进”,而不只是某个下游任务的小技巧。
论文里的关键数字如下:
SF-Mamba-T:82.5,7600 img/sMambaVision-T:82.3,6662 img/sSF-Mamba-S:83.5,5639 img/sMambaVision-S:83.3,4933 img/sSF-Mamba-B:84.4,3534 img/sMambaVision-B:84.2,2974 img/s
这里最值得看的不是“精度只涨了 0.2”,而是:
- 吞吐同步上升,且涨幅并不小
- 这种趋势在 T/S/B 三个规模上都成立
如果再和更激进的多方向 Mamba 比较,像 Spatial-Mamba 的精度确实更高,但吞吐要低得多。比如:
Spatial-Mamba-T:83.5,1430 img/sSpatial-Mamba-B:85.3,670 img/s
这也再次印证了论文的主题:作者主要优化的是速度-精度权衡,而不是孤立地追求最高精度。
实验 2:ADE20K 语义分割
语义分割更依赖像素级边界和全局结构理解,所以很适合检验 future-to-past 信息流是否真的有用。
论文在 UPerNet 上的主结果如下:
Swin-T:44.5 mIoU,40.0 fpsFocal-T:45.8 mIoU,38.9 fpsMambaVision-T:46.0 mIoU,45.0 fpsSF-Mamba-T:47.2 mIoU,47.9 fpsMambaVision-S:48.2 mIoU,40.9 fpsSF-Mamba-S:48.5 mIoU,45.4 fpsMambaVision-B:49.1 mIoU,37.3 fpsSF-Mamba-B:50.1 mIoU,42.6 fps
这组结果很有说服力,因为它说明在更依赖空间结构的任务上,辅助 token swap 带来的全局上下文回流确实能转化成下游收益。
论文还给了一个使用 windowed attention 的轻量版本,文中记作 SF-Mamba♣。它的特点是:
Tiny:46.5 mIoU,48.7 fpsSmall:48.1 mIoU,47.3 fpsBase:49.1 mIoU,42.7 fps
也就是说,如果更关心高分辨率下的推理代价,还可以进一步拿窗口化 attention 压 FLOPs,而不会明显破坏整体权衡。
实验 3:COCO 检测与实例分割
Cascade Mask R-CNN,3x schedule
论文在 COCO 2017 上给出了更完整的对比。
Tiny 级别:
ConvNeXt-T:50.4 AP^b / 43.7 AP^m,32.1 fpsMambaVision-T:51.1 / 44.3,19.4 fpsSF-Mamba-T:51.0 / 44.2,27.8 fps
Small 级别:
ConvNeXt-S:51.9 / 45.0,28.0 fpsMambaVision-S:52.3 / 45.2,20.5 fpsSF-Mamba-S:52.4 / 45.4,28.7 fps
Base 级别:
ConvNeXt-B:52.7 / 45.6,26.0 fpsMambaVision-B:52.8 / 45.7,16.4 fpsSF-Mamba-B:52.8 / 45.8,26.8 fps
这组结果尤其能说明 SF-Mamba 的工程价值:它基本把 MambaVision 在 COCO 上过高的计算代价拉回到了更合理的位置,同时保持甚至略微提升精度。
Faster R-CNN,1x schedule
论文还补了另一个检测头,结果同样一致:
MambaVision-T:42.4 AP,37.2 fpsSF-Mamba-T:43.2 AP,41.7 fpsMambaVision-S:43.9 AP,37.2 fpsSF-Mamba-S:44.9 AP,40.8 fpsMambaVision-B:46.2 AP,30.0 fpsSF-Mamba-B:47.6 AP,34.8 fps
Mask R-CNN,1x schedule
这里作者还拿它和 VMamba 做了性能-吞吐对比:
VMamba-T:47.3 AP^b / 42.7 AP^m,29.9 fpsSF-Mamba-T:43.8 / 40.3,40.9 fpsVMamba-S:48.7 / 43.7,23.3 fpsSF-Mamba-S:45.3 / 41.5,41.0 fpsVMamba-B:49.2 / 44.1,20.0 fpsSF-Mamba-B:47.8 / 43.5,34.6 fps
它没有在同规模上全面压过 VMamba 的绝对精度,但速度优势很明显,所以作者强调的是 performance-throughput trade-off,不是单点精度冠军。
补充实验最关键的一点:swap 本身就能带来稳定收益
附录里的一个结果我觉得特别重要,因为它直接回答了“增益到底来自哪个模块”。
在相同 FLOPs 下:
w/o swap:46.0 mIoU,50.9 mAP^b,44.1 mAP^mw/ swap:47.2 mIoU,51.2 mAP^b,44.5 mAP^m
也就是说,哪怕先不看 batch folding,光是辅助 token swapping 本身,就已经在分割和检测上稳定把性能往上推了一步。
这说明第一模块不是“锦上添花”,而是真正解决了视觉 Mamba 的因果约束问题。
我对这篇论文的判断
我觉得这篇工作的优点非常明确:
- 它抓的问题很准,不是泛泛地说“再做一个更强的视觉 Mamba”
- 两个核心模块都很有针对性,一个改信息流,一个改执行效率
- 主结果和补充实验是一致的,分类、分割、检测都支持同一条叙事
它的边界也同样明确:
- 它不是要拿绝对最高精度,而是要拿更好的速度-精度权衡
- 它大量收益依赖于具体工程实现,尤其是 kernel 和卷积边界处理
- 它并没有完全替代所有多方向或高精度视觉 Mamba,只是在“高效 backbone”这条线上很强
如果用一句话概括,我会这么评价:
SF-Mamba 不是重新发明视觉 Mamba,而是把现有视觉 Mamba 最不舒服的两个地方,分别用一个很便宜、很实用的模块补上了。
总结
SF-Mamba 最值得记住的,不是它提出了多复杂的数学,而是它把视觉 Mamba 的两个真实瓶颈讲清楚了:
- 前面的 patch 看不到后面的 patch
- 短序列下 GPU 吃不满 scan 并行
对应地,作者给出的答案也很清晰:
- 用
Auxiliary Patch Swapping把层末的全局摘要跨层送回前端 - 用
Batch Folding with Periodic State Reset把很多短序列临时拼成长序列,再通过状态重置保证样本独立
最后的实验结果也支持这条逻辑:在 ImageNet-1K、ADE20K 和 COCO 上,SF-Mamba 基本都能在保持甚至提升精度的同时,拿到更高吞吐。
如果你现在正关注 Vision Mamba / Vision SSM 这条路线,这篇论文很值得看,因为它提供的不是“再堆一个模块”的启发,而是:
视觉 SSM 的能力,不只取决于状态空间模型本身,还取决于你怎样组织信息流,以及怎样把线性复杂度真正落到 GPU 上。
See also
- SCRWKV 论文总结:用结构校准 RWKV 做轻量裂缝分割 2026-07-27
- MambaLiteUNet:用 Mamba、双门控与净化跳连做轻量皮肤病变分割 2026-07-26
- UTANet:用任务自适应专家混合重构 U-Net 跳跃连接 2026-07-25
- DSC:让 U 型网络的跳跃连接在测试时适配医学图像 2026-07-23
- TG-HEM:用拓扑困难样本挖掘改进拥挤病理细胞检测 2026-07-22