YOLOV10:参数越少,速度越快,性能更高的新一代目标检测框架

摘要

在过去的几年中,YOLOs由于在计算成本和检测性能之间实现了有效的平衡,已经成为实时目标检测领域的主导范式。研究人员已经探索了YOLOs的架构设计、优化目标、数据增强策略等,取得了显著的进展。然而,对非极大值抑制(NMS)的依赖限制了YOLOs的端到端部署,并负面影响了推理延迟。此外,YOLOs中各个组件的设计缺乏全面和彻底的检查,导致明显的计算冗余并限制了模型的能力。这使得效率次优,并且有很大的性能提升空间。在这项工作中,我们旨在从后处理和模型架构两方面进一步推进YOLOs的性能效率边界。为此,我们首先提出了一种一致的双重分配策略,用于无需NMS的YOLOs训练,这带来了竞争性能和低推理延迟。此外,我们引入了一种全面的效率-准确性驱动的模型设计策略,用于YOLOs。我们从效率和准确性两个角度全面优化了YOLOs的各个组件,大大减少了计算开销并提升了能力。我们的努力成果是新一代的YOLO系列,用于实时端到端目标检测,被称为YOLOv10。广泛的实验表明,YOLOv10在不同模型规模下实现了最先进的性能和效率。例如,我们的YOLOv10-S在COCO上与RT-DETR-R18相似的AP下速度提高了1.8倍,同时参数数量和FLOPs减少了2.8倍。与YOLOv9-C相比,YOLOv10-B在相同性能下的延迟减少了46%,参数数量减少了25%。代码:https://github.com/THU-MIG/yolov10。

方法论

3.1 无需NMS训练的一致双重分配 在训练期间,YOLOs[20, 59, 27, 64]通常利用TAL[14]为每个实例分配多个正样本。采用一对多分配方式可以提供丰富的监督信号,有助于优化并实现卓越的性能。然而,这种方法需要YOLOs依赖于NMS后处理,这导致了次优的推理效率。虽然先前的工作[49, 60, 73, 5]探索了一对一匹配以抑制冗余预测,但它们通常会引入额外的推理开销或导致次优性能。在这项工作中,我们提出了一种YOLOs的无需NMS训练策略,采用双重标签分配和一致的匹配度量,实现了高效率和竞争性能。

双重标签分配。与一对多分配不同,一对一匹配仅为每个真实标注分配一个预测,避免了NMS后处理。然而,这导致监督信号变弱,引起次优的准确性和收敛速度[75]。幸运的是,这种缺陷可以通过一对多分配[5]来补偿。为了实现这一点,我们为YOLOs引入了双重标签分配,结合了两种策略的优势。具体来说,如图2.(a)所示,我们为YOLOs增加了另一个一对一头部。它保持与原始一对多分支相同的结构,并采用相同的优化目标,但利用一对一匹配来获取标签分配。在训练期间,两个头部与模型一起进行联合优化,允许主干和颈部享受由一对多分配提供的丰富监督。在推理期间,我们丢弃一对多头部,并使用一对一头部进行预测。这使得YOLOs能够实现端到端部署,而不需要任何额外的推理成本。此外,在一对一匹配中,我们采用顶部选择,这在训练时间上与匈牙利匹配[4]相同,但减少了额外开销。

一致匹配度量。在分配过程中,一对一和一对多方法都利用一个度量标准来定量评估预测和实例之间的一致性水平。为了实现两个分支的预测感知匹配,我们采用了统一的匹配度量,即m(α, β) = s · p^α · IoU(ˆb, b)^β, (1),其中p是分类得分,ˆb和b分别表示预测和实例的边界框。s表示空间先验,指示预测的锚点是否在实例内[20, 59, 27, 64]。α和β是两个重要的超参数,用于平衡语义预测任务和位置回归任务的影响。我们将一对多和一对一度量分别表示为mo2m=m(αo2m, βo2m)和mo2o=m(αo2o, βo2o)。这些度量影响了两个头部的标签分配和监督信息。

