郑州视频网站建设,Wordpress 搜索热词,国内国际时事100字,wordpress4.7.4主题目录
一、SimAM注意力机制核心代码
二、修改common.py
三、修改yolo.py
三、建立yaml文件
四、验证 一、SimAM注意力机制核心代码
在models文件夹下新建modules文件夹#xff0c;在modules文件夹下新建一个py文件。这里为simam.py。复制以下代码到文件里面。
import…目录
一、SimAM注意力机制核心代码
二、修改common.py
三、修改yolo.py
三、建立yaml文件
四、验证 一、SimAM注意力机制核心代码
在models文件夹下新建modules文件夹在modules文件夹下新建一个py文件。这里为simam.py。复制以下代码到文件里面。
import torch
import torch.nn as nnclass SimAM(torch.nn.Module):def __init__(self, channels None, e_lambda 1e-4):super(SimAM, self).__init__()self.activaton nn.Sigmoid()self.e_lambda e_lambdadef __repr__(self):s self.__class__.__name__ (s (lambda%f) % self.e_lambda)return sstaticmethoddef get_module_name():return simamdef forward(self, x):b, c, h, w x.size()n w * h - 1x_minus_mu_square (x - x.mean(dim[2,3], keepdimTrue)).pow(2)y x_minus_mu_square / (4 * (x_minus_mu_square.sum(dim[2,3], keepdimTrue) / n self.e_lambda)) 0.5return x * self.activaton(y)
注意很多改进教程都是将代码直接复制到common.py文件如果改进机制多了容易造成混乱。建议创建一个modules文件夹将改进机制放里面方便管理。
二、修改common.py
在common.py文件中在前面的部分添加以下代码导入GhostV2.py的内容
from models.modules.simam import *三、修改yolo.py
在yolo.py文件中在导入common模块的上面一行添加以下代码导入GhostV2.py的内容
from models.modules.simam import *注意这里位置不要搞错不然可能会找不到导入的模块。
如下图所示
找到parse_model函数将SimAM模块加入如下图所示
三、建立yaml文件
在models文件夹下复制yolov5s.yaml文件粘贴并重命名为yolov5s-simam.yaml。
这里将SimAM注意力机制加在backbone最末端。这样可以使注意力机制看到整个backbone部分的特征图将具有全局视野类似于一个小的transformer结构。
如图所示将SimAM注意力机制加在SPPF的下一层 加了层数后后面的head部分也得修改如下图所示
修改前 修改后 加一层就在参数上加一若加多个机制依此类推。
yolov5s-simam.yaml完整代码如下
# Ultralytics YOLOv5 , AGPL-3.0 license# Parameters
nc: 80 # number of classes
depth_multiple: 0.33 # model depth multiple
width_multiple: 0.50 # layer channel multiple
anchors:- [10, 13, 16, 30, 33, 23] # P3/8- [30, 61, 62, 45, 59, 119] # P4/16- [116, 90, 156, 198, 373, 326] # P5/32# YOLOv5 v6.0 backbone
backbone:# [from, number, module, args][[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2[-1, 1, Conv, [128, 3, 2]], # 1-P2/4[-1, 3, C3, [128]],[-1, 1, Conv, [256, 3, 2]], # 3-P3/8[-1, 6, C3, [256]],[-1, 1, Conv, [512, 3, 2]], # 5-P4/16[-1, 9, C3, [512]],[-1, 1, Conv, [1024, 3, 2]], # 7-P5/32[-1, 3, C3, [1024]],[-1, 1, SPPF, [1024, 5]], # 9[-1, 3, SimAM, [1024]], # 10]# YOLOv5 v6.0 head
head: [[-1, 1, Conv, [512, 1, 1]],[-1, 1, nn.Upsample, [None, 2, nearest]],[[-1, 6], 1, Concat, [1]], # cat backbone P4[-1, 3, C3, [512, False]], # 14[-1, 1, Conv, [256, 1, 1]],[-1, 1, nn.Upsample, [None, 2, nearest]],[[-1, 4], 1, Concat, [1]], # cat backbone P3[-1, 3, C3, [256, False]], # 18 (P3/8-small)[-1, 1, Conv, [256, 3, 2]],[[-1, 15], 1, Concat, [1]], # cat head P4[-1, 3, C3, [512, False]], # 21 (P4/16-medium)[-1, 1, Conv, [512, 3, 2]],[[-1, 11], 1, Concat, [1]], # cat head P5[-1, 3, C3, [1024, False]], # 24 (P5/32-large)[[18, 21, 24], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)]
至此更改完成。
四、验证
在yolo.py 文件里面的配置文件改为刚才自定义的yolov5s-simam.yaml ctrlshiftp 在弹出框窗口搜索Python:选择解释器选择自己创建的Python虚拟环境这里是yolo。 运行yolo.py出现刚刚加入的SimAM注意力机制说明加入成功。