YOLOv5 加入SE注意力机制

步骤1:在common.py中添加SE模块

class SE(nn.Module):
    def __init__(self, c1, c2, r=16):
        super(SE, self).__init__()
        self.avgpool = nn.AdaptiveAvgPool2d(1)
        self.l1 = nn.Linear(c1, c1 // r, bias=False)
        self.relu = nn.ReLU(inplace=True)
        self.l2 = nn.Linear(c1 // r, c1, bias=False)
        self.sig = nn.Sigmoid()
    def forward(self, x):
        print(x.size())
        b, c, _, _ = x.size()
        y = self.avgpool(x).view(b, c)
        y = self.l1(y)
        y = self.relu(y)
        y = self.l2(y)
        y = self.sig(y)
        y = y.view(b, c, 1, 1)
        return x * y.expand_as(x)

 步骤2:在yolo.py文件中加入类名

YOLOv5 加入SE注意力机制_第1张图片

 新建yolos_se.yaml

YOLOv5 加入SE注意力机制_第2张图片

注意力机制可以加在Backbone、Neck、Head等部分,常见的有两种:一种是在主干的SPPF前面添加一层;二是将Backbone中的C3全部替换。 

YOLOv5 加入SE注意力机制_第3张图片

yolo.py

 YOLOv5 加入SE注意力机制_第4张图片

YOLOv5 加入SE注意力机制_第5张图片 运行yolo.py

YOLOv5 加入SE注意力机制_第6张图片

 修改train.py中的'--cfg'默认参数

 YOLOv5 加入SE注意力机制_第7张图片

你可能感兴趣的:(YOLO)