在图像篡改定位领域,传统深度学习模型的注意力机制采用全局交互模式,图像中的每个 patch 都参与与其他所有 patch 的 token - to - token 注意力计算。然而,在图像篡改定位任务中,这种全局交互会引入大量无关的键值对。传统模型过于关注语义信息,在全局交互时会综合考虑图像所有 patch 的特征,这使得模型容易忽略图像篡改后非语义信息的局部不一致性,进而限制了模型在该任务上的表现。因此,需要一种新的注意力机制来解决这些问题,Sparse Self - Attention 应运而生。
上面是原模型,下面是改进模型

1. 稀疏自注意力机制Sparse Self - Attention 介绍
Sparse Self - Attention 引入了 “稀疏率” 概念。对于输入的图像特征图,不再对整个特征图进行注意力计算,而是把它划分成一个个小的张量块。在计算注意力时,只在这些张量块内部进行,不同颜色标记的张量块之间不会进行注意力计算。通过这种方式,模型能够抑制对语义信息的关注,将更多的注意力放在提取非语义特征上。同时,由于只在张量块内计算,减少了大量不必要的计算,降低了模型的计算量,提高了运行效率。
Sparse Self - Attention 是 SparseViT 模型编码器的重要部分。SparseViT 的编码器有多个阶段,在第三阶段和第四阶段的各个模块中,应用了不同稀疏率的 Sparse Self - Attention。在第三阶段,不同模块的稀疏率设置会按照一定规律变化,越往后的模块,稀疏率可能越高或越低(具体由设计决定)。第四阶段同样如此,不同模块也有特定变化规律的稀疏率。这样在不同阶段使用不同的稀疏率,能够让模型在不同层次上,以不同程度的稀疏方式去提取特征。在早期阶段,可能采用较低的稀疏率,使模型能保留一些语义信息,帮助理解图像整体;在后期阶段,使用较高的稀疏率,让模型更专注于提取与图像篡改相关的非语义特征。通过这种分层且稀疏率变化的设计,模型能更好地平衡对语义和非语义特征的提取,提高在图像篡改定位任务中的表现 。
2. YOLOv11与Sparse Self - Attention 的结合
可以在YOLOv11原有的局部特征基础上,增加对全局特征的关注,使特征表达更加丰富和准确。
3. 小波卷积WaveletConv代码部分
YOLOv8_improve/YOLOv11.md at master · tgf123/YOLOv8_improve · GitHub
视频讲解:YOLOv11模型改进讲解,教您如何修改YOLOv11_哔哩哔哩_bilibili
YOLOv11模型改进讲解,教您如何根据自己的数据集选择最优的模块提升精度_哔哩哔哩_bilibili
YOLOv11全部代码,现有几十种改进机制。
4. 将Sparse Self - Attention引入到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_Sparse_Self_Attention.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
)