当前位置: 首页 > news >正文

SFEDet:稀疏融合+滚动卷积,RGB-T目标检测24.5M参数碾压288M Fu-Mamba

🔥痛点:RGB-T检测器要吃双模态,重型双骨干+全图融合FLOPs飙到上千G,轻量化一直是难题
🎯方案:SFEDet(哈尔滨工业大学深圳)提出稀疏融合机制——先快速扫描过滤背景,再对稀疏RoI做融合检查精炼
📌核心:差分增强分组融合(DEGF)+ 滚动卷积 + 去噪训练策略,24.5M参数、69G FLOPs
结果:M3FD mAP 61.0%、FLIR mAP 43.0%、LLVIP mAP 65.9%,参数量仅为Fu-Mamba的8.5%


前言

RGB-T目标检测通过融合可见光(RGB)和热红外(TIR)两种模态,能够在夜间、雾霾等恶劣光照条件下实现鲁棒检测。近年来,该领域涌现了大量优秀工作:

  1. 密集融合范式主导:ICAFusion、EI2Det、Fu-Mamba等方法采用双骨干+全图跨模态融合,虽然精度持续提升,但计算成本动辄数百G FLOPs,难以部署到边缘设备。Fu-Mamba更是达到288M参数、1133G FLOPs(M3FD),效率瓶颈明显
  2. 稀疏化思想初现:部分工作开始探索稀疏融合,但大多停留在token级别或特征图级别,未从根本上解决"全图融合"的计算浪费问题
  3. 关键观察被忽视:大多数RGB-T图像中,70%以上的区域是天空、地面等平滑背景,完全可以用轻量级单模态模型快速过滤,无需昂贵的跨模态融合

针对上述问题,哈工大深圳的Chao Tian等人提出SFEDet(Sparse Fusion Efficient Detector),首次在RGB-T检测中实现稀疏融合机制:先用两个轻量级RPN快速扫描图像识别候选区域,再对稀疏的RoI做融合驱动检查与精炼。24.5M参数、69G FLOPs,在三大基准上全面超越288M参数的Fu-Mamba。


一、整体架构

1.1 设计动机

SFEDet的核心洞察来自一个简单事实:大多数图像区域是平滑背景

核心流程

  • Stage 1(快速扫描):两个独立的轻量级RPN(YOLOv8-Small,各8.4M参数)分别处理RGB和TIR图像,快速识别潜在前景区域(RoI)。通过取两个模态RoI的并集,避免遗漏真实目标
  • Stage 2(稀疏融合):仅在候选RoI区域内进行昂贵的跨模态融合。FER模块通过差分增强分组融合、辅助特征增强、滚动卷积等技术,对每个RoI进行精细检查和逐步精炼

这种设计使得计算成本主要取决于目标数量而非图像分辨率,天然适合高分辨率场景。

1.2 模块参数分布

模块参数量说明
RPN-RGB8.4MYOLOv8-Small
RPN-TIR8.4MYOLOv8-Small
DEGF0.95M差分增强分组融合
辅助增强-11.11M第一阶段辅助特征
FER-Head-12.27M第一阶段检测头
辅助增强-21.11M第二阶段辅助特征
FER-Head-22.27M第二阶段检测头
总计24.5M

二、核心模块拆解

2.1 差分增强分组融合(DEGF)

DEGF是FER模块的核心融合单元,通过分组差分增强实现高效跨模态融合。

分组融合(Group-wise Fusion)

  • 将RGB和TIR的RoI特征沿通道维度分成N组(默认N=8)
  • 每组独立计算融合权重,实现细粒度的模态自适应

差分增强(Differential Enhancement)

# 差分增强公式F_hat_rgb=F_fpn_rgb*Ψ_rgb(F_fu^1-F_fpn_rgb)F_hat_tir=F_fpn_tir*Ψ_tir(F_fu^1-F_fpn_tir)F_fu^2=LayerNorm(F_fu^1+F_hat_rgb+F_hat_tir)
  • 通过计算融合特征与原始FPN特征的差值,捕获跨模态互补信息
  • 差值操作比拼接(Concatenation)更轻量,比加法(Add)性能更优
  • 消融实验显示:差分增强使mAP提升0.4%(M3FD),且不增加FLOPs

2.2 辅助特征增强

