跳到正文
TranquilYu's Blog
返回

【论文阅读 | Inf. Fusion 2025 | MS2Fusion:多重光谱状态空间特征融合】

约 51 分钟 · 14,584 字
论文阅读
文章目录65 节
  1. 摘要
  2. 引言
  3. 多光谱目标检测优势
  4. 单模态缺陷
  5. 先前研究的不足
  6. CNN与Transformer之缺陷
  7. 现阶段状况
  8. MS2Fusion的提出
  9. MS2Fusion的优势体现
  10. 据图分析
  11. MS2Fusion的优势来源
  12. 相关工作
  13. 目标检测
  14. 多光谱目标检测
  15. Mamba
  16. 引言总结
  17. 研究问题
  18. 论文核心思想
  19. 主要贡献
  20. 整体组件概览
  21. MS2Fusion 总体框架流程详解
  22. 关键创新点
  23. 方法
  24. 状态空间模型(SSM)
  25. SSM 是什么?
  26. (1) 核心扫描算子:SelectiveScan
  27. (2) 单模态 1D SSM:代码里的 SSM / SS2D
  28. 所提出的模型架构
  29. 多光谱状态空间特征融合(MS2Fusion)
  30. CP-SSM 模块
  31. SP-SSM 模块
  32. DBISSF_SS
  33. FF-SSM 模块
  34. CMSSF + CM_Attention
  35. 损失函数
  36. YOLO 框架下的总损失函数
  37. CoDetr 框架下的总损失函数
  38. 实验
  39. 数据集和评估指标
  40. 实验设置
  41. SOTA比较
  42. FLIR 数据集比较
  43. LLVIP 数据集比较
  44. M3FD 数据集比较
  45. VEDAI 数据集比较
  46. 泛化到其他多模态任务
  47. RGB-T 语义分割
  48. RGB-T 显著性目标检测 (RGB-T SOD)
  49. 消融研究
  50. 不同检测框架的影响
  51. 不同骨干网络的影响
  52. 不同模块的影响
  53. 不同融合层的影响
  54. CP-SSM 的讨论
  55. 不同输入模态的比较
  56. FF-SSM 输入配置分析
  57. 定性分析
  58. 模型统计分析
  59. 热图可视化 (图10)
  60. 特征融合比较可视化 (图11)
  61. 共享和互补特征的可视化分析 (图12)
  62. RGB-T 语义分割样本可视化 (图13)
  63. RGB-T 显著性目标检测样本可视化 (图14)
  64. 局限性 (图15)
  65. 结论
文章目录65 节

题目:Multispectral State-Space Feature Fusion: Bridging Shared and Cross-Parametric Interactions for Object Detection

期刊:Inf. Fusion(Information Fusion)

论文链接:Link

关键词:Multispectral Object Detection(多光谱目标检测), State Space Model(状态空间模型), Shared-Parameter(共享参数), Cross-Parameter Interaction(跨参数交互).

代码:GitHub

年份:2025


摘要

现代多光谱特征融合用于目标检测面临两个关键限制:

感受野大小:模型中单个神经元(或特征图上的单个像素)在原始输入图像上能够 “感知” 到的区域大小

为解决这些问题,基于状态空间模型(SSM),提出了一种新颖的多光谱状态空间特征融合框架,称为MS2Fusion,该框架通过双路径参数交互机制实现高效且有效的融合。

具体而言:

  1. 第一个交叉参数交互分支继承了交叉注意力在挖掘互补信息方面的优势,并结合了SSM中的跨模态隐藏状态解码;

  2. 第二个共享参数分支通过SSM中的参数共享,利用联合嵌入探索跨模态对齐,以获取跨模态的相似语义特征和结构;

  3. 最后,对这两条路径进行联合优化。通过SSM在统一框架中融合多光谱特征,使MS2Fusion能够兼具功能互补性和共享语义空间。

得益于双分支SSM的设计,MS2Fusion同时继承了计算效率和全局感受野,显著提升了多光谱目标检测的性能。实验表明,MS2Fusion在强大的基线模型上持续表现更优:

值得注意的是,无需进行特定任务的修改,MS2Fusion就在多个多光谱感知任务上取得了新的最先进结果,展现出卓越的泛化能力。

引言

多光谱目标检测优势

近年来多光谱目标检测得到了越来越多的关注,这得益于其通过融合多个光谱波段(如RGB和热波段(即IR))的信息所实现的鲁棒性能。

单模态缺陷

RGB图像通常具有高分辨率,颜色丰富和纹理特征细腻的特点。但在弱光、恶劣天气或遮挡等复杂场景下,其性能会急剧下降。相比之下,热图像能够有效克服这些环境限制,但在颜色和纹理细节方面存在明显不足。当前通用的单模态目标检测方法难以很好地应对上述挑战。然而,多光谱特征融合为在这类具有挑战性的条件下提供可靠的目标检测解决方案开辟了道路。

图1:RGB图像(左)和热成像图像(右)的优缺点;(a)两种模态提供互补信息,它们的融合能够实现更稳健的目标检测;(b)双模态共享特征变得至关重要,因为两种模态中没有一种具有绝对优势。(例如,纹理和热辐射等模态特定特征变得模糊,而物体轮廓和结构等跨模态一致特征有助于检测)

如图1a所示,现有研究普遍认为,当一种模态不足时,互补特征发挥着关键作用。例如,当热成像物体缺乏清晰轮廓时,RGB图像能提供具有区分性的颜色和纹理线索;而当RGB成像受到低光照或遮挡影响时,热成像图像则能提供热特征。

然而,如图1b所示,在两种模态均表现出较弱区分性特征的场景中(例如,RGB图像中的纹理模糊和热成像图像中的低对比度),仅靠互补信息无法解决问题。在这些情况下,跨模态一致的形状和结构模式等共享特征变得至关重要,因为它们能够捕捉模态不变的表征,以实现可靠的检测。因此,作者推测,一个强大的多光谱目标检测框架应该动态地利用互补特征和共享特征,以应对各种来自现实世界的挑战。

互补特征:指不同光谱模态(如 RGB 与热成像)各自具备、可相互补充的独特信息。

共享特征:不同光谱模态间共有的、具备模态不变性的信息,通常对应物体的通用语义或结构属性,如物体的轮廓、形状、整体结构等。

先前研究的不足

先前的研究主要集中于跨模态的互补特征学习,往往忽视了对模态间共享特征表示或固有结构相似性的探索。

概括:重互补而轻共享,导致了泛化能力不足

此外,现有方法通常采用单一的融合策略来直接组合多模态输入,忽略了自适应或分层融合机制的潜在优势。这些方法没有充分探索或利用跨模态共享特征,忽视了提升单模态特征性能的潜在作用。这种融合模式在跨模态整合过程中常常会压制较弱但具有判别性的特征,导致大量信息丢失。

概括:融合策略单一,没有自适应机制

对于多光谱目标检测而言,共享特征表示在多模态融合中起着关键作用。它不仅能减轻跨模态差异,还能增强单模态特征,从而在复杂环境中显著提高特征表达能力和检测鲁棒性。

CNN与Transformer之缺陷

大多数主流方法采用CNN或Transformer进行特征融合。尽管这些方法有效,但现有的基于CNN的方法由于感受野有限,往往难以捕捉跨模态的更广泛上下文信息。另一方面,尽管基于Transformer的方法在建模全局依赖关系方面表现出色,但随着输入序列变长,其性能可能会下降,并且随着模型复杂度的增加,计算成本也会更高。这些因素限制了它们在资源受限环境中的实用性,凸显了在多光谱目标检测中需要更高效的融合策略。

概括:感受野有限,上下文有限,输入越大性能越低

现阶段状况

这些局限性凸显了对一种更具适应性和效率的融合范式的需求,这种范式不仅要弥合模态差异,还要通过共享表示增强单模态特征,最终提高在复杂环境中的鲁棒性。

MS2Fusion的提出

序列建模领域的最新进展表明,基于SSM的方法通过将特征压缩为紧凑的隐藏状态而表现出色,能够以恒定时间进行全序列处理,实现高效推理。Mamba通过选择性状态空间增强了这一点,动态保留与任务相关的特征。Vision Mamba(Vim)进一步证明了其在视觉任务中的有效性,同时提升了效率和性能。

序列建模领域:专注于处理具有时序或空间顺序数据(如文本序列、图像像素序列、多模态特征序列等)的技术领域,其核心目标是通过建模数据间的顺序依赖关系,实现对数据特征的有效提取、压缩与利用。

