文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

YOLOv5网络模型的结构原理讲解(全)

2023-09-07 05:38

关注

目录

前言

YOLOv5有几种不同的架构,各网络模型算法性能分别如下:
在这里插入图片描述

1. 基本概念

YOLOv5是一种目标检测算法,其模型结构主要包括以下组成部分:

总体来说,YOLOv5的模型结构相对简单,但其使用了多种技术和策略,如CSP结构、FPN网络、Mish激活函数和Focal Loss损失函数等,以提高模型的性能和鲁棒性。

配合代码可看我这篇文章:Yolov5 代码从入门到畅通(v6.2) 附代码注释

2. 输入端

输入端 主要由Mosaic 图像增强、自适应锚框计算 以及 自适应图片缩放 组成

2.1 Mosaic 图像增强

补充:YOLOv5图像增强支持多种模式,包括以下几种:- Mosaic模式:将四张不同的图像拼接成一张图像,用于增加数据集的多样性。- Random模式:包含多种图像增强方式,如随机缩放、随机裁剪、随机旋转、随机亮度调整、随机对比度调整等,可以随机地选择其中一种或多种方式进行图像增强。- MixUp模式:将两张不同的图像进行混合,用于增加数据集的多样性和防止过拟合。- CutMix模式:将两张不同的图像进行裁剪混合,用于增加数据集的多样性和防止过拟合。- GridMask模式:通过在图像中加入遮罩,可以增加数据集的多样性和防止过拟合。- AutoAugment模式:通过搜索最优的数据增强策略来提高模型的性能。

实战代码模块的YOLOv5s的项目代码中,设置了两种类型,分别是Mosaic4 load和Mosaic9 load,这是两种不同的数据增强方式,它们的区别在于使用的图像数量不同。

总之,Mosaic4 load和Mosaic9 load都是用于数据增强的方法,它们的区别在于使用的图像数量不同,Mosaic9 load使用的图像数量更多,相应地增加了训练集的多样性和难度,但也增加了计算量和训练时间。

2.2 自适应锚框计算

在目标检测算法中,锚框是指在输入图像上定义的一些预先设定好的矩形框,用于检测不同尺度和宽高比的目标。

传统的目标检测算法中,通常需要手动设置锚框的大小和宽高比等参数。然而,这些参数的选择往往需要经验和调试,容易出现不稳定和不准确的情况。

为了解决这个问题,自适应锚框的方法应运而生。自适应锚框的思想是通过学习的方式自动计算出最适合输入图像的锚框参数,而不需要手动设置。这种方法可以提高目标检测的精度和鲁棒性。

自适应锚框计算的方法主要有两种:

总之,自适应锚框的方法可以避免手动设置锚框参数的问题,提高目标检测的精度和鲁棒性。同时,自适应锚框的方法也是目标检测领域的一个研究热点。

而 YOLOv5使用的是一种名为ATSS(Adaptive Training Sample Selection)的自适应锚框计算方法。

2.3 自适应图片缩放

在YOLOv5中,自适应图片缩放(Adaptive Image Scaling)是一种基于目标尺度的图像缩放方式,它可以自适应地缩放输入图像的尺寸,以适应不同尺度目标的检测。

以YOLOv5s为例,详细介绍一下自适应图片缩放的原理和步骤:

阶段过程
预处理阶段首先,输入图像将被缩放到一个基准尺寸,即YOLOv5s中的默认基准尺寸是640x640像素

如果输入图像尺寸小于基准尺寸,则会通过插值算法将其缩放到基准尺寸;如果输入图像尺寸大于基准尺寸,则会将其缩放到一个较小的尺寸,并在后续的缩放过程中进行适当调整。
网络输入阶段在图像输入到网络之前,YOLOv5会根据图像中最大目标的尺度,动态地调整输入图像的尺寸。具体来说,YOLOv5会计算出图像中最大目标的尺寸,然后根据一定的缩放规则将图像缩放到一个适当的尺寸,以确保最大目标的尺寸可以被检测到。

例如,在YOLOv5s中,如果最大目标的尺寸小于80x80像素,则将图像缩放到640x640像素;如果最大目标的尺寸大于80x80像素但小于160x160像素,则将图像缩放到1280x1280像素;如果最大目标的尺寸大于160x160像素,则将图像缩放到1920x1920像素。
网络输出阶段在网络输出时,YOLOv5会根据预测框的位置和尺寸,将检测结果映射回原始图像坐标系。由于输入图像的尺寸可能被缩放过,因此需要进行相应的反缩放操作,以便将检测结果映射回原始图像坐标系中。

