YOLO12 改进、魔改|傅里叶残差通道注意力块(FRCAB),通过频域分析和通道注意力机制,在保持低频语义信息的同时增强高频细节表示,从而提升密集预测任务的性能

        在计算机视觉领域,密集预测任务如显著目标检测(SOD)、语义分割等面临着两个关键挑战:1)神经网络在深度增加时倾向于丢失重要的视觉细节;2)低分辨率编码器特征往往过度强调低频语义信息,而忽略了高频细节。这些问题在RGB-T(可见光-热红外)显著目标检测任务中尤为突出,因为需要同时处理两种不同成像特性的模态数据。

        传统解决方案如残差网络(ResNet)和通道注意力机制(RCAB)虽然在一定程度上缓解了这些问题,但仍存在局限性。ResNet通过残差连接保留了部分细节信息,但缺乏对频域的针对性处理;RCAB在空间域建模通道关系,但无法充分利用频域的全局特性。此外,Transformer架构虽然能捕获长距离依赖,但其二次复杂度限制了在高分辨率特征上的应用。

1.FRCAB原理

FRCAB的核心原理建立在频域分析和通道注意力机制的创新融合上,主要包含三个关键设计思想:

  1. ​频域特征分解​​:

    FRCAB首先将输入特征转换到频域,通过快速傅里叶变换(FFT)将空间特征分解为振幅和相位两个关键成分。振幅分量主要反映图像的风格和内容信息,而相位分量则编码了边缘和纹理等细节信息。这种分解使得网络能够有针对性地处理不同频段的信息。

  2. 通道维度的频域分析​​:

    不同于传统方法仅在空间域处理特征,FRCAB创新性地在通道维度执行傅里叶变换(CFFT)。通过对通道维度的振幅和相位进行独立增强,模型能够捕获更丰富的通道间统计关系。这种处理特别适合多模态数据融合,因为不同模态的特征往往在通道维度表现出互补性。

  3. 残差中的残差结构​​:

    FRCAB采用了多级残差连接设计,包括:a)局部残差连接保留原始特征;b)全局残差连接确保梯度流动;c)频域残差连接专注于高频细节重建。这种多层次的结构使网络能够同时保持低频语义信息和高频细节。

FRCAB的结构如图所示,包含两个主要组件:

  1. 残差中的残差(RIR)结构​​:通过多级残差连接,使网络能够学习高频细节信息,同时保持低频语义信息的完整性。这种结构有效缓解了网络在深度增加时对高频信息丢失的问题。
  2. 傅里叶通道注意力(FCA)​​:首先对输入特征进行全局平均池化,然后在通道维度执行快速傅里叶变换(CFFT),分离出振幅和相位成分。通过专门设计的卷积层对这两个成分进行增强后,再进行逆变换(ICFFT)。这一过程能够捕获通道间的全局依赖关系。

2.FRCAB习作思路

在目标检测中的应用优势​​:

        FRCAB通过频域处理能够更有效地捕捉目标的全局上下文信息,这对于目标检测中准确识别不同尺度的物体至关重要。其通道注意力机制可以自适应地强调包含重要目标信息的通道,抑制噪声通道,从而提高检测精度。同时,残差结构确保网络能够保留必要的细节特征,对于小目标检测尤为有利。

​在图像分割中的应用优势​​:

        对于密集预测任务如图像分割,FRCAB的双重设计特别有价值。RIR结构专注于重建高频边界信息,这对于分割任务中精确的边缘定位至关重要;而FCA模块通过频域的通道注意力,能够更好地建模长距离依赖关系,解决分割中常见的上下文信息不足问题。这种组合使网络能够生成更精细的分割结果。      

3. YOLO与FRCAB的结合          

         将FRCAB集成到YOLO系列目标检测框架中,可以带来多方面的改进:1)通过频域通道注意力增强特征金字塔的特征表示能力,提高多尺度目标检测性能;2)残差结构有助于保持浅层网络中的细节信息,改善小目标检测;3)傅里叶变换的全局特性可以弥补YOLO局部感受野的不足,增强模型对复杂场景的适应能力。

4.FRCAB代码部分

YOLO11|YOLO12|改进| 傅里叶残差通道注意力块(FRCAB),通过频域分析和通道注意力机制,提升小目标检测能力_哔哩哔哩_bilibili

YOLO12模型改进方法,快速发论文,总有适合你的改进,还不改进上车_哔哩哔哩_bilibili

 代码获取:YOLOv8_improve/YOLOV12.md at master · tgf123/YOLOv8_improve · GitHub

5. FRCAB引入到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_FRCAB.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
                          )
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值