受此启发,本文作者提出了MS2Fusion,这是一个新颖的框架,它能同时利用跨模态的互补特征和共享特征,同时克服卷积神经网络(CNN)和Transformer在多光谱特征融合方面的局限性。

MS2Fusion的优势体现

据图分析

这张图比较三种多模态特征融合方法 (主要用于红外图像 (FTF_T) 与可见光图像 (FVF_V) 的融合):


(a) Transformer-based fusion

(b) Mamba-based fusion

模态错位(misalignment):不同模态(例如红外图像和可见光图像)之间信息不对应、空间或语义不对齐的情况。两种模态“看”的不是同一个位置或语义点,融合错了对象。

特征冗余(redundancy):指不同模态中存在重复或相似的特征信息,导致融合后的表示中有大量“重复内容”。即两种模态提供了“重复的信息”,融合后没增加有效信息量,反而增加噪声。


(c) MS2Fusion(作者提出的方法)

简单总结:Transformer融合注重全局注意力、Mamba融合侧重线性高效计算,而MS2Fusion通过“模态内增强 + 模态间共享”双阶段策略,实现了更精确、鲁棒的多模态特征融合。


通过本图2与实验数据即可得出MS2Fusion的优势

图2显示,基于Transformer的方法(a)和现有的Mamba解决方案(b)未能充分利用跨模态共享特征。相比之下,MS2Fusion方法(c)通过三个关键组件明确地对互补性和共享性的跨模态交互进行建模

有效感受野分析(ERF)也可表明MS2Fusion有效性

图3:基于CNN的融合方法(a)、基于Transformer的融合方法(b)以及所提出的MS2Fusion方法(c)的有效感受野可视化对比。定量分析表明,与其他方法相比,MS2Fusion实现了显著更广泛的感受野覆盖。

由图3可得知,与CNN和Transformer相比,MS2Fusion实现了更出色的空间覆盖范围,成功地将局部细节与全局语境相结合。

简单来说,MS2Fusion模块在保持高计算效率的同时,有效解决了CNN在建模长距离依赖关系方面的限制。实验表明(依据下表数据),与Transformer和CNN基线相比,MS2Fusion均能以更低的计算成本和参数量实现更高的检测精度(mAP50分别提升8.3和9.0个点),且处理速度与CNN相当,远快于Transformer。这些证据表明MS2Fusion成功打破了多光谱目标检测中传统的效率-精度权衡,确立了新的SOTA性能。

表1:不同多光谱特征融合方法的比较(YoloV5框架,FLIR数据集)

模型GFLOPsParams (M)FPSmAP@0.5mAP@0.75mAP
CNN190.3159.730.874.323.832.5
Transformer421.9440.619.275.024.133.4
MS2Fusion140.8130.329.783.333.040.3

MS2Fusion的优势来源

MS2Fusion引入了一种新颖的状态空间框架。其CP-SSM捕捉了隐含的特征互补性,而SP-SSM增强了共享表示,在特定模态学习和跨模态学习之间实现了最佳平衡。

相关工作

目标检测

多光谱目标检测

Mamba

引言总结

研究问题

多光谱目标检测(RGB + 热红外)能在复杂场景下保持鲁棒性,但现有方法存在两大痛点:

  1. 偏重互补特征,忽略共享语义,导致泛化能力不足;
  2. 感受野与效率权衡难 —— CNN 看得近、Transformer 看得远但太慢。

论文核心思想

作者提出 MS2Fusion(Multispectral State-Space Feature Fusion) 框架,利用**状态空间模型(SSM)**实现高效的多模态特征融合。它通过双路径结构:

最终,融合结果既具有跨模态互补性,也具有共享语义一致性。

主要贡献

  1. 提出 双路径状态空间特征融合框架 MS2Fusion
  2. Mamba 动态状态空间结构引入多模态特征建模;
  3. 同时实现 Transformer 级感受野 + CNN 级效率
  4. 在多任务上取得 SOTA 性能(检测、分割、显著目标识别)。

整体组件概览

img
img

MS2Fusion 总体框架流程详解

整个网络包含三个阶段:

  1. 特征提取阶段
    • 两个独立主干网络分别提取 RGB 与红外特征;
  2. 跨模态融合阶段
    • 将三层特征(P3, P4, P5)分别送入 MS2Fusion 模块;
  3. 检测阶段
    • 使用 YOLOv5 或 CoDetr Head 生成检测结果。

融合公式如下:

Ffusedi=ϕMS2Fusion(FVi,FTi)F_{fused}^i = \phi_{MS2Fusion}(F_V^i, F_T^i)

其中 FViF_V^iFTiF_T^i 分别为两模态特征,输出 FfusediF_{fused}^i 为融合结果。

关键创新点

MS2Fusion 流程的优势在于它通过双路径(CP-SSM+SP-SSM)机制实现了对多光谱特征的高效全面的融合:

也就是说:MS2Fusion 同时让模型“看到不同”和“理解相同”。

方法

状态空间模型(SSM)

SSM(状态空间模型)本身并不是本文作者发明的模块,它起源于控制理论,并在 Mamba 模型中被引入深度学习。 它的最大优势是:能像 Transformer 一样捕捉全局关系(具有大感受野),但计算复杂度只有线性级别(也就是和 CNN 一样高效)。

本文所提出模型 MS2Fusion 的创新点是:把 SSM 结构应用到多模态特征融合中,并设计了三种变体(CP、SP、FF)来分别建模互补信息与共享语义。这使得模型在保持高效率的同时,具备了强大的跨模态理解能力。

SSM结合了循环神经网络(RNNs)和卷积神经网络(CNNs)的优势,能够高效处理长依赖关系。它通过状态方程将输入序列(x(t))转换为中间状态(h(t)),然后通过输出方程生成输出(y(t))。SSM通常表示为一个线性常微分方程:

h(t)=Ah(t)+Bx(t)y(t)=Ch(t)+Dx(t)(1)\begin{align} h'(t) &= \mathbf{A} \cdot h(t) + \mathbf{B} \cdot x(t) \\ y(t) &= \mathbf{C} \cdot h(t) + \mathbf{D} \cdot x(t) \end{align} \tag{1}

为了使状态空间模型(SSM)适应深度学习,需将其离散化如下:

hk=Ahk1+Bxkyk=Chk+DxkA=expΔAB=(expΔAI)/ΔAC=C(2)\begin{align} h_k &= \overline{\mathbf{A}} \cdot h_{k-1} + \overline{\mathbf{B}} \cdot x_k \\ y_k &= \overline{\mathbf{C}} \cdot h_k + \mathbf{D} \cdot x_k \\ \overline{A} &= exp^{\Delta \mathbf{A}} \\ \overline{B} &= (exp^{\Delta \mathbf{A}} - \mathbf{I}) / \Delta \mathbf{A} \\ \overline{C} &= \mathbf{C} \end{align} \tag{2}

离散化后,SSM使用卷积操作进行并行计算。为了克服参数固定的问题,SSM引入了动态调整机制,使模型能够灵活处理复杂数据并改进长序列建模。

如图4所示,状态空间模型(SSM)通过由三项关键操作组成的结构化转换对输入序列({x1,x2,...,xL}RL×d)(\{x_{1},x_{2},...,x_{L}\}\in \mathbb{R}^{L\times d})进行转化处理。

图4:SSM(状态空间模型),其中红色、绿色和黑色的线分别对应于公式 (2) 的方程。

SSM 是什么?

可以把 SSM 想成一个有记忆的滤波器

论文里连续时间的 SSM 一般写成类似这样:

状态变化 = A × 状态 + B × 输入 输出 = C × 状态 + D × 输入

因为我们在电脑里是一步一步处理序列(像一串像素),所以会把上面的「连续方程」离散化成:

hk=Ahk1+Bxkyk=Chk+Dxkh_k = \overline{\mathbf{A}} \cdot h_{k-1} + \overline{\mathbf{B}} \cdot x_k \\ y_k = \overline{\mathbf{C}} \cdot h_k + \mathbf{D} \cdot x_k

SSM(State Space Model) 是一种“记忆+预测”模型:

(1) 核心扫描算子:SelectiveScan

