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
                          )
相关推荐
金融小师妹21 小时前
基于NLP语义解析的联储政策信号:强化学习框架下的12月降息概率回升动态建模
大数据·人工智能·深度学习·1024程序员节
山顶夕景1 天前
【RL】Does RLVR enable LLMs to self-improve?
深度学习·llm·强化学习·rlvr
cg50171 天前
基于 Bert 基本模型进行 Fine-tuned
人工智能·深度学习·bert
Dev7z1 天前
面向公共场所的吸烟行为视觉检测系统研究
人工智能·计算机视觉·视觉检测
橙露1 天前
视觉检测硬件分析
人工智能·计算机视觉·视觉检测
AndrewHZ1 天前
【图像处理基石】如何使用大模型进行图像处理工作?
图像处理·人工智能·深度学习·算法·llm·stablediffusion·可控性
AndrewHZ1 天前
【图像处理基石】图像处理的基础理论体系介绍
图像处理·人工智能·算法·计算机视觉·cv·理论体系
人邮异步社区1 天前
如何有效地利用AI辅助编程,提高编程效率?
人工智能·深度学习·ai编程
星星上的吴彦祖1 天前
多模态感知驱动的人机交互决策研究综述
python·深度学习·计算机视觉·人机交互
做cv的小昊1 天前
VLM经典论文阅读:【综述】An Introduction to Vision-Language Modeling
论文阅读·人工智能·计算机视觉·语言模型·自然语言处理·bert·transformer