目标检测-One Stage-YOLOv5

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


前言

前文目标检测-One Stage-YOLOv4提到YOLOv4主要是基于技巧的集成,对于算法落地具有重大意义,YOLOv5则在工程应用方面更近一步,将算法深度集成,使得使用者不用再过多关注算法实现,且提供了多种预训练模型,到目前为止,由ultralytics团队开发的ultralytics包,已经支持YOLOv3YOLOv5YOLOv6YOLOv8YOLO-NASRT-DETR等等,其中YOLOv5和当前YOLO家族最新的YOLOv8是由ultralytics团队研发的。


提示:以下是本篇文章正文内容,下面内容可供参考

一、YOLOv5的网络结构和流程

YOLOv5的不同版本

YOLOv5给出了五个版本:Yolov5nYolov5sYolov5mYolov5lYolov5x

ps:

  • 要注意的是Yolov5n是YOLOv5 系列中的一个变体,专为 Nano 设备(如 NVIDIA Jetson Nano)进行优化。YOLOv5n 在保持较快速度的同时,提供适用于边缘设备的准确度。
  • 因此不算Yolov5n的话,YOLOv5s网络是YOLOv5系列中深度最小,特征图的宽度(channels)最小的网络。其他的三种(m、l、x)都是在此基础上不断加深,不断加宽。
    目标检测-One Stage-YOLOv5,目标检测,目标检测,YOLO,目标跟踪,计算机视觉,深度学习

YOLOv5的流程

  1. 利用自适应图片缩放技术对输入图片进行缩放

ps:

  • 传统的缩放填充后,两端的黑边大小都不同,如果填充的比较多,则存在信息冗余,影响推理速度。
    目标检测-One Stage-YOLOv5,目标检测,目标检测,YOLO,目标跟踪,计算机视觉,深度学习
  • yolov5对原始图像自适应的添加最少的黑边。图像高度上两端的黑边变少了,在推理时,计算量也会减少,即目标检测速度会得到提升。注意自适应图片缩放只在检测时使用,在训练时仍使用传统填充方法
  • 举例说明自适应图片缩放计算过程:
  1. 根据原始图片大小以及输入到网络的图片大小计算缩放比例,并选择小的缩放系数
    目标检测-One Stage-YOLOv5,目标检测,目标检测,YOLO,目标跟踪,计算机视觉,深度学习
  2. 第一步得到缩放系数的计算缩放后的图片大小
    目标检测-One Stage-YOLOv5,目标检测,目标检测,YOLO,目标跟踪,计算机视觉,深度学习
  3. 计算黑边填充数值:将416-312=104,得到原本需要填充的高度,再采用32对104取余,得到8个像素,再除以2,即得到图片高度两端需要填充的数值。之所以利用32取余,是因为YOLOv5的网络经过5次下采样,而2的5次方,等于32。所以至少要去掉32的倍数,再进行取余,以免产生尺度太小走不完stride(filter在原图上扫描时,需要跳跃的格数)的问题。
    目标检测-One Stage-YOLOv5,目标检测,目标检测,YOLO,目标跟踪,计算机视觉,深度学习
  1. 将利用Focus在不丢失信息情况下对输入影像进行下采样
  2. 将下采样图像输入Backbone+PANet提取多尺度特征
  3. 利用自适应anchor计算获取预选框

ps:

  • YOLO系列中,可以针对数据集设置初始的anchor。在网络训练中,网络在anchor的基础上输出预测框,进而和GT框进行比较,计算loss,再反向更新,迭代网络参数。在YOLOv3、4版本中,设置初始anchor的大小都是通过单独的程序使用K-means算法得到,但是在YOLOv5中,将此功能嵌入到代码中,每次训练数据集之前,都会自动计算该数据集最合适的Anchor尺寸,该功能可以在代码中设置超参数进行关闭。
  • 自适应anchor的计算具体过程如下:
    ①获取数据集中所有目标的宽和高。
    ②将每张图片中按照等比例缩放的方式到 resize 指定大小,这里保证宽高中的最大值符合指定大小。
    ③将 bboxes 从相对坐标改成绝对坐标,这里乘以的是缩放后的宽高。
    ④筛选 bboxes,保留宽高都大于等于两个像素的 bboxes。
    ⑤使用 k-means 聚类三方得到n个 anchors,与YOLOv3、YOLOv4 操作一样。
    ⑥使用遗传算法随机对 anchors 的宽高进行变异。倘若变异后的效果好,就将变异后的结果赋值给 anchors;如果变异后效果变差就跳过,默认变异1000次。这里是使用 anchor_fitness 方法计算得到的适应度 fitness,然后再进行评估。
  1. 将上一步得到的anchor输入不同的分类和边框回归器
  2. 使用非极大值抑制DIoU-NMS去除冗余窗口(训练时用的CIoU loss)