总之,YOLOv5中的自适应图片缩放是一种基于目标尺度的图像缩放方式,它可以自适应地缩放输入图像的尺寸,以适应不同尺度目标的检测。这种方法可以有效地解决目标检测中存在的尺度不一致问题,提高检测精度和鲁棒性。

3. Backbone层

Backbone层主要由Focus结构 以及 CSP结构 组成

3.1 Focus结构

YOLOv5中的Focus结构是一种用于特征提取的卷积神经网络层,用于将输入特征图中的信息进行压缩和组合,从而提取出更高层次的特征表示。

Focus结构是YOLOv5中的一种特殊卷积操作,它被用作网络中的第一个卷积层,用于对输入特征图进行下采样,以减少计算量和参数量。
在这里插入图片描述

具体来说,Focus结构可以将输入特征图划分成四个子图,并将这四个子图进行通道拼接,从而得到一个更小的特征图。假设输入特征图的大小为N×N×C,其中N为特征图的尺寸,C为通道数,则Focus结构的计算过程可以分为以下几个步骤:

  1. 将输入特征图进行通道分离,得到两个大小为N×N×C/4的特征图,记为x和y。

  2. 对x和y分别进行横向和纵向的步长为2的卷积操作,得到两个大小为N/2×N/2×C/4的特征图,记为x’和y’。

  3. 将x’和y’进行通道拼接,得到一个大小为N/2×N/2×C/2的特征图,记为z。

  4. 对z进行横向和纵向的步长为2的卷积操作,得到一个大小为N/4×N/4×C/2的特征图,即为Focus结构的输出。

由于Focus结构对输入特征图进行了下采样,因此可以有效地减少计算量和参数量,同时保留了输入特征图中的重要信息,有助于提高模型的特征提取能力。在YOLOv5中,Focus结构被广泛用于各个卷积块的第一个卷积层,以实现对输入特征图的下采样和特征压缩。

特别注意的是:
YOLOv5的代码中有时会将Focus结构替换为卷积层。

这是因为Focus结构在实现上比较复杂,需要进行通道分离、卷积、通道拼接等操作,导致计算量较大,不利于模型的训练和推理。

为了简化网络结构并提高运行效率,YOLOv5的作者采用了一种策略,即将Focus结构替换为标准的卷积层,从而减少计算量和参数量。

具体来说,YOLOv5中的卷积层是以步长为2的方式进行下采样的,与Focus结构类似,它可以实现对输入特征图的压缩和下采样。因此,将Focus结构替换为卷积层可以在一定程度上提高模型的训练和推理效率,同时减少代码的复杂度和开发难度。

需要注意的是,由于卷积层只能进行简单的特征压缩和下采样操作,可能会损失一些输入特征图中的细节信息。因此,在某些需要较高特征提取能力的任务中,采用Focus结构可能会更加合适。

3.2 CSP结构

CSP(Cross Stage Partial)结构是YOLOv5中的一个重要组成部分,用于构建骨干网络(backbone)。CSP结构最初在CVPR 2020中提出,可以有效地减少网络参数和计算量,同时提高特征提取的效率。

CSP结构的核心思想是将输入特征图分成两部分,一部分经过一个小的卷积网络(称为子网络)进行处理,另一部分则直接进行下一层的处理。然后将两部分特征图拼接起来,作为下一层的输入。

具体来说,CSP结构包括以下几个步骤:

  1. 将输入特征图分成两部分,一部分进行子网络的处理,另一部分直接进行下一层的处理。

  2. 在子网络中,先使用一个卷积层将输入特征图进行压缩,然后进行一系列卷积操作,最后再使用一个卷积层进行扩张。这样可以提取出相对较少的高层次特征。

  3. 在下一层中,将经过子网络处理的特征图与直接处理的特征图进行拼接,然后再进行一系列卷积操作。这样可以将低层次的细节特征和高层次的抽象特征结合起来,提高特征提取的效率。

CSP结构在YOLOv5中被广泛应用,包括骨干网络中的多个阶段以及头部网络(head)中的一些模块。它可以显著地减少网络的参数和计算量,同时提高特征提取的效率,从而加快模型的训练和推理速度。

补充:

在CSP结构中,有两种不同的实现方式:CSPDarknet53和CSPResNet50。总的来说,CSPDarknet53和CSPResNet50都采用了CSP结构进行特征提取,但具体的实现方式略有不同。它们在YOLO系列目标检测模型中都取得了很好的效果。

两者 主要是 加入了CSP模块,用于提高特征提取的效率和减少模型的参数量。包括多个CSP模块,每个模块将输入特征图分成两部分,一部分进行子网络的处理,另一部分直接进行下一层的处理。然后将两部分特征图拼接起来,作为下一层的输入。这样可以将低层次的细节特征和高层次的抽象特征结合起来,提高特征提取的效率。

