YOLOV7改进:在不同位置添加CoordAtt注意力机制

 本文以yolov7-ting.yaml为基础网络结构进行修改,尝试将CoordAtt注意力机制添加到不同的位置。CBAM的原理不在赘述,直接开始代码修改。

第一步:在models/common.py中添加以下代码:

import torch
import torch.nn as nn
import torch.nn.functional as F


class h_sigmoid(nn.Module):
    def __init__(self, inplace=True):
        super(h_sigmoid, self).__init__()
        self.relu = nn.ReLU6(inplace=inplace)

    def forward(self, x):
        return self.relu(x + 3) / 6


class h_swish(nn.Module):
    def __init__(self, inplace=True):
        super(h_swish, self).__init__()
        self.sigmoid = h_sigmoid(inplace=inplace)

    def forward(self, x):
        return x * self.sigmoid(x)


class CoordAtt(nn.Module):
    def __init__(self, inp, reduction=32):
        super(CoordAtt, self).__init__()
        self.pool_h = nn.AdaptiveAvgPool2d((None, 1))
        self.pool_w = nn.AdaptiveAvgPool2d((1, None))

        mip = max(8, inp // reduction)

猜你喜欢

转载自blog.csdn.net/m0_51530640/article/details/130307214