YOLO11改进-模块-引入混合池化注意力模块Hybrid Pooling Attentio解决小目标问题、遮挡问题

      在高光谱图像(HSI)分类任务中,充分利用 HSI 中的空间信息对提升分类性能至关重要。传统方法在处理 HSI 时,难以有效捕捉复杂的数据模式和交互,无法充分挖掘空间信息的价值。卷积神经网络(CNNs)在分析空间特征方面有一定优势,但在利用 HSI 的序列光谱信息时存在不足;基于 Transformer 的方法虽能识别空间和光谱数据之间的长程依赖关系,但在从卷积获得的浅层特征中提取多维特征时面临挑战。为了更高效地利用 HSI 的空间信息,增强像素级注意力,建立局部和非局部依赖关系,从而提升整体分类性能,设计了混合池化注意力(HPA)模块。

上面是原模型,下面是改进模型

改进后的模块

1. 混合池化注意力模块HPA介绍 

       平均池化和最大池化操作的结合可以有效整合通用和详细信息,增强特征图的表示能力。平均池化近似窗口内的值,类似对日常经验的模糊记忆,能获取数据的大致趋势;最大池化捕获窗口内的峰值,类似对重要或特殊事件的清晰记忆,可突出数据的关键特征。通过在不同空间维度上分别进行平均池化和最大池化操作,HPA 可以从不同角度捕捉特征信息。同时,利用分组和重加权的思想,对输入特征图进行分组处理,通过跨空间学习的方式整合不同组的特征,自适应地重新校准通道间的关系,实现不同的跨通道交互,从而有效捕捉和学习复杂的低级特征表示。

从提供的图片来看,HPA 模块主要包含以下几个部分:

分组操作:将输入特征图沿着通道维度划分为个子特征,以捕捉不同的语义信息,随后将分组数据重新组织,得到分组数据。

并行路径池化操作:利用两条并行路径从分组特征图中获取注意力权重表示。在平均池化分支,将分组数据分解为两个并行的 1D 特征编码子分支,分别沿高度和宽度维度进行 1D 全局平均池化操作,以收集垂直和水平方向的位置信息;在最大池化分支,同样分解为两个并行子分支,分别沿水平和宽度维度进行 1D 全局最大池化操作。

特征融合与校准:将两个编码特征沿图像高度方向连接,然后使用 1×1 卷积整合两个维度的特征,并应用 Sigmoid 函数拟合二项分布。通过元素相乘的方式聚合每组内的两个通道注意力图,自适应地重新校准通道间的关系。

跨空间信息聚合:受通道和空间位置间相互依赖关系的启发,提出跨空间信息聚合方法。对重新加权的特征图先通过 GroupNorm 层增强训练稳定性,再分别利用 2D 全局平均池化和最大池化编码全局空间信息 。

2. YOLOv11与HPA 的结合          

 本文使用HPA 模块替换C3K2模块中的普通卷积,增强YOLOv11模型空间特征,解决小目标、遮挡问题。

3. TBFE代码部分

YOLOv8_improve/YOLOv11.md at master · tgf123/YOLOv8_improve · GitHub

视频讲解:YOLOv11模型改进讲解,教您如何修改YOLOv11_哔哩哔哩_bilibili

YOLOv11模型改进讲解,教您如何根据自己的数据集选择最优的模块提升精度_哔哩哔哩_bilibili

YOLOv11全部代码,现有几十种改进机制。

 4. 将TBFE引入到YOLOv11中

第一: 将下面的核心代码复制到D:\model\yolov11\ultralytics\change_model路径下,如下图所示。

         

第二:在task.py中导入

 ​​​        

第三:在task.py中的模型配置部分下面代码

 ​​​​​​​​​​​​​​ ​​​​​​​ ​​​​​​​​​​​​​​   

第四:将模型配置文件复制到YOLOV11.YAMY文件中

     ​​​​​​​ ​​​​​​​​​​​​​​  

     第五:运行成功

from sympy import false

from ultralytics.models import NAS, RTDETR, SAM, YOLO, FastSAM, YOLOWorld

if __name__=="__main__":

    # 使用自己的YOLOv8.yamy文件搭建模型并加载预训练权重训练模型
    model = YOLO(r"E:\Part_time_job_orders\YOLO\YOLOv11\ultralytics\cfg\models\11\yolo11_PHA.yamy")\
        .load(r'E:\Part_time_job_orders\YOLO\YOLOv11\yolo11n.pt')  # build from YAML and transfer weights

    results = model.train(data=r'E:\Part_time_job_orders\YOLO\YOLOv11\ultralytics\cfg\datasets\VOC_my.yaml',
                          epochs=300,
                          imgsz=640,
                          batch=64,
                          # 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、付费专栏及课程。

余额充值