🔥 本文定位:CSDN 原创干货 | 中科院自动化所&上海交大 纯Mamba多模态3D检测 SOTA 方案
🎯 核心收益:一次性解决LiDAR-Camera融合三大痛点——效率低、长程建模弱、高度信息丢失!基于混合Mamba块(Hybrid Mamba Block)+高度保真LiDAR编码(Height-Fidelity LiDAR Encoding)打造首个纯线性算子全局融合框架,Hilbert曲线序列化打通全场景信息交互,nuScenes验证集NDS 75.0(SOTA),测试集NDS 75.9,推理速度比IS-FUSION快50%,比SparseLIF快62%,完美适配自动驾驶实时感知、端到端运动规划、多传感器鲁棒部署、BEV分割、Waymo长程检测
📌 核心创新矩阵:
✅ 适配场景:自动驾驶实时3D感知 | 端到端运动规划 | LiDAR-Camera多传感器融合 | 极端天气鲁棒检测 | BEV语义分割 | 工业级低延迟部署
🔖 前言
本文介绍的 MambaFusion(Height-Fidelity Dense Global Fusion) 来自中科院自动化所模式识别国家重点实验室、上海交大和Anyverse Intelligence,arXiv 2025年7月提交,代码已开源(https://github.com/AutoLab-SAI-SJTU/MambaFusion)。核心洞察极为精准:Mamba的线性复杂度和长程建模能力天然适配全局融合——但直接替换会掉点,根因是高度信息丢失导致序列偏差。基于此,作者提出两大核心模块:Hybrid Mamba Block(HMB)用Hilbert曲线序列化实现全场景密集交互,Height-Fidelity LiDAR Encoding(HFL)在连续空间中保留精确高度。两者结合,首次证明纯线性算子融合框架可以超越所有Transformer方案。
模型仅在nuScenes上训练,nuScenes验证集NDS 75.0(SOTA,超IS-FUSION +1.0),测试集NDS 75.9,推理速度4.7 FPS(比IS-FUSION快50%)。更在端到端运动规划任务上验证通用性——集成到FusionAD后碰撞率从0.12降至0.10。本文全程 论文 1:1 对齐 + 可运行完整代码复现 + 实验全解读,CSDN 最细最干货版本。
🔖 一、MambaFusion 整体架构

核心设计亮点:整个框架的精髓在于"双空间互补"。Raw Space(图像平面投影)保留了体素特征在连续空间中的精确高度信息,适合细粒度对齐;BEV Space提供统一的俯视坐标系,适合大范围场景理解。HMB在两个空间中分别执行Local+Global Mamba序列化融合,形成"局部细节+全局上下文"的双层表征。相比UniTR的窗口Transformer(每个窗口独立、跨窗口靠移位),HMB的Hilbert曲线序列化让每个token都能直接与全场景任意位置交互,不存在窗口边界。
🔖 二、核心模块逐行拆解
2.1 Hybrid Mamba Block(HMB)——混合局部-全局Mamba融合

解决的4个核心问题:
- 问题1:纯Mamba直接替换Transformer掉点严重——表2中Vanilla Mamba替换UniTR融合模块,mAP从70.6暴跌至65.8(-4.8),NDS从72.9跌至70.4(-2.5)。Mamba的单向感受野和序列偏差是根因
- 问题2:局部和全局特征需要互补——只用Local Mamba(mAP 70.5/NDS 72.1)不如只用Global Mamba(mAP 71.5/NDS 73.7),两者结合达到71.9/74.3,证明互补
- 问题3:2D/3D特征如何序列化——Mamba原生处理1D序列,需要用空间填充曲线将2D图像/BEV特征和3D体素特征展开为1D。Hilbert曲线保空间局部性最优
- 问题4:单向感受野限制——Mamba默认单向扫描(从左到右),HMB采用双向策略:正向扫描+反向扫描(flip),每个token能看到两侧上下文
Step 1:Global Mamba — Hilbert曲线全局序列化
给定单模态或多模态特征 FFF 及其坐标 C={(xi,yi,zi)}i=1NfeatC = \\{(x_i, y_i, z_i)\\}_{i=1}^{N_{feat}}C={(xi,yi,zi)}i=1Nfeat,首先计算每个token的Hilbert索引:
hi=HilbertIndex(xi,yi,zi)h_i = \\text{HilbertIndex}(x_i, y_i, z_i)hi=HilbertIndex(xi,yi,zi)
HilbertIndex(·)将3D坐标映射为1D Hilbert曲线索引。Hilbert曲线作为空间填充曲线,保证相邻3D空间的点在1D序列中也相邻——这比简单的逐行扫描(row-major)或Z-order曲线更能保空间局部性。消融实验表5(b)证实:Hilbert曲线(71.9/74.3)> Z-order曲线(71.5/74.0)> 坐标排序(71.2/73.5)。
随后添加位置编码保留原始坐标信息,再按Hilbert索引重排特征:
F′←F+PosEmbedding(C),Fglobal=Mamba(F′,Ph)F' \\leftarrow F + \\text{PosEmbedding}(C), \\quad F_{global} = \\text{Mamba}(F', P_h)F′←F+PosEmbedding(C),Fglobal=Mamba(F′,Ph)
由于Mamba感受野单向,HMB采用双向扫描:正向Mamba处理Hilbert排序序列 → 反向Mamba处理翻转序列 → 两者结果叠加,实现真正的双向全局上下文。消融实验表5©证实双向显著优于单向。
Step 2:Local Mamba — 局部窗口精细建模
将特征空间划分为 w×ww \\times ww×w 的非重叠窗口,每个token计算其区域索引和区域内位置:
ri=⌊xiw⌋×⌊yiw⌋+⌊yiw⌋,(xi′,yi′)=(xi mod w,yi mod w)r_i = \\lfloor\\frac{x_i}{w}\\rfloor \\times \\lfloor\\frac{y_i}{w}\\rfloor + \\lfloor\\frac{y_i}{w}\\rfloor, \\quad (x'_i, y'_i) = (x_i \\bmod w, y_i \\bmod w)ri=⌊wxi⌋×⌊wyi⌋+⌊wyi⌋,(xi′,yi′)=(ximodw,yimodw)
组合区域索引和区域内位置得到新坐标 Pr={ri,xi′,yi′}P_r = \\{r_i, x'_i, y'_i\\}Pr={ri,xi′,yi′},然后在每个窗口内部用Mamba聚合:
Flocal=LocalMamba(F,Pr)F_{local} = \\text{LocalMamba}(F, P_r)Flocal=LocalMamba(F,Pr)
局部Mamba沿x和y两个方向分别扫描(见图3),捕获窗口内精细的纹理和边缘特征。与Global Mamba互补——Global捕获"这辆车在场景中的位置",Local捕获"这辆车的精确边界"。
Step 3:HMB完整计算流程
HMB(F)=GlobalMamba(F)+LocalMamba(F)\\text{HMB}(F) = \\text{GlobalMamba}(F) + \\text{LocalMamba}(F)HMB(F)=GlobalMamba(F)+LocalMamba(F)
两个分支并行计算后叠加。HMB的设计高度灵活——可以独立处理单模态特征(分布对齐阶段),也可以联合处理拼接后的多模态特征(融合阶段)。当处理多模态时,Hilbert曲线将Image空间和BEV空间的特征统一序列化,Mamba在序列中自由交叉两个模态的信息。
为什么不用Transformer?表7给出直接对比:窗口Transformer在相同融合空间下mAP 69.5/NDS 72.2,HMB达71.9/74.3——+2.4 mAP/+2.1 NDS。关键差异:窗口Transformer每个窗口独立计算attention,跨窗口信息靠窗口移位间接传递(信息衰减);HMB的Global Mamba通过Hilbert曲线一次性看到所有token,信息无损。
2.2 Height-Fidelity LiDAR Encoding(HFL)——连续空间高度保真编码