在双重标签分配中,一对多分支提供了比一对一分支丰富得多的监督信号。直观地说,如果我们能够使一对一头部的监督与一对多头部的监督协调一致,我们就可以朝着一对多头部优化的方向优化一对一头部。结果,一对一头部在推理期间可以提供更高质量的样本,从而带来更好的性能。为此,我们首先分析了两个头部之间的监督差距。由于训练过程中的随机性,我们首先从两个头部以相同的值初始化并产生相同的预测开始检查,即一对一头部和一对多头部为每个预测-实例对生成相同的p和IoU。我们注意到两个分支的回归目标并不冲突,因为匹配的预测共享相同的目标,而不匹配的预测则被忽略。因此,监督差距在于不同的分类目标。给定一个实例,我们将其与预测的最大IoU表示为u*,以及一对多和一对一匹配的最大分数分别为mo2m和mo2o。假设一对多分支产生正样本集合Ω,并且一对一分支选择第i个预测,使用度量mo2o,i=mo2o,则我们可以推导出分类目标to2m,j=u · mo2m,j / mo2m ≤ u 对于j ∈ Ω,以及to2o,i=u* · mo2o,i / mo2o = u 对于任务对齐损失,如[20, 59, 27, 64, 14]中所述。因此,两个分支之间的监督差距可以通过不同分类目标的1-Wasserstein距离[41]来推导,即A = to2o,i − I(i ∈ Ω)to2m,i + Σk∈Ω{i} to2m,k, (2)

我们可以观察到,随着to2m,i的增加,差距减少,即i在Ω中的排名提高。当to2m,i=u*时,即i是Ω中最佳的正样本时,它达到最小,如图2.(a)所示。为了实现这一点,我们提出了一致匹配度量,即αo2o=r · αo2m和βo2o=r · βo2m,这意味着mo2o=mr o2m。因此,一对多头部的最佳正样本也是一对一头部的最佳样本。结果,两个头部可以一致且和谐地进行优化。为了简化,我们默认取r=1,即αo2o=αo2m和βo2o=βo2m。为了验证改善的监督对齐,我们统计了训练后在一对多结果的前1/5/10中一对一匹配对的数量。如图2.(b)所示,在一致匹配度量下,对齐情况有所改善。有关数学证明的更全面理解,请参阅附录。

3.2 全面的效率-准确性驱动的模型设计 除了后处理之外,YOLOs的模型架构也对效率-准确性权衡提出了巨大挑战[45, 7, 27]。尽管先前的工作探索了各种设计策略,但对YOLOs中各个组件的全面检查仍然缺乏。结果,模型架构表现出不可忽视的计算冗余和受限的能力,这阻碍了其实现高效率和性能的潜力。在这里,我们旨在从效率和准确性两个角度全面地为YOLOs执行模型设计。

效率驱动的模型设计。YOLO的组件包括干线、下采样层、具有基本构建块的阶段和头部。干线造成的计算成本很少,因此我们对其他三个部分执行效率驱动的模型设计。

(1)轻量级分类头部。分类和回归头部通常在YOLOs中共享相同的架构。然而,它们在计算开销上表现出显著的差异。例如,在YOLOv8-S中,分类头部(5.95G/1.51M)的FLOPs和参数计数分别是回归头部(2.34G/0.64M)的2.5倍和2.4倍。然而,在分析分类误差和回归误差的影响(见表6)后,我们发现回归头部对YOLOs的性能更为重要。因此,我们可以在不担心大大损害性能的情况下减少分类头部的开销。因此,我们简单地为分类头部采用了轻量级架构,该架构由两个深度可分离卷积[24, 8]组成,核大小为3×3,后跟1×1卷积。

(2)空间-通道解耦下采样。YOLOs通常利用常规的3×3标准卷积,步长为2,同时实现空间下采样(从H×W到H^2×W^2)和通道变换(从C到2C)。这引入了不可忽视的计算成本O(9^2HWC^2)和参数计数O(18C^2)。相反,我们提议将空间缩减和通道增加操作解耦,实现更高效的下采样。具体来说,我们首先利用点卷积来调节通道维度,然后使用深度卷积来执行空间下采样。这将计算成本降低到O(2HWC^2 + 9^2HWC),参数计数降低到O(2C^2 + 18C)。同时,它最大化了下采样期间的信息保留,带来了延迟降低的竞争力。

