全文包含可直接运行的代码建议点赞收藏 关注后续持续更新双模态检测改进创新系列内容。本文是双模态系列的第10篇收藏文集持续跟进顶刊创新思路。跨模态特征融合主要面向可见光 - 红外、RGB - 多光谱、雷达 - 图像等互补数据核心流程为特征对齐、模态交互、自适应融合与精炼。首先采用双分支结构利用 CNN 或 Transformer 分别对不同模态进行独立特征提取在保留红外抗干扰、RGB 纹理细节等独有信息的同时输出空间尺寸相近的特征图。随后通过 1×1 卷积实现通道维度统一完成特征空间对齐为后续交互奠定基础。融合核心在于跨模态注意力交互通过通道注意力筛选关键特征通道借助空间注意力强化目标区域并抑制背景干扰结合查询 - 键值机制实现模态间信息互补与自适应加权。特征融合常采用通道拼接、逐元素相加或门控加权等方式动态分配不同模态的贡献度。最后利用 3×1 卷积或残差结构对融合特征进行精炼降低信息混叠与噪声干扰输出鲁棒性更强的联合特征用于后续目标检测任务。下面的模块可以用来取代特征级融合中简单的Concat操作1.Dual-Dynamic Cross-Modal Interaction Network for Multimodal Remote Sensing Object Detectionimport torch import torch.nn as nn import torch.nn.functional as F class DynamicFeatureFusion(nn.Module): 【YOLO适配版】严格复现DDCINet论文 Dynamic Feature Fusion (DFF) 模块 完全对齐公式、维度、操作、符号、流程 输入x - [X, Y] 双模态遥感特征列表 输出Z - [B, C, H, W] 动态融合特征 # 接口适配 1接收 YOLO 标准参数 c1, c2 def __init__(self, c1, c2, reduction_ratio: int 16): super().__init__() # c1 在 YAML 中传入的是双路通道列表如 [512, 512] self.C c1[0] if isinstance(c1, list) else c1 self.r reduction_ratio # 论文Conv1×1 C → 1提取模态全局上下文 self.conv_g nn.Conv2d(in_channelsself.C, out_channels1, kernel_size1, biasFalse) # 论文生成融合因子a的两层1×1卷积 self.conv_reduce nn.Conv2d(self.C, self.C // self.r, kernel_size1, biasFalse) self.conv_restore nn.Conv2d(self.C // self.r, self.C, kernel_size1, biasFalse) self.relu nn.ReLU(inplaceTrue) self.sigmoid nn.Sigmoid() # 接口适配 2增加一个可选的维度对齐层确保输出能够匹配下游网络的期望 c2 self.proj nn.Conv2d(self.C, c2, kernel_size1) if self.C ! c2 else nn.Identity() # 接口适配 3接收单参数 x并在内部解包 def forward(self, x): X_prime, Y_prime x[0], x[1] B, C, H, W X_prime.shape HW H * W # 1. 计算 Gx, Gy 严格对齐论文Reshape3 # Conv1×1^{C→1} gx self.conv_g(X_prime) # [B, 1, H, W] gy self.conv_g(Y_prime) # [B, 1, H, W] # 空间维度Softmax全局空间归一化 gx F.softmax(gx.flatten(2), dim-1) # [B, 1, HW] gy F.softmax(gy.flatten(2), dim-1) # [B, 1, HW] # Reshape31×H×W → HW×1×1 Gx gx.permute(0, 2, 1).unsqueeze(-1) # [B, HW, 1, 1] Gy gy.permute(0, 2, 1).unsqueeze(-1) # [B, HW, 1, 1] # 2. 计算 S 严格对齐论文Reshape4矩阵乘 # Reshape4C×H×W → C×HW X_seq X_prime.flatten(2) # [B, C, HW] Y_seq Y_prime.flatten(2) # [B, C, HW] # 矩阵乘法Reshape4(X)·Gx Reshape4(Y)·Gy → [B, C, 1] S_x torch.bmm(X_seq, Gx.squeeze(-1)) S_y torch.bmm(Y_seq, Gy.squeeze(-1)) S S_x S_y # [B, C, 1] # 恢复为 [B, C, 1, 1] 适配卷积输入 S S.unsqueeze(-1) # [B, C, 1, 1] # 3. 计算融合因子 a 严格对齐论文卷积流程 a self.conv_reduce(S) # [B, C//r, 1, 1] a self.relu(a) a self.conv_restore(a) # [B, C, 1, 1] a self.sigmoid(a) # 4. 最终融合 Z a·X (1-a)·Y Z a * X_prime (1 - a) * Y_prime # 接口适配 4输出维度对齐 return self.proj(Z)DFF 模块通过全局空间注意力与动态融合因子实现跨模态特征的自适应加权摒弃了简单拼接仅做通道堆叠的粗糙方式能够依据场景自动学习并分配 RGB 与红外特征的贡献比例有效突出目标关键信息并抑制冗余背景让融合特征更具针对性与判别性。该模块利用全局上下文建模与矩阵变换完成特征聚合可捕捉长距离空间依赖关系而简单拼接仅做局部特征叠加无法感知全局语义关联因此 DFF 在复杂环境、目标遮挡及尺度变化场景下能生成更鲁棒的融合表征。模块通过动态权重 α 实现端到端的模态均衡融合避免了拼接带来的通道数翻倍、参数量与计算量激增的问题同时保持特征维度一致且兼容性强在不显著增加计算负担的前提下大幅提升检测稳定性更适配轻量化目标检测框架。2.CCSFuse: Collaborative Compensation and SelectiveFusion for UAV-based RGB-IR Object Detectionimport torch import torch.nn as nn import torch.nn.functional as F class AFSF(nn.Module): 修正版自适应特征选择融合模块 (Adaptive Feature-Selection Fusion) 100%对齐CCSFuse论文公式结构无多余算子无逻辑错误 Args: in_channels (int): 单模态输入特征通道数RGB/IR特征通道一致 reduction (int): MLP通道压缩比例论文默认16 def __init__(self, in_channels: int, reduction: int 16): super().__init__() self.in_channels in_channels # 1. 全局平均池化论文唯一池化算子 self.gap nn.AdaptiveAvgPool2d(1) # 2. 跨模态MLP严格对齐论文Linear → GELU → Linear无末尾激活 # 输入拼接RGBIR权重 → 2*in_channels self.mlp nn.Sequential( nn.Linear(2 * in_channels, in_channels // reduction), nn.GELU(), nn.Linear(in_channels // reduction, 2 * in_channels) ) # 3. 权重归一化论文必须Sigmoid将权重压缩到[0,1] self.sigmoid nn.Sigmoid() # 4. 自适应特征融合1×1卷积降维对齐论文 self.fuse_conv nn.Conv2d(2 * in_channels, in_channels, kernel_size1) def forward(self, x): 前向传播 (YOLO 适配版) Args: x (list): 包含双路特征的列表 [f_rgb_cmfc, f_ir_cmfc] # 核心修复在这里对 YOLO 传进来的列表 x 进行解包 f_rgb_cmfc, f_ir_cmfc x[0], x[1] B, C, H, W f_rgb_cmfc.shape # Step1单模态通道描述符 feat_rgb_gap self.gap(f_rgb_cmfc).flatten(1) # [B, C] feat_ir_gap self.gap(f_ir_cmfc).flatten(1) # [B, C] # Step2跨模态权重学习 weight_cat torch.cat([feat_rgb_gap, feat_ir_gap], dim1) # [B, 2C] weight_cross self.mlp(weight_cat) # [B, 2C] # Step3权重拆分归一化 weight_rgb weight_cross[:, :C].view(B, C, 1, 1) # [B, C, 1, 1] weight_ir weight_cross[:, C:].view(B, C, 1, 1) # [B, C, 1, 1] weight_rgb self.sigmoid(weight_rgb) weight_ir self.sigmoid(weight_ir) # Step4通道校准特征融合 f_rgb_cal f_rgb_cmfc * weight_rgb f_ir_cal f_ir_cmfc * weight_ir fused_feat torch.cat([f_rgb_cal, f_ir_cal], dim1) fused_feat self.fuse_conv(fused_feat) return fused_featAFSF 模块通过跨模态自适应权重学习实现精准特征增强利用全局平均池化与 MLP 网络自动学习 RGB 与红外特征的重要性权重对不同模态特征进行独立通道校准而非简单拼接的无差别堆叠可有效强化目标关键特征、抑制背景噪声大幅提升融合特征的判别性与表达能力。该模块采用先加权校准再融合的策略让每个模态特征在融合前完成优化增强避免了简单拼接带来的信息冗余与通道混杂问题通过 1×1 卷积实现维度统一保留模态互补特性的同时减少无效信息干扰使输出特征更纯净、更适配后续检测任务。模块整体结构轻量化、计算高效仅通过池化、MLP 与卷积实现自适应融合无需复杂空间操作即可完成高质量跨模态聚合相比拼接导致的通道数翻倍、计算量增加的问题AFSF 在保持低开销的同时显著提升检测鲁棒性更适合嵌入式与实时检测场景。3.Complementary Advantages: Exploiting Cross-Field Frequency Correlation for NIR-Assisted Image Denoisingimport torch import torch.nn as nn import torch.fft class FEFM(nn.Module): 【YOLO 完美适配版】Frequency Exhaustive Fusion Mechanism (FEFM) 具备 AMP 混合精度防溢出保护接口无缝对接 YOLO11。 def __init__(self, c1, c2, reduction8): super().__init__() # 接口适配YOLO 传入的 c1 是双路通道列表 in_channels1 c1[0] in_channels2 c1[1] out_channels c2 # YOLO 期望的输出通道数 # 通道调整层将不同通道数的输入调整到统一的中间通道数 mid_channels max(in_channels1, in_channels2) self.conv_r nn.Conv2d(in_channels1, mid_channels, kernel_size1) self.conv_n nn.Conv2d(in_channels2, mid_channels, kernel_size1) # 点卷积和深度卷积层定义 self.point_conv_Q nn.Conv2d(mid_channels, mid_channels, kernel_size1) self.depth_conv_Q nn.Conv2d(mid_channels, mid_channels, kernel_size3, padding1, groupsmid_channels) self.point_conv_K nn.Conv2d(mid_channels, mid_channels, kernel_size1) self.depth_conv_K nn.Conv2d(mid_channels, mid_channels, kernel_size3, padding1, groupsmid_channels) self.point_conv_V nn.Conv2d(mid_channels, mid_channels, kernel_size1) self.depth_conv_V nn.Conv2d(mid_channels, mid_channels, kernel_size3, padding1, groupsmid_channels) # 最终输出层调整通道数到out_channels self.out_conv nn.Conv2d(mid_channels, out_channels, kernel_size1) # 注意力机制与自适应参数 self.alpha nn.Parameter(torch.tensor(1.0)) # CFR缩放因子 self.lambd nn.Parameter(torch.tensor(0.5)) # DFR权重因子 self.beta nn.Parameter(torch.tensor(0.5)) # 频域与空间融合的平衡因子 # 通道注意力机制 (SK-Net Style) self.avg_pool nn.AdaptiveAvgPool2d(1) d max(int(mid_channels / reduction), 4) self.mlp nn.Sequential( nn.Conv2d(mid_channels, d, 1, biasFalse), nn.ReLU(inplaceTrue), nn.Conv2d(d, mid_channels * 2, 1, biasFalse) ) self.softmax nn.Softmax(dim1) def forward(self, x): # 接口适配解包 YOLO 传进来的双流特征列表 F_R, F_N x[0], x[1] orig_dtype F_R.dtype # 记录原始数据类型 (通常是 float16) F_R self.conv_r(F_R) F_N self.conv_n(F_N) # 1. 特征拼接 F_concat torch.cat([F_R, F_N], dim1) B, C_total, H, W F_concat.shape # 2. 通道注意力自适应融合 F_concat_reshaped F_concat.view(B, 2, C_total // 2, H, W) feats_sum torch.sum(F_concat_reshaped, dim1) attn self.mlp(self.avg_pool(feats_sum)) attn self.softmax(attn.view(B, 2, C_total // 2, 1, 1)) F_weighted torch.sum(F_concat_reshaped * attn, dim1) # 3. 特征编码 Q self.depth_conv_Q(self.point_conv_Q(F_weighted)) K self.depth_conv_K(self.point_conv_K(F_weighted)) V self.depth_conv_V(self.point_conv_V(F_weighted)) # AMP 绝密防御强制转为 FP32 避开 ComplexHalf 报错 Q_fp32 Q.to(torch.float32) K_fp32 K.to(torch.float32) # 4. 频域转换 (安全模式) F_Q torch.fft.fft2(Q_fp32, dim(-2, -1)) F_K torch.fft.fft2(K_fp32, dim(-2, -1)) # 5. Common Feature Reinforcement (CFR) elem_product F_Q * F_K B, C, H, W F_Q.shape F_Q_flat F_Q.view(B, C, -1) F_K_flat F_K.view(B, C, -1) # 在 FP32 下安全执行复数点乘与绝对值计算 attn_matrix torch.matmul(F_Q_flat, F_K_flat.transpose(1, 2)) attn_weights torch.softmax(attn_matrix.abs() / self.alpha, dim-1) attn_weights_complex torch.complex(attn_weights, torch.zeros_like(attn_weights)) elem_product_flat elem_product.view(B, C, -1) F_CFR_flat torch.matmul(attn_weights_complex, elem_product_flat) F_CFR F_CFR_flat.view(B, C, H, W) # 逆FFT转换回空间域并取实部 cfr_spatial torch.fft.ifft2(F_CFR, dim(-2, -1)).real # 降级回原始精度 (float16)安全交还给 YOLO 网络 cfr_spatial cfr_spatial.to(orig_dtype) # 6. Differential Feature Reinforcement (DFR) F_DFR V - self.lambd * V * cfr_spatial # 7. 最终融合 freq_output Q * cfr_spatial F_DFR output self.beta * freq_output (1 - self.beta) * F_weighted # 调整输出通道数到 YOLO Head 期望的 out_channels output self.out_conv(output) return output(注意代码计算量很大需要关闭AMP否则会梯度爆炸NAN)FEFM 模块创新性地结合空间与频域双域特征建模通过傅里叶变换捕捉跨模态特征的全局频域信息实现公共特征增强与差异特征补偿相比简单拼接仅在空间维度堆叠特征能够挖掘更深层的模态互补信息显著提升融合特征的完整性与表达能力。该模块嵌入自适应通道注意力与可学习参数自动加权优化 RGB 与红外模态的贡献比重配合深度分离卷积实现高效特征编码避免了拼接带来的信息冗余与通道混杂问题让目标相关特征得到精准强化有效提升复杂场景下的检测鲁棒性。模块通过公共特征强化与差异特征补偿机制实现精细化融合保留模态共性与独有信息相比简单拼接的无差别融合方式可有效抑制噪声干扰同时保持轻量化计算效率更适配 YOLO 系列实时检测框架的工程化部署需求。总结与反思三个模块均采用自适应加权融合思路通过注意力、MLP 或频域建模自主学习模态权重摒弃简单拼接的无差别堆叠能精准强化目标特征、抑制背景噪声大幅提升跨模态特征的判别性与鲁棒性。它们分别从动态权重分配、通道自适应校准、空间 - 频域联合建模实现深度跨模态交互充分挖掘 RGB 与红外的互补信息解决了拼接无法建模模态关联的缺陷对小目标、遮挡目标检测提升明显。所有模块均轻量化且兼容 YOLO 检测框架通过维度对齐、1×1 卷积与可学习参数控制计算量避免拼接带来的通道剧增问题在保证实时性的同时显著提升检测精度更适合实际工程部署。后续将进行更新以及进行二次创新发顶刊必备。。。敬请关注笔者整理双模态检测的专属论文资料免费分享给粉丝需要关注后领取。