yolo5简介说明

这篇具有很好参考价值的文章主要介绍了yolo5简介说明。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

2.YOLOv5简介

2.1 YOLOv5算法简介

YOLOv5是一种单阶段目标检测算法,该算法在YOLOv4的基础上添加了一些新的改进思路,使其 速度与精度都到了极大的性能提升。主要的改进思路如下所示:

yolo5简介说明

2.2 YOLOv5网络架构

yolo5简介说明

 

 上图展示了YOLOv5目标检测算法的整体框图。对于一个目标检测算法而言,我们通常可以将其划 分为4用的模块,具体包括:输入端、基准网络、  Neck网络与Head输出端,对应于上图中的4个红 模块。  YOLOv5算法具有4个版本,具体包括:  YOLOv5sYOLOv5mYOLOv5lYOLOv5x四种,本 点讲解YOLOv5s,其它的版本都在该版本的基础上对网络进行加深与加宽。

          输入端:  输入端表示输入的图片。该网络的输入图像大小为608*608,该阶段通常包含一个图像预处理阶段,即将输入图像缩放到网络的输入大小,并进行归一化等操作。

        在网络训练阶段, YOLOv5使用Mosaic据增强操作提升模型的训练速度和网络的精度;并提出了一种自适应锚框计算与自适应图片缩放方法。

基准网络:  基准网络通常是一些性能优异的分类器种的网络,该模块用来提取一些通用的特征表示。  Y

        OLOv5中不仅使用了CSPDarknet53结构,而且使用了Focus结构作为基准网络。

Neck络:  Neck网络通常位于基准网络和头网络的中间位置,利用它可以进一步提升特征的多样性及鲁棒性。虽然YOLOv5同样用到了SPP模块、  FPN+PAN模块,但是实现的细节有些不同。     

Head输出层:  Head用来完成目标检测结果的输出。针对不同的检测算法,输出端的分支个数不尽相同,通常包含一个分类分支和一个回归分支。  YOLOv4利用GIOU_Loss来代替Smooth L1 Loss函数,从而进一步提升算法的检测精度。

2.3 YOLOv5算法详解

2.3.1 YOLOv5基础组件

CBL CBL模块Conv+BN+Leaky_relu激活函数组成,如上图中的模块1所示。

Res unit:借鉴ResNet网络中的残差结构,来构建深层网络,  CBM是残差模块中的子模块,如 上图中的模块2所示。                                                                                                                   

CSP1_X :借鉴CSPNet网络结构,该模CBL模块、  Res unint模块以及卷积层、  Concate组成而 成,如上图中的模块3所示。                                                                         CSP2_X :借鉴CSPNet网络结构,该模块由卷积层和XRes unint模块Concate组成而成,如上图 中的模块4所示。

Focus :如上图中的模块5所示,  Focus结构首先将多个slice结果Concat起来,然后将其送入CBL 块中。

SPP :采用1×15×59×913×13的最大池化方式,进行多尺度特征融合,如上图中的模块6

2.3.2 输入端细节详

   Mosaic数据增强:  YOLOv5中在训练模型阶段仍然使用了Mosaic数据增强方法,该算法是

CutMix据增强方法的基础上改进而来的。  CutMix仅仅利用了两张图片进行拼接,而Mosaic数据 强方法则采用了4张图片,并且按照随机缩放、随机裁剪和随机排布的方式进行拼接而成,具体 效果如下图所示。这种增强方法可以将几张图片组合成一张,这样不仅可以丰富数据集的同时极 大的提升网络的训练速度,而且可以降低模型的内存需求。

yolo5简介说明

   自适应锚框计算:  在YOLO系列算法中,针对不同的数据集,都需要设定特定长宽的锚点框。在网络训练阶段,模型在初始锚点框的基础上输出对应的预测框,计算其与GT框之间的差距,并执行 反向更新操作从而更新整个网络的参数,因此设定初始锚点框也是比较关键的一环。在YOLOv3 YOLOv4检测算法中,训练不同的数据集时,都是通过单独的程序运行来获得初始锚点框。       YOLOv5中将此功能嵌入到代码中,每次训练时,根据数据集的名称自适应的计算出最佳的锚点   ,用户可以根据自己的需求将功能关闭或者打开,具体的指令为

parser.add_argument(’–noautoanchor’, action=‘store_ true’, 

help=‘disable autoanchor check’),

如果需要打开,只需要在训练代码时增加noautoanch or选项即可。

自适应图片缩放:  针对不同的目标检测算法而言,我们通常需要执行图片缩放操作,即将原始的输