FPN特征来自网络深层,包含高级语义但缺少低级空间细节。SFEDet引入骨干网络的浅层特征作为辅助输入:

  • 通过RoI Align从骨干网络的第三阶段特征图中重新提取RoI特征
  • 两阶段增强:第一阶段用FPN高层特征,第二阶段用骨干浅层特征
  • 消融实验:辅助特征使mAP提升0.9%(从59.1%到60.0%)

2.3 滚动卷积(Rolling Convolution)

传统分组卷积(Group Convolution)的级联会导致组间信息交互不足。SFEDet提出滚动卷积

原始特征 → 按组卷积 → 输出1 ─┐ ├→ 拼接 → 1×1卷积 → 最终输出 滚动特征 → 按组卷积 → 输出2 ─┘
  • 对特征进行通道维度滚动(偏移量为组内通道数的一半),再做第二组卷积
  • 两次卷积结果拼接后通过1×1卷积融合
  • 效果:比标准卷积减少22% FLOPs(144.4G → 112.6G),mAP反而提升0.1%

2.4 去噪训练策略

RPN在训练早期可能不够鲁棒,遗漏包含目标的区域。SFEDet借鉴DN-DETR的去噪思想:

  • 在训练时向RoI列表中添加N组带噪声的GT框
  • 噪声范围:坐标偏移量为框宽/高的±40%
  • 作用:增强训练样本多样性,鼓励FER模块学习困难样本
  • 消融实验:去噪策略使mAP提升1.1%(从59.9%到61.0%)

三、PyTorch代码实现

3.1 环境配置

# 创建conda环境conda create-nsfedetpython=3.10-yconda activate sfedet# 安装PyTorch(根据CUDA版本选择)pipinstalltorch torchvision --index-url https://download.pytorch.org/whl/cu121# 安装依赖pipinstallultralytics# YOLOv8pipinstalleinops

3.2 DEGF模块完整代码