import selective_scan_cuda_core as selective_scan_cuda // 公式二调用
class SelectiveScan(torch.autograd.Function):
    @staticmethod
    @torch.cuda.amp.custom_fwd(cast_inputs=torch.float32)
    def forward(ctx, u, delta, A, B, C, D=None, delta_bias=None, delta_softplus=False, nrows=1):
        assert nrows in [1, 2, 3, 4], f'{nrows}'
        assert u.shape[1] % (B.shape[1] * nrows) == 0, f'{nrows}, {u.shape}, {B.shape}'
        ctx.delta_softplus = delta_softplus
        ctx.nrows = nrows
        if u.stride((-1))!= 1:
            u = u.contiguous()
        if delta.stride((-1))!= 1:
            delta = delta.contiguous()
        if D is not None:
            D = D.contiguous()
        if B.stride((-1))!= 1:
            B = B.contiguous()
        if C.stride((-1))!= 1:
            C = C.contiguous()
        if B.dim() == 3:
            B = B.unsqueeze(dim=1)
            ctx.squeeze_B = True
        if C.dim() == 3:
            C = C.unsqueeze(dim=1)
            ctx.squeeze_C = True
        // 以下为公式二的代码实现
        out, x, *rest = selective_scan_cuda.fwd(u, delta, A, B, C, D, delta_bias, delta_softplus, nrows) 
        // 公式二结束
        ctx.save_for_backward(u, delta, A, B, C, D, delta_bias, x)
        return out
    @staticmethod
    @torch.cuda.amp.custom_bwd
    def backward(ctx, dout, *args):
        u, delta, A, B, C, D, delta_bias, x = ctx.saved_tensors
        if dout.stride((-1))!= 1:
            dout = dout.contiguous()
        du, ddelta, dA, dB, dC, *dD, ddelta_bias, rest = selective_scan_cuda.bwd(u, delta, A, B, C, D, delta_bias, dout, x, ctx.delta_softplus, 1)
        dB = dB.squeeze(1) if getattr(ctx, 'squeeze_B', False) else dB
        dC = dC.squeeze(1) if getattr(ctx, 'squeeze_C', False) else dC
        return (du, ddelta, dA, dB, dC, dD, ddelta_bias, None, None)

此处代码对应公式(2)。

(2) 单模态 1D SSM:代码里的 SSM / SS2D

def forward(self, x: torch.Tensor):
    selective_scan = selective_scan_fn_v1
    B, L, d = x.shape        # B=批大小, L=长度(H*W), d=通道数
    x = x.permute(0, 2, 1)   # 变成 B, d, L

    # 线性投影出 dt, B, C
    x_dbl = self.x_proj(rearrange(x, 'b d l -> (b l) d'))
    dt, B, C = torch.split(x_dbl, [self.dt_rank, self.d_state, self.d_state], dim=-1)

    # 把 dt 投影成每个通道的 Δ
    dt = self.dt_proj.weight @ dt.t()
    dt = rearrange(dt, 'd (b l) -> b d l', l=L)

    # 把 B、C reshape 回 B, d_state, L
    A = -torch.exp(self.A_log.float())
    B = rearrange(B, '(b l) dstate -> b dstate l', l=L).contiguous()
    C = rearrange(C, '(b l) dstate -> b dstate l', l=L).contiguous()

    # 跑 SelectiveScan,也就是公式(2)
    y = selective_scan(x, dt, A, B, C, self.D.float(),
                       delta_bias=self.dt_proj.bias.float(), delta_softplus=True)
    y = rearrange(y, 'b d l -> b l d')
    y = self.out_norm(y)
    return y 

对应关系(图4 & 式(2)):

这个就是最基本的 单模态 Mamba/SSM 单元


Mamba 的创新在于:这些矩阵是动态生成的,因此模型能根据输入自动调节“记忆与更新”的比例。

MS2Fusion 把这一机制应用到多模态特征上,实现了:

所提出的模型架构

图5:模型架构概述。 该模型由三个主要阶段构成:(1) 使用两个主干网络进行特征提取;(2) 通过 MS2Fusion 模块P3P_3P4P_4P5P_5 层的特征进行跨模态特征融合;(3) 通过颈部(Neck)和头部(Head)层生成检测结果

多光谱状态空间特征融合(MS2Fusion)

如图5的下半部分所示,MS2Fusion模块由三个核心组件构成:跨参数状态空间模型(CP-SSM)、共享参数状态空间模型(SP-SSM)和特征融合状态空间模型(FF-SSM)。

下面对这几个模块进行分析。

common.py 里,真正对应 MS2Fusion 的模块名叫 SSF(Shared & Cross SSM Fusion,可以理解成 S³Fusion)。

简化代码如下:

class SSF(nn.Module):
    def __init__(..., hidden_dim: int=0, Cross: bool=True, scan: bool=False, ...):
        ...
        # DBI 部分:做 CP-SSM + SP-SSM
        self.dbi_fusion = DBISSF(..., Cross=Cross)

        # CM 部分:做 FF-SSM(concat + Mamba 2D)
        self.cm_fusion = CMSSF(...)
        self.cm_fusion_rgb = CMSSF(...)
        self.cm_fusion_e   = CMSSF(...) 

SSF.forward

def forward(self, x):
    # x = [x_rgb, x_e]
    if not self.only_cm and (not self.only_dbi):
        x_cross_rgb, x_share_rgb, x_cross_e, x_share_e = self.dbi_fusion(x)

        # 先各自 RGB / E 内部融合(FF-SSM)
        x_fuse_rgb = [x_cross_rgb, x_share_rgb]
        x_fuse_e   = [x_cross_e,   x_share_e]
        x_rgb = self.cm_fusion_rgb(x_fuse_rgb)
        x_e   = self.cm_fusion_e(x_fuse_e)

        # 再把两个模态一起再融合一次(FF-SSM 最后一层)
        x_new = [x_rgb, x_e]
        x_feat = self.cm_fusion(x_new)
    return x_feat

对应论文式(3):

CP-SSM 模块

图 6 CP-SSM模块的细节 跨参数状态空间模型

图注: CP-SSM 模块的细节图。特征图 (FVF_V, FTF_T) 首先通过行和列扫描被重塑为序列 (xVix_{Vi}, xTix_{Ti}),并通过一个线性层(Linear layer)生成参数 BBCCΔ \Delta。其次,作者通过交换两个分支的 CC 矩阵来执行跨模态互补特征的交互。最后,通过SSM模块进行跨模态互补特征交互,以生成输出 (F~V\tilde{F}_V, F~T\tilde{F}_T)。

目标: 挖掘 RGB 与热成像间的互补特征。

思路:

在仓库中,此模块相关代码位于common.py

在类DBISSF_Attention.forward

def forward(self, x_rgb, x_share_rgb, x_e, x_share_e):
    selective_scan = selective_scan_fn_v1
    B, L, d = x_rgb.shape
    # 调整维度
    x_rgb        = x_rgb.permute(0, 2, 1)
    x_e          = x_e.permute(0, 2, 1)
    x_share_rgb  = x_share_rgb.permute(0, 2, 1)
    x_share_e    = x_share_e.permute(0, 2, 1)

    # 1. 线性投影,分别得到 RGB / E / share 的 dt, B, C
    x_dbl_rgb   = self.x_proj_1(rearrange(x_rgb, 'b d l -> (b l) d'))
    x_dbl_e     = self.x_proj_2(rearrange(x_e,   'b d l -> (b l) d'))
    x_dbl_share = self.x_proj_share(rearrange(torch.add(x_share_rgb, x_share_e),
                                              'b d l -> (b l) d'))

    dt_rgb,   B_rgb,   C_rgb   = torch.split(x_dbl_rgb,   [self.dt_rank, self.d_state, self.d_state], dim=-1)
    dt_e,     B_e,     C_e     = torch.split(x_dbl_e,     [self.dt_rank, self.d_state, self.d_state], dim=-1)
    dt_share, B_share, C_share = torch.split(x_dbl_share, [self.dt_rank, self.d_state, self.d_state], dim=-1)

    # 2. dt 投影成 Δ
    dt_rgb   = self.dt_proj_1.weight @ dt_rgb.t()
    dt_e     = self.dt_proj_2.weight @ dt_e.t()
    dt_share = self.dt_proj_share.weight @ dt_share.t()
    ...
    A_rgb   = -torch.exp(self.A_log_rgb.float())
    A_e     = -torch.exp(self.A_log_e.float())
    A_share = -torch.exp(self.A_log_share.float())
    D_rgb, D_e, D_share = self.D_rgb, self.D_e, self.D_share
    ...
    # 3. CP-SSM:在 Cross=True 时交换 C
    if self.Cross:
        y_rgb = selective_scan(x_rgb, dt_rgb, A_rgb, B_rgb, C_e,      D_rgb,   ...)
        y_e   = selective_scan(x_e,   dt_e,   A_e,   B_e,   C_rgb,    D_e,     ...)
    else:
        y_rgb = selective_scan(x_rgb, dt_rgb, A_rgb, B_rgb, C_rgb,    D_rgb,   ...)
        y_e   = selective_scan(x_e,   dt_e,   A_e,   B_e,   C_e,      D_e,     ...)