入图片缩放到一个固定的尺寸,再将其送入检测网络中。  YOLO系列算法中常用的尺寸包括            416*416 608 *608等尺寸。原始的缩放方法存在着一些问题,由于在实际的使用中的很多图片   长宽比不同,因此缩放填充之后,两端的黑边大小都不相同,然而如果填充的过多,则会存在大 量的信息冗,从而影响整个算法的推理速度。为了进一步提升YOLOv5算法的推理速度,该算法 出一种方法能够自适应的添加最少的黑边到缩放之后的图片中。具体的实现步骤如下所述。

步骤1:根据始图片大小与输入到网络图片大小计算缩放比例。

yolo5简介说明

 

 步骤2:根原始图片大小与缩放比例计算缩放后的图片大小。

yolo5简介说明

 

 步骤3:计算黑边填充数值

yolo5简介说明

 

 如上图所示,  416表示YOLOv5网络所要求的图片宽度,  312表示缩放后图片的宽度。首先执行相减 操作来获得需要填充的黑边长度104;然后对该数值执行取余操作,即104%32=8,使用32是因为整个  YOLOv5网络执行了5次下采样操作,即2^5 = 32;最后对该数值除以2,即将填充的区域分散到边。  这样将416*416大小的图片缩小到416*320大小,因而极大的提升了算法的推理速度。

需要注意的是:(1)该操作仅在模型推理阶段执行,模型训练阶段仍然和传统的方法相同,将 始图片裁416*416大小;(2)  YOLOv3YOLOv4中默认填充的数值是(0,0,0),而YOLOv5中默认 的数值是(114,114,114);(3)该操作仅仅针对原始图片的短边而言,仍然将长边裁剪到416

2.3.3 基准网络细节详

        Focus:  该结构的主要思想是通过slice操作来对输入图片进行裁剪。如下图所示,原始输入图片大小为6086083,经过SliceConcat操作之后输出一个30430412的特征映射;接着经过一个通 道个数为32Conv层(该通道个数仅仅针对的是YOLOv5s结构,其它结构会有相应的变化),输 出一个30430432大小的特征映射。

 yolo5简介说明

        CSP结构:  YOLOv4网络结构中,借鉴了CSPNet的设计思路,仅仅在主干网络中设计了CSP结构。而YOLOv5中设计了两种CSP结构,以YOLOv5s网络为例,  CSP1_X构应用于Backbone主干网络 中,另一种CSP2_X结构则应用于Neck络中。  CSP1_XCSP2_X模块的实现细节如2.1所示。

2.3.4 Neck网络细节详解

FPN+PAN-YOLOv5Neck网络仍然使用了FPN+PAN结构,但是在它的基础上做了一些改进操

作, YOLOv4Neck结构中,采用的都是普通的卷积操作。而YOLOv5Neck网络中,采用借 CSPnet设计的CSP2结构,从而加强网络特征融合能力。  下图展示了YOLOv4YOLOv5Neck络的具体细节,通过比较我们可以发现:(1)灰色区域表示第1个不同点,  YOLOv5不仅利       CSP2_\1结构代替部分CBL模块,而且去掉了下方的CBL模块;(2)绿色区域表示第2个不同点,  YOLOv5不仅将Concat作之后的CBL模块更换为CSP2_1模块,而且更换了另外一个CBL模块的位 ;(3)蓝色区域表示第3个不同点,  YOLOv5中将原始的CBL模块更换为CSP2_1模块。

yolo5简介说明

 

2.3.5 Head输出端细节详解   GIoU_Loss-YOLOv5中采用GIoU_LssBounding box的损失函数

   CIOU_Loss :  目标检测任务的损失函数一般由分类损失函数和回归损失函数两部分构成,回归损失函数的发展过程主要包括:最原始的Smooth L1 Loss函数、  2016年提出的IoU Loss2019年提 GIoU Loss2020年提出的DIoU Loss和最新的CIoU Loss函数。

1 IoU Loss :所谓的IoU Loss,即预测框与GT框之间的交集/预测框与GT框之间的并集。这种损 失会存一些问题,具体的问题如下图所示,(1)如状态1所示,当预测框和GT框不相交时,即 IOU=0,此时无法反映两个框之间的距离,此时该 损失函数不可导,即IOU_Loss无法优化两个框 交的情况。(2)如状态2与状态3所示,当两个预测框大小相同时,那么这两个IOU也相同, IOU_Loss无法区分两者相交这种情况。

yolo5简介说明

 2GIOU_Loss :为了解决以上的问题,  GIOU损失应运而生。  GIOU_Loss中增加了相交尺度的衡 量方式,缓解了单纯IOU_Loss时存在的一些问题。