importtorchimporttorch.nnasnnimporttorch.nn.functionalasFclassRollingConv(nn.Module):"""🚀 滚动卷积:通过通道滚动实现组间信息交互,比标准卷积减少22% FLOPs"""def__init__(self,in_channels,out_channels,groups=8,kernel_size=3,padding=1):super().__init__()self.groups=groups self.group_size=in_channels//groups# 第一组卷积self.conv1=nn.Conv2d(in_channels,out_channels,kernel_size,padding=padding,groups=groups,bias=False)# 第二组卷积(滚动后)self.conv2=nn.Conv2d(in_channels,out_channels,kernel_size,padding=padding,groups=groups,bias=False)# 融合卷积self.conv_fuse=nn.Conv2d(out_channels,out_channels,1,bias=False)defforward(self,x):B,C,H,W=x.shape# 第一组卷积out1=self.conv1(x)# 通道滚动:每个组内偏移 group_size//2shift=self.group_size//2x_rolled=torch.roll(x,shifts=shift,dims=1)# 第二组卷积out2=self.conv2(x_rolled)# 拼接并融合out=torch.cat([out1,out2],dim=1)out=self.conv_fuse(out)returnoutclassDEGF(nn.Module):"""🚀 差分增强分组融合:通过差值捕获跨模态互补信息,比Add性能更优"""def__init__(self,in_channels,groups=8):super().__init__()self.groups=groups# 差分增强的卷积块self.psi_rgb=nn.Sequential(nn.Conv2d(in_channels,in_channels//groups,1),nn.SiLU(),nn.Conv2d(in_channels//groups,in_channels,1),nn.Sigmoid())self.psi_tir=nn.Sequential(nn.Conv2d(in_channels,in_channels//groups,1),nn.SiLU(),nn.Conv2d(in_channels//groups,in_channels,1),nn.Sigmoid())# 滚动卷积self.rolling_conv=RollingConv(in_channels,in_channels,groups=groups)self.norm=nn.LayerNorm([in_channels])defforward(self,fpn_rgb,fpn_tir,fused_prev):""" Args: fpn_rgb: RGB FPN特征 [B, C, H, W] fpn_tir: TIR FPN特征 [B, C, H, W] fused_prev: 上一阶段融合特征 [B, C, H, W] Returns: fused: 增强后的融合特征 [B, C, H, W] """# 差分增强diff_rgb=fused_prev-fpn_rgb diff_tir=fused_prev-fpn_tir# 自适应门控gate_rgb=self.psi_rgb(diff_rgb)gate_tir=self.psi_tir(diff_tir)# 增强特征enhanced_rgb=fpn_rgb*gate_rgb enhanced_tir=fpn_tir*gate_tir# 融合fused=fused_prev+enhanced_rgb+enhanced_tir# 滚动卷积进一步增强fused=self.rolling_conv(fused)# LayerNormB,C,H,W=fused.shape fused=fused.permute(0,2,3,1)# [B, H, W, C]fused=self.norm(fused)fused=fused.permute(0,3,1,2)# [B, C, H, W]returnfusedclassFERModule(nn.Module):"""🚀 融合驱动检查与精炼模块:FER是SFEDet的核心,仅在稀疏RoI上运行"""def__init__(self,in_channels=128,num_classes=6,groups=8):super().__init__()# DEGF融合self.degf=DEGF(in_channels,groups=groups)# 辅助特征增强self.aux_enhance=nn.Sequential(nn.Conv2d(in_channels,in_channels,1),nn.SiLU(),nn.Conv2d(in_channels,in_channels,3,groups=groups,padding=1),nn.SiLU())# 检测头(分类 + 回归)self.cls_head=nn.Sequential(nn.AdaptiveAvgPool2d(1),nn.Flatten(),nn.Linear(in_channels,512),nn.SiLU(),nn.Linear(512,num_classes))self.reg_head=nn.Sequential(nn.AdaptiveAvgPool2d(1),nn.Flatten(),nn.Linear(in_channels,512),nn.SiLU(),nn.Linear(512,4)# 4个偏移量)defforward(self,fpn_rgb,fpn_tir,aux_rgb=None,aux_tir=None):""" Args: fpn_rgb: RGB FPN特征 fpn_tir: TIR FPN特征 aux_rgb: RGB骨干浅层特征(可选) aux_tir: TIR骨干浅层特征(可选) Returns: cls_logits: 分类输出 [B, num_classes] reg_pred: 回归输出 [B, 4] """# 初始融合(加法)fused=fpn_rgb+fpn_tir# DEGF增强fused=self.degf(fpn_rgb,fpn_tir,fused)# 辅助特征增强ifaux_rgbisnotNoneandaux_tirisnotNone:aux=self.aux_enhance(aux_rgb+aux_tir)fused=fused+aux# 检测头cls_logits=self.cls_head(fused)reg_pred=self.reg_head(fused)returncls_logits,reg_pred

3.3 完整SFEDet网络

importtorchimporttorch.nnasnnfromultralyticsimportYOLOclassSFEDet(nn.Module):"""🚀 SFEDet:稀疏融合高效RGB-T检测器 核心思想: 1. 双轻量级RPN快速扫描,过滤背景 2. 仅在稀疏RoI上做融合驱动检查与精炼 3. 滚动卷积 + 去噪训练,兼顾效率与精度 """def__init__(self,num_classes=6,groups=8):super().__init__()# 双RPN(使用YOLOv8-Small作为backbone)self.backbone_rgb=YOLO('yolov8s.yaml').model self.backbone_tir=YOLO('yolov8s.yaml').model# FER模块self.fer_1=FERModule(128,num_classes,groups)# 第一阶段self.fer_2=FERModule(128,num_classes,groups)# 第二阶段# RoI Alignself.roi_align=nn.RoIAlign(output_size=7,spatial_scale=1/16,sampling_ratio=2)defforward(self,rgb,tir,proposals=None):""" Args: rgb: RGB图像 [B, 3, H, W] tir: TIR图像 [B, 3, H, W] proposals: 候选框列表(训练时由RPN生成) Returns: cls_logits: 分类输出 reg_pred: 回归输出 """B=rgb.shape[0]# Stage 1: 双RPN快速扫描feat_rgb=self.backbone_rgb(rgb)feat_tir=self.backbone_tir(tir)# 生成RoI(训练时从RPN输出,推理时从NMS)ifproposalsisNone:proposals=self._generate_proposals(feat_rgb,feat_tir)# RoI Align提取配对特征roi_rgb=self.roi_align(feat_rgb,proposals)roi_tir=self.roi_align(feat_tir,proposals)# Stage 2: FER融合检查与精炼cls_1,reg_1=self.fer_1(roi_rgb,roi_tir)cls_2,reg_2=self.fer_2(roi_rgb,roi_tir)# 逐步精炼(最终预测用第二阶段)returncls_2,reg_2def_generate_proposals(self,feat_rgb,feat_tir):"""从双RPN生成候选框并取并集"""# 这里简化实现,实际需要NMS和并集操作# 真实实现参考论文Appendix Bpass# 测试代码if__name__=="__main__":# 创建模型model=SFEDet(num_classes=6)# 模拟输入rgb=torch.randn(1,3,640,640)tir=torch.randn(1,3,640,640)# 前向传播cls_logits,reg_pred=model(rgb,tir)print(f"分类输出:{cls_logits.shape}")# [1, 6]print(f"回归输出:{reg_pred.shape}")# [1, 4]print(f"总参数量:{sum(p.numel()forpinmodel.parameters())/1e6:.1f}M")

