(超详细)9-YOLOV5改进-添加EffectiveSEModule注意力机制

1、在yolov5/models下面新建一个EffectiveSEModule.py文件,在里面放入下面的代码
(超详细)9-YOLOV5改进-添加EffectiveSEModule注意力机制_第1张图片

代码如下:

import torch
from torch import nn as nn
from timm.models.layers.create_act import create_act_layer


class EffectiveSEModule(nn.Module):
    def __init__(self, channels, add_maxpool=False, gate_layer='hard_sigmoid'):
        super(EffectiveSEModule, self).__init__()
        self.add_maxpool = add_maxpool
        self.fc = nn.Conv2d(channels, channels, kernel_size=1, padding=0)
        self.gate = create_act_layer(gate_layer)

    def forward(self, x):
        x_se = x.mean((2, 3), keepdim=True)
        if self.add_maxpool:
            # experimental codepath, may remove or change
            x_se = 0.5 * x_se + 0.5 * x.amax((2, 3), keepdim=True)
        x_se = self.fc(x_se)
        return x * self.gate(x_se)

2、找到yolo.py文件,进行更改内容
在29行加一个from models.EffectiveSEModule import EffectiveSEModule, 保存即可
(超详细)9-YOLOV5改进-添加EffectiveSEModule注意力机制_第2张图片

3、找到自己想要更改的yaml文件,我选择的yolov5s.yaml文件(你可以根据自己需求进行选择),将刚刚写好的模块EffectiveSEModule加入到yolov5s.yaml里面,并更改一些内容。更改如下
(超详细)9-YOLOV5改进-添加EffectiveSEModule注意力机制_第3张图片

4、在yolo.py里面加入两行代码(335-337)
保存即可!
(超详细)9-YOLOV5改进-添加EffectiveSEModule注意力机制_第4张图片

你可能感兴趣的:(yolov5改进,YOLO,深度学习,机器学习)