YOLOv8添加SE注意力机制有效提升检测精度(已跑通)

news2024/11/13 14:54:50

 SE注意力机制概念

        SSqueeze-and-Excitation (SE) 注意力机制是一种专注于增强网络模型对不同特征通道的重要性理解的机制。它通过对通道维度上的特征进行动态调整,增强了网络对重要特征的敏感性。

源码

import numpy as np
import torch
from torch import nn
from torch.nn import init

class SE(nn.Module):

    def __init__(self, channel=512,reduction=16):
        super().__init__()
        self.avg_pool = nn.AdaptiveAvgPool2d(1)
        self.fc = nn.Sequential(
            nn.Linear(channel, channel // reduction, bias=False),
            nn.ReLU(inplace=True),
            nn.Linear(channel // reduction, channel, bias=False),
            nn.Sigmoid()
        )


    def init_weights(self):
        for m in self.modules():
            if isinstance(m, nn.Conv2d):
                init.kaiming_normal_(m.weight, mode='fan_out')
                if m.bias is not None:
                    init.constant_(m.bias, 0)
            elif isinstance(m, nn.BatchNorm2d):
                init.constant_(m.weight, 1)
                init.constant_(m.bias, 0)
            elif isinstance(m, nn.Linear):
                init.normal_(m.weight, std=0.001)
                if m.bias is not None:
                    init.constant_(m.bias, 0)

    def forward(self, x):
        b, c, _, _ = x.size()
        y = self.avg_pool(x).view(b, c)
        y = self.fc(y).view(b, c, 1, 1)
        return x * y.expand_as(x)

第一步,在ultralytics/nn/modules/conv.py文件内添加注意力源码

第二步,在ultralytics/nn/modules/init.py文件内,按下图标识的地方添加注意力名

第一处:在from .conv import()处最后,添加注意力名称

第二处:在__all__={}处最后,添加注意力名称

第三步,在ultralytics/nn/tasks.py文件内,

首先,在from ultralytics.nn.modules import 处添加SE

        其次,键盘点击CTRL+shift+F打开查找界面,搜索elif m in ,在该函数下方有一堆的elif m in XXX,在某一个elif下方添加如下代码

elif m in {SE}:
            args = [ch[f], *args]

 第五步,在ultralytics/cfg/models/v8文件下,复制yolov8.yaml,并改成自己的名字(如yolov8-SE.yaml),做出如下修改:

运行结果如下 ,表示成功。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2058955.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Ubuntu 22.04 上更换 Node 版本管理器(nvm)的源

在 Ubuntu 22.04 上更换 Node 版本管理器(nvm)的源,可以通过修改 nvm 的配置文件来实现。以下是更换 nvm 源的步骤: 打开终端。 备份原始配置文件(可选,但推荐): mv ~/.nvm/nvm.sh …

计算病理学中的Vision Transformer应用与挑战综述|顶刊精析·24-08-21

小罗碎碎念 这篇论文题为《Vision Transformers for Computational Histopathology》,综述了视觉变换器(Vision Transformers, ViTs)在计算病理学中的应用,包括图像分类、分割和生存风险回归等任务,并探讨了面临的挑战…

Modbus-TCP——Libmodbus安装和使用(Ubuntu22.04)

1、简介 Modbus是一种通信协议,广泛用于工业自动化和过程控制领域,允许不同设备之间进行数据交换。libmodbus是一个用于 Modbus 协议的开源库,主要用于开发和实现 Modbus 协议的客户端和服务器应用程序。libmodbus 以 C 语言编写&#xff0c…

后端开发刷题 | 合并两个排序的链表

描述 输入两个递增的链表,单个链表的长度为n,合并这两个链表并使新链表中的节点仍然是递增排序的。 数据范围: 0≤n≤1000,−1000≤节点值≤1000 如输入{1,3,5},{2,4,6}时,合并后的链表为{1,2,3,4,5,6},…

python入门基础知识! 新手必备,看完技术突飞猛进!

基本的类 python最基础、最常用的类主要有int整形,float浮点型,str字符串,list列表,dict字典,set集合,tuple元组等等。int整形、float浮点型一般用于给变量赋值,tuple元组属于不可变对象&#x…

Nginx源码安装与进阶负载均衡

目录 一 web服务介绍 二 Nginx介绍与源码安装 2.1 nginx源码安装 2.2 平滑升级和回滚 三 配置文件详解 3.1 配置文件说明 3.2 全局配置与http模块 3.3 root与alias 3.4 location的介绍 3.5 账户认证 四 高级配置 4.1 nginx 压缩功能 4.2 变量介绍 五 nginx反向代…

【Android】adb devices 出现devices offline的问题

1 问题 adb devices 出现devices offline 2 解决方法 adb kill-serveradb start-server 然后,adb devices查看。 adb devices 问题解决啦。。。💛 💙 💜 ❤️ 💚 💛 💙 💜 ❤️…

韩顺平Java-第二十四章:MYSQL基础篇

一 数据库 1 数据库简单原理图 2 使用命令行窗口连接MYSQL数据库 (1)mysql -h 主机名 -P 端口 -u 用户名 -p密码; (2)登录前,保证服务启动。 3 MySQL三层结构 (1)所谓安装MySQL数…

第三期书生大模型实战营 第4关 Llamaindex RAG实践

前置知识 正式介绍检索增强生成(Retrieval Augmented Generation,RAG)技术以前,大家不妨想想为什么会出现这样一个技术。 给模型注入新知识的方式,可以简单分为两种方式,一种是内部的,即更新模…

ES6笔记总结(Xmind格式):第一天

Xmind鸟瞰图: 简单文字总结: es6知识总结: 新增语法: 1.let声明变量的特点: ①let 没有变量提升 ②在同一作用域下let的变量不能重复声明 ③let声明的变量存在块级作用域 2.const声明…

仿真软件的功能有哪些?仿真软件助力科研与工程领域

仿真软件是一种强大的工具,可以帮助工程师和科学家在虚拟环境中模拟和分析各种现象和系统。它们具有广泛的应用领域,包括工程设计、科学研究、产品开发和决策支持等。 随着科技的飞速发展,仿真软件已成为科研与工程领域中不可或缺的工具。本文…

“2025深圳电子信息展”带您感受科技创新如何改变世界

深圳,这座位于中国南海之滨的城市,自改革开放以来,便以惊人的速度崛起,成为了全球瞩目的经济特区与创新高地。被誉为“中国的硅谷”,深圳不仅是中国科技创新的重要引擎,更是高新技术产业的璀璨明珠&#xf…

洗衣行业在线预约小程序源码系统 源码可二次开发 带源代码包以及搭建部署教程

系统概述 在快节奏的现代生活中,时间成为了人们最宝贵的资源之一。随着科技的飞速发展,各行各业都在积极探索数字化转型,以提升服务效率与用户体验。洗衣行业,作为日常生活中不可或缺的服务领域,也不例外。今天&#…

记一次 SAP BP 编号范围错误引发的一个问题 GET_NRIV_LINE

本来想着循着错误提示去排查,但是还是想看看业务发生了什么,他们的操作是否有问题,不经意间发现 号码段是有问题的,由此大概可以判断是他们编号范围和类型之间的问题 角色和分组是否一致的,如果不一致就发生了以上错误…

roles及项目搭建(thirty-two day)

回顾: playbook 1、调用剧本 ansible-playbook /etc/ansible/playbook/book001.yml 2、编写剧本 --- - hosts: s1remote_user: roottasks:- name: 卸载httpdyum: namehttpd stateabsent- name: 安装nginxyum: namenginx …

知识付费小程序的优势

1. 便捷性:用户可以随时随地通过手机访问小程序,获取所需的知识内容,不受时间和空间的限制。 2. 精准定位:能够根据用户的兴趣、需求和行为数据,为其精准推送符合其需求的知识产品,提高用户满意度和购买转化…

最新专业版Python+PyCharm安装保姆级教程(附安装包+永久插件码)

想入门学习python,那么你的python和pycharm安装好是第一步!!!今天小编详细讲一下安装教程 如果你正准备入门Python并且找不到方向和学习路线的话可以试试我这一份学习方法+籽料呀! 点击 领取(无…

[数据集][目标检测]集装箱缺陷检测数据集VOC+YOLO格式4127张3类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):4127 标注数量(xml文件个数):4127 标注数量(txt文件个数):4127 标注…

STM32(F429) DAC 详解与应用实例

目录 前言 一、DAC 概述 1.主要特点 2.工作原理 3.DAC通道框图 二、DAC 的配置与使用 1.硬件连接 2.软件配置 3.应用实例:模拟电压输出 三、DAC 的高级应用 1.三角波的生成 2.噪音生成 四、DAC 的应用注意事项 1.参考电压选择 2.输出负载能力 3.噪声…

pulsar官方文档学习记录——pulsasr事务

pulsar事务 之前pulsar消息机制,和架构概览作为一个后端搬砖的需要了解的也差不多了。再补充个pulsar事务 因为exactly-once语义应用场景很多 pulsar事务可以能使流应用程序能够在一个原子操作中 ,消费、处理消息,生成消息。 需要事务的原…