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

yolov5添加ECA注意力机制

ECA注意力机制简介

论文题目:ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks

论文地址:here


基本原理
🐸 ECANet的核心思想是提出了一种不降维的局部跨通道交互策略,有效避免了降维对于通道注意力学习效果的影响。适当的跨通道交互可以在保持性能的同时显著降低模型的复杂性,通过少数参数的调整,获得明显的效果增益。通过这种机制,ECANet能够在不增加过多参数和计算成本的情况下,有效地增强网络的表征能力。

具体添加步骤

tips:在前两篇文章当中,我们提到了注意力机制的添加方法。
分为
不带有通道数的注意力机制:参考这篇文章 添加方法
带通道数的注意力机制:参考这篇文章添加方法
他们之间的区别在于,观察注意力机制的源代码中是否含有channel参数。

🔔 (1)在models文件夹下,新建一个:注意力机制名字.py。如本篇文章中使用ECAAttention.py.
🔔 (2)添加ECA注意力机制的代码


# author:mawei,SZU
import torch
from torch import nn
from torch.nn import init
class ECAAttention(nn.Module):def __init__(self, kernel_size=3):super().__init__()self.gap = nn.AdaptiveAvgPool2d(1)self.conv = nn.Conv1d(1, 1, kernel_size=kernel_size, padding=(kernel_size - 1) // 2)self.sigmoid = 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):y = self.gap(x)  # bs,c,1,1y = y.squeeze(-1).permute(0, 2, 1)  # bs,1,cy = self.conv(y)  # bs,1,cy = self.sigmoid(y)  # bs,1,cy = y.permute(0, 2, 1).unsqueeze(-1)  # bs,c,1,1return x * y.expand_as(x)if __name__ == '__main__':input = torch.randn(50, 512, 7, 7)eca = ECAAttention(kernel_size=3)output = eca(input)print(output.shape)


🔔 (3)修改yolo.py,添加如下行


from 你的注意力机制.py import *



在这里插入图片描述

🔔 (4) 修改yolo5s.yaml,这个取决你自己使用的是那种模型文件,比如你修改yolov5m.yaml代表你使用的时候yolov5m的模型。每种模型深度和模型规模不一样。
说明:具体你添加到那一层看个人习惯,任何一层都可以。

在这里插入图片描述

🔔 (5)最后在train.py当中,cfg参数中添加你自己修改的yaml文件,我这里是yolov5s.yaml.

在这里插入图片描述

完成上诉步骤之后,就可以点击运行了。

在这里插入图片描述

❤️yolov5,yolov7改进之SimAM 注意力机制

❤️yolov5,yolov7改进之Shuffle注意力机制

http://www.lryc.cn/news/163471.html

相关文章:

  • 华为在高端智能手机市场再次撕开了一道深深的口子
  • 前端设计模式和设计原则之设计模式
  • 提高在速卖通产品上的曝光率——自养号测评优势全面解析!
  • 指针进阶(二)
  • 【HCIE】03.BGP高级特性
  • 单个处理数据祖籍列表层级关系
  • Maven部署打包多环境(开发、测试、生产)配置教程
  • 【计算思维题】少儿编程 蓝桥杯青少组计算思维 数学逻辑思维真题详细解析第9套
  • 【Hello Algorithm】贪心算法
  • TOP-K问题
  • 【保姆级从0到1】UE5 蓝图入门教程1:关卡、蓝图入门
  • 【码银送书第六期】《ChatGPT原理与实战:大型语言模型的算法、技术和私有化》
  • redis 报错 Redis protected-mode 配置文件没有真正启动
  • 解决a标签内容中img标签和p标签垂直方向间隔太大的问题
  • 如何选择靠谱的全景平台?VR全景加盟从哪方面对比?
  • CentOS系统环境搭建(十八)——CentOS7安装Docker20.10.12和docker compose v2
  • NebulaGrap入门介绍和集群安装部署
  • thinkphp5.0 composer 安装oss提示php版本异常
  • AList dokcer安装及百度网盘挂载
  • whereIn 遇到了最大限制,临时表处理方式
  • 基于SSM的校园快递代取系统设计与实现
  • MySQL事务详细讲解
  • [linux] mmcv-full 安装的时候 Building wheel 卡住
  • Python怎么实现更高效的数据结构和算法? - 易智编译EaseEditing
  • 03-zookeeper节点动态上下线案例
  • 如何使用TensorFlow完成线性回归
  • @controller和@RestController的区别
  • GeoNet: Unsupervised Learning of Dense Depth, Optical Flow and Camera Pose 论文阅读
  • 蓝桥杯官网填空题(振兴中华)
  • node基础之七:Mongodb 数据库