YOLOv10性能效率大幅提升,清华开源新一代实时目标监测模型

始智ai wisemodel.cn开源社区

近日,清华大学推出了新一代yolov10模型,此次的yolov10模型做出了多方面的调整和优化。该模型已经上线始智ai wisemodel.cn开源社区,欢迎大家前往wisemodel社区下载体验。

https://wisemodel.cn/models/thu-mig/yolov10

1.在head部分,创造性地融合了one-to-one和one-to-many两种模式,既利用了one-to-many丰富的监督(supervision)信号来训练优化模型参数保证模型的精度,又采取one-to-one进行推断(inference)来避免nms后处理从而提高推断速度。论文作者将这种方式称为:双重标签分配(dual label assignment)。

2.对yolo模型的结构进行改良,推出全面效率-准确性驱动的模型设计(holistic efficiency-accuracy driven model design),在效率(efficiency)和精确度(accuracy)两方面进行改良。

一、双重标签分配

存在问题:

yolo通常在训练过程中采用一对多的标签分配策略,其中一个真实情况(ground-truth)物体对应于多个正(positive)样本。尽管这种方法取得了优越的性能,但它需要在推理过程中使用nms(non-maximum suppression,非极大值抑制)来选择最佳的阳性预测。这降低了推理速度,并使性能对nms的超参数敏感,从而阻碍了yolo实现最优的端到端部署。解决这个问题的一条途径是采用最近引入的端到端detr架构。例如,rt-detr提出了一种有效的混合编码器和非确定性最小 query 选择,将detr推向了实时应用领域。然而,部署detr的固有复杂性阻碍了它在准确性和速度之间达到最优平衡的能力。另一条途径是探索基于cnn的检测器的端到端检测,这通常利用一对一的分配策略来抑制冗余预测。然而,它们通常引入额外的推理开销或达到次优性能。

解决方案:

yolov10提出了一种新的训练方法,即"dual assignments"。这种方法在训练阶段同时使用one-to-many(一对多)和one-to-one(一对一)的标签分配策略。研究人员在head部分原本的one-to many基础上多加上了一个one-to-one的部分,它保持与原始一对多分支相同的结构,并采用相同的优化目标,但利用一对一匹配来获得标签赋值。在训练期间,两个头部与模型一起优化,允许backbone和neck享受由一对多赋值提供的丰富监督。在推理期间, 研究人员丢弃一对多头部,使用一对一头部进行预测。这使得yolo能够实现无需任何额外推理成本的端到端部署。此外,为了确保两个头部在训练过程中的监督信号一致性,论文还提出了"consistent matching metric"(一致的匹配度量),确保one-to-one头部在选择预测时与one-to-many头部的最佳预测保持一致,从而在推理时提供高质量的样本,提高性能。(详情请参考论文)具体原理可参考下图:


二、全面效率-准确性驱动的模型设计(holistic efficiency-accuracy driven model design)

效率驱动的模型设计:(提高效率,减小计算成本)

yolo的组件包括干线(stem)、下采样层(downsampling layers)、具有基本构建块的阶段(stages with basic building blocks)和头部(head)。干线产生的计算成本很少,因此 研究人员对其他三个部分进行了效率驱动的模型设计。

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

2.空间-通道解耦下采样。yolo通常利用标准的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.等级引导的块设计。yolo通常对所有阶段使用相同的基本构建块设计,例如yolov8中的瓶颈块(the bottleneck block)。为了彻底检查yolo的这种同质设计,研究人员利用内在秩来分析每个阶段的冗余。具体来说,研究人员计算每个阶段最后一个基本块中最后一个卷积的数值秩,这统计了大于某个阈值的奇异值的数量。
图(a)展示了yolov8的结果,表明深层阶段和大型模型更容易表现出更多的冗余。这一观察表明,简单地对所有阶段应用相同的块设计对于最佳容量-效率权衡来说是次优的。为了解决这个问题,研究人员提出了一个等级引导的块设计方案,旨在使用紧凑的架构设计降低显示出冗余的阶段的复杂性。
首先,研究人员提出了一个紧凑的倒置块(cib)结构,它采用成本低廉的深度卷积进行空间混合和成本效益高的点卷积进行通道混合,如图(b)所示。它可以作为高效的基本构建块,例如嵌入到elan结构中(见图(b))。
然后,他们提倡一个等级引导的块分配策略,以实现最佳的效率,同时保持竞争力的能力。具体来说,给定一个模型,根据它们的内在秩按升序对它的所有阶段进行排序。进一步地,研究人员检查用cib替换领先阶段(leading stage)的基本块时的性能变化。如果没有与给定模型相比的性能下降,研究人员继续替换下一个阶段,并在性能下降时停止该过程。因此,研究人员可以在不同阶段和模型尺度上实现自适应的紧凑块设计,实现更高的效率,而不影响性能。

三、准确性驱动的模型设计:(提高准确性)

研究人员进一步探索了大核卷积和自注意力,以准确性为驱动进行设计,旨在在最低成本下提高性能。

1.大核卷积。使用大核深度卷积是扩大感受野和增强模型能力的有效方法。然而,简单地在所有阶段使用它们可能会引入浅层特征的污染,这些特征被用来检测小物体,同时也会引入高分辨率阶段的显著i/o开销和延迟。因此,研究人员提议在深层阶段的cib中使用大核深度卷积。具体来说,研究人员将cib中第二个3×3深度卷积的核大小增加到7×7,参考。此外,研究人员采用结构重参数化技术,引入另一个3×3深度卷积分支,以减轻优化问题,而不增加推理开销。此外,随着模型大小的增加,其感受野自然扩大,使用大核卷积的好处也在减少。因此,研究人员只为小模型尺度采用大核卷积。

2.部分自注意力(psa)。由于其显著的全局建模能力,自注意力被广泛用于各种视觉任务。然而,它表现出高计算复杂性和内存占用。为了解决这个问题,鉴于普遍存在的注意力头冗余,研究人员设计了一个高效的部分自注意力(psa)模块设计,如图(c)所示。具体来说,研究人员在1×1卷积后将特征均匀地跨通道分成两部分。只将一部分输入由多头自注意力模块(mhsa)和前馈网络(ffn)组成的npsa块。然后将两部分连接起来,并通过1×1卷积进行融合。此外,将查询和键的维度设置为mhsa中值的一半,并将layernorm替换为batchnorm,以实现快速推理。此外,psa仅放置在具有最低分辨率的第4阶段之后,避免了自注意力的二次计算复杂性带来的过度开销。通过这种方式,可以将全局表示学习能力以低计算成本纳入yolo,这很好地增强了模型的能力并改进了性能。

本文是对yolov10的简单介绍,更多详细信息请查询论文:

论文地址:https://arxiv.org/pdf/2405.14458

项目地址:https://github.com/thu-mig/yolov10

整理丨张皓程

编辑丨赵雅鑫

-----    end   -----

始智ai wisemodel开源社区最近上线了开源模型的在线体验功能,已经有近50个大模型可以直接进行在线体验。在线体验的创建无需任何代码开发,人人都可以来玩开源大模型。欢迎前往wisemodel.cn社区进行体验,若需指引可以参考《》。大家研发的模型也可以发布到wisemodel社区,同时适配一下wisemodel-api,相应模型就可以直接在线运行了。如果有需要模型的在线推理运行托管服务,也欢迎联系我们。

wisemodel相关

系统升级