YOLOv5s的网络结构图

目标检测-One Stage-YOLOv5,目标检测,目标检测,YOLO,目标跟踪,计算机视觉,深度学习

二、YOLOv5的创新点

1. 网络结构

  • 卷积块从CBM换回了CBL(激活函数从Mish到Leaky relu)
  • 设计了CSP_2X结构应用于Neck中,加强了网络特征融合的能力。
  • backbone最前端添加了Focus模块(基本上是Yolov2中的pass through)以减小特征图尺寸,减小了模型复杂度。

2. 输入数据处理

  • Mosaic数据增强
  • 自适应锚框计算
  • 自适应图片缩放

3. 训练策略

  • 多尺度训练(Multi-scale training)。 如果网络的输入是416 x 416。那么训练的时候就会从 0.5 x 416 到 1.5 x 416 中任意取值,但所取的值都是32的整数倍。
  • 训练开始时先使用 warmup 进行预热。 在模型预训练阶段,先使用较小的学习率训练一些epochs或者steps (如4个 epoch 或10000个 step),再修改为预先设置的学习率进行训练。
  • 使用了余弦退火学习率衰减策略(Cosine annealing scheduler)。
  • 采用了 EMA (Exponential Moving Average)更新权重。 相当于训练时给参数赋予一个动量,这样更新起来就会更加平滑。

ps:在深度学习中,经常会使用EMA(指数移动平均)这个方法对模型的参数做平均,以求提高测试指标并增加模型鲁棒。

  • 使用了AMP(Automatic Mixed-Precision training)进行混合精度训练(Mixed precision)。 能够减少显存的占用并且加快训练速度,但是需要 GPU 支持。

ps:默认情况下,大多数深度学习框架都采用32位浮点算法进行训练。2017年,NVIDIA研究了一种用于混合精度训练的方法,该方法在训练网络时将单精度(FP32)与半精度(FP16)结合在一起,并使用相同的超参数实现了与FP32几乎相同的精度。


总结

YOLOv5的精度和速度如下:
目标检测-One Stage-YOLOv5,目标检测,目标检测,YOLO,目标跟踪,计算机视觉,深度学习

目标检测-One Stage-YOLOv5,目标检测,目标检测,YOLO,目标跟踪,计算机视觉,深度学习

ps:YOLOv5n6等后缀的6代表6.0版本,是在默认版本(5.0)上的更新,区别如下:文章来源地址https://www.toymoban.com/news/detail-816463.html

  1. 使用了更大的输入,提高了对小物体的检测精度
  2. backbone中:5.0中是SPP+CSP2_X的结构,而在6.0版本是CSP1_X+SPPF结构
  3. CBL修改为CBS
    目标检测-One Stage-YOLOv5,目标检测,目标检测,YOLO,目标跟踪,计算机视觉,深度学习

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

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

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