(3)基于排名的块设计。YOLOs通常对所有阶段使用相同的基本构建块[27, 59],例如YOLOv8中的瓶颈块[20]。为了彻底检查YOLOs的这种同质设计,我们利用内在排名[31, 15]来分析每个阶段的冗余。具体来说,我们计算每个阶段最后一个基本块中最后一个卷积的数值排名,这统计了大于某个阈值的奇异值的数量。图3.(a)展示了YOLOv8的结果,表明深层阶段和大型模型更倾向于表现出更多的冗余。这一观察表明,简单地将相同的块设计应用于所有阶段对于最佳容量-效率权衡来说是次优的。为了解决这个问题,我们提出了一个基于排名的块设计方案,旨在使用紧凑的架构设计降低显示出冗余的阶段的复杂性。我们首先提出了一个紧凑的倒置块(CIB)结构,它采用成本低廉的深度卷积进行空间混合和成本效益高的点卷积进行通道混合,如图3.(b)所示。它可以作为高效的基本构建块,例如嵌入到ELAN结构[58, 20]中(图3.(b))。

实验

4.1 实现细节 我们选择YOLOv8 [20]作为我们的基线模型,由于其在延迟和准确性之间取得了值得称赞的平衡,并且它在各种模型尺寸中都可用。我们采用一致的双重分配策略进行无需NMS的训练,并基于此进行全面的效率-准确性驱动的模型设计,带来了我们的YOLOv10模型。YOLOv10拥有与YOLOv8相同的变体,即N / S / M / L / X。此外,我们通过简单地增加YOLOv10-M的宽度比例因子,派生出一个新的变体YOLOv10-B。我们在COCO [33]上以相同的从头开始训练的设置[20, 59, 56]验证了所提出的探测器。此外,所有模型的延迟在T4 GPU上使用TensorRT FP16进行测试,遵循[71]。

4.2 与最先进方法的比较 如表1所示,我们的YOLOv10在不同模型尺寸下实现了最先进的性能和端到端延迟。我们首先将YOLOv10与我们的基线模型进行比较,即YOLOv8。在N / S / M / L / X五个变体中,我们的YOLOv10实现了1.2% / 1.4% / 0.5% / 0.3% / 0.5% AP改进,参数数量减少28% / 36% / 41% / 44% / 57%,计算量减少23% / 24% / 25% / 27% / 38%,延迟降低70% / 65% / 50% / 41% / 37%。与其他YOLOs相比,YOLOv10在准确性和计算成本之间也展现出了优越的权衡。具体来说,对于轻量级和小尺寸模型,YOLOv10-N / S在性能上分别比YOLOv6-3.0-N / S高出1.5 AP和2.0 AP,参数数量分别减少了51% / 61%,计算量分别减少了41% / 52%。对于中等尺寸模型,与YOLOv9-C / YOLO-MS相比,YOLOv10-B / M在相同或更好的性能下分别实现了46% / 62%的延迟降低。对于大型模型,与Gold-YOLO-L相比,我们的YOLOv10-L参数数量减少了68%,延迟降低了32%,并且AP显著提高了1.4%。此外,与RT-DETR相比,YOLOv10在性能和延迟方面都取得了显著的改进。值得注意的是,YOLOv10-S / X在相似性能下的推理速度分别比RT-DETR-R18 / R101快1.8倍和1.3倍。这些结果很好地展示了YOLOv10作为实时端到端探测器的优越性。

我们还使用原始的一对多训练方法比较了YOLOv10与其他YOLOs。在这种情况下,我们考虑模型前向过程的性能和延迟(Latencyf),遵循[56, 20, 54]。如表1所示,YOLOv10在不同模型尺寸下也展现出了最先进的性能和效率,这表明了我们架构设计的有效性。

评价:

YOLOv10的主要贡献包括:

  1. 提出了一种新的一致的双重分配策略,用于无需非极大值抑制(NMS)的YOLO训练,这样既保证了竞争性能,又降低了推理延迟。
  2. 引入了一种全面的效率-准确性驱动的模型设计策略,全面优化了YOLO的各个组成部分,从效率和准确性两个角度出发,大大降低了计算开销,提高了模型能力。
  3. 基于这些方法,开发了新一代的YOLO系列,即YOLOv10,它在不同模型规模下都实现了实时端到端目标检测的最新性能和效率。

