YOLOv8模型改进 第二十五讲 添加基于卷积调制(Convolution based Attention) 替换自注意力机制

早期视觉识别模型主要基于 ConvNets(如 VGGNet、Inception 系列、ResNet 系列),它们通过堆叠构建块和金字塔架构聚合大感受野响应,但忽略了全局上下文信息建模。2020 年起,视觉 Transformer(ViTs)推动了视觉识别模型发展,在 ImageNet 分类及下游任务表现更好,其自注意力机制能建模全局依赖关系,不过在处理高分辨率图像时计算成本很高。因此作者设计了简化的自注意力机制------卷积调制
YOLOv8原模型
改进后的

1. 卷积调制介绍

这张图展示了两种不同的注意力机制(Attention Mechanism)的实现方式,具体如下:

  1. 传统多头自注意力机制(左图)设计原因
    • 捕捉长距离依赖关系
      • 自注意力机制通过计算查询(Q)和键(K)的点积来生成注意力矩阵,这种方式可以让模型在处理序列数据时,能够直接考虑到序列中任意两个位置之间的关系,而不受距离的限制。在视觉领域,这意味着模型可以捕捉到图像中不同区域之间的长距离依赖关系,这对于理解图像的整体结构和内容非常重要。
      • 例如,在识别一个包含多个物体的场景时,一个物体的特征可能与远处另一个物体的特征存在关联,自注意力机制可以很好地捕捉这种关联。
    • 特征提取与融合
      • 通过将输入进行线性变换得到查询(Q)、键(K)和值(V),模型可以对输入特征进行不同维度的提取和表示。不同的线性变换可以学习到不同的特征,然后通过注意力权重将这些特征进行融合,从而得到更具代表性和信息量的特征表示。
      • 比如,在处理自然场景图像时,不同的线性变换可以分别学习到纹理、颜色、形状等特征,然后通过自注意力机制将这些特征进行有效融合。
  2. 基于卷积的注意力机制(右图)设计原因
    • 降低计算复杂度:在处理高分辨率图像时,传统自注意力机制中计算注意力矩阵(大小为)的操作会带来极高的计算成本和内存占用。而基于卷积的注意力机制通过使用卷积来生成注意力权重,卷积操作的计算复杂度相对较低,并且与图像的分辨率没有直接的平方关系,能够在处理高分辨率图像时显著降低计算量。
    • 利用卷积的局部感知特性
      • 卷积操作本身具有局部感知的特性,能够很好地捕捉图像中的局部结构和特征。在基于卷积的注意力机制中,通过卷积来生成注意力权重,可以在考虑局部特征的基础上,对特征进行加权融合,使模型能够更好地适应图像数据的特性。
      • 例如,在处理纹理丰富的图像时,卷积可以先捕捉到局部的纹理模式,然后通过注意力机制对这些局部特征进行有选择的加权,突出重要的纹理区域。

2. 接下来,我们将详细介绍如何将卷积调制集成到 YOLOv8 模型中

这是我的GitHub代码: tgf123/YOLOv8_improve (github.com)

这是改进讲解: YOLOv8模型改进 第二十五讲 添加基于卷积调制 替换自注意力机制_哔哩哔哩_bilibili

2.1 如何添加

1. 首先,在我上传的代码中yolov8_improve中找到ConvMod.py代码部分,它包含两个部分一个是ConvMod.py的核心代码,一个是yolov8模型的配置文件。

​​​​

2. 然后我们在ultralytics文件夹下面创建一个新的文件夹,名字叫做change_models, 然后再这个文件夹下面创建ConvMod.py文件,然后将ConvMod的核心代码放入其中

3. 在 task.py文件中导入C2f_AFE

复制代码
from ultralytics.change_models.ConvMod import C2f_ConvMod

4. 然后将 C2f_ConvMod添加到下面当中

5. 最后将配置文件复制到下面文件夹下

6. 运行代码跑通

python 复制代码
from ultralytics.models import NAS, RTDETR, SAM, YOLO, FastSAM, YOLOWorld

if __name__=="__main__":

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

    results = model.train(data=r'D:\model\yolov8\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
                          )
相关推荐
bryant_meng21 小时前
【SLAM】Map Folding
计算机视觉·map·slam·激光雷达·回环检测
AI医影跨模态组学1 天前
Ann Oncol(IF=65.4)广东省人民医院放射科刘再毅等团队:基于深度学习CT分类器与病理标志物增强II期结直肠癌风险分层以优化辅助治疗决策
人工智能·深度学习·论文·医学·医学影像
格林威1 天前
SSD 写入速度测试命令(Linux)(基于工业相机高速存储)
linux·运维·开发语言·人工智能·数码相机·计算机视觉·工业相机
逻辑君1 天前
认知神经科学研究报告【20260008】
人工智能·深度学习·神经网络·机器学习
弘弘弘弘~1 天前
项目实战之评论情感分析模型——基于Bert(含任务头)
人工智能·深度学习·bert
小超同学你好1 天前
Transformer 23. Qwen 3.5 架构介绍:混合线性/全注意力、MoE 与相对 Qwen 1 / 2 / 3 的演进
人工智能·深度学习·语言模型·架构·transformer
源码之屋1 天前
计算机毕业设计:Python出行数据智能分析与预测平台 Django框架 可视化 数据分析 PyEcharts 交通 深度学习(建议收藏)✅
人工智能·python·深度学习·数据分析·django·汽车·课程设计
AI学长1 天前
数据集|多种水果目标检测数据集-苹果、西瓜、番茄、菠萝、洋葱(共 5 类)
人工智能·目标检测·计算机视觉·多种水果目标检测数据集
ForDreamMusk1 天前
深度学习的计算环境
人工智能·深度学习
枫叶林FYL1 天前
第 4 章 视觉感知与场景理解
人工智能·深度学习