b站B导的yoloV7版本添加注意力机制

news/2024/7/11 1:02:53 标签: YOLO, 深度学习, 计算机视觉

视频参考:

【Pytorch 图像处理中注意力机制的代码详解与应用(Bubbliiiing 深度学习 教程)】

yolov7博客参考:

睿智的目标检测61——Pytorch搭建YoloV7目标检测平台

注意力机制介绍:

神经网络学习小记录64——Pytorch 图像处理中注意力机制的解析与代码详解

步骤:

①获取注意力机制的代码

https://github.com/bubbliiiing/yolov4-tiny-pytorch/blob/master/nets/attention.py

②看b导的yolov7博客介绍以及视频

看完视频可以知道,添加注意力机制最好选在加强特征提取网络。注意力机制是一个即插即用的模块,理论上可以放在任何一个特征层后面,可以放在主干网络,也可以放在加强特征提取网络。由于放置在主干会导致网络的预训练权重无法使用,所以将注意力机制应用加强特征提取网络上。

③yolov7添加注意力的地方:

一共五个地方,如图所示,三个feat和两个上采样的地方。

④添加注意力机制的代码,放在net文件夹下

⑤在nets/yolo.py增加代码

添加模块

from .attention import se_block,cbam_block,eca_block

attention_blocks = [se_block,cbam_block,eca_block]

找到yolo_body(快捷键ctrl+f搜索yolo_body)

在参数列表添加attention参数,attention = 0:表示原版,attention=1表示senet,attention=2表示cbam,attention=3表示ecanet,这个序号与我们在文件头部定义的

attention_blocks = [se_block,cbam_block,eca_block]有关。

在该__init__函数的末尾加上:

 self.attention = attention
        if attention >= 1 and attention <= 3:
            self.feat1_attention = attention_blocks[attention - 1](512)#括号表示通道数
            self.feat2_attention = attention_blocks[attention - 1](1024)
            self.feat3_attention = attention_blocks[attention - 1](1024)
            self.upsample_attention5 = attention_blocks[attention - 1](256)
            self.upsample_attention4 = attention_blocks[attention - 1](128)

在forward函数增加如下代码:

if self.attention >= 1 and self.attention <= 3:
    feat1 = self.feat1_attention(feat1)
    feat2 = self.feat2_attention(feat2)
    feat3 = self.feat3_attention(feat3)
if self.attention >= 1 and self.attention <= 3:
    P5_upsample = self.upsample_attention5(P5_upsample)
if self.attention >= 1 and self.attention <= 3:
    P4_upsample = self.upsample_attention4(P4_upsample)

接下来只需要修改nets/yolo.py中yolo_body初始化参数列表的attention的值即可切换不同的注意力机制

完成。


http://www.niftyadmin.cn/n/85644.html

相关文章

风储VSG-基于虚拟同步发电机的风储并网系统MATLAB仿真

MATLAB2021b版本仿真模型&#xff1a;风力发电机模块、储能控制模块、功率计算模块、VSG控制模块、电压电流双环控制模块。永磁同步风机输出功率、储能系统输出功率以及逆变器输出功率曲线。直流母线电压波动曲线。逆变器输出电压、电流曲线。完整模型见博主资源&#xff01;&a…

《Java核心技术》笔记——第三章~第五章

文章目录CH3.Java的基本程序设计结构~CH53.1 基本语法差异关键字差异——相同关键字的用法差异——运算符差异——其他差异——3.2 面向对象差异基本封装继承多态Java中的新概念3.3 基本类的使用3.4 基本工具使用CH3.Java的基本程序设计结构~CH5 (从java基本语法与c的对比上看…

开学季实惠好用电容笔有哪些?推荐平价好用的电容笔

随着苹果电容笔的热度&#xff0c;现在国产的电容笔&#xff0c;品牌也在不断的增加&#xff0c;而原本的Apple Pencil&#xff0c;虽然功能很好&#xff0c;但售价也是很贵&#xff0c;不是普通的用户都能买得起的。目前市场上已经出现了许多平替电容笔&#xff0c;它们可以很…

美创科技荣获“PostgreSQL中国最佳运维服务商”

近日&#xff0c;由中国开源软件推进联盟PostgreSQL分会&中科院软件所&CSDN联合举办主办的“中国PostgreSQL数据库生态大会”在北京中科院软件所隆重召开。美创科技受邀参加&#xff0c;三位顶级数据库技术专家亮相&#xff0c;分享美创科技在数据库内核技术、PostgreS…

QHash-官翻

QHash 类 template <typename Key, typename T> class QHash QHash 类是一种模板类&#xff0c;提供基于哈希表的字典类结构。更多内容… 头文件:#include <QHash>qmake:QT core派生类:QMultiHash 所有成员列表&#xff0c;包括继承的成员废弃的成员 注意&…

Python基础-数据类型之字典

一、字典的定义 字典是用key:value的形式来存储数据的&#xff0c;其中key可以对value有描述性的功能。 key&#xff1a;为不可变类型的数据类型&#xff0c;一般使用字符串类型&#xff0c;key是唯一的&#xff0c;不可重复 value&#xff1a;不限制&#xff0c;所有数据类…

nginx.conf配置方法详细介绍

从前面的内容学习中&#xff0c;我们知道Nginx的核心配置文件默认是放在/usr/local/nginx/conf/nginx.conf&#xff0c;这一节&#xff0c;我们就来学习下nginx.conf的内容和基本配置方法。读取Nginx自带的Nginx配置文件&#xff0c;我们将其中的注释部分【学习一个技术点就是在…

SpringAOP从入门到源码分析大全,学好AOP这一篇就够了(一)

文章目录系列文档索引一、认识AOP1、AOP的引入原因2、AOP常见使用场景日志场景统计场景安防场景性能场景3、AOP概念AOP 的概念Aspect 概念&#xff08;切面&#xff09;Join point 概念&#xff08;连接点&#xff09;Pointcut 概念&#xff08;切入点&#xff09;Advice 概念&…