深度学习论文: YOLOv5, YOLOv8 and YOLOv10: The Go-To Detectors for Real-time Vision

news2024/9/22 7:41:03

深度学习论文: YOLOv5, YOLOv8 and YOLOv10: The Go-To Detectors for Real-time Vision
YOLOv5, YOLOv8 and YOLOv10: The Go-To Detectors for Real-time Vision
PDF:https://arxiv.org/pdf/2407.02988v1
PyTorch: https://github.com/shanglianlm0525/PyTorch-Networks

1 概述

本文全面回顾了 YOLO(You Only Look Once)目标检测算法的演进,重点关注了 YOLOv5、YOLOv8 和 YOLOv10。我们分析了这些版本在架构进步、性能提升以及边缘部署适用性方面的情况。YOLOv5 引入了 CSPDarknet 主干和马赛克增强等重大创新,平衡了速度和准确性。YOLOv8 在此基础上通过增强特征提取和无锚点检测,提高了通用性和性能。YOLOv10 通过无NMS训练、空间-通道解耦下采样和大核心卷积等特性,实现了跨越式进步,达到了最先进的性能,同时减少了计算开销。

2 YOLO v5

在Glenn Jocher紧随YOLOv4发布之后,于2020年引入了YOLOv5,这一新版本的目标检测模型在业界引起了广泛关注,它以其前所未有的易用性、卓越的稳健性能和极高的灵活性,成为了目标检测领域的一项重要突破。YOLOv5的成功,很大程度上归功于其引入的一系列关键创新,这些创新不仅提升了模型性能,还极大地促进了模型在边缘计算环境中的部署与应用。

核心创新点

  • 跨阶段部分网络(CSPNet)集成:YOLOv5的核心在于其深度集成了CSPNet,这是ResNet架构的一种高效变体。CSPNet通过引入CSP连接,有效地增强了网络的学习能力,同时减少了计算成本,提高了网络整体的效率。这种设计使得YOLOv5在保持高性能的同时,能够更好地适应资源受限的环境。
  • 空间金字塔池化(SPP)模块:为了进一步提升特征提取的多样性和鲁棒性,YOLOv5在CSPNet的基础上,融入了多个SPP模块。SPP模块能够在不同尺度上捕获丰富的上下文信息,这对于提高目标检测,尤其是对小目标和遮挡目标的检测能力至关重要。
  • 路径聚合网络(PAN)与上采样层:在架构的颈部区域,YOLOv5采用了PAN模块,并增加了额外的上采样层。这种设计有助于实现特征图的多层次融合,增强了特征表示的能力,同时提高了特征图的分辨率,为后续的预测任务提供了更加精细的信息。
  • 基于锚点的预测机制:在头部设计中,YOLOv5延续了YOLO系列一贯的基于锚点的预测方法。每个边界框都与一组预定义的锚点框相关联,这些锚点框具有特定的形状和大小,能够覆盖大多数目标的可能形态。这种机制简化了预测过程,提高了预测精度。
  • 损失函数优化:YOLOv5的损失函数由两部分组成:一是用于计算类别和目标性损失的二元交叉熵,二是用于衡量定位准确性的完整交并比(CIoU)。CIoU不仅考虑了边界框之间的重叠面积,还考虑了边界框的中心点距离、长宽比等因素,从而能够更准确地评估预测框与真实框之间的相似度。
  • 自动增强(AutoAugment):这项技术自动挑选最优的数据增强策略,以增强模型对新情况的适应力。在训练时应用多种数据增强方法,自动增强使模型能够学习到更加稳定的特征,提升其在未知数据上的表现。这在多变的边缘计算环境中尤为重要。
  • 马赛克数据增强(Mosaic Augmentation):通过将四张图像合成一张,这种技术使模型更擅长识别较小物体,同时增强了对不同尺寸和比例的适应性。马赛克增强有助于处理真实世界边缘应用中常见的多物体复杂场景,通过提供多样化的训练样本,它提高了模型泛化到新环境的能力。

综上所述,YOLOv5通过一系列精心设计的创新,成功地在目标检测领域树立了新的标杆。其高效、灵活、易用的特点,使得YOLOv5成为了众多应用场景中的首选模型,尤其是在边缘计算、实时检测等领域展现出了巨大的潜力。
在这里插入图片描述

3 YOLO v8

