添加YOLOv7中修改的FReLU激活函数

人工智能 2023-09-13 10:24:08
411阅读

1、在yolov7的utils中找到activation.py,在最后输入以下代码

#原理:将局部卷积后的输出与原始数据进行最大比较

类FReLU(nn.Module):

def __init__(self, c1, k=3): # ch_in, 内核

超级().__init__()

# 可分离卷积,不改变硬件和通道

self.conv=nn.Conv2d(c1, c1, k, 1, 1, 组=c1, 偏差=False)

self.bn=nn.BatchNorm2d(c1)

def 前进(自身,x):

# 卷积后的特征图与原始x的形状相同

return torch.max(x, self.bn(self.conv(x))) 2.将modules中common.py中的Conv模块改为以下代码

类Conv(nn.Module):

# 标准卷积

def __init__(self, c1, c2, k=1, s=1, p=None, g=1, act=True): # ch_in, ch_out, 内核, 步幅, 填充, 组

super(Conv, self).__init__()

self.conv=nn.Conv2d(c1, c2, k, s, autopad(k, p), groups=g, 偏差=False)

self.bn=nn.BatchNorm2d(c2)

self.act=FReLU(c2) if act 为True else (act if isinstance(act, nn.Module) else nn.Identity())

def 前进(自身,x):

返回self.act(self.bn(self.conv(x)))

def fusionforward(self, x):

返回self.act(self.conv(x))3。注释掉原来的Conv模块

4.再次训练即可。

the end
免责声明:本文不代表本站的观点和立场,如有侵权请联系本站删除!本站仅提供信息存储空间服务。