用小米路由器做网站,国内比较好的vi设计公司,能直接看的网站有哪些,工业软件开发工具声明#xff1a;笔记是做项目时根据B站博主视频学习时自己编写#xff0c;请勿随意转载#xff01;
一、站在巨人的肩膀上
SE模块即Squeeze-and-Excitation 模块#xff0c;这是一种常用于卷积神经网络中的注意力机制#xff01;#xff01;
借鉴代码的代码链接如下笔记是做项目时根据B站博主视频学习时自己编写请勿随意转载
一、站在巨人的肩膀上
SE模块即Squeeze-and-Excitation 模块这是一种常用于卷积神经网络中的注意力机制
借鉴代码的代码链接如下
注意力机制-SEhttps://github.com/ZhugeKongan/Attention-mechanism-implementation
需要model里面的SE_block.py文件 # -*- coding: UTF-8 -*-SE structureimport torch.nn as nn # 导入PyTorch的神经网络模块
import torch.nn.functional as F # 导入PyTorch的神经网络功能函数模块 class SE(nn.Module): # 定义一个名为SE的类该类继承自PyTorch的nn.Module表示一个神经网络模块 def __init__(self, in_chnls, ratio): # 初始化函数in_chnls表示输入通道数ratio表示压缩比率 super(SE, self).__init__() # 调用父类nn.Module的初始化函数 # 使用AdaptiveAvgPool2d将输入的空间维度压缩为1x1即全局平均池化 self.squeeze nn.AdaptiveAvgPool2d((1, 1)) # 使用1x1卷积将通道数压缩为原来的1/ratio实现特征压缩 self.compress nn.Conv2d(in_chnls, in_chnls // ratio, 1, 1, 0) # 使用1x1卷积将通道数扩展回原来的in_chnls实现特征激励 self.excitation nn.Conv2d(in_chnls // ratio, in_chnls, 1, 1, 0) def forward(self, x): # 定义前向传播函数 out self.squeeze(x) # 对输入x进行全局平均池化 out self.compress(out) # 对池化后的输出进行特征压缩 out F.relu(out) # 对压缩后的特征进行ReLU激活 out self.excitation(out) # 对激活后的特征进行特征激励 # 对激励后的特征应用sigmoid函数然后与原始输入x进行逐元素相乘实现特征重标定 return x*F.sigmoid(out)
代码后面有附注的注释GPT解释的很好用理解即可。对于使用者来说重要关注点还是它的输入通道、输出通道、需要传入的参数等这个函数整体传入in_chnls, ratio两个参数。 二、开始修改网络结构
与上节的C2f修改基本流程一致但稍有不同
model/common.py加入新增的SE网络结构直接复制粘贴如下这里加在了上节的C2f之前 上面说到这个函数整体传入in_chnls, ratio两个参数 model/yolo.py设定网络结构的传参细节
上期的C2f模块之所以可以参照原本存在的C3模块属性是因为两者相似但这里的SE模块就不可简单的在C3x后加SE而是需要在下面加入一段elif代码 elif m is SE:c1 ch[f]c2 args[0]if c2 ! no: # if not outputc2 make_divisible(c2 * gw, 8)args [c1, args[1]] 即当新引入的模块中存在输入输出维度时需要使用gw调整输出维度 model/yolov5s.yaml设定现有模型结构配置文件
老样子复制一份新的配置文件命名为yolov5s-se.yaml。首先需要在backbone的最后加上SE模块相当于多了一层为第10层其次考虑到backbone里多了一层且在head里的输入层来源不止上一层-1一个所以输入层来源大于等于第10层的都需要改为往后递推1层。下图左边为原始的yaml配置文件右侧为修改后的 即当yaml文件引入新的层后需要修改模型结构的from参数上期是将C3替换为C2f模块所以不涉及这一点 train.py训练时指定模型结构配置文件
这次将parse_model函数里的第二个参数cfg改为yolov5s-se.yaml即可运行train.py开始训练 可见训练时第10层已经引入了SE注意力机制模块 100次迭代后结果如下结果保存在runs\train\exp12文件夹文件夹里有很多指标曲线可对比分析 往期精彩
STM32专栏9.9http://t.csdnimg.cn/A3BJ2
OpenCV-Python专栏9.9http://t.csdnimg.cn/jFJWe
AI底层逻辑专栏9.9http://t.csdnimg.cn/6BVhM
机器学习专栏免费http://t.csdnimg.cn/ALlLlSimulink专栏免费http://t.csdnimg.cn/csDO4电机控制专栏免费http://t.csdnimg.cn/FNWM7