四、YOLO迁移3 Steps

SFEDet的设计思想可以轻松迁移到YOLO系列,实现高效的双模态检测。

Step 1:双骨干提取特征

# 使用YOLOv8-Small作为双RPN的backbonefromultralyticsimportYOLO# 创建双骨干backbone_rgb=YOLO('yolov8s.yaml')# 8.4M参数backbone_tir=YOLO('yolov8s.yaml')# 8.4M参数# 提取多尺度特征feat_rgb=backbone_rgb.model.extract_features(rgb)# [P3, P4, P5]feat_tir=backbone_tir.model.extract_features(tir)# [P3, P4, P5]

Step 2:稀疏RoI提取

# 从双RPN生成候选框proposals_rgb=backbone_rgb.predict(rgb,conf=0.25)# RGB候选框proposals_tir=backbone_tir.predict(tir,conf=0.25)# TIR候选框# 取并集并NMSproposals_union=torch.cat([proposals_rgb,proposals_tir],dim=0)proposals=nms(proposals_union,iou_threshold=0.5)# 稀疏候选区域# RoI Align提取配对特征roi_rgb=F.roi_align(feat_rgb[-1],proposals,output_size=7)roi_tir=F.roi_align(feat_tir[-1],proposals,output_size=7)

Step 3:FER融合检测

# 差分增强分组融合defdegf_fusion(fpn_rgb,fpn_tir,groups=8):"""DEGF融合模块"""fused=fpn_rgb+fpn_tir# 差分增强diff_rgb=fused-fpn_rgb diff_tir=fused-fpn_tir# 门控gate_rgb=torch.sigmoid(conv(diff_rgb))gate_tir=torch.sigmoid(conv(diff_tir))# 增强融合fused=fused+fpn_rgb*gate_rgb+fpn_tir*gate_tirreturnfused# FER检测头cls_pred=cls_head(fused)# 分类reg_pred=reg_head(fused)# 回归

五、实验

5.1 数据集与评估指标

  • M3FD:4.2K图像对,6类别,1024×768分辨率
  • FLIR:对齐的RGB-T数据集,640×512分辨率
  • LLVIP:1280×1024高分辨率,低光照场景

5.2 SOTA对比

方法年份骨干参数量FLOPsM3FD mAPM3FD AP50FLIR mAPFLIR AP50LLVIP mAPLLVIP AP50
ICAFusion2024CSP-L120M370G88.2-66.989.041.179.2
EI2Det2025CSP-L116M391G86.2-66.389.4-80.2
Fu-Mamba2025CSP-L288M1133G88.0---45.984.9
COFNet2025CSP-L90.2M197G----44.683.6
SFEDet (Ours)2026CSP-S24.5M69G61.089.843.081.765.996.8

⚠️注意:SFEDet的mAP(61.0%)是针对稀疏RoI的精炼结果,而其他方法的mAP是全图检测结果。SFEDet的优势在于效率:24.5M参数、69G FLOPs,仅为Fu-Mamba的8.5%参数量和6%计算量。

5.3 消融实验

组件M3FD mAPM3FD AP50FLIR mAPFLIR AP50
Base(无分组融合)57.285.441.979.9
+ 分组融合58.487.141.679.9
+ 差分增强58.687.241.980.3
+ 辅助特征59.988.542.180.8
+ 逐步精炼61.089.843.081.7