YOLOv10-S在COCO数据集上与RT-DETR-R18相似的AP下速度提高了1.8倍,同时参数数量和浮点运算次数减少了2.8倍。与YOLOv9-C相比,YOLOv10-B在相同性能下的延迟减少了46%,参数数量减少了25%。

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

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

相关文章

Redis学习笔记【基础篇】

SQL vs NOSQL SQL(Structured Query Language)和NoSQL(Not Only SQL)是两种不同的数据库处理方式,它们在多个维度上有所差异,主要区别包括: 数据结构: SQL(关系型数据库)…

深入探讨npm、Yarn、pnpm和npx之间的区别

前端生态系统是一个快速发展的领域,充满了各种工具和技术。对于开发人员来说,跟上这些创新可能是一项艰巨的挑战。 在本文中,我们将深入探讨npm、Yarn、pnpm和npx之间的区别,帮助你理解每个工具的不同之处。 包管理器比较 npm …

【一生一芯】

目录 安装Ubuntu 22.04 安装Ubuntu 22.04 我站在巨人的肩膀上,安装教程见VMware安装Ubuntu22.04(英文桌面)教程 备忘一下: 1.Ubuntu中在终端进入root权限但是总提示密码错误的解决方案 对支持 IPv6 的镜像主机执行 ping 操作: 将帐户添加到 …

私有大模型:针对长结构文档的回答方法

作者: Jon Saad-Falcon, Joe Barrow, Alexa Siu, Ani Nenkova, David Seunghyun Yoon, Ryan A. Rossi, Franck Dernoncourt 摘要: 大型语言模型(LLMs)在处理长文档问答(QA)时面临着无法适应其小上下文窗口的问题。为了解决这一问…

【计算机视觉】数字图像处理基础知识(模拟和数字图像、采样量化、像素的基本关系、灰度直方图、图像的分类)

