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

YOLO11改进-模块-引入基于局部重要性的注意力机制Local Importance-based Attention LIA

         在超分辨率(SR)研究中,降低延迟成为关键趋势。现有空间注意力机制根据交互阶数分类,1 阶注意力(如 ESA)性能较弱,2 阶注意力(如 Self-Attention)虽能实现更全面的长距离建模,但存在二次复杂度,计算成本高,导致运行时延迟增加,限制了在轻量级 SR 模型中的应用,因此需要一种新的注意力机制来平衡计算和性能 。

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

改进后的模型

1. 基于局部重要性的注意力机制Local Importance-based Attention介绍          

        注意力机制的核心是根据输入的相对重要性自适应地增强有用信息、削弱无用信息。LIA 受通过区域 softmax 获取局部重要性的研究启发,通过计算像素在其周围区域的重要性值来衡量局部重要性。通过这种方式,LIA 能够在低分辨率特征图上测量局部重要性,并通过一个通道门来校准注意力图,从而实现二阶信息交互的同时保证相对较低的延迟。为避免步长卷积和双线性插值带来的伪影,LIA 利用门机制对局部重要性进行重新校准。通过这种方式,LIA 能够在保留有用信息的同时,抑制噪声和无关信息,提升图像超分辨率的效果。

结合图片信息,LIA 的结构主要包含以下几个关键部分:

局部重要性测量模块:为提高计算效率和适用性,通过堆叠 SoftPool 和 3×3 卷积来实例化局部重要性的计算过程。SoftPool 用于对特征图进行下采样,在保留主要特征的同时减少计算量;3×3 卷积则进一步提取局部特征,增强模型对局部信息的捕捉能力。利用步长和挤压卷积来降低计算量并扩大感受野,使模型能够关注到更大范围的上下文信息,提升对图像中复杂结构的理解能力。

激活与缩放模块:采用 Sigmoid 激活函数和双线性插值进行激活和重新缩放。Sigmoid 函数将输出值映射到 0 到 1 之间,从而得到注意力权重,用于衡量不同位置特征的重要程度;双线性插值则对注意力权重进行重新缩放,使其能够更好地适配输入特征图的尺寸,确保注意力机制的有效性。

门控模块:选择输入的第一个通道\(X_{[0]}\)作为门,对经过激活和缩放后的局部重要性特征进行筛选。这种简单而有效的设计,避免了使用额外网络带来的计算开销,在保证性能的同时降低了模型复杂度。

2. YOLOv11与LIA 的结合     

      本文在C3K2模块中引入LIA模块,增强模型在特征融合时对小目标、遮挡的关注。

3. LIA模块代码部分

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

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

 4. 将LIA模块 引入到YOLOv11中

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

   

第二:在task.py中导入

 ​​​​​​​  

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

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

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

    

     第五:运行成功

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

if __name__=="__main__":

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

    results = model.train(data=r'D:\model\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
                          )


http://www.kler.cn/a/542817.html

相关文章:

  • 嵌入式八股文面试题(二)C语言算法
  • 3.React 组件化开发
  • ZooKeeper 技术全解:概念、功能、文件系统与主从同步
  • 修复缺失的tobii.gameintegration.dll文件,让游戏更顺畅
  • 亚博microros小车-原生ubuntu支持系列:26手势控制小车基础运动
  • 认识网络安全
  • redis底层数据结构——简单动态字符串
  • redis中的hash结构
  • DeepSeek-R1技术革命:用强化学习重塑大语言模型的推理能力
  • ES6 Proxy 用法总结以及 Object.defineProperty用法区别
  • ubuntu使用防火墙开放和关闭指定端口
  • Redis 基本全局命令和单线程架构
  • 激活函数 05 ——Swish
  • 二、通义灵码插件保姆级教学-IDEA(使用篇)
  • jenkins备份还原配置文件
  • PHP的JIT编译器
  • Lombok使用指南
  • 使用mermaid画流程图
  • ubuntu22.04 git clone问题
  • Springboot集成Milvus和Embedding服务,实现向量化检索
  • vue3自定义提示框和下载
  • 1313:【例3.5】位数问题
  • 【python】http.server内置库构建临时文件服务
  • 【Vue2】vue2项目中如何使用mavon-editor编辑器,数据如何回显到网页,如何回显到编辑器二次编辑
  • 玩转工厂模式
  • 【Unity】【VR开发】如何让手主动吸附到物体上