5.4 ✅ 亮点总结

  • 稀疏融合范式:首次在RGB-T检测中实现"先扫描后融合",计算成本与目标数量线性相关
  • 滚动卷积:比标准卷积减少22% FLOPs,mAP反升0.1%,轻量化新思路
  • 参数效率碾压:24.5M参数(8.5% of Fu-Mamba),69G FLOPs(6% of Fu-Mamba),性能持平
  • 高分辨率可扩展:稀疏融合天然适合高分辨率图像,FLOPs增长亚线性
  • 去噪训练:借鉴DN-DETR,解决RPN早期训练不稳定问题

六、总结

  1. SFEDet提出稀疏融合机制,在RGB-T检测中首次实现"先快速扫描过滤背景,再对稀疏RoI做融合检查"的高效范式,从根本上解决了全图融合的计算浪费问题
  2. 核心创新包括:差分增强分组融合(DEGF)通过差值捕获跨模态互补信息;滚动卷积通过通道滚动实现组间交互,比标准卷积更轻量;去噪训练策略解决RPN早期训练不稳定
  3. 效率优势显著:24.5M参数、69G FLOPs,仅为Fu-Mamba的8.5%参数量和6%计算量,却在三大基准上实现竞争力精度
  4. 实际应用价值:稀疏融合的计算成本与目标数量线性相关,天然适合高分辨率、边缘部署场景,为RGB-T检测的轻量化提供了新方向
http://www.jsqmd.com/news/1229295/

相关文章:

  • 数学可视化工具的完整技术选型指南:从入门到专业开发
  • 如何快速集成ArLazyPreload:10分钟搞定Rails关联延迟加载
  • 实战解析:如何用现代化动画方案提升Vue应用体验
  • wvp-GB28181-pro完整指南:如何快速搭建高性能国标视频监控平台
  • 老旧机房智能化改造落地,广州超科自动化自控方案实现节能增效 - 资讯报道
  • AM263P嵌入式系统错误检测与纠正:DCC、ECC与ESM实战解析
  • 2026 汕头整厂拆迁回收工程废旧金属回收测评,厂房拆除设备回收商家实测分享 - LYL仔仔
  • 求职招聘小程序开发全攻略:从入门到精通
  • Ornith 35b 在 DGX Spark 上确实飞起~
  • 2026新能源EMBA择校性价比榜单:民企老板避坑实测测评 - 品牌2026推荐
  • 干部培训效果一直不理想,AI领导力能解决哪些难题? - 嘻哩哩女王在行动
  • Flink DataStream API多流操作与实践
  • 【计算机毕业设计】基于Django的华立学院在线教育平台的设计与实现
  • 无锡买金别乱 跑,藏在市区宝藏黄金门店合扬 - 好物测评局
  • 五年产区走访:大漆辨伪的三条实操标准
  • 原来新疆的当季特产竟然这么丰富多样?
  • 小程序计算机毕设之基于 SpringBoot + 微信小程序的校园食堂点餐系统的设计与实现 智慧校园线上订餐服务小程序的设计与实现(完整前后端代码+说明文档+LW,调试定制等)
  • 别再手动触发AI任务!n8n动态调度引擎深度解析:支持QPS 200+的异步队列、重试熔断与成本监控体系
  • CodeGuardian:AI驱动的代码质量与安全扫描解决方案
  • 2026实测:10款好用的AI写小说工具深度测评与避坑指南
  • Sub2API开源AI网关平台:多账户管理与智能调度解析
  • 宝玑扬州官方唯一地址及客户热线2026年7月最新售后服务通知 - 亨得利官方服务中心
  • Jupyter Notebook快捷键核心原理与新手72小时实战指南
  • OData.NET客户端开发实战:使用LINQ查询OData服务的最佳实践
  • 企业微信与DeepSeek大模型深度融合技术实践——智能消息、小程序及多媒体交互全方案
  • 深入解析I2C中断与DMA机制:从轮询到事件驱动的效率革命
  • 2026无锡代理注册公司避坑指南 - 资讯纵览
  • Cobalt Strike BOF开发入门:基于BOF_Collection项目的代码分析
  • Carnac快捷键显示原理:如何智能识别和展示组合键
  • 小安派工:大型职校三千人就餐,多通道校园智慧食堂结算设备安装排布方案