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

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

时间:2024-09-21 09:49:03浏览次数:10  
标签:1024 ECA self YOLOv8 yaml C2f 注意力

一、本文介绍

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

二、ECA原理分析

ECA官方论文地址:ECA文章

ECA的pytorch版代码:ECA的pytorch代码

ECA注意力机制:深度卷积神经网络的高效通道注意力机制。ECA机制是对SE网络进行了改进,将SE中使用的FC层,改为1×1卷积学习通道注意信息。感觉一新的得算是这个自适应卷积核的大小的处理方法:其ECA模块的原理结构如下图所示。

相关代码:

ECA注意力的代码,如下。

class ECA(nn.Module):           # Efficient Channel Attention module
    def __init__(self, c, b=1, gamma=2):
        super(ECA, self).__init__()
        t = int(abs((math.log(c, 2) + b) / gamma))
        k = t if t % 2 else t + 1

        self.avg_pool = nn.AdaptiveAvgPool2d(1)
        self.conv1 = nn.Conv1d(1, 1, kernel_size=k, padding=int(k/2), bias=False)
        self.sigmoid = nn.Sigmoid()

    def forward(self, x):
        out = self.avg_pool(x)
        out = self.conv1(out.squeeze(-1).transpose(-1, -2)).transpose(-1, -2).unsqueeze(-1)
        out = self.sigmoid(out)
        return out * x

四、YOLOv8中ECA使用方法

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

2.在conv.py的开头__all__ = 内添加ECA模块的类别名(我这里就是ECA)

3.在同级文件夹下的__init__.py内添加以下截图内容:

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

首先打开task.py文件,按住Ctrl+F,输入parse_model进行搜索。找到parse_model函数。在其最后一个else前面添加以下注册代码:(本文续接上篇文章,加在了CBAM的位置)

        elif m in {CBAM,ECA}:#添加注意力模块,没有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_ECA.yaml的配置文件:(路径:ultralytics/cfg/models/v8/YOLOv8_ECA.yaml)

# Ultralytics YOLO 

标签:1024,ECA,self,YOLOv8,yaml,C2f,注意力
From: https://blog.csdn.net/2301_79619145/article/details/142389117

相关文章

  • 基于YOLOv8/YOLOv9/YOLOv10的河道漂浮物检测识别系统
    摘要:河道漂浮物检测识别是指利用技术手段自动识别河流、湖泊等水体表面的漂浮垃圾或物体的过程。随着环境保护意识的增强和技术的进步,河道漂浮物检测已经成为水环境保护和管理的重要组成部分。这项技术的应用可以帮助及时发现污染源,采取措施清理漂浮物,从而保护水资源和生态环......
  • YOLOv8改进 | 检测头篇 | 利用DynamicHead增加辅助检测头针对性检测(四头版本)
    鱼弦:公众号【红尘灯塔】,CSDN博客专家、内容合伙人、新星导师、全栈领域优质创作者、51CTO(Top红人+专家博主)、github开源爱好者(go-zero源码二次开发、游戏后端架构https://github.com/Peakchen)YOLOv8改进|检测头篇|利用DynamicHead增加辅助检测头针对性检测(四头版......
  • 帝国CMS报错Deprecated: Function get_magic_quotes
    当使用帝国CMS时遇到“Deprecated:Functionget_magic_quotes”这类报错,通常是因为PHP版本升级后,某些旧的函数被弃用。get_magic_quotes_gpc() 函数在PHP5.4中已被弃用,并在PHP7.0中被移除。原因分析PHP版本升级:如果你的服务器从较旧的PHP版本(如5.3或更低)升级到了PHP7.......
  • yolov8模型转onnx
    1.安装yolov8#InstalltherequiredpackageforYOLOv8pipinstallultralytics 2.模型转换fromultralyticsimportYOLO#LoadtheYOLOv8modelmodel=YOLO("yolov8n.pt")#ExportthemodeltoONNXformatmodel.export(format="onnx")#......
  • 易优eyoucms网站Array and string offset access syntax with curly braces is deprec
    易优CMS(EyouCMS)在某些情况下会出现 Arrayandstringoffsetaccesssyntaxwithcurlybracesisdeprecated 的错误。这个问题通常是由于PHP版本较高(如PHP7.4及以上)导致的。以下是两种解决方法:方法一:更改PHP版本降低PHP版本:将PHP版本从7.4降低到7.0以下,......
  • 易优eyoucms网站登录报错:Array and string offset access syntax with curly braces i
    根据提供的错误信息 Arrayandstringoffsetaccesssyntaxwithcurlybracesisdeprecated,这个错误提示表明当前使用的PHP版本不支持使用大括号 {} 来访问数组和字符串偏移量。这种语法在PHP7.4之后被标记为已弃用。以下是一些可能的解决步骤:1.切换PHP版本尝试......
  • AI智能工服识别系统 YOLOv8
    AI智能工服识别系统利用图像识别和人工智能技术,AI智能工服识别系统实时监测工作人员的工服穿戴情况,AI智能工服识别系统通过摄像头对工作区域进行拍摄,并利用算法分析图像中的工服特征,识别出是否规范穿戴工服。AI智能工服识别系统能够实时监测工作人员的工服穿戴情况,AI智能工服识别系......
  • 一区霜冰算法+双向深度学习模型+注意力机制!RIME-BiTCN-BiGRU-Attention
    一区霜冰算法+双向深度学习模型+注意力机制!RIME-BiTCN-BiGRU-Attention目录一区霜冰算法+双向深度学习模型+注意力机制!RIME-BiTCN-BiGRU-Attention效果一览基本介绍程序设计参考资料效果一览基本介绍1.Matlab实现RIME-BiTCN-BiGRU-Attention霜冰算法优化双向时间卷积双向门控循环......
  • 顶刊算法 | Matlab实现鹈鹕算法POA-CNN-LSTM-Multihead-Attention多头注意力机制多变
    顶刊算法|Matlab实现鹈鹕算法POA-CNN-LSTM-Multihead-Attention多头注意力机制多变量时间序列预测,优化前后对比目录顶刊算法|Matlab实现鹈鹕算法POA-CNN-LSTM-Multihead-Attention多头注意力机制多变量时间序列预测,优化前后对比预测效果基本介绍程序设计参考资料预测效果基本......
  • react hooks--useCallback
    概述useCallback缓存的是一个函数,主要用于性能优化!!!基本用法如何进行性能的优化呢?useCallback会返回一个函数的memoized(记忆的)值;在依赖不变的情况下,多次定义的时候,返回的值是相同的;语法:constmemoizedCallback=useCallback(()=>{doSomething(a,b);......