3. Neck网络

YOLOv5中的Neck网络是指在骨干网络的基础上加入的中间特征提取网络,主要用于增强模型的特征表达能力和感受野,进一步提升模型的检测性能。

YOLOv5中采用了两种不同的Neck网络结构:SPP和PAN。

Neck网络结构具体说明
SPP(Spatial Pyramid Pooling)结构一种金字塔池化结构,可以对不同大小的特征图进行池化,从而增强模型对不同尺度目标的感知能力。具体地,SPP结构将输入特征图分别进行1x1、2x2和3x3的池化操作,并将不同尺度的池化结果拼接起来,作为SPP结构的输出。
PAN(Path Aggregation Network)结构一种多尺度特征融合结构,它可以将不同层次的特征进行有效融合,并且避免信息丢失。具体地,PAN结构首先通过上采样将较高层次的特征图尺度与较低层次的特征图尺度对齐,然后通过特征融合模块将它们进行融合,并最终输出融合后的特征图。

在YOLOv5中,SPP和PAN结构可以相互配合使用,以提高模型的检测性能。SPP结构可以增强模型的感知能力和尺度不变性,而PAN结构可以增强多尺度特征的融合能力。

3.1 SPP结构

3.2 PAN结构

PAN(Path Aggregation Network)是一种用于目标检测的特征金字塔网络结构,旨在通过多层级的特征融合,提升模型对不同尺度目标的感知能力。

PAN结构主要由两个模块组成:特征金字塔模块和特征融合模块。

总之,PAN结构通过特征金字塔和特征融合两个模块的组合,能够有效地提升目标检测的性能。

4. 输出端

YOLOv5的输出端主要是预测框,每个预测框由以下信息组成:

YOLOv5中的输出层一般包括三个不同尺度的特征图,每个特征图对应不同尺度的预测框,每个预测框包含的信息如上述所述。具体地,YOLOv5在输出层通过使用anchor box来预测目标的边界框位置和大小,同时对每个anchor box对应的预测结果使用softmax函数来计算类别概率。

总之,YOLOv5的输出端可以输出图像中目标的位置、大小和类别等信息,以便后续的目标识别和跟踪等任务进行处理。

4.1 Bounding box损失函数

YOLOv5中的Bounding box损失函数采用IoU loss函数,主要用于衡量预测的边界框与真实边界框之间的差异。

IoU loss是Intersection over Union(IoU)的一种变形,它是一种用于测量预测边界框与真实边界框之间重叠程度的指标。在目标检测中,IoU通常被用来评估预测框和真实框的重叠情况,以确定预测框是否正确。

具体而言,对于每个预测边界框,我们计算其与所有真实边界框的IoU值,然后选择IoU最大的那个真实边界框作为其对应的匹配目标,从而计算出其IoU loss。

其具体使用DIOU损失函数,公式如下:
在这里插入图片描述
在这里插入图片描述

补充如下:

DIOU、GIOU和CIOU都是目标检测中用于计算边界框距离的指标,它们都是对传统的IoU(Intersection over Union)指标的改进和扩展。

总体来说,DIOU、GIOU和CIOU都是一种更加综合、更加准确的边界框距离度量方式,可以有效地提升目标检测性能。

4.2 NMS非极大值抑制

在目标检测任务中,一个物体可能被多个预测框检测出来,为了避免对同一个物体进行多次检测,需要对重复的预测框进行过滤,这个过程就是非极大值抑制(Non-maximum suppression,简称NMS)。

在YOLOv5中,NMS主要是通过以下几个步骤实现的:

  1. 首先,对所有预测框按照置信度从高到低进行排序。

  2. 然后,从置信度最高的预测框开始,依次遍历每个预测框,判断该预测框与后面所有预测框之间的IOU值是否大于一定的阈值(一般为0.5或0.6)。

  3. 如果IOU值大于阈值,则将该预测框从候选框列表中剔除,否则保留该预测框。

  4. 继续遍历下一个预测框,重复上述步骤,直到所有预测框都被遍历一遍。

  5. 最终,保留下来的预测框就是经过NMS处理后的结果,即每个物体只对应一个预测框。

NMS算法的核心是通过比较重复预测框之间的IOU值,去除冗余的预测框,保留最优的结果。在YOLOv5中,NMS可以避免同一个物体被重复检测的问题,提高了检测的精度和效率。

来源地址:https://blog.csdn.net/weixin_47872288/article/details/130368368

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-服务器
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