当前位置: 首页 > news >正文

yolov8 浅记

目录

Pre:

 1. YOLOv8 概述

2. 模型结构设计

3. Loss 计算

4.训练数据增强

5. 训练策略

 6、部署推理

End


Pre:

yolo系列发布时间:

先贴一下yolo各系列的发布时间(说出来很丢人,我以为 yolox是 最新的):

yoloX 2021.07

yolov6 2022.06 美团

yolov7 2022.07  网上的评价不错,但是更新时间停留在几个月前

YOLOv8 是 ultralytics 公司在 2023 年 1月 10 号开源的 YOLOv5 的下一个重大更新版本,目前支持图像分类、物体检测和实例分割任务。

ultralytics 并没有直接将开源库命名为 YOLOv8,而是直接使用 ultralytics 这个词,原因是 ultralytics 将这个库定位为算法框架,而非某一个特定算法,一个主要特点是可扩展性。其希望这个库不仅仅能够用于 YOLO 系列模型,而是能够支持非 YOLO 模型以及分类分割姿态估计等各类任务。

在gihub搜yolov8搜不到哦,项目地址在这里 :GitHub - ultralytics/ultralytics: NEW - YOLOv8 🚀 in PyTorch > ONNX > CoreML > TFLite

性能:

 1. YOLOv8 概述

 YOLOv8 算法,其核心特性和改动可以归结为如下:

  1. 提供了一个全新的 SOTA 模型,包括 P5 640 和 P6 1280 分辨率的目标检测网络和基于 YOLACT 的实例分割模型。和 YOLOv5 一样,基于缩放系数也提供了 N/S/M/L/X 尺度的不同大小模型,用于满足不同场景需求
  2. 骨干网络和 Neck 部分可能参考了 YOLOv7 ELAN 设计思想,将 YOLOv5 的 C3 结构换成了梯度流更丰富的 C2f 结构,并对不同尺度模型调整了不同的通道数,属于对模型结构精心微调,不再是无脑一套参数应用所有模型,大幅提升了模型性能。不过这个 C2f 模块中存在 Split 等操作对特定硬件部署没有之前那么友好了
  3. Head 部分相比 YOLOv5 改动较大,换成了目前主流的解耦头结构,将分类和检测头分离,同时也从 Anchor-Based 换成了 Anchor-Free
  4. Loss 计算方面采用了 TaskAlignedAssigner 正样本分配策略,并引入了 Distribution Focal Loss
  5. 训练的数据增强部分引入了 YOLOX 中的最后 10 epoch 关闭 Mosiac 增强的操作,可以有效地提升精度

从上面可以看出,YOLOv8 主要参考了最近提出的诸如 YOLOX、YOLOv6、YOLOv7 和 PPYOLOE 等算法的相关设计,本身的创新点不多,偏向工程实践,主推的还是 ultralytics 这个框架本身。

2. 模型结构设计

Head 部分变化最大,从原先的耦合头变成了解耦头,并且从 YOLOv5 的 Anchor-Based 变成了 Anchor-Free。其结构如下所示:

3. Loss 计算

Loss 计算过程包括 2 个部分: 正负样本分配策略和 Loss 计算。
现代目标检测器大部分都会在正负样本分配策略上面做文章,
YOLOv5 采用的依然是静态分配策略。考虑到动态分配策略的优异性,YOLOv8 算法中则直接引用了 TOOD 的 TaskAlignedAssigner
TaskAlignedAssigner 的匹配策略简单总结为: 根据分类与回归的分数加权的分数选择正样本。

 s 是标注类别对应的预测分值,u 是预测框和 gt 框的 iou,两者相乘就可以衡量对齐程度。

  1.     对于每一个 GT,对所有的预测框基于 GT 类别对应分类分数,预测框与 GT 的 IoU 的加权得到一个关联分类以及回归的对齐分数 alignment_metrics
  2.     对于每一个 GT,直接基于 alignment_metrics 对齐分数选取 topK 大的作为正样本

Loss 计算包括 2 个分支: 分类和回归分支,没有了之前的 objectness 分支

  •     分类分支依然采用 BCE Loss
  •     回归分支需要和 Distribution Focal Loss 中提出的积分形式表示法绑定,因此使用了 Distribution Focal Loss, 同时还使用了 CIoU Loss
  •     3 个 Loss 采用一定权重比例加权即可。
     

4.训练数据增强

数据增强方面和 YOLOv5 差距不大,只不过引入了 YOLOX 中提出的最后 10 个 epoch 关闭 Mosaic 的操作。假设训练 epoch 是 500,

5. 训练策略

YOLOv8 的训练策略和 YOLOv5 没有啥区别,最大区别就是模型的训练总 epoch 数从 300 提升到了 500,这也导致训练时间急剧增加。以 YOLOv8-S 为例,其训练策略汇总如下:

 6、部署推理

与yolov5不同哦,opencv dnn 部署需要opencv4.7。onnx runtime C++  部署  可以看看我的博客

End

yolo系列 选哪个,可以看看这里,感觉有点道理:YOLOv8来啦!YOLO内卷期模型怎么选?9+款AI硬件如何快速部署?深度解析

说明:

本文很多部分摘自下列参考,仅作笔记,无意冒犯

参考:

YOLOv8 深度详解!一文看懂,快速上手 - 知乎

YOLOv8来啦 | 详细解读YOLOv8的改进模块!YOLOv5官方出品YOLOv8!_AI追随者的博客-CSDN博客

http://www.lryc.cn/news/65902.html

相关文章:

  • 前端009_类别模块_修改功能
  • 2022级吉林大学面向对象第一次上机测试
  • 计算机体系结构总结:内存一致性模型 Memory consistency Model
  • 高速列车运行控制系统(CTCS)介绍
  • C#“System.Threading.ThreadStateException”类型的未经处理的异常
  • 为什么要交叉编译?
  • java版本电子招标采购系统源码—企业战略布局下的采购
  • 【MATLAB数据处理实用案例详解(17)】——利用概念神经网络实现柴油机故障诊断
  • 神奇字符串、密钥格式化----2023/5/6
  • STM32F4_十进制和BCD码的转换
  • random — 伪随机数生成器(史上总结最全)
  • 基于VBA实现成绩排序的最佳方法-解放老师的双手
  • OCAF如何实现引用关系和拓扑关系
  • 自动创建设备节点
  • JavaWeb ( 六 ) JSP
  • 2023世界超高清视频产业发展大会博冠8K明星展品介绍
  • Map接口以及Collections工具类
  • SOA协议DDS和Some/IP对比
  • Sass使用
  • 超大excel文件读,避免内存溢出
  • 第0章 学习之前的准备
  • 数组排序sort()方法
  • 【.NET AI Books 前言】Azure OpenAI Service 入门
  • 散列查找实验(开散列) 题目编号:583
  • Java版spring cloud 企业工程项目管理系统平台源码(三控:进度组织、质量安全、预算资金成本、二平台:招采、设计管理)
  • Go type关键字定义新类型和类型别名的区别
  • Neural Network学习笔记2
  • 用@Value注解为bean的属性赋值
  • 拨云见日:深入理解 HTML 解析器与有限状态机
  • Java线程池及其实现原理