解决的4个核心问题:
- 问题1:体素生成阶段高度信息丢失——传统VoxelNet用体素质心坐标代表整个体素,忽略体素内部点分布。图5显示投影偏差直接导致假阳性和类别错误
- 问题2:体素下采样引入量化误差——每次降采样取合并体素坐标的平均值,离散空间的取整操作层层累积误差
- 问题3:体素生成冲突——LION backbone选取top-k显著特征生成新体素时,相邻体素可能重叠或冲突,引入额外偏差
- 问题4:高度偏差如何影响融合——投影时高度坐标偏差导致LiDAR特征落在错误的图像像素上,Mamba的序列化会放大这种错位(比Transformer更敏感,因为自注意力有一定平移不变性)
Step 1:连续空间体素生成
CP0=ScatterMean(c,v0)CP_0 = \\text{ScatterMean}(c, v_0)CP0=ScatterMean(c,v0)
v0v_0v0 是每个点分配的体素,c∈RNpoint×3c \\in \\mathbb{R}^{N_{point}\\times 3}c∈RNpoint×3 是点云坐标。与传统方法的关键区别:不取离散体素质心,而是在连续空间中计算体素内所有点的精确平均坐标。这个浮点坐标保留了亚体素级别的高度精度。
Step 2:连续空间体素下采样
CPs=ScatterMean(CPs−1,vs−1)CP_s = \\text{ScatterMean}(CP_{s-1}, v_{s-1})CPs=ScatterMean(CPs−1,vs−1)
在第s阶段的体素合并中,基于原始连续坐标(而非离散坐标)重新计算合并后体素的位置。每次下采样都用浮点坐标追溯回原始点云,从根本上消除离散量化误差的累积。
Step 3:冲突体素排除
{(xi±1,yi±1,⌊zim⌋)}i=1k∉CPs\\{(x_i \\pm 1, y_i \\pm 1, \\lfloor\\frac{z_i}{m}\\rfloor)\\}_{i=1}^{k} \\notin CP_s{(xi±1,yi±1,⌊mzi⌋)}i=1k∈/CPs
LION backbone生成的top-k体素在坐标 (xi±1,yi±1)(x_i \\pm 1, y_i \\pm 1)(xi±1,yi±1) 周围,可能与现有体素重叠。HFL加冲突检测:排除会与周围体素合并的候选,只保留不重叠的新体素。mmm 是下采样尺度。
Step 4:效果验证
表6消融实验:backbone加HFL → +0.9 mAP/+0.7 NDS;VoxelVFE加HFL → +0.3 mAP/+0.1 NDS;冲突检测 → +0.4 mAP/+0.4 NDS。三项叠加从70.3/73.1提升至71.9/74.3。图5可视化:HFL投影更精确,LiDAR点云准确落在物体区域,而非漂移到背景。
🔖 三、论文 1:1 对齐完整可运行 PyTorch 复现代码
3.1 环境依赖
# 基础环境
conda create -n mambafusion python=3.8 -y
conda activate mambafusion
# PyTorch (CUDA 11.8)
pip install torch==2.0.1 torchvision==0.15.2 –index-url https://download.pytorch.org/whl/cu118
# Mamba核心依赖
pip install mamba-ssm causal-conv1d
# 3D检测框架
git clone https://github.com/AutoLab-SAI-SJTU/MambaFusion.git
cd MambaFusion
python mambafusion_setup.py develop
# 其他依赖
pip install spconv-cu118 numba numpy llvmlite pyyaml easydict tqdm
3.2 完整代码实现
Hybrid Mamba Block 核心实现
# ====== pcdet/models/backbones_3d/local_mamba.py ======
import torch
import torch.nn as nn
import math
from functools import partial
from mamba_ssm.models.mixer_seq_simple import create_block
class GlobalMamba(nn.Module):
"""
Global Mamba: Hilbert曲线序列化 + 双向Mamba扫描
实现 O(N) 复杂度的全场景密集交互
"""
def __init__(self, d_model, ssm_cfg, norm_epsilon, rms_norm,
down_kernel_size, down_stride, num_down, norm_fn,
indice_key, sparse_shape, hilbert_config, downsample_lvl,
residual_in_fp32=True, fused_add_norm=True,
device=None, dtype=None, use_checkpoint=True):
super().__init__()
self.use_checkpoint = use_checkpoint
factory_kwargs = {'device': device, 'dtype': dtype}
# 🚀 正向Mamba层:处理Hilbert排序后的序列
mamba_encoder_1 = create_block(
d_model=d_model, ssm_cfg=ssm_cfg,
norm_epsilon=norm_epsilon, rms_norm=rms_norm,
residual_in_fp32=residual_in_fp32,
fused_add_norm=fused_add_norm,
layer_idx=0, **factory_kwargs)
# 🚀 反向Mamba层:处理翻转序列,实现双向感受野
mamba_encoder_2 = create_block(
d_model=d_model, ssm_cfg=ssm_cfg,
norm_epsilon=norm_epsilon, rms_norm=rms_norm,
residual_in_fp32=residual_in_fp32,
fused_add_norm=fused_add_norm,
layer_idx=1, **factory_kwargs)
self.mamba_encoder_list = nn.ModuleList(
[mamba_encoder_1, mamba_encoder_2])
# 下采样编码器
self.conv_encoder = nn.ModuleList()
for idx in range(len(down_stride)):
self.conv_encoder.append(
DownSp(d_model, down_kernel_size[idx],
down_stride[idx], num_down[idx],
norm_fn, f"{indice_key}_{idx}"))
# 上采样解码器(跳跃连接)
self.conv_decoder = nn.ModuleList()
self.conv_decoder_norm = nn.ModuleList()
downsample_times = len(down_stride[1:])
for idx, kernel_size in enumerate(down_kernel_size[1:]):
self.conv_decoder.append(
post_act_block(d_model, d_model, kernel_size,
norm_fn=norm_fn, conv_type='inverseconv',
indice_key=f'spconv_{indice_key}_{downsample_times–idx}'))
self.conv_decoder_norm.append(norm_fn(d_model))
self.sparse_shape = sparse_shape
self.downsample_lvl = downsample_lvl
self.downsample_ori = 'curve_template_rank9'
# LayerNorm
norm_cls = partial(nn.LayerNorm, eps=norm_epsilon, **factory_kwargs)
self.norm = norm_cls(d_model)
self.norm_back = norm_cls(d_model)
def forward(self, voxel_features, voxel_coords, batch_size,
curt_spatial_shape, curve_template, hilbert_spatial_size,
pos_embed, num_stage):
mamba_layer1 = self.mamba_encoder_list[0] # 正向
mamba_layer2 = self.mamba_encoder_list[1] # 反向
# 构建稀疏卷积张量
x = spconv.SparseConvTensor(
features=voxel_features,
indices=voxel_coords.int(),
spatial_shape=curt_spatial_shape,
batch_size=batch_size)
# 下采样编码
features = []
for conv in self.conv_encoder:
x = conv(x)
features.append(x)
feats_s1 = features[0].features # Level 1 特征
coords_s1 = voxel_coords
feats_s2 = features[1].features # Level 2 特征
coords_s2 = features[1].indices
# 🚀 计算Hilbert索引(CUDA加速)
hilbert_s1, pos_embed_coords_s1 = fused_hilbert_pos_embed_cuda(
coords_s1.long(), curve_template[self.downsample_ori],
batch_size, *hilbert_spatial_size[self.downsample_ori],
features[0].spatial_shape, (num_stage, num_stage, num_stage))
hilbert_s2, pos_embed_coords_s2 = fused_hilbert_pos_embed_cuda(
coords_s2.long(), curve_template[self.downsample_lvl],
batch_size, *hilbert_spatial_size[self.downsample_lvl],
features[1].spatial_shape, (num_stage, num_stage, num_stage))
# 🚀 按Hilbert索引排序/逆排序映射
out_feat_3d_s2 = torch.zeros_like(feats_s2)
out_feat_3d_s1 = torch.zeros_like(feats_s1)
# 位置编码注入
pos_embed_s2 = pos_embed(pos_embed_coords_s2.float())
feats_s2 = feats_s2 + pos_embed_s2
for i in range(batch_size):
b_mask = coords_s2[:, 0] == i
# Hilbert排序
sort_idx = torch.argsort(hilbert_s2[b_mask])
unsort_idx = torch.argsort(sort_idx)
feat_sorted = feats_s2[b_mask][sort_idx][None]
# 🚀 正向Mamba扫描
out_feat = mamba_layer1(feat_sorted, None)
out_feat_3d_s2[b_mask] = out_feat[0].squeeze(0)[unsort_idx]
# 反向扫描
pos_embed_s1 = pos_embed(pos_embed_coords_s1.float())
feats_s1 = feats_s1 + pos_embed_s1
for i in range(batch_size):
b_mask = coords_s1[:, 0] == i
sort_idx = torch.argsort(hilbert_s1[b_mask])
unsort_idx = torch.argsort(sort_idx)
feat_sorted = feats_s1[b_mask][sort_idx][None]
# 🚀 反向Mamba扫描(flip实现双向)
feat_back = feat_sorted.flip(1)
out_feat_back = mamba_layer2(feat_back, None)
out_feat_3d_s1[b_mask] = (
out_feat_back[0].squeeze(0).flip(0)[unsort_idx])
# 跳跃连接 + 上采样
x_s1 = replace_feature(features[0], self.norm_back(out_feat_3d_s1))
x_s2 = replace_feature(features[1], self.norm(out_feat_3d_s2))
x = x_s2
for deconv, norm, up_x in zip(
self.conv_decoder, self.conv_decoder_norm,
[x_s1]):
x = deconv(x)
x = replace_feature(x, x.features + up_x.features)
x = replace_feature(x, norm(x.features))
return x.features, x.indices
Height-Fidelity LiDAR Encoding
# ====== HFL核心实现(伪代码,对齐论文 Sec.3.4)======
def height_fidelity_voxel_generation(points, voxel_size):
"""
连续空间体素生成,保留精确高度信息
Args:
points: (N, 4) – [x, y, z, intensity]
voxel_size: [dx, dy, dz]
Returns:
voxel_features: (M, C)
voxel_coords: (M, 3) – 连续空间坐标(非离散)
"""
# 体素分配(离散索引仅用于分组)
voxel_idx = (points[:, :3] / voxel_size).floor().long()
# 🚀 关键:连续空间坐标 = 体素内所有点的精确平均
# 传统方法:取体素质心(离散坐标 × voxel_size)
# HFL方法:ScatterMean所有点的原始浮点坐标
voxel_coords_continuous = scatter_mean(
points[:, :3], voxel_idx, dim=0) # 连续空间!
voxel_features = scatter_mean(points[:, 3:], voxel_idx, dim=0)
return voxel_features, voxel_coords_continuous
def height_fidelity_downsample(voxel_features, voxel_coords_cont,
scale, child_voxel_idx):
"""
连续空间下采样:基于原始连续坐标计算合并体素位置
Args:
voxel_coords_cont: 上一层连续空间坐标
scale: 下采样尺度
child_voxel_idx: 子体素到父体素的映射
"""
# 🚀 关键:用原始连续坐标(非离散坐标)做ScatterMean
parent_coords = scatter_mean(
voxel_coords_cont, child_voxel_idx, dim=0)
parent_features = scatter_mean(
voxel_features, child_voxel_idx, dim=0)
return parent_features, parent_coords
def conflict_avoidance(topk_coords, existing_coords, scale):
"""
体素冲突检测:排除与周围体素重叠的候选
Args:
topk_coords: LION生成的k个候选体素坐标
existing_coords: 已存在的体素坐标
scale: 降采样尺度
"""
# 🚀 生成候选体素:(x±1, y±1, z//scale)
candidates = []
for x, y, z in topk_coords:
for dx in [–1, 1]:
for dy in [–1, 1]:
cand = (x + dx, y + dy, z // scale)
candidates.append(cand)
# 🚀 排除与已存在体素冲突的候选
valid_mask = torch.ones(len(candidates), dtype=torch.bool)
for i, cand in enumerate(candidates):
dist = torch.norm(existing_coords – torch.tensor(cand), dim=1)
if dist.min() < threshold:
valid_mask[i] = False
return topk_coords[valid_mask[:len(topk_coords)]]
🔖 四、YOLO 一键迁移适配教程(即插即用,直接训练)
Step 1:放入模块文件
将 local_mamba.py(含 GlobalMamba、DownSp 等类)放入 ultralytics/nn/modules/ 目录。
Step 2:注册 __init__.py
在 ultralytics/nn/modules/__init__.py 中添加:
from .local_mamba import GlobalMamba, DownSp, Sparse1ConvBlock
Step 3:注册 parse_model
在 ultralytics/nn/tasks.py 的 parse_model 函数中,elif 分支添加:
elif m is GlobalMamba:
c1 = ch[f]
c2 = args[0]
args = [c1, c2, *args[1:]]
注意:MambaFusion 基于稀疏卷积框架(spconv),YOLO 是密集卷积框架。直接移植需要适配 BEV 空间表示。建议在 YOLO 的 Neck 层(PANet 替换为 HMB)或检测头前插入 GlobalMamba 作为全局上下文增强模块。完整 YAML 配置需根据具体 YOLO 版本调整输入通道和空间尺寸。
🔖 五、实验结果全解析(论文 1:1 还原)
5.1 nuScenes SOTA 对比
| PointPainting | CVPR’20 | – | C+L | 69.6 | 65.8 | – | – | – |
| TransFusion | CVPR’22 | 800×448 | C+L | 71.3 | 67.5 | 71.6 | 68.9 | – |
| BEVFusion(PKU) | NeurIPS’22 | 704×256 | C+L | 71.0 | 67.9 | 71.8 | 69.2 | 0.8 |
| DeepInteraction | NeurIPS’22 | 800×448 | C+L | 72.6 | 69.9 | 73.4 | 70.8 | 2.6 |
| BEVFusion(MIT) | ICRA’23 | 704×256 | C+L | 71.4 | 68.5 | 72.9 | 70.2 | 4.2 |
| CMT | ICCV’23 | 1600×640 | C+L | 72.9 | 70.3 | 74.1 | 72.0 | 2.8 |
| SparseFusion | ICCV’23 | 704×256 | C+L | 72.8 | 70.4 | 73.8 | 72.0 | 5.3 |
| UniTR | ICCV’23 | 704×256 | C+L | 73.3 | 70.5 | 74.5 | 70.9 | 4.9 |
| IS-FUSION | CVPR’24 | 1056×384 | C+L | 74.0 | 72.8 | 75.2 | 73.0 | 3.2 |
| DAL | ECCV’24 | 1056×384 | C+L | 74.0 | 71.5 | 74.8 | 72.0 | 4.3 |
| SparseLIF | ECCV’24 | 1600×640 | C+L | 74.6 | 71.2 | – | – | 2.9 |
| MambaFusion-Lite | Ours | 704×256 | C+L | 74.0 | 71.6 | 75.0 | 72.0 | 5.4 |
| MambaFusion-Base | Ours | 704×256 | C+L | 75.0 | 72.7 | 75.9 | 73.2 | 4.7 |
✅ 核心亮点:
- MambaFusion-Base NDS 75.0 超越所有方法,包括使用更高分辨率输入的 IS-FUSION(1056×384 vs 704×256)
- MambaFusion-Lite NDS 74.0 追平 IS-FUSION 和 DAL,但推理速度快 69% 和 26%
- 比 SparseLIF(ECCV’24)快 62%,比 IS-FUSION(CVPR’24)快 50%
- 首次证明:纯线性算子融合在性能和效率上同时超越 Transformer 融合
5.2 消融实验
| ① | ✓ | 67.7 | 70.9 | ||||
| ② | ✓ | ✓ | 68.6 | 71.6 | |||
| ③ | ✓ | ✓ | 66.9 | 70.2 | |||
| ④ | ✓ | ✓ | 69.6 | 72.0 | |||
| ⑤ | ✓ | ✓ | ✓ | 70.3 | 72.7 | ||
| ⑥ | ✓ | ✓ | ✓ | 70.6 | 73.1 | ||
| ⑦ | ✓ | ✓ | ✓ | ✓ | 71.4 | 73.6 | |
| ⑧ | ✓ | ✓ | ✓ | ✓ | 71.2 | 73.7 | |
| ⑨ | ✓ | ✓ | ✓ | ✓ | ✓ | 71.9 | 74.3 |
HMB-M=模态对齐阶段, HMB-R=Raw Space融合, HMB-B=BEV Space融合, HFL=高度保真编码。消融在50% nuScenes上进行。
✅ 核心亮点:
- ③ vs ①:Raw Space融合单独用反而掉点(-0.8 mAP/-0.7 NDS),因为投影偏差被Mamba序列化放大——正是HFL要解决的问题
- ⑤ vs ③:HFL修复后从66.9/70.2恢复至70.3/72.7(+3.4 mAP/+2.5 NDS)——HFL是关键修复
- ⑨:所有模块叠加达71.9/74.3,比基线①提升4.2 mAP/3.4 NDS
5.3 Linear Attention 方法对比
| RetNet | 64.6/68.3 (-6.0/-4.6) | 70.7/73.1 (+0.1/+0.2) |
| RWKV | 64.9/68.8 (-5.7/-4.1) | 70.8/73.3 (+0.2/+0.4) |
| Mamba | 65.8/70.4 (-4.8/-2.5) | 71.9/74.3 (+1.3/+1.4) |
✅ 核心亮点:
- 三种Linear Attention直接替换都掉点,但Mamba掉点最少(-4.8 mAP vs RetNet -6.0 vs RWKV -5.7)
- HiPPO理论让Mamba在无显式时空先验时也能捕获长程依赖——这对稀疏点云的不规则间距至关重要
- +HFL+HMB后,只有Mamba实现显著正提升(+1.3/+1.4),RetNet和RWKV勉强追平基线
5.4 鲁棒性实验
| mAP/NDS | mAP/NDS | mAP/NDS | mAP/NDS | |
| TransFusion | 66.9/70.9 | 65.3/70.1 | 64.4/69.3 | 65.9/70.2 |
| BEVFusion | 67.9/71.0 | 65.9/70.7 | 65.1/69.9 | 66.2/70.3 |
| UniTR | 70.5/73.3 | 68.5/72.4 | 66.5/71.2 | 68.1/71.8 |
| MambaFusion | 72.7/75.0 | 70.6/74.1 | 67.9/72.3 | 71.3/74.2 |
✅ 核心亮点:
- 时间戳不同步场景优势最大(+3.2 mAP vs UniTR),全局感知天然适应时序不对齐
- 各类损坏场景下均优于所有对比方法,鲁棒性来自全局上下文——单个局部区域损坏不影响全局推理
5.5 端到端运动规划通用性验证
| FusionAD | 0.81 | 0.12 |
| +MambaFusion | 0.70 | 0.10 |
✅ MambaFusion 集成到 FusionAD 后端到端运动规划:位移误差降 13.6%,碰撞率降 16.7%。证明 HMB 的长程建模能力对下游任务同样有效。
🔖 六、总结
🔖 收藏本文,纯Mamba多模态融合直接起飞!
📌 标签:#Mamba状态空间模型 #LiDAR-Camera融合 #3D目标检测 #自动驾驶感知 #nuScenes