yolo5简介说明

 是这种方法并不能完全解决这种问题,仍然存在着其它的问题。具体的问题如下所示,状  123都是预测框在GT框内部且预测框大小一致的情况,这时预测框和GT框的差集都是相同 的,因此这三种状态的GIOU值也都是相同的,这时GIOU退化成了IOU,无法区分相对位置关系。

yolo5简介说明

 3、  DIOU_Loss :针对IOUGIOU损失所存在的问题,  DIOU为了解决如何最小化预测框和GT框之 间的归一化距离这个问题,  DIOU_Loss考虑了预测框与GT框的重叠面积和中心点距离,当GT裹预测框的时候直接度量2个框的距离,因此DIOU_Loss的收敛速度更快一些。

yolo5简介说明

 如下图所示GT框包裹预测框时,此时预测框的中心点的位置都是一样的,因此按照 DIOU_Loss的计算公式,三者的值都是相同的。为了解决这个问题,  CIOU_Loss应运而生

4CIOU_Loss: CIOU_LossDIOU_Loss的基础上增加了一个影响因子,将预测框和GT框的长 比也考虑了进来。具体的计算方法如下式所示,即CIOU_LossGT框的重叠面积、中心点距离 长宽比全都考虑进来了。

总而言之,  IOU_Loss主要考虑了检测框和GT框之间的重叠面积;  GIOU_LossIOU的基础   上,解决边界框不重合时出的问题;  DIOU_LossIOUGIOU的基础上,同时考虑了边界框中 心点距离信息;  CIOU_LossDIOU的基础上,又考虑了边界框宽高比的尺度信息。

3. YOLOv5效果展示与分析

上图展了不同版本的YOLOv5EcientDet检测算法之间的性能比较曲线图。横轴表示的是该算 法在GPU上面的推理时间(ms/img),该数值越小越好;纵轴表示的是该算法在COCO测试数据集上面的 AP指标,该数值越大越好。通过观察我们可以得出以下的初步结论:  

  ( 1)与EcientDet0相比       YOLOv5s仅可以获得更高的AP指标,而且可以获得更快的推理速度;

(2)与EcientDet4相比,  YOLOv5x不仅能够获得更高的AP指标,其推理速度是它的1/5左右

上表展示了不同版本的YOLOv5检测算法在COCO2017验证集与测试集上面的各项指标,具包    括:型输入大小、  AP50指标、  Speed、  FPS、  paramsGFLOPS。通过观察我们可以得出以下的初步 结论:    ( 1)  YOLOv5s的输入图片分辨率为640*640,在COCO测试集与验证集上面的AP指标为36.8 AP50指标55.6。该算法在V100 GPU上面的推理速度仅仅需要2.2ms,帧率为455FPS,该网络的模  型大小7.3M ;(2)  YOLOv5x的输入图像分辨率为640*640,在COCO测试集与验证集上面的AP  指标为50.1 AP50指标为68.7。该算法在V100 GPU上面的推理速度仅仅需要6.0ms,帧率为              167FPS,该网络的模型大小为87.7M。(3)我们可以根据现实场景的需要选择合适的模型,如果我们 速度的话可以选择YOLOv5s模型;如果我们关注精度的话可以选择YOLOv5x模型。

4. 结与分析

YOLOv5一种单阶段目标检测算法,该算法在YOLOv4的基础上添加了一些新的改进思路,使得 其速度与精度都得到了极大的性能提升,具体包括:输入端的Mosaic数据增强、自适应锚框计算、自   适应图片缩放操作;基准端的Focus结构与CSP结构;  Neck端的SPPFPN+PAN结构;输出端的损失  函数GIOU_Loss以及预测框筛选的DIOU_nms。除此之外,  YOLOv5中的各种改进思路仍然可应用到 其它的目标检测算法中。文章来源地址https://www.toymoban.com/news/detail-448141.html