CP-SSM 的关键是:

公式(4) 就是在写这个「只交换 C」的过程。

对应关系:

注意:

SP-SSM 模块

图 7 SP-SSM模块的细节及流程叙述

图注: SP-SSM模块的细节图。SP-SSM模块从具有共享参数的状态空间模型(SSM)中提取两种模态(RGB和热红外)的共享特征。输入特征 FVF_VFTF_T 被组合以生成参数 BsB_sCsC_sΔs\Delta_s,同时输出特征 F~V\tilde{F}_VF~T\tilde{F}_T 由这两个SSM进行重建。

具体过程由公式描述:

Fi=φSSM(Fi,Δs,Bs,Cs)\mathbf{F}_i = \varphi^{SSM} (\mathbf{F}_i, \Delta_s, \mathbf{B}_s, \mathbf{C}_s) [Δs,Bs,Cs]=LLinear(FVFT)[\Delta_s, \mathbf{B}_s, \mathbf{C}_s] = \mathcal{L}_{Linear} (\mathbf{F}_V \oplus \mathbf{F}_T)

其中,Fi(i{V,T})\mathbf{F}_i (i \in \{V, T\}) 是共享特征,φSSM\varphi^{SSM} 是状态空间模型。Δs,Bs,Cs\Delta_s, \mathbf{B}_s, \mathbf{C}_s 是从加权融合特征中获得的参数。

SP-SSM模块构建了一种层次化的特征共享架构,通过参数共享和特征重建实现跨模态表示对齐。如图7所示,该模块的流程由两个精心设计的阶段组成:

参数共享阶段,模块采用粗粒度的加法特征融合方法对RGB和热红外特征进行初步整合。然后,通过一个线性网络动态生成三组关键的共享参数。这些参数不仅编码了双模态的共同特征模式,而且保留了模态特定的调整能力。

特征重建阶段,这些共享参数被注入到两个模态的SSM中。这种设计创建了一个双流耦合架构:一方面,共享参数约束了两种模态在状态空间中的演化轨迹,驱动异构特征收敛到共享特征空间;另一方面,每个模态保留了独立的初始化状态,确保了模态特定信息的完整性。通过这种共享参数计算范式,模块能够提取出不受光照条件和环境干扰等因素影响的深度共享特征

简而言之:

SP-SSM 的目的:抓住两个模态共同的语义

方法是:

  1. 先把两路特征相加:

    FshareF_share = FVF_V + FTF_T

  2. 用这个 FshareF_share 去生成一套共享参数 (ΔsΔ_s, BsB_s, CsC_s)

  3. 然后把这套共享参数用在 RGBRGBTT 两个分支上,跑同一套 SSM:

方法:

还是在类DBISSF_Attention.forward中,刚才看到share分支

# share 输入:x_share_rgb, x_share_e
x_dbl_share = self.x_proj_share(
    rearrange(torch.add(x_share_rgb, x_share_e), 'b d l -> (b l) d')
)
dt_share, B_share, C_share = torch.split(
    x_dbl_share, [self.dt_rank, self.d_state, self.d_state], dim=-1)

dt_share = self.dt_proj_share.weight @ dt_share.t()
dt_share = rearrange(dt_share, 'd (b l) -> b d l', l=L)

A_share = -torch.exp(self.A_log_share.float())
B_share = rearrange(B_share, '(b l) dstate -> b dstate l', l=L).contiguous()
C_share = rearrange(C_share, '(b l) dstate -> b dstate l', l=L).contiguous()
D_share = self.D_share.float()

# SP-SSM:共享一套 (A_share, B_share, C_share, D_share)
y_share_rgb = selective_scan(x_share_rgb, dt_share, A_share, B_share, C_share,
                             D_share, delta_bias=self.dt_proj_share.bias.float(), delta_softplus=True)
y_share_e   = selective_scan(x_share_e,   dt_share, A_share, B_share, C_share,
                             D_share, delta_bias=self.dt_proj_share.bias.float(), delta_softplus=True)

对应关系:

DBISSF_SS

把 CP-SSM 和 SP-SSM 套在 2D 特征上(扫描方向)

刚才只是序列层面(L 维度)的 CP/SP,需要再放回到 2D 特征图上,这部分对应图6 底下那种「按 H×W 扫描」的结构。

