YOLOv5改进教程之添加注意力机制

本文主要给大家讲解一下,如何在yolov5中添加注意力机制,

这里提供SE通道注意力的改进方法,其他注意力的添加方法,大同小异

首先找到SE注意力机制的pytorch代码

class SELayer(nn.Module):
    def __init__(self, c1, r=16):
        super(SELayer, self).__init__()
        self.avgpool = nn.AdaptiveAvgPool2d(1)
        self.l1 = nn.Linear(c1, c1 // r, bias=False)
        self.relu = nn.ReLU(inplace=True)
        self.l2 = nn.Linear(c1 // r, c1, bias=False)
        self.sig = nn.Sigmoid()

    def forward(self, x):
        b, c, _, _ = x.size()
        y = self.avgpool(x).view(b, c)
        y = self.l1(y)
        y = self.relu(y)
        y = self.l2(y)
        y = self.sig(y)
        y = y.view(b, c, 1, 1)
        return x * y.expand_as(x)

直接把SE注意力机制的程序,复制到models文件夹下面的common.py文件中

然后找到yolo.py,在这个文件中找到下面这一行

然后把SE添加到这个注册表里,

直接在C3Ghost后面加上SELayer

然后是要修改yaml文件,对于SE这种即插即用的注意力机制,输入和输出的通道数相同,所以不会影响其他模块的运行

注意力机制也可以插在其他地方,只要注意把通道数对应好就行

然后head部分也要进行相应的修改,因为我们多加了一层,所以需要保持head以及最后的输出层不变就得稍微改一下head部分,同样,注意力机制也可以放在head里面,跟加在backbone里面的方法相同。

这是原始的head部分,需要修改成下面这样

因为我们把SE注意力机制插在第八层之后,所以原先的14层就变成了15层,同样的,最后的输出也需要把层数加一。

添加这些注意力机制是yolov5最基础的改进,但是说实话,注意力机制可以添加在很多的地方,不一定会有效果,所以插在哪里效果最好就需要大家自行讨论了。 注意力机制也有很多种,se注意力机制应该是属于最基础的通道注意力了吧

总结

到此这篇关于YOLOv5改进教程之添加注意力机制的文章就介绍到这了,更多相关YOLOv5添加注意力机制内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Yolov5服务器环境搭建详细过程

    目录 1 服务器搭建yolov5环境 1.1 创建环境 1.2 跟随官方指引 2 下载预训练权重 3 推理 4 测试 1 服务器搭建yolov5环境 1.1 创建环境 首先先的在本地环境下搭建一个我们的环境,名字设为yolo5-6 conda create -n yolov5-6 python=3.7#创建环境 conda activate yolov5-6#切换yolov5-6环境 创建包完成后,我们需要查看conda环境下是否有我们刚才创建的环境,通过以下的指令可以查看所有的环境. cond

  • Pytorch搭建YoloV5目标检测平台实现过程

    目录 学习前言 源码下载 YoloV5改进的部分(不完全) YoloV5实现思路 一.整体结构解析 二.网络结构解析 2.构建FPN特征金字塔进行加强特征提取 三.预测结果的解码 1.获得预测框与得分 2.得分筛选与非极大抑制 四.训练部分 1.计算loss所需内容 2.正样本的匹配过程 a.匹配先验框 b.匹配特征点 3.计算Loss 训练自己的YoloV5模型 一.数据集的准备 二.数据集的处理 三.开始网络训练 四.训练结果预测 学习前言 这个很久都没有学,最终还是决定看看,复现的是Yol

  • YOLOv5改进教程之添加注意力机制

    本文主要给大家讲解一下,如何在yolov5中添加注意力机制, 这里提供SE通道注意力的改进方法,其他注意力的添加方法,大同小异 首先找到SE注意力机制的pytorch代码 class SELayer(nn.Module): def __init__(self, c1, r=16): super(SELayer, self).__init__() self.avgpool = nn.AdaptiveAvgPool2d(1) self.l1 = nn.Linear(c1, c1 // r, bias

  • YOLOv5改进之添加SE注意力机制的详细过程

    目录 前言: 解决问题: 添加方法: 结果: 总结 前言: 作为当前先进的深度学习目标检测算法YOLOv5,已经集合了大量的trick,但是在处理一些复杂背景问题的时候,还是容易出现错漏检的问题.此后的系列文章,将重点对YOLOv5的如何改进进行详细的介绍,目的是为了给那些搞科研的同学需要创新点或者搞工程项目的朋友需要达到更好的效果提供自己的微薄帮助和参考. 解决问题: 加入SE通道注意力机制,可以让网络更加关注待检测目标,提高检测效果 SE模块的原理和结构 添加方法: 第一步:确定添加的位置,

  • CI框架教程之优化验证码机制详解【验证码辅助函数】

    本文实例讲述了CI框架教程之优化验证码机制.分享给大家供大家参考,具体如下: 验证码机制在CI框架中是通过一个辅助函数captcha()进行实现的--验证码辅助函数文件包含了一些帮助你创建验证码图片的函数.. 那么我们如何使用CI的captcha()辅助函数来完成验证码功能呢?下面我会先讲述如何使用CI的captcha()辅助函数来完成验证码功能,然后在讲述如何具体的对CI框架的验证码机制进行优化. 1.CI框架验证码功能的使用 a)  首先我们要先加载辅助函数 加载辅助函数一共有两种方法: ①

  • Pytorch图像处理注意力机制解析及代码详解

    什么是注意力机制 注意力机制是一个非常有效的trick,注意力机制的实现方式有许多,我们一起来学习一下 注意力机制是深度学习常用的一个小技巧,它有多种多样的实现形式,尽管实现方式多样,但是每一种注意力机制的实现的核心都是类似的,就是注意力. 注意力机制的核心重点就是让网络关注到它更需要关注的地方. 当我们使用卷积神经网络去处理图片的时候,我们会更希望卷积神经网络去注意应该注意的地方,而不是什么都关注,我们不可能手动去调节需要注意的地方,这个时候,如何让卷积神经网络去自适应的注意重要的物体变得极为

  • YOLOv5改进系列之增加小目标检测层

    目录 1.YOLOv5算法简介 2.原始YOLOv5模型 3.增加小目标检测层 总结 小目标检测一直以来是CV领域的难点之一,那么,YOLOv5该如何增加小目标检测层呢? YOLOv5代码修改————针对微小目标检测 1.YOLOv5算法简介 YOLOv5主要由输入端.Backone.Neck以及Prediction四部分组成.其中: (1) Backbone:在不同图像细粒度上聚合并形成图像特征的卷积神经网络. (2) Neck:一系列混合和组合图像特征的网络层,并将图像特征传递到预测层. (

  • LNMP系列教程之一 添加域名建立站点

    昨天老左分享了"Linux VPS CentOS安装LNMP系统环境教程",有些朋友说网上已经有过类似的教程,可能你再发布有些多余.我认为还是有必要的,一来是我自己学习使用,二来可以作为记录自己使用的时候笔记,以便下次使用的时候直接利用起来,同时别人的毕竟是别人的,自己还是需要梳理.就像我从现在开始,整理的关于LNMP的系列教程一样,从这一篇开始我将把LNMP的使用全过程做一个记录,一直到最后的维护升级等等.我相信通过这么一个积累,也是为以后跟我一样的新手可以有一个很好的参考.大家认为

  • Oracle教程 误添加数据文件删除方法

    如果是在Oracle10g之前,删除一个表空间中的数据文件后,其文件在数据库数据字典中会仍然存在,除非你删除表空间,否则文件信息不会清除. 但是从Oracle10gR2开始,Oracle允许我们彻底删除一个空文件,不留痕迹. 但是注意:如果你向SYSTEM表空间错误的添加了一个文件,那么就让它在哪里好了,不要动. 对于普通表空间,则可以参考以下步骤处理. 数据库版本Oracle10gR2: SQL> select * from v$version; BANNER ----------------

  • Struts2学习教程之拦截器机制与自定义拦截器

    前言 拦截器体系是Struts2框架的重要组成部分,不夸张的说,没有拦截器体系,也就没有这么好用的Struts2框架了.在Struts2框架中,大量的拦截器完成了很多基础的功能,比如,params拦截器负责解析HTTP请求的参数,并设置Action的属性:servlet-config拦截器直接将HTTP请求中的HttpServletRequest实例和HttpServletResponse实例传给Action:fileUpload拦截器则负责解析请求参数中的文件域,并将一个文件域设置成Actio

  • javaScript事件机制兼容【详细整理】

    [添加事件机制]  addEventListener  和  attachEvent [W3C] addEventListener('click' , function(){alert('Hello World')} ,false )  //W3C规范添加事件(IE8及以上不兼容):  第一个参数为事件类型 ,第二个为事件程序 ,第三个 false为事件冒泡,true为事件捕获 [IE] attachEvent('onclick',function(){alert('Hello World')}

  • Git 教程之远程仓库详解

    Git 远程仓库 Git 并不像 SVN 那样有个中心服务器. 目前我们使用到的 Git 命令都是在本地执行,如果你想通过 Git 分享你的代码或者与其他开发人员合作. 你就需要将数据放到一台其他开发人员能够连接的服务器上. 本例使用了 Github 作为远程仓库,你可以先阅读我们的 Github 简明教程. 添加远程库 要添加一个新的远程仓库,可以指定一个简单的名字,以便将来引用,命令格式如下: git remote add [shortname] [url] 本例以Github为例作为远程仓

随机推荐