到了这里,关于yolo5简介说明的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • [yolov5] yolo的数据标签格式

    yolov5 的标签格式 https://github.com/ultralytics/yolov5/issues/9816 你好!。感谢您询问YOLOv5🚀数据集格式。用于分割的XY坐标与用于长方体中心的标准坐标相同。 为了正确训练,您的数据必须为YOLOv5格式。有关数据集设置的完整文档以及开始培训您的第一个模型所需的所有步骤,请参阅

    2024年02月04日
    浏览(49)
  • 【YOLO】yolov5训练自己的数据集

    【Python】朴实无华的yolov5环境配置(一)   上面前期教程中,大致介绍了yolov5开发环境的配置方法和yolov5项目的基本结构,下一步就是基于yolov5预训练模型来训练自己的数据集,这对于只是想要使用yolov5这个工具的人,还是想要深入研究yolov5类似的目标识别算法的人,都是

    2024年02月11日
    浏览(47)
  • 【YOLO系列】YOLOv5超详细解读(网络详解)

    吼吼!终于来到了YOLOv5啦! 首先,一个热知识:YOLOv5没有发表正式论文哦~ 为什么呢?可能YOLOv5项目的作者Glenn Jocher还在吃帽子吧,hh 前言 一、YOLOv5的网络结构  二、输入端 (1)Mosaic数据增强 (2)自适应锚框计算 (3)自适应图片缩放 三、Backbone (1)Focus结构 (2)CSP结构

    2023年04月09日
    浏览(69)
  • 复现YOLO5所遇到的问题

    一、  解决方案: 由于没有影响模型继续运行,理解为简单的warning。根据查询问题,推断是由于 pytorch和torchvision的版本原因导致的。 二、  解决方案: 由于没有影响模型继续运行,理解为简单的warning。 但是根据提示,找到functional.py的445行, 加上,indexing = \\\'ij\\\',   这个错

    2024年02月08日
    浏览(32)
  • 改进YOLO系列 | YOLOv5 更换骨干网络之 ConvNeXt

    🍀2023/6/30 更新源代码 ,并追加结构对应的超参数文件 论文地址:https://arxiv.org/pdf/2201.03545.pdf 代码地址:https://github.com/facebookresearch/ConvNeXt 视觉识别的“Roaring 20年代”始于视觉变换器(ViTs)的引入,它很快取代了ConvNets,成为最先进的图像分类模型。另一方面,普通ViTs在应

    2024年02月04日
    浏览(44)
  • 【YOLO系列】YOLOv5超详细解读(源码详解+入门实践+改进)

    吼吼!终于来到了YOLOv5啦! 首先,一个热知识:YOLOv5没有发表正式论文哦~ 为什么呢?可能YOLOv5项目的作者Glenn Jocher还在吃帽子吧,hh 前言 一、YOLOv5的网络结构  二、输入端 (1)Mosaic数据增强 (2)自适应锚框计算 (3)自适应图片缩放 三、Backbone (1)Focus结构 (2)CSP结构

    2024年02月07日
    浏览(44)
  • 改进的yolov5目标检测-yolov5替换骨干网络-yolo剪枝(TensorRT及NCNN部署)

    2022.10.30 复现TPH-YOLOv5 2022.10.31 完成替换backbone为Ghostnet 2022.11.02 完成替换backbone为Shufflenetv2 2022.11.05 完成替换backbone为Mobilenetv3Small 2022.11.10 完成EagleEye对YOLOv5系列剪枝支持 2022.11.14 完成MQBench对YOLOv5系列量化支持 2022.11.16 完成替换backbone为EfficientNetLite-0 2022.11.26 完成替换backbone为

    2024年01月17日
    浏览(68)
  • 【YOLO系列】YOLOv5、YOLOX、YOOv6、YOLOv7网络模型结构

    【注】: 本文为YOLOv5、YOLOX、YOLOv6、YOLOv7模型结构图,作图软件为drawio。因精力有限暂时不做结构的详细阐述和具体的代码讲解,后续有机会再做补充。如有需要可以查阅其他博主的文章了解学习。 【另】:希望模型结构图可以帮助到有需要的人,如模型中有错误的地方,欢

    2024年02月07日
    浏览(37)
  • 目标检测算法(R-CNN,fast R-CNN,faster R-CNN,yolo,SSD,yoloV2,yoloV3,yoloV4,yoloV5,yoloV6,yoloV7)

    深度学习目前已经应用到了各个领域,应用场景大体分为三类:物体识别,目标检测,自然语言处理。 目标检测可以理解为是物体识别和物体定位的综合 ,不仅仅要识别出物体属于哪个分类,更重要的是得到物体在图片中的具体位置。 为了完成这两个任务,目标检测模型分

    2024年02月02日
    浏览(45)
  • 改进YOLO系列 | YOLOv5/v7 引入谷歌 Lion 优化器

    论文地址:https://arxiv.org/pdf/2302.06675.pdf 代码地址:https://github.com/google/automl/tree/master/lion 我们提出了一种将算法发现作为程序搜索的方法,并将其应用于发现用于深度神经网络训练的优化算法。我们利用高效的搜索技术来探索一个无限且稀疏的程序空间。为了弥补代理任务和

    2024年02月09日
    浏览(37)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包