目标检测算法——YOLOv5/YOLOv7改进之更换FReLU激活函数

目标检测算法——YOLOv5/YOLOv7改进之更换FReLU激活函数

深度学习Tricks,第一时间送达

论文地址:https://arxiv.org/pdf/2007.11824.pdf

代码地址:https://github.com/megvii-model/FunnelAct

ECCV2020 | FReLU:旷视提出一种新的激活函数,实现像素级空间信息建模

该作者提出了一种用于图像识别任务的简单但有效的激活函数,称为Funnel 激活函数(FReLU),它通过增加可忽略的空间条件开销将ReLU和PReLU扩展为2D激活函数。主要的创新点:在激活函数阶段实现像素级的空间信息建模能力,能够用于目标检测、语义分割等目标识别任务,简单又高效!

对ImageNet数据集、COCO数据集检测任务和语义分割任务进行了实验,展示了FReLU激活函数在视觉识别任务中的巨大改进和鲁棒性。

目标检测算法——YOLOv5/YOLOv7改进之更换FReLU激活函数

作者提出的FReLU(Funnel ReLU ——漏斗ReLU)非线性激活函数,在只增加一点点的计算负担的情况下,将ReLU和PReLU扩展成2D激活函数。具体的做法是将max()函数内的条件部分(原先ReLU的x<0部分)换成了2D的漏斗条件(代码主要通过DepthWise Separable Conv + BN 实现),解决了激活函数中的空间不敏感问题,使规则(普通)的卷积也具备捕获复杂的视觉布局能力,使模型具备像素级建模的能力。

目标检测算法——YOLOv5/YOLOv7改进之更换FReLU激活函数

YOLOv5/YOLOv7更换FReLU激活函数:

1.找到YOLOv5/YOLOv7的utils/activations.py文件,添加想要替换的激活函数。下面以FReLU激活函数为例,复制粘贴即可。

# FReLU https://arxiv.org/abs/2007.11824 -------------------------------------------------------------------------------
class FReLU(nn.Module):
    def __init__(self, c1, k=3):  # ch_in, kernel
        super().__init__()
        self.conv = nn.Conv2d(c1, c1, k, 1, 1, groups=c1, bias=False)
        self.bn = nn.BatchNorm2d(c1)

    def forward(self, x):
        return torch.max(x, self.bn(self.conv(x)))

2.打开common.py文件,修改Conv以及BottleneckCSP模块,将激活函数由原来的SiLU更换为FReLU激活函数。

目标检测算法——YOLOv5/YOLOv7改进之更换FReLU激活函数

目标检测算法——YOLOv5/YOLOv7改进之更换FReLU激活函数

其他激活函数替换方法与此相同,直接调用即可。小伙伴们改进过程有问题可直接call博主~

关于算法改进及论文投稿可关注并留言博主的CSDN/QQ

>>>一起交流!互相学习!共同进步!<<<

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
扎眼的阳光的头像扎眼的阳光普通用户
上一篇 2023年2月25日 上午11:36
下一篇 2023年2月25日 上午11:42

相关推荐