YOLOv8,于2023年推出,继承了YOLOv5的成功,并进行了进一步的增强,使其特别适合边缘部署。

核心创新点

  • C2f 构建块:新引入的 C2f 构建块,提升特征提取和融合,增强模型捕捉细节和复杂模式的能力,提高检测准确度。
  • CSPDarknet 主干:通过分割特征图并结合密集卷积,减少了计算量而保持了准确性。使用 SiLU 激活函数增强了梯度流动和特征表达,使得模型在保持高准确度的同时减小了体积,适合边缘部署。
  • PANet 颈部:基于 FPN 设计,增加自底向上的路径,通过特征融合和自适应池化,加强了不同层级间的信息流动和多尺度特征的融合,提升了小目标检测能力,适合多变的边缘应用场景。
  • 改进的 NMS:YOLOv8 的 NMS 算法优化了边界框处理,减少误检,提升检测精度。
  • 无锚点检测头:摒弃传统锚点框,简化架构,降低计算负担,加快推理速度,增强小目标和密集物体检测能力。

在这里插入图片描述

4 YOLO v10

YOLOv10,在2024年推出,是YOLO系列的重要进步,它克服了以往版本的限制,同时引入了创新特性来增强性能和效率。这个最新版本专注于通过在架构和训练协议方面的一系列优化,在效率和准确性之间实现平衡,提升了小目标检测能力,减少误报,并提高预测置信度。。

核心创新点

  • 无NMS训练和推理:YOLOv10引入了一种称为一致双重分配的NMS-free训练新方法。即YOLOv10在训练期间采用一对多和一对一策略的组合。一对多分配允许每个真实目标有多个预测,提高了召回率,而一对一分配通过选择最佳预测确保了精确度。这种方法确保了训练和推理之间的一致性,消除了推理期间对非极大值抑制(NMS)的需求,同时显著降低了推理延迟。
  • 轻量级分类头:YOLOv10的分类头设计轻巧,减少了分类过程中的计算冗余。这一优化确保了模型可以在不产生过多计算成本的情况下做出准确的预测,使其适合部署在资源有限的设备上。
  • 空间-通道解耦下采样:这种技术在下采样期间分离空间和通道信息,优化了特征提取过程。通过解耦这些方面,模型可以更有效地处理输入数据,从而在降低计算需求的同时带来更好的性能。
  • 等级引导块设计:等级引导块设计简化了整体架构,提高了计算效率。这种设计使用等级信息指导重要特征的选择,确保模型专注于输入数据最相关的方面。
  • 大核心卷积:YOLOv10结合了大核心卷积来提高模型捕获更大空间区域内详细特征的能力。这些卷积使模型能够更好地理解图像中对象的上下文,提高检测准确性。
  • 部分自注意力模块:部分自注意力模块以最小的额外计算成本提高准确性。这个模块帮助模型专注于输入数据中的相关特征,提高其准确检测和分类对象的能力。

在这里插入图片描述

5 Comparative Analysis of YOLOv5, YOLOv8, and YOLOv10

YOLOv5 到 YOLOv10 的架构演进展示了目标检测网络设计的重大进步。
在这里插入图片描述

主干网络演进:

  • YOLOv5:引入了CSPDarknet,整合了跨阶段部分网络以平衡计算成本和准确性。
  • YOLOv8:增强了CSPDarknet,可能整合了更高效的卷积操作和优化的通道配置。
  • YOLOv10:进一步优化了CSPDarknet,可能采用了等级引导块设计,实现更高效的特征提取。

颈部架构:

  • YOLOv5:使用PANet(路径聚合网络)进行有效的多尺度特征融合。
  • YOLOv8:改进了PANet,可能增强了跳跃连接或特征聚合方法。
  • YOLOv10:在PANet中引入了效率优化,可能采用了空间-通道解耦操作,更有效地进行特征传播。

检测头设计:

  • YOLOv5:使用基于锚点的方法,为对象检测预定义锚点框。
  • YOLOv8:转向无锚点设计,简化了检测过程,可能提高了小目标的性能。
  • YOLOv10:采用无锚点设计和双重分配,实现了无NMS训练和推理。

非极大值抑制(NMS):

  • YOLOv5和YOLOv8:需要NMS作为后处理步骤来过滤冗余检测。
  • YOLOv10:引入了无NMS训练和推理,显著减少了部署期间的计算开销和延迟。