相关文章

  • 【Keras+计算机视觉+Tensorflow】实现基于YOLO和Deep Sort的目标检测与跟踪实战(附源码和数据集)

    需要源码和数据集请点赞关注收藏后评论区留言私信~~~         YOLO是端到端的物体检测深度卷积神经网络,YOLO可以一次性预测多个候选框,并直接在输出层回归物体位置区域和区域内物体所属类别,而Faster R-CNN仍然是采用R-CNN那种将物体位置区域框与物体分开训练的思想,

    2024年02月13日
    浏览(58)
  • 目标检测-One Stage-YOLOx

    根据前文CenterNet、YOLOv4等可以看出学界和工业界都在积极探索使用各种tricks(anchor-free、各种组件、数据增强技术等等)来改进One Stage网络的表现,2021年旷视科技结合先进的改进技巧,产出了多种改进模型,在多种情况下达到速度和精度的SOTA。 值得一提的是,YOLOx使得YOLO系

    2024年01月23日
    浏览(39)
  • 【AI面试】目标检测中one-stage、two-stage算法的内容和优缺点对比汇总

    在深度学习领域中,图像分类,目标检测和目标分割是三个相对来说较为基础的任务了。再加上图像生成(GAN,VAE,扩散模型),keypoints关键点检测等等,基本上涵盖了图像领域大部分场景了。 尤其是在目标检测,一直是各大比赛 (Pascal VOC, COCO, ImageNet) 的主要任务。与此

    2024年02月12日
    浏览(38)
  • 目标检测与跟踪 (2)- YOLO V8配置与测试

    第一章 目标检测与跟踪 (1)- 机器人视觉与YOLO V8 目标检测与跟踪 (1)- 机器人视觉与YOLO V8_Techblog of HaoWANG的博客-CSDN博客 3D物体实时检测、三维目标识别、6D位姿估计一直是机器人视觉领域的核心研究课题,最新的研究成果也广泛应用于工业信息化领域的方方面面。通过众

    2024年02月14日
    浏览(36)
  • 【半监督学习】5、Efficient Teacher | 专为 one-stage anchor-based 方法设计的半监督目标检测方法

    论文:Efficient Teacher: Semi-Supervised Object Detection for YOLOv5 出处:阿里 时间:2023.03 目标检测近年来的进展离不开大量的标注数据,但数据标识昂贵且耗时。 故此,半监督方法被提出,通过自动生成伪标签来利用大量的未标注数据。 目前的半监督学习有如下三个最重要的挑战:

    2024年02月05日
    浏览(71)
  • 目标检测与跟踪 (1)- 机器人视觉与YOLO V8

    目录 1、研究背景 2. 算法原理及对比  2.1 点对特征(Point Pairs)  2.2 模板匹配  2.3 霍夫森林  2.4 深度学习  3、YOLO家族模型演变 4、YOLO V8         机器人视觉识别技术 是移动机器人平台十分关键的技术,代表着 机器人智能化、自动化及先进性的条件判定标准 。  如何在

    2024年02月14日
    浏览(47)
  • 目标检测YOLO实战应用案例100讲-高密度交通场景下智能汽车多目标检测与跟踪算法

    目录 前言 高密度交通场景的多目标检测算法的难点 高密度交通场景的多目标跟踪算法的难点 /

    2024年02月11日
    浏览(61)
  • 目标检测YOLO实战应用案例100讲-基于卷积神经网络的 车辆目标检测及跟踪方法研究(续)

    目录 基于JDE算法的实时多目标车辆跟踪方法 4.1引言 4.2 JDE多目标跟踪算法

    2024年02月09日
    浏览(42)
  • 目标检测与跟踪 (3)- TensorRT&YOLO V8性能优化与部署测试

    目标检测与跟踪 (1)- 机器人视觉与YOLO V8_Techblog of HaoWANG的博客-CSDN博客 目标检测与跟踪 (2)- YOLO V8配置与测试_Techblog of HaoWANG的博客-CSDN博客 目录 系列文章目录 前言 YOLO v8 TensorRT 一、TensorRT 1.1 原理 1.2 架构 1.3 功能 1.4 性能 1.5 GPU并行计算 二、安装配置 1.下载 2.安装 3. 测

    2024年02月14日
    浏览(61)
  • yolov8 目标检测与跟踪

    参考: https://github.com/ultralytics/ultralytics https://github.com/TommyZihao/Train_Custom_Dataset/blob/main/%E7%9B%AE%E6%A0%87%E8%BF%BD%E8%B8%AA/%E5%85%AC%E5%BC%80%E8%AF%BE/ https://www.rstk.cn/news/42041.html?action=onClick *** 跟踪与检测都是用的YOLOv8目标检测一样的权重,跟踪算法暂时支持BoT-SORT 、 ByteTrack两种 视频下载

    2024年02月09日
    浏览(46)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包