在红外与可见光图像融合(IVIF)领域,传统方法存在两大核心问题。一方面,多数融合模型基于无干扰的 “干净数据” 设计,面对微小的对抗性扰动时,生成的融合图像易出现明显伪影与噪声,严重影响视觉质量;另一方面,常用的 U-Net 融合架构虽具备较强特征解耦能力,但在上下采样过程中易丢失纹理、边缘等关键细节,进一步降低融合结果实用性。为解决这两大痛点,兼顾网络抗干扰能力与特征完整性,防御性细化模块(DRM)应运而生,作为 U-Net 的核心补充模块嵌入架构中。
1.DRM原理
DRM 的核心逻辑是 “先滤除干扰,再细化特征”。首先,它利用从 U-Net 编码器提取的基础特征,通过多轮采样与残差操作,筛选出源图像中的有效信息(如红外目标热信号、可见光纹理),同时过滤对抗性扰动带来的噪声;其次,引入基于 Mercer 定理的核操作构建鲁棒自注意力机制,先将输入特征转换为查询(Q)、键(K)、值(V),再通过 Pearson 相关系数验证 Q 与 K 的关联性,确保特征匹配的准确性;最后,通过调整自注意力计算顺序(先算 K 与 V 乘积),将计算复杂度从O(Nˉ2)降至O(N),在保证抗干扰效果的同时,提升模型训练与推理效率,最终输出细化后的高质量特征。

2.DRM习作思路
-
在目标检测任务中:DRM 能通过过滤对抗性扰动,减少融合图像中的噪声与伪影,让目标的边缘轮廓、局部细节更清晰,避免检测模型因图像质量差而误判或漏判;同时,其细化特征的能力可增强目标与背景的区分度,即使面对低对比度、小尺寸目标,也能让检测模型精准捕捉目标特征,保障在受干扰场景下的检测精度与稳定性。
-
在目标分割任务中:对于图像分割任务,DRM 可弥补 U-Net 特征丢失的缺陷,还原被忽略的类别边界细节(如道路与行人、植被与建筑的交界),减少分割结果中的 “模糊区域”;此外,它对对抗性扰动的抵抗能力,能避免扰动导致的类别混淆(如将 “车辆” 误分为 “背景”),让分割结果更贴合真实场景的类别分布,提升分割任务在复杂干扰下的可靠性
3. YOLO与DRM的结合
将 DRM 加入 YOLO 模型,一方面可增强 YOLO 对输入图像中对抗性扰动的耐受度,减少因扰动导致的目标检测误差;另一方面,DRM 能补充 YOLO 在快速特征提取中丢失的细节信息,帮助 YOLO 更精准识别小目标或特征不明显的目标(如远距离行人、夜间车辆),进一步提升 YOLO 在复杂场景下的检测性能。
4.DRM代码部分
YOLO11|YOLO12|改进| 防御性细化模块DRM,解决CNN在提取特征过程中存在的特征丢失的问题和背景、噪声干扰的问题_哔哩哔哩_bilibili
YOLO12模型改进方法,快速发论文,总有适合你的改进,还不改进上车_哔哩哔哩_bilibili
代码获取:YOLOv8_improve/YOLOV12.md at master · tgf123/YOLOv8_improve · GitHub
5. DRM引入到YOLOv12中
第一: 先新建一个v12_changemodel,将下面的核心代码复制到下面这个路径当中,如下图如所示。E:\Part_time_job_orders\YOLO_NEW\YOLOv12\ultralytics\v12_changemodel。
第二:在task.py中导入包
第三:在task.py中的模型配置部分下面代码

第四:将模型配置文件复制到YOLOV11.YAMY文件中
第五:运行代码
from ultralytics.models import NAS, RTDETR, SAM, YOLO, FastSAM, YOLOWorld
import torch
if __name__=="__main__":
# 使用自己的YOLOv8.yamy文件搭建模型并加载预训练权重训练模型
model = YOLO("/home/tgf/tgf/yolo/model/YOLO12_All/ultralytics/cfg/models/12/yolo12_Defensive_Refinement_Module.yaml")\
# .load(r'E:\Part_time_job_orders\YOLO\YOLOv11\yolo11n.pt') # build from YAML and transfer weights
results = model.train(data="/home/shengtuo/tangfan/YOLO11/ultralytics/cfg/datasets/VOC_my.yaml",
epochs=300,
imgsz=640,
batch=4,
# cache = False,
# single_cls = False, # 是否是单类别检测
# workers = 0,
# resume=r'D:/model/yolov8/runs/detect/train/weights/last.pt',
amp = True
)
3898

被折叠的 条评论
为什么被折叠?