激活函数:

  • YOLOv5:使用Leaky ReLU,这是深度学习模型的常见选择。
  • YOLOv8:采用SiLU(Swish)激活,以其平滑的梯度和潜在的性能优势而闻名。

特征金字塔网络(FPN):

  • YOLOv5:采用标准FPN进行多尺度特征表示。
  • YOLOv8:修改了FPN,可能改进了横向连接或特征融合策略。
  • YOLOv10:通过空间-通道解耦增强了FPN,可能允许更有效和有效的多尺度特征处理。

损失函数:

  • YOLOv5:使用CIoU(完整IoU)损失,平衡边界框回归和分类。
  • YOLOv8:引入了特定任务的损失,优化了不同计算机视觉任务的性能。
  • YOLOv10:开发了与无NMS训练方法一致的双重分配损失,可能提高了整体检测准确性。

数据增强:

  • YOLOv5:实施了马赛克和裁剪增强,增强了模型的鲁棒性。
  • YOLOv8:在增强流程中增加了Mixup,进一步提高了泛化能力。

训练策略:

  • YOLOv5和YOLOv8:采用单阶段训练,是YOLO模型的典型做法。
  • YOLOv10:采用双阶段训练方法,可能允许更精细的特征学习和改进的检测性能。

从 YOLOv5 到 YOLOv10 的架构演进明显趋向于更高效、更准确、更易于部署的设计。特别是 YOLOv10,引入了无NMS训练和空间-通道解耦等创新特性,这些对于边缘部署场景特别有益。这些进步共同促进了在各种部署环境中准确性的提高、计算开销的减少和实时性能的增强。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1922961.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

51单片机-第三节-LCD1602调试工具,矩阵键盘

一、LCD调试工具函数: 使用: 所有函数,前两个参数,均为指定显示位置。 四个参数的,第四个参数,为保留位数,少的保留后面(123,2 -> 23),多的前面补零。 …

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《天气数据驱动下基于深度主动学习的新型电力系统供需失衡风险快速评估方法 》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

Apache-Flink未授权访问高危漏洞修复

漏洞等级 高危漏洞!!! 一、漏洞描述 攻击者没有获取到登录权限或未授权的情况下,或者不需要输入密码,即可通过直接输入网站控制台主页面地址,或者不允许查看的链接便可进行访问,同时进行操作。 二、修复建议 根据业务/系统具体情况,结合如下建议做出具体选择: 配…

产品经理-研发流程-敏捷开发-迭代-需求评审及产品规划(15)

敏捷开发是以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。 通俗来说,敏捷开发是一个软件开发流程,是一个采用了迭代方法的开发流程 简单来说,迭代就是把一个大产品拆分出一些最小的实现单位。完成不同的迭代就最…

交易平台Zero Hash现已支持SUI交易

Zero Hash是一家领先的加密货币和稳定币基础设施平台,为包括Stripe、Shift4和Franklin Templeton在内的公司提供支持,现在也支持对SUI的访问。此举使Zero Hash的客户及其终端用户能够使用SUI。 提供API和SDK以及专注于无缝连接法币、加密货币和稳定币的…

Python | Leetcode Python题解之第231题2的幂

题目: 题解: class Solution:BIG 2**30def isPowerOfTwo(self, n: int) -> bool:return n > 0 and Solution.BIG % n 0

【Redis】哨兵(sentinel)

文章目录 一、哨兵是什么?二、 哨兵sentinel文件参数三、 模仿主机redis宕机四、哨兵运行流程和选举原理SDOWN主观下线ODOWN客观下线 五、 使用建议 以下是本篇文章正文内容 一、哨兵是什么? 哨兵巡查监控后台master主机是否故障,如果故障了…

PostgreSQL 如何应对因大量并发删除操作导致的性能问题?

🍅关注博主🎗️ 带你畅游技术世界,不错过每一次成长机会!📚领书:PostgreSQL 入门到精通.pdf 文章目录 PostgreSQL 如何应对因大量并发删除操作导致的性能问题一、优化索引二、批量删除三、分区表四、调整参…

kotlin数据类型

人不走空 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌赋:斯是陋室,惟吾德馨 Kotlin基本数值类型 基本数据类型包括 Byte、Short、Int、Long、Float、Double 整数类型 类型位宽最小值最大…

GloVe: Global Vectors for Word Representation论文笔记解读

