YOLOv5 vs YOLOv8

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

1 概述

YOLOv8 是 ultralytics 公司在 2023 年 1月 10 号开源的 YOLOv5 的下一个重大更新版本。
https://github.com/ultralytics/yolov5
https://github.com/ultralytics/ultralytics

YOLOv5 vs YOLOv8

2 网络结构

YOLOv5 N/S/M/L/X 骨干网络的通道数设置使用同一套缩放系数;
YOLOv8 N/S/M/L/X 骨干网络的通道数设置不一样,使用不同的缩放系数。YOLOv7 网络设计也采用类似的方式作用于所有模型。

scales: # model compound scaling constants, i.e. 'model=yolov8n.yaml' will call yolov8.yaml with scale 'n'
  # [depth, width, max_channels]
  n: [0.33, 0.25, 1024]  # YOLOv8n summary: 225 layers,  3157200 parameters,  3157184 gradients,   8.9 GFLOPs
  s: [0.33, 0.50, 1024]  # YOLOv8s summary: 225 layers, 11166560 parameters, 11166544 gradients,  28.8 GFLOPs
  m: [0.67, 0.75, 768]   # YOLOv8m summary: 295 layers, 25902640 parameters, 25902624 gradients,  79.3 GFLOPs
  l: [1.00, 1.00, 512]   # YOLOv8l summary: 365 layers, 43691520 parameters, 43691504 gradients, 165.7 GFLOPs
  x: [1.00, 1.25, 512]   # YOLOv8x summary: 365 layers, 68229648 parameters, 68229632 gradients, 258.5 GFLOPs

YOLOv5:
YOLOv5 vs YOLOv8

YOLOv8:
YOLOv5 vs YOLOv8

2-1 Backbone

a) 第一个卷积层的 kernel 从 6x6 变成了 3x3
b) 所有的 C3 结构换成了梯度流更丰富的 C2f 结构, C2f 比 C3 多了更多的跳层连接和额外的 Split 操作
YOLOv5 vs YOLOv8

c) Backbone 中 C2f 的 block 数从 3-6-9-3 改成了 3-6-6-3

2-2 Neck

a) 所有的 C3 结构换成了梯度流更丰富的 C2f 结构, C2f 比 C3 多了更多的跳层连接和额外的 Split 操作
b) 去掉了 Neck 模块中的 2 个卷积连接层

2-3 Head

a)从原先的耦合头变成了解耦头
b) YOLOv5 的 Anchor-Based 变成了 Anchor-Free
c) 回归分支使用了 Distribution Focal Loss 中提出的积分形式表示法

3 Loss

a)正负样本分配策略
YOLOX 使用 simOTA、TOOD 使用 TaskAlignedAssigner 和 RTMDet 使用 DynamicSoftLabelAssigner,
YOLOv5 采用的依然是静态分配策略,YOLOv8 直接使用 TOOD 的 TaskAlignedAssigner。
TaskAlignedAssigner 的匹配策略简单总结为: 根据分类与回归的分数加权的分数选择正样本。
b) Loss计算
Loss 计算包括 2 个分支: 分类和回归分支,没有了yolov5的 objectness 分支。
分类分支依然采用 BCE Loss;
回归分支 Distribution Focal Loss;同时还使用了 CIoU Loss。
3 个 Loss 采用一定权重比例加权即可。

4 Data augmentation

a) 引入YOLOX 中提出的最后 10 个 epoch 关闭 Mosaic 的操作
YOLOv5 vs YOLOv8

b) 对于不同大小模型,部分超参会进行修改,如大模型会开启 MixUp 和 CopyPaste。

5 Training strategy

a) 训练总 epoch 数从 300 提升到了 500

6 Inference

YOLOv8 的推理过程和 YOLOv5 几乎一样,唯一差别在于前面需要对 Distribution Focal Loss 中的积分表示 bbox 形式进行解码,变成常规的 4 维度 bbox.
YOLOv5 vs YOLOv8
yolov8 推理和后处理过程为:
(1) bbox 积分形式转换为 4d bbox 格式
对 Head 输出的 bbox 分支进行转换,利用 Softmax 和 Conv 计算将积分形式转换为 4 维 bbox 格式
(2) 维度变换
YOLOv8 输出特征图尺度为 80x80、40x40 和 20x20 的三个特征图。Head 部分输出分类和回归共 6 个尺度的特征图。将 3 个不同尺度的类别预测分支、bbox 预测分支进行拼接,并进行维度变换。为了后续方便处理,会将原先的通道维度置换到最后,类别预测分支 和 bbox 预测分支 shape 分别为 (b, 80x80+40x40+20x20, 80)=(b,8400,80),(b,8400,4)。
(3) 解码还原到原图尺度
分类预测分支进行 Sigmoid 计算,而 bbox 预测分支需要进行解码,还原为真实的原图解码后 xyxy 格式。
(4) 阈值过滤
遍历 batch 中的每张图,采用 score_thr 进行阈值过滤。在这过程中还需要考虑 multi_label 和 nms_pre,确保过滤后的检测框数目不会多于 nms_pre。
(5) 还原到原图尺度和 nms
基于前处理过程,将剩下的检测框还原到网络输出前的原图尺度,然后进行 nms 即可。最终输出的检测框不能多于 max_per_img。文章来源地址https://www.toymoban.com/news/detail-494571.html

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

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

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