DBISSF_SS.forward 里大致是这样:

  1. 输入是 x_rgb, x_e,形状 B×C×H×W

  2. 用 1×1 卷积变换到适合 SSM 的通道数:

    x_rgb_conv, x_e_conv

    再得到 share 分支 x_share_rgb_conv, x_share_e_conv

  3. 把 H×W 摊平成一条长序列 L = H×W

    可能还会做 CrossScan:既沿着行扫、又沿着列扫,再加正向+反向(对应图6 中多方向扫描)

  4. 喂给 CMA_ssm(也就是 DBISSF_Attention

  5. 如果 scan=True,再用 CMA_ssm2 沿着另一个维度再扫一遍(更丰富的空间关系)

  6. 最后把结果 reshape 回 B×C×H×W

class DBISSF_SS(nn.Module):
    """\n    Cross Mamba Attention Fusion Selective Scan 2D Module with SSM\n    """
    def __init__(self, d_model=96, d_state=16, ssm_ratio=2, dt_rank='auto', Cross=True, learnableweight=False, scan=False, d_conv=3, conv_bias=True, dropout=0.0, bias=False, dt_min=0.001, dt_max=0.1, dt_init='random', dt_scale=1.0, dt_init_floor=0.0001, softmax_version=False, **kwargs):
        factory_kwargs = {'device': None, 'dtype': None}
        super().__init__()
        self.softmax_version = softmax_version
        self.d_model = d_model
        self.d_state = math.ceil(self.d_model / 6) if d_state == 'auto' else d_state
        self.d_conv = d_conv
        self.expand = ssm_ratio
        self.d_inner = int(self.expand * self.d_model)
        self.dt_rank = math.ceil(self.d_model / 16) if dt_rank == 'auto' else dt_rank
        self.Cross = Cross
        self.learnableweight = learnableweight
        self.in_proj = nn.Linear(self.d_model, self.d_inner, bias=bias, **factory_kwargs)
        self.in_proj_modalx = nn.Linear(self.d_model, self.d_inner, bias=bias, **factory_kwargs)
        self.in_proj_share = nn.Linear(self.d_model, self.d_inner, bias=bias, **factory_kwargs)
        if learnableweight:
            self.learnableweight_rgb = LearnableWeights()
            self.learnableweight_e = LearnableWeights()
        if self.d_conv > 1:
            self.conv2d = nn.Conv2d(in_channels=self.d_inner, out_channels=self.d_inner, groups=self.d_inner, bias=conv_bias, kernel_size=d_conv, padding=(d_conv - 1) // 2, **factory_kwargs)
            self.act = nn.SiLU()
        self.out_proj_rgb = nn.Linear(self.d_inner, self.d_model, bias=bias, **factory_kwargs)
        self.out_proj_e = nn.Linear(self.d_inner, self.d_model, bias=bias, **factory_kwargs)
        self.out_proj_share = nn.Linear(self.d_inner, self.d_model, bias=bias, **factory_kwargs)
        self.dropout_rgb = nn.Dropout(dropout) if dropout > 0.0 else nn.Identity()
        self.dropout_e = nn.Dropout(dropout) if dropout > 0.0 else nn.Identity()
        self.dropout_share = nn.Dropout(dropout) if dropout > 0.0 else nn.Identity()
        self.CMA_ssm = DBISSF_Attention(d_model=self.d_model, d_state=self.d_state, ssm_ratio=ssm_ratio, dt_rank=dt_rank, Cross=Cross, dt_min=dt_min, dt_max=dt_max, dt_init=dt_init, dt_scale=dt_scale, dt_init_floor=dt_init_floor, **kwargs)
        self.scan = scan
        if scan:
            self.CMA_ssm2 = DBISSF_Attention(d_model=self.d_model, d_state=self.d_state, ssm_ratio=ssm_ratio, dt_rank=dt_rank, Cross=Cross, dt_min=dt_min, dt_max=dt_max, dt_init=dt_init, dt_scale=dt_scale, dt_init_floor=dt_init_floor, **kwargs)

这一大块就是把式(4)(5) 落到实际的二维特征上

FF-SSM 模块

图注: FF-SSM 模块的细节图。该模块通过将 F1F_1F2F_2 以两种不同顺序组合来实现特征融合。在顶部分支中,输入特征以 1-2 的顺序(例如 F1,F2F_1, F_2)组合形成拼接特征,然后通过一个线性层(Linear layer)生成 B1B_1C1C_1Δ1\Delta_1 参数,随后通过 SSM 执行跨特征交互。最终,将 F12F_{12}F21F_{21} 合并(merge)生成融合特征图 F~\tilde{F}

模块流程叙述:

FF-SSM 模块旨在解决 Mamba 固有的特征遗忘问题,同时实现彻底且自适应的跨模态特征融合。它通过引入双向架构,结合互补的前向和反向处理路径来系统性地弥补单向建模的局限性。

  1. 输入特征: 模块接收来自 CP-SSM 输出的特征图 F1F_1F2F_2(例如,RGB 和热红外互补特征)。

  2. 双向异构序列构建(Bidirectional Sequence Construction): 模块采用双向异构序列构建策略,将 F1F_1F2F_2两种不同顺序进行拼接:

    • 前向路径 (Top Path): 序列为 [F1,F2][\mathbf{F}_1, \mathbf{F}_2]
    • 反向路径 (Bottom Path): 序列为 [F2,F1][\mathbf{F}_2, \mathbf{F}_1]
  3. 参数生成:

    • 前向路径: 拼接序列 [F1,F2][\mathbf{F}_1, \mathbf{F}_2] 通过线性变换层 L1Linear\mathcal{L}_{1}^{Linear} 生成状态空间模型参数 [Δ1,B1,C1][\Delta_1, \mathbf{B}_1, \mathbf{C}_1]
    • 反向路径: 拼接序列 [F2,F1][\mathbf{F}_2, \mathbf{F}_1] 通过另一个线性变换层 L2Linear\mathcal{L}_{2}^{Linear} 生成状态空间模型参数 [Δ2,B2,C2][\Delta_2, \mathbf{B}_2, \mathbf{C}_2]
  4. 状态空间处理与特征交互:

    • 前向 SSM: 参数 [Δ1,B1,C1][\Delta_1, \mathbf{B}_1, \mathbf{C}_1] 和序列 [F1,F2][\mathbf{F}_1, \mathbf{F}_2] 输入 SSM (φSSM\varphi^{SSM}) 得到输出特征 F12F_{12}
    • 反向 SSM: 参数 [Δ2,B2,C2][\Delta_2, \mathbf{B}_2, \mathbf{C}_2] 和序列 [F2,F1][\mathbf{F}_2, \mathbf{F}_1] 输入 SSM (φSSM\varphi^{SSM}) 得到输出特征 F21F_{21}
    • 作用: 反向路径 F21F_{21} 专门用于捕获在前向传播中可能发生的特征损失,通过方向自适应参数生成来补偿单向建模的局限性。
  5. 最终融合(Adaptive Fusion): 模块通过一个合并函数 (ψMerge\psi_{Merge}) 将来自双向 SSM 路径的输出特征 F12F_{12}F21F_{21} 进行融合,生成最终的融合特征图 F~\tilde{\mathbf{F}}

目标: 这种双路径机制能够更全面地捕获长距离跨模态依赖关系,动态地缓解特征遗忘,同时在不牺牲 Mamba 线性复杂度的前提下,确保更丰富、更精确的特征表示,显著提高检测精度。

数学表达:

F~=ψMerge(F12,F21)\tilde{\mathbf{F}} = \psi_{Merge} (\mathbf{F}_{12}, \mathbf{F}_{21}) F12=φSSM([F1,F2],Δ1,B1,C1)\mathbf{F}_{12} = \varphi^{SSM} ([\mathbf{F}_1, \mathbf{F}_2], \Delta_1, \mathbf{B}_1, \mathbf{C}_1) F21=φSSM([F2,F1],Δ2,B2,C2)\mathbf{F}_{21} = \varphi^{SSM} ([\mathbf{F}_2, \mathbf{F}_1], \Delta_2, \mathbf{B}_2, \mathbf{C}_2) [Δ1,B1,C1]=L1Linear(F1,F2)[\Delta_1, \mathbf{B}_1, \mathbf{C}_1] = \mathcal{L}_{1}^{Linear} (\mathbf{F}_1, \mathbf{F}_2) [Δ2,B2,C2]=L2Linear(F2,F1)[\Delta_2, \mathbf{B}_2, \mathbf{C}_2] = \mathcal{L}_{2}^{Linear} (\mathbf{F}_2, \mathbf{F}_1)

尽管CP-SSM模块能够捕获模态间隐式的互补关系,但它在特征融合层面上仍存在局限性。为了解决Mamba固有的特征遗忘问题,同时保持其计算效率,作者提出了一个结合互补前向 (F1,F2\mathbf{F}_1, \mathbf{F}_2) 和反向 (F2,F1\mathbf{F}_2, \mathbf{F}_1) 处理路径的双向架构

这种创新设计通过方向自适应参数生成系统地弥补了单向建模的局限性,其中反向路径专门用于捕获前向传播中可能发生的特征损失。与传统Transformer因分块操作导致信息丢失不同,作者的方法不仅保持了Mamba原有的序列依赖和线性复杂度的优势,而且通过反向序列补偿显著增强了特征保留。双路径机制能够更全面地捕获长距离跨模态依赖关系,同时动态地缓解特征遗忘,在不牺牲效率的情况下实现了鲁棒的序列建模。

具体来说,给定CP-SSM输出的特征图 F1\mathbf{F}_1F2\mathbf{F}_2,该模块采用双向异构序列构建策略:以不同顺序 (F1,F2\mathbf{F}_1, \mathbf{F}_2F2,F1\mathbf{F}_2, \mathbf{F}_1) 对特征进行拼接。这种设计不仅扩展了模型的感受野,还增强了特征表示的多样性。

在实现中,特征首先被展开并拼接成两个方向序列,然后通过线性变换层生成相应的状态空间模型参数 (B1,C1,Δ1\mathbf{B}_1, \mathbf{C}_1, \Delta_1B2,C2,Δ2\mathbf{B}_2, \mathbf{C}_2, \Delta_2)。最后,通过融合来自双向SSM路径的输出特征 (F12\mathbf{F}_{12}F21\mathbf{F}_{21}),模块实现了彻底的跨模态特征交互和自适应融合,显著提高了检测精度。FF-SSM模块有效地保留了两种模态内的细节信息,确保了更丰富、更精确的特征表示,这在公式 (6) 中被描述:

F^=ψMerge(F12,F21)F12=φSSM([F1,F2],Δ1,B1,C1)F21=φSSM([F2,F1],Δ2,B2,C2)[Δ1,B1,C1]=LLinear1(F1,F2)[Δ2,B2,C2]=LLinear2(F2,F1)(6)\begin{align} \widehat{F} &= \psi_{Merge} \left( F_{12}, F_{21} \right) \\ F_{12} &= \varphi_{SSM} \left( [F_1, F_2], \Delta_1, B_1, C_1 \right) \\ F_{21} &= \varphi_{SSM} \left( [F_2, F_1], \Delta_2, B_2, C_2 \right) \\ \left[ \Delta_1, B_1, C_1 \right] &= L_{\text{Linear}}^1 \left( F_1, F_2 \right) \\ \left[ \Delta_2, B_2, C_2 \right] &= L_{\text{Linear}}^2 \left( F_2, F_1 \right) \end{align} \tag{6}

其中 φSSM\varphi^{SSM} 表示图4中的SSM,F1,F2\mathbf{F}_1, \mathbf{F}_2 是特征图。

简而言之:

有了 CP-SSM 和 SP-SSM,我们得到两种特征:

FF-SSM 想干的是:

把 F₁、F₂ 再“来回搅拌”,既考虑「先看 F₁ 再看 F₂」,也考虑「先看 F₂ 再看 F₁」,最后得到一个融合特征 F_fused。

式(6) 的大致意思是:

  1. 把 (F₁, F₂) 作为一对输入,喂进一个线性层,得到一组 (Δ₁, B₁, C₁)
  2. 把 (F₂, F₁) 再喂一次,得到 (Δ₂, B₂, C₂)
  3. 用这两组参数跑两次 SSM,得到两个方向的输出 F₁₂ 和 F₂₁
  4. 再把 F₁₂ 和 F₂₁ 结合起来就是 F_fused

图8 就是把这些步骤画成了一个带两路输入、两路输出再融合的结构。

CMSSF + CM_Attention

CMSSF 是一个「Concat Mamba 2D 融合模块」:

class CMSSF(nn.Module):
    """Concat Mamba (ConMB) fusion, with 2d SSM"""
    def __init__(self, hidden_dim: int=0, ...):
        ...
        self.op = CM_Attention(d_model=hidden_dim, ...)
        self.drop_path = DropPath(drop_path)
        ...

    def _forward(self, x: torch.Tensor):
        x_rgb = x[0]
        x_e   = x[1]
        # 用 CM_Attention 得到融合特征
        # 然后加上残差/MLP(略)

CM_Attention 的核心是 forward_corev2_multimodal

class CM_Attention(nn.Module):
    """Multimodal Mamba Selective Scan 2D"""
    ...
    def forward_corev2_multimodal(self, x_rgb, x_e, nrows=-1):
        return cross_selective_scan_multimodal_k2(
            x_rgb, x_e,
            self.x_proj_weight, None,
            self.dt_projs_weight, self.dt_projs_bias,
            self.A_logs, self.Ds,
            getattr(self, "out_norm1", None),
            getattr(self, "out_norm2", None),
            self.softmax_version,
            nrows=nrows
        )

    def forward(self, x_rgb, x_e):
        # 先把 tensor 排成 B,H,W,C
        x_rgb = x_rgb.permute(0, 2, 3, 1).contiguous()
        x_e   = x_e.permute(0, 2, 3, 1).contiguous()
        # 做一次 in_proj
        x_rgb = self.in_proj(x_rgb)
        x_e   = self.in_proj_modalx(x_e)

        # 深度卷积增强局部信息
        ...
        y_rgb, y_e = self.forward_corev2_multimodal(x_rgb_conv, x_e_conv)
        ...
        # SE 类似的通道注意力,再 concat 两路
        y = torch.concat([y_rgb, y_e], dim=-1)
        out = self.dropout(self.out_proj(y)).permute(0, 3, 1, 2).contiguous()
        return out

真正实现“式(6)”的是 cross_selective_scan_multimodal_k2

def cross_selective_scan_multimodal_k2(x_rgb, x_e, x_proj_weight, x_proj_bias,
                                       dt_projs_weight, dt_projs_bias,
                                       A_logs, Ds, out_norm1, out_norm2,
                                       softmax_version=-1, nrows=True):
    B, D, H, W = x_rgb.shape
    D, N = A_logs.shape
    K, D, R = dt_projs_weight.shape
    L = 2 * H * W

    # 1. CrossScan_multimodal: 拼成两条序列(正向 & 反向)
    x_fuse = CrossScan_multimodal.apply(x_rgb, x_e)  # B, 2, C, 2HW
    # x_fuse[:,0] = [rgb 序列, e 序列]
    # x_fuse[:,1] = 上面那条的反向

    # 2. 线性投影 -> [dt, B, C]
    x_dbl = torch.einsum('b k d l, k c d -> b k c l', x_fuse, x_proj_weight)
    ...
    dts, Bs, Cs = torch.split(x_dbl, [R, N, N], dim=2)
    dts = torch.einsum('b k r l, k d r -> b k d l', dts, dt_projs_weight)

    # 3. 准备 A, D
    x_fuse = x_fuse.view(B, -1, L).to(torch.float)
    dts    = dts.contiguous().view(B, -1, L).to(torch.float)
    As = -torch.exp(A_logs.to(torch.float))
    ...
    delta_bias = dt_projs_bias.view(-1).to(torch.float)

    # 4. 跑 SelectiveScan(就是 SSM)
    ys = selective_scan(x_fuse, dts, As, Bs, Cs, Ds, delta_bias, delta_softplus, nrows)\
           .view(B, K, -1, 2 * H * W).to(x_rgb.dtype)

    # 5. CrossMerge_multimodal: 把两条序列再拆/合回两路
    y_rgb, y_e = CrossMerge_multimodal.apply(ys)
    y_rgb = y_rgb.transpose(1, 2).contiguous().view(B, H, W, -1)
    y_e   = y_e.transpose(1, 2).contiguous().view(B, H, W, -1)
    y_rgb = out_norm1(y_rgb)
    y_e   = out_norm2(y_e)
    return (y_rgb, y_e)

对应关系(图8 & 式(6)):

SSF.forward 里,FF-SSM 被用了 三次

  1. x_fuse_rgb -> self.cm_fusion_rgb(...):融合「RGB 互补特征 + RGB 共享特征」
  2. x_fuse_e -> self.cm_fusion_e(...):融合「E 互补特征 + E 共享特征」
  3. [x_rgb, x_e] -> self.cm_fusion(...):最后再融合「融合后的 RGB 与 融合后的 E」

这整体就是论文里 FF-SSM 的那一整套“前后双向、模态间来回流动”的过程。

损失函数

由MS2Fusion模块生成的融合特征被送入颈部网络(Neck)和检测头(Detection Head),整个流程以端到端的方式进行优化。在本文中,作者分别在基于YOLOv5Co-Detr的两种检测框架中对MS2Fusion进行了评估。

YOLO 框架下的总损失函数

在YOLO框架中,总损失函数可以表示为:

Lyolo=λbboxLbbox+λobjLobj+λclsLcls(7)\begin{align} \mathcal{L}_{yolo} = \lambda_{\text{bbox}} \cdot \mathcal{L}_{\text{bbox}} + \lambda_{\text{obj}} \cdot \mathcal{L}_{\text{obj}} + \lambda_{\text{cls}} \cdot \mathcal{L}_{\text{cls}} \end{align} \tag{7}

其中:

CoDetr 框架下的总损失函数

CoDetr框架采用了一个多任务损失函数,该函数由四个组成部分构成:一个主要的CoDINOHead 和三个辅助检测头(包括RPN头、ROI头和Bbox头)。

总损失函数可以表示为:

LCoDetr=λprimary(LQFL+LL1+LGIoU)+λRPN(LCE+LL1)+λROI(LCE+LGIoU)+λBbox(LFocal+LGIoU+LCE)(8)\begin{align} \mathcal{L}_{\text{CoDetr}} &= \lambda_{\text{primary}} \cdot \left( \mathcal{L}_{\text{QFL}} + \mathcal{L}_{\text{L1}} + \mathcal{L}_{\text{GIoU}} \right) + \lambda_{\text{RPN}} \cdot \left( \mathcal{L}_{\text{CE}} + \mathcal{L}_{\text{L1}} \right) \\ &+ \lambda_{\text{ROI}} \cdot \left( \mathcal{L}_{\text{CE}} + \mathcal{L}_{\text{GIoU}} \right) + \lambda_{\text{Bbox}} \cdot \left( \mathcal{L}_{\text{Focal}} + \mathcal{L}_{\text{GIoU}} + \mathcal{L}_{\text{CE}} \right) \end{align} \tag{8}

其中:

实验

本章节详细介绍了MS2Fusion模型所进行的系列实验,包括实验设置、SOTA(State-of-the-art)比较、泛化能力测试、消融研究和定性分析。

数据集和评估指标

数据集: 本文在四个多光谱目标检测数据集上进行了评估:

  1. FLIR (aligned): 包含5,142对RGB-T图像,分为4,129对训练集和1,013对测试集
  2. LLVIP: 包含15,488对RGB-T图像,12,025对用于训练,3,463对用于测试,主要标注热成像图像
  3. M3FD: 包含4,200对RGB-T对齐图像,涵盖多种条件和六个类别,按8:2划分训练/测试集
  4. VEDAI: 包含3,640个目标实例(9个类别)的航拍图像,共1,210张1024x1024图像,包含RGB和NIR(近红外)通道,按9:1划分训练/测试集

评估指标:

实验设置

SOTA比较

实验在YOLOv5(速度快、精度稍低)和CoDetr(速度慢、精度高)两个框架上进行。YOLOv5检测器的推理速度更快,但精度较低;而CoDetr的检测精度更高,但推理速度较慢。

FLIR 数据集比较

表2: FLIR-align 数据集比较 (‘-’ 表示缺失值. ‘‡’ 符号表示使用CoDetr框架的实验结果,输入图像被调整为640×640像素的固定分辨率)

方法mAP@0.5mAP自行车汽车
MMTOD-CG61.4-50.370.663.3
MMTOD-UNIT61.5-49.470.764.5
CMPD69.4-59.978.169.6
CFR72.4-57.884.974.5
GAFF72.937.5---
BU-ATT73.1-56.187.076.1
BU-LTT73.2-57.486.575.6
UA_CMDet78.6-64.388.483.2
CFT78.740.2---
CSAA79.241.3---
ICAFusion79.241.466.989.081.6
CrossFormer79.342.1---
MFPT80.0-67.789.083.2
MMFN80.841.765.591.285.7
RSDet81.141.4---
MiPa81.344.8---
UniRGB-IR81.444.1---
CPCF82.144.6---
GM-DETR83.945.8---
Fusion-Mamba(yolov5)84.344.4---
Fusion-Mamba(yolov8)84.947.0---
TFDet86.646.6---
DAMSDet86.649.3---
Ours83.340.374.989.885.1
Ours‡87.849.779.693.490.2

分析: 如表2所示,MS2Fusion在YOLOv5框架下达到83.3%的mAP@0.5,在CoDetr框架下达到87.8%的mAP@0.5,均取得了SOTA性能,分别比当前最优方法提升了2.2%和6.7%。尤其在“人”和“自行车”这两个非热源和小目标类别上增益明显。

LLVIP 数据集比较

表3: LLVIP 数据集比较

方法mAP@0.5mAP
DIVFusion89.852.0
GAFF94.055.8
CSAA94.341.3
ECISNet95.7-
RSDet95.861.3
UniRGB-IR96.163.2
UA_CMDet96.3-
CPCF96.465.0
Fusion-Mamba(yolov5)96.862.8
Fusion-Mamba(yolov8)97.064.3
MMFN97.2-
GM-DETR97.470.2
TFDet97.971.1
DAMSDet97.969.6
MiPa98.266.5
Ours97.565.5
Ours‡98.470.6

分析: 如表3所示,MS2Fusion在LLVIP数据集上同样表现出色,YOLOv5框架下mAP@0.5达到97.5%,CoDetr框架下达到98.4%,优于传统的CNN和Transformer方法。

M3FD 数据集比较

表4: M3FD 数据集比较

方法mAP@0.5mAPPeopleBusCarMotorcycleLampTruck
DIDFuse79.052.679.679.792.568.784.768.8
SDNet79.052.979.481.492.367.484.169.3
RFNet79.453.279.478.291.172.885.069.0
ReC79.5-79.478.991.869.387.470.0
U2F79.6-80.779.292.366.887.671.4
DAMSDet80.252.9------
TarDAL80.554.181.581.394.869.387.168.7
DeFusion80.853.880.883.092.569.487.871.4
CDDFusion81.154.381.682.692.571.686.971.5
IGNet81.554.581.682.492.873.086.972.1
SuperFusion83.556.083.793.291.077.470.085.8
Fusion-Mamba(yolov5)85.057.580.392.891.973.084.887.1
MMFN86.2-83.092.193.273.787.687.4
Fusion-Mamba(yolov8)88.061.984.394.292.980.587.588.8
Ours89.459.785.693.793.982.490.889.9
Ours‡91.465.689.895.094.788.288.392.4

分析: 如表4所示,MS2Fusion在M3FD数据集上表现出显著优势,YOLOv5框架提升3.2% (mAP@0.5),CoDetr框架提升5.2% (mAP@0.5)。特别是在摩托车等高热源物体上提升明显,显示了其有效融合热成像特征的能力。

VEDAI 数据集比较

表5: VEDAI 数据集比较

方法mAP@0.5CarTruckPickupTractorCamperShipVanPlane
ICAFusion76.688.067.580.974.978.356.969.896.7
MidFusion177.488.284.981.768.472.271.053.699.5
MidFusion278.989.278.887.666.273.262.573.999.5
Input Fusion180.088.777.779.572.375.778.672.195.7
Input Fusion280.589.184.978.784.270.169.968.898.4
YOLOFusion81.691.778.185.971.978.971.775.299.5
Ours80.289.575.684.281.675.961.876.497.0
Ours‡84.293.378.988.585.880.665.583.697.1

分析: 如表5所示,在VEDAI(航拍)数据集上,MS2Fusion (CoDetr) 达到了84.2%的mAP@0.5,取得了SOTA性能。这表明模型即使没有针对小目标检测进行专门优化,该模型依然能有效关注小目标的多模态特征,在无人机图像应用中表现出鲁棒性。

泛化到其他多模态任务

RGB-T 语义分割

表6: MFNet 数据集比较

方法mIoUCarPersonBikeCurveCar StopGuardrailColor ConeBump
PSTNet48.476.852.655.329.625.115.139.445.0
RTFNet53.287.470.362.745.329.80.029.155.7
FuseSeg54.587.971.764.644.822.76.446.947.9
AFNet54.686.067.462.043.028.94.644.956.6
ABMDRNet54.884.869.660.345.133.15.147.450.0
FEANet55.387.871.161.146.522.16.655.348.9
GMNet57.386.573.161.744.042.314.548.747.4
EGFNet57.589.871.663.946.731.36.752.057.4
DPLNet59.3--------
CMX59.790.175.264.550.235.38.554.260.6
CRM-RGBT-Seg61.490.075.167.045.249.718.454.254.4
MFNet(baseline)63.592.682.178.289.624.11.246.294.2
MS2Fusion-MFNet66.394.482.581.089.934.70.049.798.3

分析: 如表6所示,在MFNet数据集上,MS2Fusion (MS2Fusion-MFNet) 取得了66.3%的最佳mIoU,相比基线提升了2.8%。在凸起和曲线类别上提升尤为明显,这表明MS2Fusion能有效利用跨模态的共享特征(如局部几何特征),显著提升这两个类别的分割性能。

表7: SemanticRT 数据集比较

方法mIoUCarStopBikeBicyclistMtcycleMtcyclistCarTricycleTrafLightBoxPoleCurvePerson
PSTNet68.071.162.358.547.355.285.444.275.783.071.762.272.2
RTFNet75.579.668.067.463.761.690.466.078.385.978.067.278.9
EGFNet77.478.671.370.968.466.190.571.580.485.476.566.983.7
ECM79.380.275.075.571.470.490.374.085.985.677.268.385.0
MFNet(baseline)77.875.377.163.271.157.397.96685.989.582.485.083.2
MS2Fusion-MFNet78.875.377.766.372.359.497.968.286.089.681.884.686.7

分析: 如表7所示,在SemanticRT数据集上,MS2Fusion (MS2Fusion-MFNet) 同样表现优异,mIoU达到78.8%,相比基线提升1.0%,且与SOTA方法 (ECM) 仅相差0.5%,证明了其在多光谱特征融合上的鲁棒性和多功能性。

RGB-T 显著性目标检测 (RGB-T SOD)

表8: VT821, VT1000 和 VT5000 数据集比较 (↓ 表示值越小越好, ↑ 表示值越大越好)

方法VT821VT1000VT5000
S↑adpE↑adpF↑MAE↓S↑adpE↑adpF↑MAE↓S↑adpE↑adpF↑MAE↓
MTMR72.581.566.210.970.683.671.511.968.079.559.511.4
M3S-NIR72.385.976.414.072.682.771.714.565.278.057.516.8
SGDL76.584.776.18.578.785.676.49.075.082.467.28.9
PoolNet75.173.957.810.983.481.371.46.776.975.558.88.9
R3Net78.680.966.07.384.285.976.15.575.779.061.58.3
CPD82.783.771.05.790.690.283.43.284.886.774.15.0
MMCI76.378.461.88.788.689.280.33.982.785.971.45.5
AFNet77.881.666.16.988.891.283.83.383.487.775.05.0
TANet81.885.271.75.290.291.283.83.084.788.375.44.7
S2MA81.181.370.99.891.891.284.82.985.386.474.35.3
JLDCF83.983.072.67.691.289.982.93.086.186.073.95.0
FMCF76.079.664.08.087.389.982.33.781.486.473.45.5
ADF81.084.271.77.791.092.184.73.486.489.177.84.8
MIDD87.189.580.34.591.593.388.02.786.889.679.94.3
LSNet87.291.081.43.692.194.988.12.387.592.081.73.7
CAVER89.892.887.72.793.694.991.11.789.994.184.92.8
DPLNet87.890.881.04.392.895.188.12.287.991.682.83.8
MSEDNET(baseline)87.689.780.33.992.893.986.82.288.191.682.13.7
MS2Fusion-MSEDNET90.493.586.33.294.497.291.81.690.294.286.43.0

分析: 如表8所示,MS2Fusion (MS2Fusion-MSEDNET) 在三个RGB-T SOD数据集上均达到了SOTA性能。例如,在VT5000上,MAE指标从基线的3.7降低到3.0;在VT1000上,adpF指标从86.8提升到91.8。MS2Fusion在所有评估指标上均排名第一或第二,展示了其在RGB-T SOD任务中的卓越特征融合能力。

消融研究

所有消融研究均在FLIR数据集和YOLOv5框架上进行。

不同检测框架的影响

表9: 不同骨干网络和检测框架的影响

编号框架融合模型汽车自行车mAP@0.5FPS
1YOLOv5Baseline83.888.967.380.043.2
2MS2Fusion85.189.874.983.3 (+3.3)24.4
3CoDetrBaseline88.091.773.884.55.9
4MS2Fusion90.293.479.687.8 (+3.3)4.8

分析: 如表9所示,MS2Fusion模块在YOLOv5和CoDetr两个主流检测框架上,均比基线(add fusion)带来了**3.3%**的mAP@0.5提升。这证明了MS2Fusion具有出色的“即插即用”特性和强大的泛化能力。

不同骨干网络的影响

表10: 不同骨干网络的影响

编号骨干网络融合模型汽车自行车mAP@0.5
1VGG16Baseline78.987.751.272.6
2MS2Fusion79.087.853.873.6 (+1.0)
3ResNet50Baseline76.885.744.669.0
4MS2Fusion80.288.452.873.8 (+4.8)
5CSPDarkNet53Baseline83.888.967.380.0
6MS2Fusion85.189.874.983.3 (+3.3)

分析: 如表10所示,MS2Fusion在VGG16、ResNet50和CSPDarkNet53三种不同骨干网络上均实现了一致的性能增益,分别提升了1.0%、4.8%和3.3% (mAP@0.5)。这进一步证实了MS2Fusion模块对不同骨干架构的强大泛化能力和兼容性。

不同模块的影响

表11: 不同融合模块的影响

编号CP-SSMSP-SSMFF-SSM汽车自行车mAP@0.5Params(M)
183.888.967.380.072.7
283.889.872.782.1 (+2.1)84.5
385.690.470.682.2 (+2.2)90.4
484.990.172.482.5 (+2.5)86.0
584.990.372.982.7 (+2.7)117.0
685.590.072.582.7 (+2.7)97.8
785.590.372.982.9 (+2.9)103.7
885.189.874.983.3 (+3.3)130.2

分析: 如表11所示,基线(第1行)mAP为80.0%。

不同融合层的影响

表12: 在不同层进行融合的影响

编号P3P4P5汽车自行车mAP@0.5
183.888.967.380.0
283.488.571.481.1 (+1.1)
385.890.170.082.0 (+2.0)
485.189.874.983.3 (+3.3)

分析: 如表12所示,对比了在不同特征层(P3, P4, P5)应用MS2Fusion模块的效果。

CP-SSM 的讨论

表13: CP-SSM 的微调

编号微调汽车自行车mAP@0.5
1rows85.189.874.983.3
2columns64.190.372.882.4
3rows and columns85.490.470.282.0
4w/o exchange C85.790.671.782.7
5exchange C85.189.874.983.3

分析: 表13探索了CP-SSM的两个关键设计:

  1. 扫描方向 (row 1-3): 实验发现,仅按行(rows)扫描(第1行)效果最好(83.3% mAP)。使用多方向扫描(rows and columns,第3行)反而导致性能下降(82.0% mAP),可能是因为它改变了目标特征,不利于检测任务所需的稳定性
  2. C参数交换 (row 4-5): 对比“不交换C”(第4行,82.7% mAP)和“交换C”(第5行,83.3% mAP),发现交换C参数的机制(即跨模态分支交换隐藏状态投影矩阵)带来了**0.6%**的稳定性能提升。这证明了该设计能有效优化跨特征交互效率

不同输入模态的比较

表14: 不同输入的性能 (V, T 分别表示可见光和热成像。V+T表示双模态输入,V+V或T+T表示单模态输入。)

编号模型输入mAP@0.5
1YOLOv5V67.8
2T73.9
3BaselineV+V61.2
4T+T77.8
5V+T80.0
6OursV+V68.4 (+7.2)
7T+T82.1 (+4.3)
8V+T83.3 (+3.3)

分析: 表14展示了MS2Fusion在处理缺失模态时的鲁棒性。

FF-SSM 输入配置分析

表15: FF-SSM 模块的输入配置

FF-SSM inputmAP@0.5personcarbicycle
(V, T)83.185.490.273.9
(T, V)82.585.190.172.4
((V, T), (T, V))83.385.189.874.9

分析: 表15研究了FF-SSM模块的输入顺序。

定性分析

模型统计分析

表16: 模型的统计分析 (释放随机种子进行10次实验)

Mean(%)VAR(%)
mAP@0.5mAPmAP@0.5mAP
FLIR82.9940.600.152.47
LLVIP97.4163.460.032.31
M3FD89.1159.760.180.42

分析: 如表16所示,通过10次随机种子实验,MS2Fusion表现出极高的稳定性。在FLIR上mAP@0.5方差仅为0.15%,在LLVIP上方差低至0.03%。这表明模型对初始条件变化具有很强的抵抗力,在不同数据分布上保持一致性能。

热图可视化 (图10)

对比Baseline、ICAFusion和MS2Fusion:

特征融合比较可视化 (图11)

对比P5层的特征图 (Baseline vs MS2Fusion):

共享和互补特征的可视化分析 (图12)

在低光照条件下可视化CP-SSM和SP-SSM的输出:

RGB-T 语义分割样本可视化 (图13)

对比Baseline和MS2Fusion的分割结果:

RGB-T 显著性目标检测样本可视化 (图14)

对比Ours (MS2Fusion) 和其他SOTA方法:

局限性 (图15)

分析了几个失败案例:

  1. 远处物体: 当物体距离远且在热图像中不突出(热信号与背景接近)时,模型难以区分物体和背景。
  2. 遮挡物体: 模型倾向于忽略部分或完全被遮挡的物体,导致漏检。
  3. 热相似物体的假阳性: 具有与人相似热特征的物体(如第3行)会导致假阳性检测,尤其是在低分辨率图像中,模型难以区分。

结论

本论文提出了**多光谱状态空间特征融合(MS2Fusion)**框架,旨在解决现代多光谱目标检测中存在的两个关键限制:一是过度偏向局部互补特征,而忽略跨模态共享语义,影响了泛化性能;二是感受野尺寸和计算复杂度之间的权衡,是可扩展特征建模的关键瓶颈。

MS2Fusion基于状态空间模型(SSM),通过双路径参数交互机制实现了高效且有效的特征融合。

这两种路径在一个统一的框架内通过SSM进行联合优化,使MS2Fusion能够同时享有功能互补性和共享语义空间。得益于这种双分支SSM设计,本方法同时继承了计算效率全局感受野的优点,显著提高了多光谱目标检测的性能。

实验结果表明,MS2Fusion持续优于现有强大的基线方法:

值得注意的是,MS2Fusion无需针对特定任务进行修改,即可在多个多光谱感知任务上实现新的最先进(SOTA)结果,充分证明了其卓越的泛化能力


分享文章:

  1. 【论文阅读 | TPAMI 2025 | RWKVFusion:利用统一语言与掩码引导的高效图像融合网络】论文阅读 · An Efficient Image Fusion Network Exploiting Unifying Language and Mask Guidance
  2. 【论文阅读 | ICCV 2025 | M-SpecGene:面向 RGBT 多光谱视觉的通用基础模型】论文阅读 · M-SpecGene:面向 RGBT 多光谱视觉的通用基础模型
  3. 【论文阅读 | TCSVT 2025 | T²EA:目标感知泰勒展开近似网络】论文阅读 · T²EA:Target-Aware Taylor Expansion Approximation Network for Infrared & Visible Fusion
上一篇
【论文阅读 | 2024 ICM | Problem F | 2409949】
下一篇
2025.10.28 C语言程序设计上机实习二