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

这篇具有很好参考价值的文章主要介绍了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 文章来源地址https://www.toymoban.com/news/detail-479293.html

到了这里,关于YOLOv5更换激活函数(FReLU+SE机制)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【目标检测】yolov5改进系列:主干网络中添加SE注意力机制网络

    写在前面: 首先感谢兄弟们的关注和订阅,让我有创作的动力,在创作过程我会尽最大能力,保证作品的质量,如果有问题,可以私信我,让我们携手共进,共创辉煌。 CNN网络中,图像或者说特征图Feature Map的特征主要分为空间特征(Spatial)和通道(Channel)特征。对于空间

    2023年04月16日
    浏览(36)
  • YOLOv5基础知识点——激活函数

    ​​​​​​​什么是激活函数该选哪种激活函数?_哔哩哔哩_bilibili 深度学习笔记:如何理解激活函数?(附常用激活函数) - 知乎 (zhihu.com)  详解激活函数(Sigmoid/Tanh/ReLU/Leaky ReLu等) - 知乎 (zhihu.com) 算法面试问题二(激活函数相关)【这些面试题你都会吗】 - 知乎 (zhi

    2024年02月09日
    浏览(39)
  • 【YOLOv7/YOLOv5系列算法改进NO.47】改进激活函数为GELU

    作为当前先进的深度学习目标检测算法YOLOv7,已经集合了大量的trick,但是还是有提高和改进的空间,针对具体应用场景下的检测难点,可以不同的改进方法。此后的系列文章,将重点对YOLOv7的如何改进进行详细的介绍,目的是为了给那些搞科研的同学需要创新点或者搞工程

    2024年02月02日
    浏览(39)
  • yolov5改进之加入CBAM,SE,ECA,CA,SimAM,ShuffleAttention,Criss-CrossAttention,CrissCrossAttention多种注意力机制

    本文所涉及到的yolov5网络为6.1版本(6.0-6.2均适用) yolov5加入注意力机制模块的 三个标准步骤 (适用于本文中的任何注意力机制) 1.common.py中加入注意力机制模块 2.yolo.py中增加对应的注意力机制 3.yaml文件中添加相应模块 注:所有注意力机制的添加方法都是一致的,加

    2023年04月08日
    浏览(31)
  • YOLOv8、YOLOv7、YOLOv5改进注意力机制:首发最全汇总 | S2A, SE,SimAM, SKA,ShA, SOCA, CA, CBAM, CrissCrossA, NAM, GAM等

    💡统一使用 YOLOv5 代码框架, 结合不同模块来构建不同的YOLO目标检测模型。 🌟本项目包含大量的改进方式,降低改进难度,改进点包含 【Backbone特征主干】 、 【Neck特征融合】 、 【Head检测头】 、 【注意力机制】 、 【IoU损失函数】 、 【NMS】 、 【Loss计算方式】 、 【自注

    2024年02月06日
    浏览(92)
  • 【YOLOv7/YOLOv5系列算法改进NO.54】改进激活函数为ReLU、RReLU、Hardtanh、ReLU6、Sigmoid、Tanh、Mish、Hardswish、ELU、CELU等

    作为当前先进的深度学习目标检测算法YOLOv7,已经集合了大量的trick,但是还是有提高和改进的空间,针对具体应用场景下的检测难点,可以不同的改进方法。此后的系列文章,将重点对YOLOv7的如何改进进行详细的介绍,目的是为了给那些搞科研的同学需要创新点或者搞工程

    2023年04月22日
    浏览(28)
  • YOLOv5中添加SE模块详解——原理+代码

    论文地址: Squeeze-and-Excitation Networks [CVPR2017] Caffe代码地址: SENet-Caffe Pytorch代码地址: SENet-Pytorch 1. 设计原理   论文中提到,在SENet提出之前,大部分工作专注于研究特征图的 空间编码质量 (可以理解为每个通道的特征图的特征提取质量) ,即只关注每个通道中特征图的

    2024年02月06日
    浏览(23)
  • YOLOv5 更换Neck之 BiFPN

    🌟想了解YOLO系列算法更多教程欢迎订阅我的专栏🌟 对于基础薄弱的同学来说,推荐阅读《目标检测蓝皮书》📘,里面涵盖了丰富的目标检测实用知识,是你迅速掌握目标检测的理想选择! 如果想了解 YOLOv5 和 YOLOv7 系列算法的训练和改进,可以关注专栏《YOLOv5/v7 改进实战

    2024年02月06日
    浏览(29)
  • 优化改进YOLOv5算法之添加SE、CBAM、CA模块(超详细)

    目录 1 SENet 1.1 SENet原理 1.2 SENet代码(Pytorch) 1.3 YOLOv5中加入SE模块  1.3.1 common.py配置 1.3.2 yolo.py配置 1.3.3 创建添加RepVGG模块的YOLOv5的yaml配置文件 2 CBAM 2.1 CBAM原理 2.2 CBAM代码(Pytorch) 2.3 YOLOv5中加入CBAM模块  2.3.1 common.py配置 2.3.2 yolo.py配置 2.3.3 创建添加CBAM模块的YOLOv5的yaml配

    2024年04月17日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包