YOLOv5更换激活函数(FReLU+SE机制)

介绍

本次我们在卷积层添加SE注意力模块来改进YOLOv5算法,同时用FReLU替换SILU激活函数,并通过添加跳转连接来改进PANet特征融合网络。

为了本次实验的对比性,我使用Faster-RCNN、YOLOv4和YOLOv5三种算法。

Faster-RCNN目前是一种优秀的两级检测算法,而YOLOv4和YOLOv5在单级检测算法中表现良好。

本文通过在骨干网络的基卷积块中加入SE注意机制来改进YOLOv5网络,以增加图像的特征提取,并用FReLU激活函数代替基卷积块中的SiLU激活函数以增加语义特征提取。通过添加跳转链路改进了特征融合网络PANet,使输出层不仅自下而上的获取特征融合中涉及的信息,而且保留了原始节点的未融合信息。通过改进的网络模型,我测试了数据集,并验证了我们的模型对现有模型 mAP 的改进。

YOLOv5网络模型改进

YOLOv5

YOLOv5算法是一种目标回归方法,检测过程是将图像划分为一定数量的网格,遍历整个图像一次,当网格中检测到目标时,根据当前网格的前一帧绘制一个预测框,并直接预测结果。YOLOv5算法使用CSPDarknet53网络作为特征提取的骨干网络,特征融合网络使用SPP和PANet组合。预测网络使用3个不同尺度的网络,分别对应13×13、26×26和52×52格网,检测大、中、小目标。

 SE机制

SE模块主要由压缩和激励组成。SE是压缩和激励网络的缩写。注意机制很容易在计算机视觉中实现,并加载到网络模型中。

压缩和激励网络结构:

首先,通过全局池化对输入特征图进行处理,然后首先减小特征图的维数,然后增加两个全连接层,最后通过sigmoid激活函数获得相应的权重。可以对不同重要性的特征图执行相应的处理。

SE模块流程:

 SE注意力模块:

class SE(nn.Module):
    def __init__(self, c1, c2, ratio=16):
        super(SE, self).__init__()
        #c*1*1
        self.avgpool = nn.AdaptiveAvgPool2d(1)
        self.l1 = nn.Linear(c1, c1 // ratio, bias=False)
        self.relu = nn.ReLU(inplace=True)
        self.l2 = nn.Linear(c1 // ratio, c1, bias=False)
        self.sig = nn.Sigmoid()
    def forward(self, x):
        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)

FReLU

 将SiLU替换为FReLU,这是一种专用于视觉任务的激活函数,并增加了空间条件来扩展ReLU和PReLU,以增强激活空间的灵敏度,并显着改善图像视觉。FReLU提出的二维漏斗样激活函数,通过在维ReLU激活函数中加入漏斗条件T(X),将二维漏斗样激活函数扩展到二维。只引入少量的计算和过拟合风险来激活网络中空间不敏感的信息,以改善视觉任务。

表达式:F=max(x,T(x))

 下图添加了 SE 和 FReLU 的 Covn 以及原始 Covn ;SE机制和FReLU激活函数层的结合提高了卷积神经网络中捕获空间相关性的效率。

 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)))

 IM.PANet

通过添加跳转连接改进了PANet特征融合网络,使输出层不仅自下而上地获取特征融合中涉及的信息,而且保留了原始节点的未融合信息,减少了特征信息的丢失。增强的 PANet 网络结构我称之为 IM.PANet。

PANet 位于左侧,IM.PANet 位于右侧:

 实验对比

评价标准

本文通过比较实验,使用mAP、Recall和Percision比较模型性能。

比较实验

我们使用最具代表性的两阶段目标检测算法Faster-RCNN,以及YOLOv4和YOLOv5与我们改进的YOLOv5进行比较实验

 实验结果表明,改进的模型达到了0.739的最高映射,优于现有的检测算法。

消融研究

我对改进算法做了消融实验,分别在原来的YOLO5和YOLOv5的Covn中只添加了SENet模块,YOLOv5的Covn在添加IM.PANet的同时增加了SENet,我的模型是YOLOv5的Covn在FReLU上替换时增加了SENet和IM.PANet

 实验结果表明,通过同时向YOLOv5添加3个改进点,Ours的MAP最高,达到73.9。

实验代码

链接:https://pan.baidu.com/s/1pSodMzbhRvHkeZ79_8Dhkg 
提取码:xvw8 

  • 27
    点赞
  • 193
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 28
    评论
为了改进YOLOv5算法的性能,我们将SiLU激活函数替换为FReLU激活函数。FReLU是一种专用于视觉任务的激活函数,它通过在ReLU激活函数中引入漏斗条件来扩展激活函数的感知能力。具体而言,FReLU在二维ReLU激活函数中添加了漏斗条件T(X),从而将其扩展到二维空间。这样做可以在激活网络中引入一些计算量较小的空间不敏感的信息,以改善图像视觉效果。通过将SiLU替换为FReLU激活函数,我们可以显著改善YOLOv5算法在目标检测任务中的性能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [YOLOv5更换激活函数(FReLU+SE机制)](https://blog.csdn.net/qq_58355216/article/details/125080361)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [[YOLOv7/YOLOv5系列算法改进NO.34]更换激活函数为FReLU等十余种激活函数](https://blog.csdn.net/m0_70388905/article/details/127381053)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 28
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr Dinosaur

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值