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格网,检测大、中、小目标。

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

SE机制

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

压缩和激励网络结构:

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

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

SE模块流程:

YOLOv5更换激活函数(FReLU+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 ))

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

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

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

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 位于右侧:

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

实验对比

评价标准

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

比较实验

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

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

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

消融研究

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

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

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

实验代码

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

Original: https://blog.csdn.net/qq_58355216/article/details/125080361
Author: Mr Dinosaur
Title: YOLOv5更换激活函数(FReLU+SE机制)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/720165/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球