一、图像的基本概念 图像(image):图像这个简单单词其实包含两方面含义: “图”:是指物体反射光or透射光的分布“像”:接收和记录其分布所得到的结果(如:人的视觉系统所接收“图”在人脑中形成的映像或认识&…

LLVM入门教学——SanitizerCoverage插桩(Linux)

1、介绍 LLVM 的 SanitizerCoverage 是一种代码覆盖工具,设计用于支持基于 fuzzing 的测试和其他安全相关工具。SanitizerCoverage 在编译时插桩代码,以在运行时收集覆盖信息,从而帮助识别未覆盖的代码路径,提高测试的有效性和全…

算法-随机快排及荷兰国旗优化

文章目录 算法介绍 :1. 随机快排解析2. 荷兰国旗问题3. 随机快排优化4. 总结随机快排 算法介绍 : 随机快速排序和传统的快速排序的逻辑本质是一致的,都是找到一个值作为划分的中间位置,左边数值均小于该数值,右边数值均大于该数值,但是与传统的快排又不一致的是,我们的这个位置…

国内的期权模拟账户怎么申请?

国内的期权模拟账户可以在券商和期权分仓平台处申请开通,期权相比于股票具有杠杆投资、风险控制等新特性。 期权模拟交易客户端能够提供期权的开平仓交易、备兑开仓/平仓、行权等交易指令,下文为大家介绍国内的期权模拟账户怎么申请&#xff…

2024 cicsn Ezheap

文章目录 检查 libc2.35利用adddeleeditshow 思路exp结果 检查 libc2.35 利用 add 0x80个chunk&#xff0c;遍历选一个没有被用的&#xff0c;输入的size<0x501,然后malloc后会清零安装输入的size&#xff0c;然后输入内容&#xff0c;长度也是输入的size dele 指定索引…

第十六课,海龟画图:设置画笔颜色、宽度函数,移动画笔函数

一&#xff0c;turtle.color()&#xff1a;画笔颜色函数 这个函数能设置画笔画出来的颜色&#xff0c;当然&#xff0c;使用它之前你需要认识有哪些“颜料”可供你选择&#xff0c;turtle库的color()函数可以选择以下颜色&#xff1a; "white" 白色&#xff08;建议…

3步轻松月入过万,APP广告新模式大揭秘!

万万没想到&#xff1a;用这个APP广告模式&#xff0c;月入过万竟然如此简单&#xff01; 在移动应用开发的世界里&#xff0c;变现一直是一道难题。 许多APP开发者和产品经理为了提高收益、增强用户黏性&#xff0c;不断尝试各种策略。 然而&#xff0c;很多时候&#xff0c…

2024-6-1 石群电路-20

2024-6-1&#xff0c;星期六&#xff0c;18:24&#xff0c;天气&#xff1a;晴&#xff0c;心情&#xff1a;晴。已经到学校啦&#xff0c;本来打算今天休息一天不更了&#xff0c;但是觉得可以更新完再休息&#xff0c;没有这么累&#xff0c;哈哈哈哈&#xff0c;这就不得不说…

阿里云部署nodejs

目录 1、安装node.js 1-1 进入opt/software 1-2 下载node.js安装包 1-3 解压 2 配置环境变量 2-1 vim中配置环境变量 2-2 命令行中保存环境变量 2-3 检查安装版本 2-3 更换镜像 3、上传node.js项目 1-1 启动项目 1-2 配置对应的安全组 ​编辑 4、pm2启动多个node项…

Linux目录的基本结构(RHEL8系统基本使用之文件操作)

1.Linux的目录树结构 2.各目录的功能介绍 3.理解文件路径表示方法 Who&#xff1f;——>当前登录的用户 Where?——>路径 我要在哪儿创建文件&#xff1f; 我要删除什么地方的什么文件&#xff1f; 我所要查看的文件在哪里&#xff1f; What?——>操作命令 Ho…

Ultralytics x SwanLab:可视化YOLO模型训练

Ultralytics是YOLO官方团队推出的CV训练与推理框架&#xff0c;不仅支持目标检测任务&#xff0c;还支持分割、姿态识别、分类等更多任务。 SwanLab是一个深度学习实验管理与训练可视化工具&#xff0c;由西安电子科技大学团队打造&#xff0c;融合了Weights & Biases与Ten…

java web爬虫

目录 读取本地文件 从网站读取文件 java爬虫 总结 读取本地文件 import java.io.File; import java.io.PrintWriter; import java.util.Scanner;public class ReplaceText {public static void main() throws Exception{File file new File("basic\\test.txt"…

vue3:插槽、具名插槽、条件插槽、作用域插槽、具名作用域插槽 一次性搞清楚 --- 通俗易懂

1、插槽的使用&#xff1a; ~父组件index.vue&#xff1a; <h3>我是父组件testSlot</h3> <!-- 调用子组件alertBox测试插槽 --> <alertBox></alertBox> <alertBox>Something good will be happened. /alertBox> <br> ~alertBo…

钓虾馆计时计费怎么用,佳易王钓虾馆钓鱼场计时器工具软件操作教程

钓虾馆计时计费怎么用&#xff0c;佳易王钓虾馆钓鱼场计时器工具软件操作教程 一、前言 以下软件操作教程以&#xff0c;佳易王钓虾馆钓鱼场计时计费软件为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 可以多种单价计费方式&#xff0c;在系统…

Elasticsearch 认证模拟题 - 4

一、题目 生成快照&#xff0c;或快照生命周期 1.1 考点 快照生命周期&#xff08;最好通过界面化配置&#xff09;创建仓库创建快照 &#xff08;因为这个需要部署共享文件&#xff0c;所以这个我就在虚拟机上简单操作一下&#xff09; 注&#xff1a; 部署共享文件系统可…

【开发利器】使用OpenCV算子工作流高效开发

学习《人工智能应用软件开发》&#xff0c;学会所有OpenCV技能就这么简单&#xff01; 做真正的OpenCV开发者&#xff0c;从入门到入职&#xff0c;一步到位&#xff01; OpenCV实验大师Python SDK 基于OpenCV实验大师v1.02版本提供的Python SDK 实现工作流导出与第三方应用集…