首页 > 其他分享 >YOLOv8改进 - 注意力篇 - 引入GAM注意力机制

YOLOv8改进 - 注意力篇 - 引入GAM注意力机制

时间:2024-10-30 22:45:05浏览次数:7  
标签:__ nn self YOLOv8 channels GAM 注意力

#YOLO# #目标检测# #计算机视觉#

一、本文介绍

作为入门性篇章,这里介绍了GAM注意力在YOLOv8中的使用。包含GAM原理分析,GAM的代码、GAM的使用方法、以及添加以后的yaml文件及运行记录。

二、GAM原理分析

GAM官方论文地址:文章

GAM官方代码地址:

GAM注意力机制:GAM采用了顺序的通道-空间注意力机制(类似CBAM),但对子模块进行了重新设计。

三、相关代码:

GAM注意力的代码,如下:

class GAM(nn.Module):
    def __init__(self, in_channels, rate=4):
        super().__init__()
        out_channels = in_channels
        in_channels = int(in_channels)
        out_channels = int(out_channels)
        inchannel_rate = int(in_channels/rate)
        self.linear1 = nn.Linear(in_channels, inchannel_rate)
        self.relu = nn.ReLU(inplace=True)
        self.linear2 = nn.Linear(inchannel_rate, in_channels)       
        self.conv1=nn.Conv2d(in_channels, inchannel_rate,kernel_size=7,padding=3,padding_mode='replicate')
        self.conv2=nn.Conv2d(inchannel_rate, out_channels,kernel_size=7,padding=3,padding_mode='replicate')
        self.norm1 = nn.BatchNorm2d(inchannel_rate)
        self.norm2 = nn.BatchNorm2d(out_channels)
        self.sigmoid = nn.Sigmoid()

    def forward(self,x):
        b, c, h, w = x.shape
        # B,C,H,W ==> B,H*W,C
        x_permute = x.permute(0, 2, 3, 1).view(b, -1, c)        
        # B,H*W,C ==> B,H,W,C
        x_att_permute = self.linear2(self.relu(self.linear1(x_permute))).view(b, h, w, c)
        # B,H,W,C ==> B,C,H,W
        x_channel_att = x_att_permute.permute(0, 3, 1, 2)
        x = x * x_channel_att
        x_spatial_att = self.relu(self.norm1(self.conv1(x)))
        x_spatial_att = self.sigmoid(self.norm2(self.conv2(x_spatial_att)))        
        out = x * x_spatial_att
        return out

四、YOLOv8中GAM使用方法

1.YOLOv8中添加GAM模块:

首先在ultralytics/nn/modules/conv.py最后添加模块的代码。

2.在conv.py的开头__all__ = 内添加GAM模块的类别名:

3.在同级文件夹下的__init__.py内添加GAM的相关内容:(分别是from .conv import GAM ;以及在__all__内添加GAM)

4.在ultralytics/nn/tasks.py进行GAM注意力机制的注册,以及在YOLOv8的yaml配置文件中添加GAM即可。

首先打开task.py文件,按住Ctrl+F,输入parse_model进行搜索。找到parse_model函数。找以下注册代码,将GAM添加进去即可:

        elif m in {CBAM,ECA,GAM}:#添加注意力模块,没有CBAM的,将CBAM删除即可
            c1, c2 = ch[f], args[0]
            if c2 != nc:
                c2 = make_divisible(min(c2, max_channels) * width, 8)
            args = [c1, *args[1:]]

然后,就是新建一个名为YOLOv8_GAM.yaml的配置文件:(路径:ultralytics/cfg/models/v8/YOLOv8_GAM.yaml)其中参数中nc,由自己的数据集决定。本文测试,采用的coco8数据集,有80个类别。

# Ultralytics YOLO 

标签:__,nn,self,YOLOv8,channels,GAM,注意力
From: https://blog.csdn.net/2301_79619145/article/details/143376852

