当前位置: 首页 > news >正文

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

 SE注意力机制概念

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

源码

import numpy as np
import torch
from torch import nn
from torch.nn import initclass 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.lryc.cn/news/429062.html

相关文章:

  • 【正点原子K210连载】第三十二章 音频FFT实验 摘自【正点原子】DNK210使用指南-CanMV版指南
  • Android Studio修改默认.m2与Gradle user home缓存位置
  • BFS解决单源最短路问题
  • Linux运维、Windows运维常用命令,保存起来当手册用
  • FTP协议-匿名用户登录 从0到1
  • 【UltraVNC】私有远程工具VNC机器部署方式
  • 五大无线领夹麦克风误区科普:领夹麦杂音干扰不耐用问题必须规避
  • 适合金融行业的企业级跨网文件交换系统
  • vba发邮件的几种方法:新人如何快速上手?
  • 豆瓣评分8.7!Python pandas创始人亲码的数据分析入门手册!
  • 关于linux上root连接mysql时遇到的一点小问题以及rsync通过ssh的文件同步传输以及免密码传输的实现
  • 一、Socket介绍(也叫套接字)
  • 虚拟现实技术的发展现状如何?
  • 实时美颜技术的实现:视频美颜SDK与直播美颜工具的最佳实践
  • Java中的司机抢单实现:并发问题与解决方案
  • 2、Unity【基础】Mono中的重要内容
  • C++11:右值引用、移动语义和完美转发
  • 【大模型部署及其应用 】RAG检索技术和生成模型的应用程序架构:RAG 使用 Meta AI 的 Llama 3
  • python 速成指南
  • 多重示例详细说明Eureka原理实践
  • Qt下让程序只运行一个实例,避免重复打开
  • 考研交流平台设计与实现(源码+lw+部署文档+讲解等)
  • 哈希表--有效的字母异位词
  • GC终结标记 SuspendEE 是怎么回事
  • Ubuntu 中GCC交叉编译工具链安装
  • JEXL(Java Expression Language)用法概览
  • NC 完全二叉树结点数
  • 点灯案例优化(二) 利用位运算修改特定位
  • 【C++备忘录】
  • java编程 斐波拉契数列算法集锦【斐波拉契数列】【下】【集合类】【Stream函数式编程】