基本信息 作者Jeffrey Penningtondoi10.3115/v1/D14-1162发表时间2014期刊EMNLP网址https://aclanthology.org/D14-1162.pdf 研究背景 1. What’s known 既往研究已证实 全局矩阵分解方法:LSA,考虑整个语料库词频的统计信息得到共现矩阵,通…

访问 Postman OAuth 2.0 授权的最佳实践

OAuth 2.0 代表了 web 安全协议的发展,便于在多个平台上进行授权服务,同时避免暴露用户凭据。它提供了一种安全的方式,让用户可以授权应用程序访问服务。 在 Postman 中开始使用 OAuth 2.0 Postman 是一个流行的API客户端,支持 …

FlinkModule加载HiveModule异常

HiveModule这个模块加载不出来 加在不出来这个模块&#xff0c;网上查说是要加下面这个依赖 <dependency><groupId>org.apache.flink</groupId><artifactId>flink-connector-hive_${scala.binary.version}</artifactId><version>${flink.…

.Net Core 微服务之Consul(二)-集群搭建

引言: 集合上一期.Net Core 微服务之Consul(一)(.Net Core 微服务之Consul(一)-CSDN博客) 。 目录 一、 Consul集群搭建 1. 高可用 1.1 高可用性概念 1.2 高可用集群的基本原理 1.3 高可用集群的架构设计 1.3.1 主从复制架构 1.3.2 共享存储架构 1.3.3 负载均衡…

三维空间中的旋转方向(blender坐标系、python中两种旋转方式、VTK坐标系)

在三维空间中&#xff0c;旋转的方向 通常遵循右手定则&#xff08;右手螺旋法则&#xff09;&#xff1a; 右手握住旋转轴&#xff0c;拇指指向轴的正方向。 其余手指弯曲的方向就是正旋转方向&#xff08;被视为逆时针旋转&#xff09;。 当旋转角度为正值&#xff08;如90度…

基于pytesseract的OCR图片识别

简介 pytesseract是基于谷歌的tesseract的OCR包&#xff0c;支持识别一些简单的数字、字母、中文。 安装 安装引擎 下载地址&#xff1a;https://digi.bib.uni-mannheim.de/tesseract/ 一般是Windows 64位系统最新版&#xff1a; 如果要识别中文&#xff0c;注意选中中文…

数据结构(4.2)——朴素模式匹配算法

字符串模式匹配 在主串中找到模式串相同的子串&#xff0c;并返回其所在的位置。 子串和模式串的区别 子串&#xff1a;主串的一部分&#xff0c;一定存在 模式串&#xff1a;不一定能在主串中找到 字符串模式匹配 朴素模式匹配算法 主串长度为n&#xff0c;模式串长度为…

嵌入式C++、Qt/QML和MQTT:智能工厂设备监控系统的全流程介绍(附代码示例)

1. 项目概述 本项目旨在开发一套先进的智能工厂设备监控系统&#xff0c;集成嵌入式技术、工业通信协议和人机界面等多项技术&#xff0c;实现对工厂设备的全方位实时监控、高精度数据采集和智能化分析。该系统将显著提升工厂设备的运行效率&#xff0c;大幅降低维护成本&…

使用xacro作出摄像头和雷达

机器人模型由多个部件组成&#xff0c;可以将不同组建设置进单独文件&#xff0c;最终通过文件包含实现组建的拼装。 一、编写摄像头和雷达的xacro文件 二、组合文件 编写一个组合文件&#xff0c;组合底盘、摄像头和雷达 三、启动 搭建框架&#xff0c;创建三个文件 摄像…

Excel第31享:基于left函数的截取式数据裂变

1、需求描述 如下图所示&#xff0c;在“Excel第30享”中统计2022年YTD各个人员的“上班工时&#xff08;a2&#xff09;”&#xff0c;需要基于工时明细表里的“日期”字段建立辅助列&#xff0c;生成“年份”字段&#xff0c;本文说明“年份”字段是怎么裂变而来的。 下图为…

springboot 程序运行一段时间后收不到redis订阅的消息

springboot 程序运行一段时间后收不到redis订阅的消息 问题描述 程序启动后redis.user.two主题正常是可以收到消息的&#xff0c;发一条收一条&#xff0c;但是隔一段时间后&#xff1b;就收不到消息了&#xff1b; 此时如果你手动调用发送另外一个消息订阅redis.user.two2&…