相关文章

  • 0xgame 2024
    做不过来了,就跟着做了一点第一周####ez_sstifromflaskimportFlask,request,render_template,render_template_stringimportosapp=Flask(__name__)flag=os.getenv("flag")os.unsetenv("flag")@app.route('/')defindex():returnopen......
  • 无问芯穹DiTFastAttn 中稿NeurIPS,减少76%注意力计算量,加速比最高可达180%
    《DiTFastAttn:AttentionCompressionforDiffusionTransformerModels》一文由清华大学、无问芯穹和上海交通大学的研究团队联合发表,成功入选NeurIPS会议。该研究针对图像生成模型中的计算效率问题,提出了一种新的后训练压缩方法DiTFastAttn。这种方法最多可减少76%的......
  • Gamma 使用教程:新手如何创建专业的 PPT
    介绍Gamma是一个强大的在线演示文稿工具,旨在帮助用户轻松创建专业的PPT。它提供了丰富的模板和功能,使得即使是没有设计经验的人也能制作出高质量的演示文稿。本文将详细介绍如何使用Gamma创建PPT,从账户注册、模板选择到内容编辑和最终导出。注册和登录1.访问Gamma网......
  • 总结yolov8做图像实例分割训练时的一些常识点
    计算机视觉中的几个重要的研究方向。主要包括图像分类、目标检测、语义分割、实例分割、全景分割等那么何为实例分割?实例分割比目标检测更进一步,涉及识别图像中的各个对象并将它们与图像的其余部分分割开来。 图像分割可分为:语义分割,实例分割,全景分割。(a)原图,(b)语义分......
  • Shooter Game User Interface Starter
    射击游戏用户界面工具包这个工具包为射击游戏开发者提供了一套完整的UnityUI布局屏幕和预制件,旨在加速游戏界面的开发过程。以下是工具包的核心特性:屏幕布局:包含9个完整的UnityUI布局屏幕,覆盖装备、选项、游戏模式、大厅、社交、装备详情、登录、设置等多个游戏界面。......
  • <项目代码>YOLOv8 煤矸石识别<目标检测>
      YOLOv8是一种单阶段(one-stage)检测算法,它将目标检测问题转化为一个回归问题,能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法(如FasterR-CNN),YOLOv8具有更高的检测速度和实时性。1.数据集介绍数据集详情可以参考博主写的文章<数据集>煤矸石识别......
  • 【论文分享】HashGAT-VCA:一种结合哈希函数和图注意力网络的矢量元胞自动机模型,用于城
    本文考虑地块内部异质性,提出一个结合哈希函数和图注意力网络(GAT)的矢量元胞自动机(VCA)方法,用于研究城市土地利用变化;并将该模型应用于模拟深圳市2009年至2012年的城市土地利用变化,结果表明,HashGAT-VCA模型的模拟准确性显著优于其他VCA模型。【论文题目】HashGAT-VCA:Avecto......
  • 基于YOLOv8深度学习的吸烟/抽烟行为检测系统【python源码+Pyqt5界面+数据集+训练代码
    背景及意义吸烟行为检测对于维护公共场所的健康环境、防止火灾事故的发生以及促进健康生活方式都具有重要作用。使用基于YOLOv8的吸烟行为检测系统能够有效识别视频中的吸烟行为,从而及时采取适当措施。本文基于YOLOv8深度学习框架,通过2357张图片,训练了一个进行吸烟行为的......
  • 基于YOLOv10/YOLOv9/YOLOv8深度学习的工业螺栓螺母检测系统【python源码+Pyqt5界面+数
    背景及意义工业螺栓螺母检测系统的实施显著提高了制造行业的产品质量和工作效率。该系统的应用涵盖了从生产、检查到包装等各个环节,为精密设备的维护和安全运行提供了强大的技术支持。本文基于YOLOv10/YOLOv9/YOLOv8深度学习框架,通过2548张工业螺栓螺母的相关图片,训练了可......
  • 基于YOLOv8深度学习的人脸面部口罩检测系统【python源码+Pyqt5界面+数据集+训练代码】
    背景及意义人脸口罩面部检测能够准确地检测人脸是否佩戴口罩,对于控制疫情传播、保障公共卫生安全起到关键作用。本文基于YOLOv8深度学习框架,通过853张图片,训练了一个进行人脸面部口罩的目标检测模型,能够准确的检测人脸“戴口罩”、“未戴口罩”及“未正确佩戴口罩”。并基......