局部重要性注意力LIA,通过区域重要性图与门控机制实现高阶信息交互,自适应增强有用特征、抑制冗余信息,平衡模型性能与效率。
在超分辨率(SR)等低阶视觉任务中,注意力机制是提升模型性能的关键组件,但现有方案存在明显瓶颈:
1 阶注意力(如 ESA):仅通过简单的元素级乘法实现信息交互,虽延迟低,但感受野有限,高阶特征关联能力弱,性能提升受限;
2 阶注意力(如自注意力、非局部注意力):通过矩阵乘法实现长距离信息交互,性能更强,但计算复杂度呈二次增长,延迟极高,难以适配实时场景(如移动端超分辨率)。
为平衡效率与性能,LIA(局部重要性注意力)被提出,其核心目标是在 1 阶注意力的延迟水平下,实现高阶信息交互,同时通过轻量化设计适配高效模型需求。
1.LIA原理
LIA 的结构设计以轻量化和高效性为核心,具体流程如图 所示:
局部重要性提取:输入特征先通过softpool(一种基于概率的池化操作,保留区域内重要信息)进行下采样,再通过3×3 卷积(带步长) 扩大感受野,同时减少计算量;
激活与尺寸匹配:经 sigmoid 激活生成初步重要性图后,通过双线性插值将其恢复至输入特征尺寸;
门控校准:引入输入特征的第一个通道X[0],经 sigmoid 激活后作为门控信号,与上一步的重要性图进行元素级乘法,进一步抑制噪声、增强关键区域响应;
特征加权:最终将校准后的重要性图与原始输入特征相乘,实现 “增强有用信息、抑制冗余信息” 的自适应调整。
2.LIA习作思路
LEGM 在目标检测中的优点
LIA 在目标检测中可通过高效的局部重要性建模与轻量化设计提升性能:一方面,其基于区域的软池化和卷积操作能精准捕捉目标局部细节(如边缘、纹理),增强前景目标与背景的区分度,尤其对小目标或模糊目标的检测更友好;另一方面,门控机制通过输入特征自身的通道信息校准重要性图,可减少复杂场景(如遮挡、多目标重叠)中的噪声干扰,同时低延迟特性(接近 1 阶注意力)不会拖累检测速度,适配实时目标检测的需求。此外,高阶信息交互能力使其能更好地建模目标与周围环境的关联(如车辆与道路、行人与背景的上下文),提升检测鲁棒性。
LEGM 在图像分割中的优点
在图像分割任务中,LIA 的优势体现在精细度与效率的平衡:其局部重要性图能聚焦于分割边界或细节区域(如物体边缘、纹理突变处),通过区域级信息聚合提升边界分割的准确性;门控机制利用输入特征自身的通道信号优化权重,可自适应抑制无关区域(如背景噪声),增强对前景目标内部一致性的建模(如同一物体不同区域的特征关联)。同时,轻量化的结构设计(无矩阵乘法、低计算量)使其能高效处理高分辨率分割图像,在保证实时性的同时,避免因计算复杂度过高导致的特征退化,尤其适合医疗影像、遥感图像等需要精细分割的场景。
3. YOLO与LIA的结合
YOLO 系列模型以实时性为核心优势,LIA 的引入可在不显著增加延迟的前提下提升其性能:一方面,LIA 的低延迟特性与 YOLO 的轻量化设计适配,不会影响模型的实时推理速度;另一方面,其局部重要性建模能力能增强 YOLO 对小目标、密集目标的特征提取能力,门控机制则可减少复杂背景对目标检测的干扰,提升检测精度与鲁棒性,尤其在复杂场景(如城市街景、夜间监控)中表现更优。
4.LIA代码部分
YOLO12模型改进方法,快速发论文,总有适合你的改进,还不改进上车_哔哩哔哩_bilibili
代码获取:YOLOv8_improve/YOLOV12.md at master · tgf123/YOLOv8_improve · GitHub
5. LIA引入到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/shengtuo/tangfan/YOLO11/ultralytics/cfg/models/11/yolo12_LIA")\# .load(r'E:\Part_time_job_orders\YOLO\YOLOv11\yolo11n.pt') # build from YAML and transfer weightsresults = 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)