相关文章

  • YOLOV8:FileNotFoundError: train: No labels found in /home/smy/new-yolov5/ultralytic

    YOLOV8:FileNotFoundError: train: No labels found in /home/smy/new-yolov5/ultralytic yolov8FileNotFoundError: train: No labels found in /home/smy/new-yolov5/ultralytic/…/JPEGImages.cache: 在/home/smy/anaconda3/envs/yolo/lib/python3.9/site-packages/ultralytics-8.0.51-py3.9.egg/ultralytics/yolo/data/utils.py中修改下列代码 要在环境当中修改!

    2024年02月14日
    浏览(47)
  • Downloading https://ultralytics.com/assets/Arial.ttf to ...... yolov5报错解决

    yolov5模型用的是github上YOLOv5官方的, 在autodl服务器上训练时,Arial.ttf字体会自动下载,但是无法下载。(当然在自己电脑上pycharm跑不会报这个错,可以下载) 解决方法: 将第3,4行注释掉, 改为: 重新训练即可正常训练。

    2024年02月11日
    浏览(49)
  • 特征融合篇 | YOLOv8 (ultralytics) 实现 YOLOv9 辅助可逆分支架构 | 附训练推理结构图 RepNCSPELAN4/ADown/SPPELAN/train/val

    今天的深度学习方法专注于如何设计最合适的目标函数,以使模型的预测结果最接近真实情况。同时,必须设计一个合适的架构,以便为预测提供足够的信息。现有方法忽视了一个事实,即当输入数据经过逐层特征提取和空间转换时,会丢失大量信息。本文将深入探讨数据通

    2024年03月17日
    浏览(86)
  • yolov8运行出错及解决,No module named ‘ultralytics‘和ImportError: Failed to initialize: Bad git executable

    成功解决 No module named \\\'ultralytics’和Failed to initialize: Bad git executable的问题,以此记录和分享。 问题: 解决: 在文件开头开间绝对路径,即ultralytics文件夹所在的文件夹路径。 问题: 解决: 在utils文件夹中的__init__.py的138行位置,即 import git 上方添加下面代码,即可解决。

    2024年02月03日
    浏览(47)
  • [yolov5/yolov8修改]替换yolov5/yolov8中的主干网络为EfficientNetv2

    yolo系列的网络作为单阶段目标检测网络中的佼佼者,在目标检测方面发挥着很大的作用,而yolov5是其中较好的一代网络,yolov8是其中最新的一代网络。但是作为我们学习和使用来说,原始的yolov5或者yolov8网络并不一定就是最合适的,基于此,在yolov5的基础上,针对主干网络进

    2024年02月06日
    浏览(84)
  • 简述YOLOv8与YOLOv5的区别

    yolov7,yoloX相关论文还没细看,yolov8就出来了。太卷了! YOLOv8 是 ultralytics 公司在 2023 年 1月 10 号开源的 YOLOv5 的下一个重大更新版本。 GitHub地址 : github.com/ultralytics/ultralytics YOLOv8是在YOLOv5上的一次更新,故本篇文章主要对比两者区别: 1.Backbone CSP的思想(/梯度分流)的主要思想,

    2024年02月03日
    浏览(37)
  • 从YOLOv5到YOLOv8(0.52)

    每次代码更新版本都要费眼睛去适应,写个教程方便他人 这里是写给有YOLOv5基础的,因为v5的新手教程已经很多了,v8和v5的源码形式上差不多,只是调用的时候有点区别而已。 YOLOv8 github源码 v8的环境和v5没什么主要区别,待会儿跑一遍,缺什么补什么就好。 下载源文件,不

    2024年02月09日
    浏览(33)
  • 【yolov5&yolov7&yolov8火焰和烟雾检测】

    YOLOv5训练好的火焰检测模型,并包含2000张标注好的火焰和烟雾数据集,标签格式为xml和txt两种,类别名为fire, 有QT界面 采用pytrch框架,代码是python的 火灾检测数据集-1 YOLOv3火焰识别训练模型: https://download.csdn.net/download/zhiqingAI/85438269 yolov5火焰识别训练模型+数据集: https

    2024年04月28日
    浏览(49)
  • YOLOv5、YOLOv8改进:S2注意力机制

    目录 1.简介 2.YOLOv5改进 2.1增加以下S2-MLPv2.yaml文件 2.2common.py配置 2.3yolo.py配置  S2-MLPv2注意力机制   最近,出现了基于 MLP 的视觉主干。与 CNN 和视觉Transformer相比,基于 MLP 的视觉架构具有较少的归纳偏差,在图像识别方面实现了有竞争力的性能。其中,spatial-shift MLP (S2-MLP),

    2024年02月12日
    浏览(45)
  • pytorch 训练、微调YOLOv5,YOLOv8 小技巧 合集

    yolo v5 坐标相关的判断与转换,评价指标,训练结果解析 YOLOv8 多目标跟踪与常见问题汇总 python + pytorch 多线程实现级联模型的业务逻辑 yolov5 奇奇怪怪的错误汇总:【版本兼容,模型训练,数据加载,模型加速】 基于 TensorRT 使用 python 进行推理优化, 以YOLOv5 为例 本文除了回

    2024年02月07日
    浏览(44)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包