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

YOLOv8相较于YOLOv5有哪些改进?

YOLOv8相比YOLOv5在算法上进行了多项改进,这些改进主要体现在网络结构、损失函数、正负样本分配策略等方面,以下是详细的对比分析:

一、网络结构改进

  1. C3模块替换为C2f模块

    • YOLOv5中的C3模块被替换为梯度流更加丰富的C2f模块。C2f模块参考了C3模块的残差结构以及YOLOv7的ELAN思想,设计中每个BottleNeck的输入Tensor的通道数channel都只是上一级的0.5倍,因此计算量明显降低。同时,更多的跳层连接和额外Split操作使得梯度流增加,能够明显提升收敛速度和收敛效果。
  2. 耦合头与解耦头的设计

    • YOLOv5中耦合头的设计是通过一系列的卷积和全连接层,同时预测不同尺度的边界框位置、尺寸和类别。而YOLOv8则采用了解耦头的设计,将分类和检测头分离,两条并行的分支分别提取类别特征和位置特征,然后各用一层1×1卷积完成分类和定位任务。这种设计提高了目标检测的准确性,同时加快了网络的收敛速度。
  3. 网络主干架构的改进

    • YOLOv8采用了新的网络主干架构,相比YOLOv5的架构在性能上有所提升。

二、损失函数改进

  1. Distribution Focal Loss的引入

    • YOLOv8在回归分支中使用了Distribution Focal Loss中提出的积分形式表示法。考虑到真实的分布通常不会距离标注的位置太远,因此Distribution Focal Loss选择优化标签y附近左右两个位置(yi与yi+1)的概率,使得网络分布聚焦到标签值附近。
  2. DFL(Distribution Focal Loss)损失的增加

    • 为配合Anchor-Free以及提升泛化性,YOLOv8增加了DFL损失。DFL以交叉熵的形式去优化与标签y最接近的一左一右2个位置的概率,从而让网络更快地聚焦到目标位置及邻近区域的分布。

三、正负样本分配策略改进

  1. TAL(Task Alignment Learning)动态匹配策略的采用

    • YOLOv8采用了TAL动态匹配策略,而不是YOLOv5中的静态分配策略。TAL动态匹配策略根据分类与回归的分数加权的分数选择正样本,能够引导网络动态关注高质量的anchor,从而提高目标检测性能。

四、其他改进

  1. Anchor-Free的设计

    • YOLOv8是一个无锚(Anchor-Free)模型,它直接预测对象的中心,而不是已知锚框的偏移量。这种设计减少了box预测的数量,并加速了一个非常复杂的推理步骤——非极大值抑制(NMS)。
  2. SPPF模块的引入

    • YOLOv8中引入了SPPF模块,与SPP模块的作用相同,但SPPF的速度更高。

综上所述,YOLOv8相比YOLOv5在算法上进行了多项改进,这些改进使得YOLOv8在目标检测任务中表现出更高的性能和准确性。


http://www.kler.cn/a/386154.html

相关文章:

  • ESP解释
  • element plus的表格内容自动滚动
  • java:接口,抽象,多态的综合小练习
  • 阅读2020-2023年《国外军用无人机装备技术发展综述》笔记_作战无人机和察打无人机图鉴
  • 将单色像素值转换成灰阶屏的灰度序列的算法
  • 基于Java Springboot快递物流管理系统
  • 滑动窗口最大值
  • 《手写Spring渐进式源码实践》实践笔记(第十七章 数据类型转换)
  • 布朗运动
  • 如何用全局事件总线实现组件间的通信
  • STM32标准库-待机模式
  • 数据集市是什么?有什么优势?
  • OpenGL学习笔记(三) 绘制图形
  • RabbitMQ 篇-深入了解 RabbitMQ 安装以及 SpringAMQP 的基础使用(声明队列和交换机、发送接收消息、配置 JSON 消息转化器)
  • 【Linux系列】利用 CURL 发送 POST 请求
  • Android13 系统/用户证书安装相关分析总结(二) 如何增加一个安装系统证书的接口
  • 网络协议都有哪些?
  • 软件工程技术专业在物联网应用开发中的关键技术与挑战
  • XSS详解
  • 【Rust设计模式之Fold模式】
  • Java 中的 Arrays.sort () 方法:排序的利器
  • GOT-OCR:开源免费的OCR项目,多语言多模态识别,端到端识别新体验!不仅能识别文字,连数学公式、图表都不在话下!
  • 服装品牌零售业态融合中的创新发展:以开源 AI 智能名片 S2B2C 商城小程序为视角
  • unity中 骨骼、纹理和材质关系
  • 软件工程 软考
  • 在 Bash 中获取 Python 模块变量列