YOLO11改进-模块-引入基于局部重要性的注意力机制Local Importance-based Attention LIA
在超分辨率(SR)研究中,降低延迟成为关键趋势。现有空间注意力机制根据交互阶数分类,1 阶注意力(如 ESA)性能较弱,2 阶注意力(如 Self-Attention)虽能实现更全面的长距离建模,但存在二次复杂度,计算成本高,导致运行时延迟增加,限制了在轻量级 SR 模型中的应用,因此需要一种新的注意力机制来平衡计算和性能 。
上面是原模型,下面是改进模型
![](https://i-blog.csdnimg.cn/direct/a247f018c1a140828a30e81da0efe0d4.png)
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
)