YOLOv10详细解读 | 一文带你深入了解yolov10的创新点(附网络结构图 + 举例说明)

前言

Hello大家好,我是Snu77,继YOLOv9发布时间没有多久,YOLOv10就紧接着发布于2024.5.23号(不得不感叹YOLO系列的发展速度,但要纠正大家的观点就是不是最新的就一定最好)!

本文给大家带来的是YOLOv10的论文详细解读->论文名称为:YOLOv10: Real-Time End-to-End Object Detection(大家看着眼熟么,是不是和RT-DETR的《DETRs Beat YOLOs on Real-time Object Detection》比较像,从这个论文题目可以看到目前的创新方向都是往端到端和实时的方向去搞,在精度上的创新已经不是很大了!)

本文内含YOLOv10网络结构图 + 各个创新模块手撕结构图 + 举例讲解,相信阅读完本文一定能够让你有所收获~


论文地址:官方论文地址点击此处即可跳转

代码地址:官方代码地址点击此处即可跳转


摘要 

过去几年中,由于YOLO在计算成本和检测性能之间的有效平衡,它已经成为实时目标检测领域的主要范式。研究人员探索了YOLO的架构设计、优化目标、数据增强策略等方面,取得了显著进展。然而,YOLO依赖于非极大值抑制(NMS)进行后处理,这阻碍了YOLO的端到端部署,并对推理延迟产生了不利影响。此外,YOLO的各种组件设计缺乏全面深入的检查,导致明显的计算冗余,限制了模型的能力。这导致了效率不佳,同时也有很大的性能提升潜力。在这项工作中,我们旨在从后处理和模型架构两方面进一步提升YOLO的性能-效率边界。为此,我们首先提出了一致的双重分配策略,用于YOLO的NMS-free训练,这同时带来了竞争力的性能和低推理延迟。此外,我们引入了整体效率-精度驱动的模型设计策略。我们从效率和精度的角度全面优化了YOLO的各个组件,大大减少了计算开销并增强了能力。我们的努力成果是一个新的YOLO系列,用于实时端到端目标检测,称为YOLOv10。大量实验表明,YOLOv10在各种模型规模上都达到了最先进的性能和效率。例如,在COCO数据集上,YOLOv10-S在相似AP的情况下比RT-DETR-R18快1.8倍,同时参数和FLOPs减少了2.8倍。与YOLOv9-C相比,YOLOv10-B在相同性能下的延迟减少了46%,参数减少了25%。


一、引言

实时目标检测一直是计算机视觉领域的研究重点,旨在以低延迟准确预测图像中物体的类别和位置。它被广泛应用于各种实际应用中,包括自动驾驶、机器人导航和物体跟踪等。近年来,研究人员集中精力设计基于CNN的目标检测器以实现实时检测。其中,YOLO由于其在性能和效率之间的平衡,越来越受欢迎。YOLO的检测流程由两个部分组成:模型前向过程和NMS后处理。然而,这两部分仍存在不足,导致准确性-延迟界限不理想。

段落总结:YOLOv10的主要创新点其实就是对取消后处理NMS,部分读者可能对NMS比较陌生,这里带大家简单学习下

NMS额外介绍

非极大值抑制(Non-Maximum Suppression, NMS)是一种常用的后处理技术,用于目标检测算法中以减少冗余检测框并确保检测结果的精确性。NMS的主要目标是在同一物体上保留一个最佳的检测框,同时抑制那些得分较低的重叠框。下面是NMS的工作原理和应用:

NMS的工作原理

  1. 检测框排序:首先,将所有检测框按照置信度(即检测得分)从高到低排序。
  2. 选择最高得分的检测框:选择得分最高的检测框作为当前的最佳检测结果。
  3. 计算重叠区域:对于剩余的所有检测框,计算它们与当前最佳检测框的重叠度(通常使用交并比,IoU,即Intersection over Union)。
  4. 抑制重叠框:将那些与当前最佳检测框的重叠度超过某一阈值的检测框抑制(即移除),因为它们很可能是对同一物体的重复检测。
  5. 重复步骤2-4:在剩余的检测框中,重复上述步骤,直到没有检测框剩余。

NMS的局限性

尽管NMS在实践中非常有效,但它也存在一些局限性,例如:

  • 参数敏感性:NMS需要设置重叠度阈值,这个参数的选择对最终结果有很大影响,过高或过低的阈值都会影响检测效果(有的时候我们用Detect的时候进行推理会出现一个物体有多个检测框其实根据参数的设置也有一定的关系)
  • 速度影响:在大规模检测任务中,NMS的计算复杂度可能会影响整体的推理速度(这也是YOLOv10去掉NMS的主要原因,提高推理速度从而实现端到端)
  • 无法处理复杂场景:对于一些复杂场景,如拥挤的人群或密集的目标,NMS可能无法有效区分相邻的多个目标。

具体而言,YOLO在训练期间通常采用一对多的标签分配策略,其中一个真实物体对应多个正样本。尽管这种方法能获得更好的性能,但需要在推理过程中使用NMS选择最佳正预测,这减慢了推理速度,并使性能对NMS的超参数敏感,阻碍了YOLO的端到端部署。为解决这一问题,可以采用最近引入的端到端DETR架构。例如,RT-DETR通过高效的混合编码器和不确定性最小的查询选择(个人理解本质和NMS原理其实是相似的,不对欢迎评论区指正),推动DETR进入实时应用领域。然而,DETR的内在复杂性阻碍了其在准确性和速度之间达到最佳平衡。另一种方法是探索基于CNN的端到端检测,通常采用一对一的分配策略来抑制冗余预测,但通常会引入额外的推理开销或达不到理想的性能。

此外,模型架构设计仍是YOLO的一个基本挑战,对准确性和速度有重要影响。为了实现更高效和有效的模型架构,研究人员探索了不同的设计策略。提出了各种主要计算单元来增强特征提取能力,例如DarkNet、CSPNet、EfficientRep和ELAN等。为了增强多尺度特征融合,还探索了PAN、BiC、GD和RepGFPN等。此外,还研究了模型缩放策略和重新参数化技术。尽管这些努力取得了显著进展,但缺乏对YOLO各个组件的全面检查,导致YOLO内部存在相当大的计算冗余,导致参数利用效率低下和效率不佳。此外,结果模型能力也受到限制,留有很大的精度提升空间(其实YOLOv10目前的反馈大家精度其实都不是很好)

在这项工作中,我们旨在解决这些问题,并进一步提升YOLO的准确性-速度界限。我们针对整个检测流程中的后处理和模型架构进行了改进。首先,通过引入一致的双重分配策略(这里说的双重分配策略其实就是指调用了两次V8的损失函数计算方法,然后进行了一个求和,具体代码大家可以在YOLOv10的项目文件的如下文件的最末尾看到'ultralytics/utils/loss.py',一下图片是我在代码中的截图并进行了标注大家感兴趣的可以自行找到代码中进行观看,但是具体的改进还是体现在检测头中!)

解决了后处理中的冗余预测问题,使YOLO在训练期间享有丰富而和谐的监督信号,同时在推理时无需NMS,从而实现高效的竞争性性能。其次,我们提出了整体效率-精度驱动的模型设计策略,通过对YOLO各组件进行全面检查,从效率和精度的角度优化模型架构。为提高效率,我们提出了轻量级分类头(Yaml文件中体现不出来,但是从代码上看只是重新布局了Conv的操作)空间-通道分离下采样(SCDown)基于秩的块设计(C2fUIB),以减少显著的计算冗余,实现更高效的架构。为提高精度,我们探索了大核卷积并提出了有效的部分自注意力模块,以增强模型能力,在低成本下实现性能改进(PSA)

基于这些方法,我们成功地实现了一个新的实时端到端检测器系列,即YOLOv10-N / S / M / B / L / X。标准目标检测基准(如COCO)上的广泛实验表明,YOLOv10在计算-精度权衡方面显著优于以前的最先进模型。例如,YOLOv10-S / X在相似性能下分别比RT-DETR-R18 / R101快1.8倍和1.3倍。与YOLOv9-C相比,YOLOv10-B在相同性能下延迟减少46%。此外,YOLOv10表现出高效的参数利用率。YOLOv10-L / X分别比YOLOv8-L / X高出0.3 AP和0.5 AP,参数减少1.8倍和2.3倍。YOLOv10-M在相似AP下分别比YOLOv9-M / YOLO-MS减少23%和31%的参数。

总结:通过改进后处理和模型架构,提升YOLO的准确性和速度,提出了YOLOv10。
创新点:

  • 引入一致的双重分配策略,消除NMS依赖。
  • 提出整体效率-精度驱动的模型设计策略,包括轻量级分类头、空间-通道分离下采样和基于秩的块设计。

实验结果:YOLOv10在多个基准测试中表现出色,显著优于之前的最先进模型。


二、相关工作 

实时目标检测器: 实时目标检测旨在在低延迟下对物体进行分类和定位,这对于实际应用至关重要。过去几年中,大量的努力集中在开发高效的检测器上。特别是,YOLO系列脱颖而出,成为主流之一。YOLOv1、YOLOv2和YOLOv3识别出典型的检测架构,由三个部分组成,即骨干网、颈部和头部。YOLOv4和YOLOv5引入了CSPNet设计来替代DarkNet,同时结合了数据增强策略、增强的PAN和更多种类的模型规模等。YOLOv6为颈部和骨干网分别提出了BiC和SimCSPSPPF,并采用了锚辅助训练和自我蒸馏策略。YOLOv7引入了E-ELAN以实现丰富的梯度流路径,并探索了几种可训练的免费增益方法。YOLOv8提出了C2f构建块,以实现有效的特征提取和融合。Gold-YOLO提供了先进的GD机制,以提升多尺度特征融合能力。YOLOv9提出了GELAN来改进架构,并通过PGI增强训练过程。

端到端目标检测器:端到端目标检测作为一种范式转变,提供了简化的架构。DETR引入了变压器架构,并采用匈牙利损失(感兴趣的可以搜索一下匈牙利算法)来实现一对一匹配预测,从而消除了手工设计的组件和后处理。从那时起,各种DETR变体被提出以增强其性能和效率。Deformable-DETR利用多尺度可变形注意模块加速收敛速度。DINO将对比降噪、混合查询选择和向前两次查看方案集成到DETR中。RT-DETR进一步设计了高效的混合编码器,并提出了不确定性最小的查询选择,以提高准确性和延迟。另一种实现端到端目标检测的方法是基于CNN的检测器。可学习的NMS和关系网络提出了另一种网络,以去除检测器的重复预测。OneNet和DeFCN提出了一对一匹配策略,使端到端目标检测能够完全依靠卷积网络实现。FCOSpss引入了正样本选择器,以选择最佳样本进行预测。

总结:这部分介绍了实时目标检测器(特别是YOLO系列)的演变和端到端目标检测器的发展,强调了不同架构设计和优化策略在提高检测性能和效率方面的重要性。通过这些努力,研究人员不断推动目标检测技术的发展,以满足实际应用的需求,全是套话这段不是很重要。


三、方法

3.1 无NMS训练的一致双重分配

在训练过程中,YOLO通常使用TAL(标签分配策略)为每个实例分配多个正样本。一对多分配的采用提供了丰富的监督信号,有助于优化并实现优异的性能。然而,这需要YOLO依赖于NMS后处理,导致推理效率不佳。虽然先前的工作探索了一对一匹配(为每个实例分配一个正样本,避免NMS后处理。)以抑制冗余预测,但通常会引入额外的推理开销或导致次优性能。在这项工作中,我们提出了一种无NMS训练策略,通过双重标签分配和一致的匹配度量,实现了高效率和竞争性性能。

例子解释1

这里解释一下大家可能不懂的点,一对多分配策略的解释:

假设我们有一张图像,其中包含两个目标:一个狗和一个猫。每个目标都有一个对应的真实边界框。

标签分配

  • 在一对多分配策略下,对于每个真实边界框(例如,狗的边界框),会分配多个正样本。这些正样本是预测的边界框,它们与真实边界框的重叠度(通常用IoU表示)超过某个阈值。例如,对于狗的边界框,模型可能会生成10个候选边界框,其中有5个与真实边界框的IoU超过0.5,这5个候选边界框将被分配为正样本。

丰富的监督信号

  • 由于分配了多个正样本,模型在训练过程中能够从更多的边界框中学习到相关信息。这些正样本提供了丰富的监督信号,有助于模型更好地优化分类和定位能力。每个正样本都会计算一个损失(例如分类损失和定位损失),模型会根据这些损失来调整参数,从而提高检测精度。

依赖NMS后处理

  • 在推理阶段(即模型应用于新图像时,注意此处是在推理阶段!!!我注意到Github上有人对作者的计算量进行质疑说和论文中公布的参数量不一致,有人回复是说训练的时候没有用到NMS所以此处的计算量可以忽略不记,仅仅是在推理阶段生效 | 我理解的就是论文公布的计算量是在推理阶段的,我们实际训练的时候可能参数量要大一些,不知道对不对,如果不对欢迎大家在评论区指正!),由于一对多分配策略会产生多个重叠的正样本(即多个边界框可能检测到同一个目标),因此需要使用NMS(非极大值抑制)来选择最优的预测边界框。NMS会抑制重叠度高的非最佳边界框,只保留得分最高的边界框,以减少冗余检测。

图片2描述:图展示了无NMS训练的一致双重分配策略以及YOLOv8-S模型在一对多结果中的一对一分配频率。

例子解释2

举例理解:大家看到这里可能还是晕头转向的对于这个一致双重分配策略不太理解,下面举个例子带大家理解下->

例子背景:
假设我们有一张包含三个目标(一个狗、一个猫和一个鸟)的图像。每个目标都有一个对应的真实边界框。在训练过程中,我们希望模型能够准确地预测这些边界框的位置和类别。

一对多分配
在一对多分配策略中,模型会为每个真实边界框分配多个预测边界框作为正样本。假设对于狗的真实边界框,模型生成了10个候选边界框,其中有4个与真实边界框的IoU超过了设定的阈值(例如0.5),这4个边界框都会被视为正样本。这样做的目的是:

  • 丰富监督信号:通过多个正样本,模型在训练过程中能够获得更多的反馈,帮助其更好地学习目标的特征。
  • 优化效果更好:由于有更多的正样本参与优化,模型的性能通常会更好。

一对一分配(One-to-One Assignment)
在一对一分配策略中,每个真实边界框只分配一个预测边界框作为正样本。例如,对于狗的真实边界框,模型只选择与其IoU最高的一个预测边界框作为正样本。这种方法的优点是:

  • 无需NMS后处理:因为每个目标只有一个正样本,避免了推理过程中使用非极大值抑制(NMS)来消除重复检测。
  • 更高效的推理:省去了NMS步骤,推理速度更快。

一致双重分配策略(重点)
一致双重分配策略结合了一对多和一对一分配的优点,在训练和推理过程中分别使用这两种方法。

1. 训练阶段:

  •    一对多头:利用一对多分配策略,为每个真实边界框分配多个正样本,提供丰富的监督信号,帮助模型更好地学习。
  •    一对一头:同时,利用一对一分配策略,为每个真实边界框分配一个正样本,确保训练过程中模型能够学会选择最佳的预测边界框。

2. 推理阶段:

  • 在推理阶段,只使用一对一头进行预测,因为一对一分配确保每个目标只有一个正样本,避免了冗余预测和NMS后处理。

一致匹配度量(重点)
为了使两个分支在训练过程中保持一致,采用了一致的匹配度量。匹配度量用于评估预测边界框与真实边界框之间的一致性,公式为:

m(\alpha, \beta) = s \cdot p^\alpha \cdot \text{IoU}(\hat{b}, b)^\beta

其中,p是分类得分,\hat{b}b分别是预测边界框和真实边界框,s表示空间先验,\alpha\beta 是超参数。

通过一致的匹配度量,可以确保一对一头和一对多头在优化方向上的一致性,进一步提升模型的性能。

希望能通过这个例子帮助大家理解一下这个策略,如果不对欢迎评论区指正!

双重标签分配(论文翻译,具体上面已经用例子解释过了)

与一对多分配不同,一对一匹配仅为每个真实值分配一个预测,避免了NMS后处理。然而,这导致了弱监督,从而导致次优的准确性和收敛速度。幸运的是,这一缺陷可以通过一对多分配来弥补。为此,我们引入了YOLO的双重标签分配,结合了两种策略的优势。具体而言,如图2.(a)[前面展示过的图片]所示,我们为YOLO增加了另一个一对一头。它保留了与原始一对多分支相同的结构,并采用相同的优化目标,但利用一对一匹配获得标签分配。在训练过程中,两个头与模型一起联合优化,使骨干和颈部享有一对多分配提供的丰富监督。在推理过程中,我们丢弃一对多头,并利用一对一头进行预测,从而无需额外的推理成本即可实现YOLO的端到端部署。此外,在一对一匹配中,我们采用最高选择,取得了与匈牙利匹配相同的性能,但训练时间更少。

论文翻译(下面是论文中给出的例子):给定一个实例,我们将其与预测的最大IoU表示为u*,一对多和一对一匹配的最大分数分别表示为mo2m和mo2o。假设一对多分支产生了正样本Ω,一对一分支选择了度量为mo2o,i的第i个预测,我们可以推导出分类目标to2m,j = u · mo2m,j / mo2m ≤ u,对于j ∈ Ω 和to2o,i = u* · mo2o,i / mo2o = u,如[20, 59, 27, 64, 14]中所述的任务对齐损失。两个分支之间的监督差距可以通过不同分类目标的1-Wasserstein距离来推导,即 A = to2o,i − I(i ∈ Ω)to2m,i + \sum_{k∈Ω\{i}}to2m,k 我们可以观察到,随着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 整体效率-精度驱动的模型设计 

除了后处理之外(本章节主要介绍的是一些结构性的创新,本章节附我个人手撕的各个结构图),YOLO模型的架构也在效率-精度权衡方面带来了巨大的挑战。尽管之前的工作探索了各种设计策略,但对YOLO各个组件的全面检查仍然缺乏。因此,模型架构表现出不可忽视的计算冗余和受限的能力,阻碍了其实现高效率和高性能的潜力。在这里,我们旨在从效率和精度的角度全面进行YOLO的模型设计。

效率驱动的模型设计
YOLO的组件包括干(stem)、下采样层、带有基本构建块的阶段和头部和主干部分计算成本较低,因此我们对其他三个部分进行效率驱动的模型设计。

图3:说明

(a) YOLOv8各阶段和模型的内在秩
图3(a)展示了YOLOv8模型中骨干和颈部各阶段的内在秩。具体信息如下:

  • 内在秩:内在秩是通过计算各阶段最后一个基本块的最后一个卷积的数值秩来确定的。数值秩表示超过某个阈值的奇异值数量。
  • 归一化:数值秩r在y轴上归一化为 r/Co,其中 Co表示输出通道的数量,阈值默认设置为 \lambda_{max}/2,其中\lambda_{max} 是最大的奇异值。
  • 观察结果:深层阶段和大型模型通常表现出较低的内在秩值,这表明这些阶段和模型存在较多的冗余。

图3(b) 紧凑倒置块(CIB)
图3(b)展示了紧凑倒置块(Compact Inverted Block, CIB)的结构:

  • 组成部分:CIB采用廉价的深度卷积进行空间混合,并采用成本效益高的点卷积进行通道混合。
  • 应用:CIB可以作为高效的基本构建块,例如嵌入ELAN结构中。

图3(c) 部分自注意力模块(PSA)
图3(c)展示了部分自注意力模块(Partial Self-Attention, PSA)的结构:
组成部分:PSA模块首先通过1×1卷积将特征均匀地划分为两部分。然后,只有一部分进入由多头自注意力模块(MHSA)和前馈网络(FFN)组成的NPSA块。最后,两部分特征被连接并通过1×1卷积融合(这就是指的是二次创新在MSHA上,也是我们大家发论文主要研究的方向)。

  • 优化:在MHSA中,查询和键的维度设为值的一半,并将LayerNorm替换为BatchNorm以加快推理速度。
  • 位置:PSA仅在分辨率最低的Stage 4之后放置,以避免自注意力的二次复杂性带来的过多开销。

通过这些模块的优化设计,YOLOv8模型在保持高性能的同时,实现了更高的效率和计算资源利用率。

1. 轻量级分类头

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

2. 空间-通道分离下采样

  • YOLO通常利用带有步幅2的常规3×3标准卷积,同时实现空间下采样(从H×W到H/2×W/2)和通道变换(从C到2C)。这引入了不可忽视的计算成本O(9/2HW C^2)和参数数量O(18C^2)相反,我们提出分离空间减少和通道增加操作,进行更高效的下采样。具体而言,我们首先利用点卷积调整通道维度,然后利用深度卷积进行空间下采样。这将计算成本减少到O(2HW C^2 + 9/2HW C)和参数数量减少到O(2C^2 + 18C)。同时,这最大限度地保留了下采样过程中的信息,从而在减少延迟的同时实现竞争性性能。

3. 基于秩的块设计

  • YOLO通常为所有阶段使用相同的基本构建块,例如YOLOv8中的瓶颈块。为全面检查这种同质设计的冗余,我们利用内在秩分析各阶段的冗余。具体而言,我们计算每个阶段最后一个基本块的最后一个卷积的数值秩,表示超过阈值的奇异值数量。图3.(a)展示了YOLOv8的结果,表明深层阶段和大模型往往表现出更多冗余。此观察表明,简单地为所有阶段应用相同的块设计对于最佳的容量-效率权衡来说是次优的。为此,我们提出了一种基于秩的块设计方案,旨在通过紧凑的架构设计减少冗余阶段的复杂性。我们首先提出了一种紧凑的倒置块(CIB)结构,它采用廉价的深度卷积进行空间混合,并采用成本效益高的点卷积进行通道混合,如图3.(b)所示。它可以作为高效的基本构建块,例如嵌入ELAN结构中。然后,我们倡导一种基于秩的块分配策略,以在保持竞争性容量的同时实现最佳效率。具体而言,给定一个模型,我们按内在秩从低到高排序其所有阶段。我们进一步检查用CIB替换领先阶段的基本块的性能变化。如果与给定模型相比没有性能下降,我们继续替换下一个阶段,否则停止该过程。这样,我们可以在各个阶段和模型规模中实现自适应紧凑块设计,在不影响性能的情况下实现更高的效率。由于篇幅限制,算法细节请参见附录。

通过这种整体效率-精度驱动的模型设计策略,我们可以显著提高YOLO模型的性能和效率,使其在各种应用场景中表现出色。


3.3 精度驱动的模型设计

我们进一步探索大核卷积和自注意力机制,旨在以最小的成本提升性能。

(1) 大核卷积

采用大核深度卷积是一种有效的方法,可以扩大感受野并增强模型的能力。然而,在所有阶段简单地使用它们可能会导致以下问题:

  • 浅层特征污染:在浅层特征中使用大核卷积可能会影响检测小物体的效果。
  • 高分辨率阶段的I/O开销和延迟:在高分辨率阶段使用大核卷积会显著增加I/O开销和延迟。

因此,我们建议在深层阶段的紧凑倒置块(CIB)中使用大核深度卷积。具体来说,我们将CIB中第二个3×3深度卷积的核大小增加到7×7。此外,我们采用结构重新参数化技术,在不增加推理开销的情况下引入另一个3×3深度卷积分支,以缓解优化问题。随着模型规模的增加,其感受野自然扩展,大核卷积的好处减少。因此,我们仅在小模型规模中采用大核卷积。

(2) 部分自注意力(PSA)

自注意力在各种视觉任务中得到了广泛应用,因为它具有显著的全局建模能力。然而,自注意力机制表现出较高的计算复杂度和内存占用。为了解决这个问题,鉴于注意力头冗余的普遍存在,我们提出了一种高效的部分自注意力(PSA)模块设计,如图3(c)所示。

具体来说,我们通过1×1卷积将特征均匀地划分为两部分。然后,我们仅将其中一部分输入到由多头自注意力模块(MHSA)和前馈网络(FFN)组成的NPSA块中。两部分特征随后被连接并通过1×1卷积融合。此外,我们遵循将MHSA中查询和键的维度分配为值的一半,并将LayerNorm替换为BatchNorm以加快推理速度。

PSA仅在分辨率最低的Stage 4之后放置,以避免自注意力二次复杂性带来的过多开销。通过这种方式,可以在低计算成本下将全局表示学习能力引入YOLO模型,从而增强模型能力并提高性能。

通过这些精度驱动的设计,我们能够在不显著增加计算成本的情况下提升YOLO模型的性能。


四、实验

4.1 实现细节

我们选择YOLOv8作为基线模型,因为它在延迟和准确性之间具有良好的平衡,并且提供了各种模型尺寸。我们采用一致的双重分配策略进行无NMS训练,并基于此进行整体效率-精度驱动的模型设计,从而开发了YOLOv10模型。YOLOv10具有与YOLOv8相同的变体,即N / S / M / L / X。此外,我们通过简单地增加YOLOv10-M的宽度缩放因子,派生出一个新的变体YOLOv10-B。我们在COCO数据集上验证了所提出的检测器,并在相同的从头训练设置下进行验证。此外,所有模型的延迟测试都在T4 GPU上使用TensorRT FP16进行,遵循相关研究的方法。


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%。

与其他YOLO模型相比,YOLOv10在准确性和计算成本之间也表现出更优的权衡。具体来说,对于轻量级和小型模型,YOLOv10-N / S比YOLOv6-3.0-N / S分别高出1.5 AP和2.0 AP。

表1中列出了与最先进方法的比较。延迟是使用官方预训练模型测量的。Latencyf表示模型在没有后处理时前向过程的延迟。†表示YOLOv10使用原始一对多训练并采用NMS的结果。为了公平比较,所有结果均未使用诸如知识蒸馏或PGI等额外的高级训练技术。

相比于AP,YOLOv10在参数量和计算量上分别减少了51% / 61%。对于中等规模的模型,YOLOv10-B / M相较于YOLOv9-C / YOLO-MS,在相同或更好的性能下分别减少了46% / 62%的延迟。对于大型模型,相较于Gold-YOLO-L,我们的YOLOv10-L减少了68%的参数量和32%的延迟,同时显著提升了1.4%的AP。此外,与RT-DETR相比,YOLOv10在性能和延迟上均有显著提升。值得注意的是,YOLOv10-S / X在类似性能下推理速度分别比RT-DETR-R18 / R101快1.8倍和1.3倍。这些结果充分证明了YOLOv10作为实时端到端检测器的优越性。

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


4.3 模型分析

消融研究。我们在表2中展示了基于YOLOv10-S和YOLOv10-M的消融结果。可以观察到,我们的无NMS训练通过一致的双重分配显著减少了YOLOv10-S的端到端延迟4.63毫秒,同时保持了44.3%的竞争性性能。此外,我们的效率驱动模型设计减少了11.8M参数和20.8 GFLOPs,同时对于YOLOv10-M的延迟减少了0.65毫秒,充分展示了其有效性。更进一步,我们的精度驱动模型设计对于YOLOv10-S和YOLOv10-M分别取得了1.8 AP和0.7 AP的显著提升,延迟仅增加了0.18毫秒和0.17毫秒,这很好地展示了其优越性。

无NMS训练的分析

  • 双重标签分配。我们为无NMS的YOLO模型引入了双重标签分配,这在训练过程中可以带来一对多(o2m)分支的丰富监督,并在推理过程中带来一对一(o2o)分支的高效率。我们基于YOLOv8-S(表2中的#1)验证了它的优势。具体而言,我们分别引入了仅用o2m分支和仅用o2o分支进行训练的基线。正如表3所示,我们的双重标签分配在AP-延迟权衡上实现了最佳表现。
  • 一致的匹配度量。我们引入一致的匹配度量,使一对一头与一对多头更加协调。我们基于YOLOv8-S(表2中的#1),在不同的αo2o和βo2o下验证了其优势。正如表4所示,所提出的一致匹配度量(即αo2o=r · αo2m和βo2o=r · βo2m)可以实现最佳性能,其中一对多头中的αo2m=0.5和βo2m=6.0 [20]。这种改进可归因于监督差距的减少(方程(2)),从而在两个分支之间提供了更好的监督对齐。此外,所提出的一致匹配度量消除了对耗时的超参数调优的需求,这在实际场景中具有吸引力。

效率驱动模型设计的分析。我们基于YOLOv10-S/M逐步引入效率驱动设计元素进行实验。我们的基线是没有效率-准确性驱动模型设计的YOLOv10-S/M模型(表2中的#2/#6)。如表5所示,每个设计组件,包括轻量化分类头、空间-通道解耦下采样和排序引导块设计,都有助于减少参数数量、FLOPs和延迟。重要的是,这些改进是在保持竞争性能的情况下实现的。

  • 轻量化分类头。我们基于表5中的YOLOv10-S的#1和#2,分析了预测类别和定位错误对性能的影响,如[6]。具体而言,我们通过一对一分配将预测与实例匹配。然后,我们用实例标签替换预测的类别得分,得到没有分类错误的APval w/o c。同样,我们用实例的定位替换预测的定位,得到没有回归错误的APval w/o r。如表6所示,APval w/o r远高于APval w/o c,表明消除回归错误带来了更大的改进。因此,性能瓶颈更多地在于回归任务。因此,采用轻量化分类头可以在不影响性能的情况下提高效率。
  • 空间-通道解耦下采样。我们为提高效率对下采样操作进行了解耦,其中通过逐点卷积(PW)首先增加通道维度,然后通过深度卷积(DW)减少分辨率,以最大限度地保留信息。我们基于表5中的YOLOv10-S,将其与通过DW进行空间缩减,然后通过PW进行通道调整的基线方法进行了比较。如表7所示,我们的下采样策略通过减少下采样过程中信息损失,实现了0.7%的AP提升。

紧凑的倒置块(CIB)。我们引入CIB作为紧凑的基本构建块。我们基于表5中的YOLOv10-S验证了其有效性。具体而言,我们引入了倒置残差块[46](IRB)作为基线,如表8所示,基线达到了次优的43.7% AP。然后,我们在其后添加了一个3×3的深度卷积(DW),称为“IRB-DW”,这

带来了0.5%的AP提升。与“IRB-DW”相比,我们的CIB通过在前面添加另一个DW(开销最小)进一步实现了0.3%的AP提升,表明其优越性。排序引导的块设计。我们引入排序引导的块设计,自适应地整合紧凑块设计,以提高模型效率。我们基于表5中的YOLOv10-S验证了它的优势。根据固有排序按升序排序的阶段为阶段8-4-7-3-5-1-6-2,如图3.(a)所示。正如表9所示,当逐步用高效的CIB替换每个阶段的瓶颈块时,我们观察到从阶段7开始的性能下降。在具有较低固有排序和更多冗余的阶段8和4中,我们可以采用高效块设计而不影响性能。这些结果表明,排序引导的块设计可以作为提高模型效率的有效策略。

精度驱动模型设计的分析。我们展示了基于YOLOv10-S/M逐步整合精度驱动设计元素的结果。我们的基线是在整合了效率驱动设计后的YOLOv10-S/M模型(表2中的#3/#7)。如表10所示,采用大核卷积和PSA模块分别为YOLOv10-S带来了0.4% AP和1.4% AP的显著性能提升,而延迟增加分别只有0.03毫秒和0.15毫秒。注意,对于YOLOv10-M没有采用大核卷积(见表12)。

  • 大核卷积。我们首先基于表10中的YOLOv10-S的#2研究了不同核大小的影响。如表11所示,随着核大小的增加,性能提高并在7×7核大小附近趋于平稳,表明了大感受野的益处。此外,在训练过程中移除重参数化分支会导致0.1%的AP下降,显示了其在优化中的有效性。此外,我们基于YOLOv10-N / S / M研究了大核卷积在不同模型规模上的效果。如表12所示,对于大模型(即YOLOv10-M)没有带来改进,这是由于其固有的广泛感受野。因此,我们只在小模型(即YOLOv10-N / S)中采用大核卷积。
  • 部分自注意力(PSA)。我们引入PSA,通过以最低成本结合全局建模能力来提高性能。我们首先基于表10中的YOLOv10-S的#3验证了其有效性。具体而言,我们引入了变压器块,即MHSA后接FFN,作为基线,称为“Trans.”。如表13所示,与之相比,PSA带来了0.3%的AP提升,同时延迟减少了0.05毫秒。性能提升可能归因于在自注意力中通过减少注意力头的冗余缓解了优化问题[62, 9]。此外,我们研究了不同NPSA的影响。如表13所示,将NPSA增加到2可获得0.2%的AP提升,但延迟增加了0.1毫秒。因此,我们默认将NPSA设置为1,以在保持高效率的同时增强模型能力。


五、结论 

在本文中,我们针对YOLOs的整个检测流程中的后处理和模型架构进行了研究。对于后处理,我们提出了一致的双重分配用于无NMS训练,实现了高效的端到端检测。对于模型架构,我们引入了整体的效率-准确性驱动模型设计策略,改善了性能-效率的权衡。这些改进带来了我们新的实时端到端目标检测器YOLOv10。大量实验表明,YOLOv10在性能和延迟方面均达到了最先进的水平,相比其他高级检测器,充分展示了其优越性。


温馨提示

在末尾再给大家说一下,YOLO系列目前发展的比较快,大家可能会感到很迷茫不知道如何选择模型来作为改进的基准,其实不管是最近新出的YOLOv9还是v10其实目前来看都不适用于改进,v9的原因在v9的专栏已经介绍过了,v10主要原因还是小作坊出的(不算是正统像V5和V8)其次就是论文还没有被收录目前来看V10的论文中我阅读过程中甚至能够发现到错误的地方,所以如果你是短期内急着毕业那么V8和RT-DETR应该是目前最好的选择,如果你还不急着产出一些成果那么V10和V9也是可以入手看一看的,以上内容都是我个人见解仅供参考!


到此本文的正式分享内容就结束了,在这里给大家推荐我的YOLOv10改进有效涨点专栏,本专栏目前为新开的,后期我会根据各种最新的前沿顶会进行论文复现,也会对一些老的改进机制进行补充,如果大家觉得本文帮助到你了,订阅本专栏,关注后续更多的更新~

专栏目录:YOLOv10改进有效专栏 | 持续复现前沿机制

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

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

相关文章

【CTF Web】CTFShow web6 Writeup(SQL注入+PHP+位运算)

web6 1 阿呆一口老血差点噎死自己&#xff0c;决定杠上了 解法 注意到&#xff1a; <!-- flag in id 1000 -->拦截很多种字符&#xff0c;连 select 也不给用了。 if(preg_match("/\|\"|or|\||\-|\\\|\/|\\*|\<|\>|\^|\!|x|hex|\(|\)|\|select/i"…

Textual for Mac:轻量级IRC客户端

在寻找一款高效、轻量级的IRC客户端时&#xff0c;Textual for Mac无疑是你的不二之选。它集成了众多现代技术&#xff0c;如本机IPv6、最新的IRCv3规范&#xff0c;以及客户端证书身份验证&#xff0c;让你的聊天体验更加顺畅和安全。 Textual for Mac v7.2.2免激活版下载 Tex…

【多线程开发 2】从代码到实战TransmittableThreadLocal

【多线程开发 2】从代码到实战TransmittableThreadLocal 本文将从以下几个点讲解TransmittableThreadLocal(为了方便写以下简称ttl)&#xff1a; 前身 是什么&#xff1f; 可以用来做什么&#xff1f; 源码原理 实战 前身 ThreadLocal 要了解ttl就要先了解Java自带的类…

C语言内存函数(与上篇字符函数及字符串函数一起食用效果更佳哦~)

顾名思义&#xff0c;内存函数就是针对内存块&#xff08;即一块内存&#xff09;来处理的。 因此本篇所讲的四种内存函数&#xff1a; memcpy&#xff08;内存拷贝&#xff09;memmove&#xff08;内存移动&#xff09;memset&#xff08;内存设置&#xff09;memcmp&#x…

5.Redis之常用数据结构单线程模型

围绕每个数据结构介绍相关命令当前版本的redis支持10个数据类型 Redis 底层在实现上述数据结构的时候,会在源码层面,针对上述实现进行特定的优化,来达到 节省时间/节省空间 效果,内部的具体实现的数据结构&#xff08;编码方式&#xff09;,还会有变数redis 承诺,现在我这有个 …

【Java EE】网络协议——HTTP协议

目录 1.HTTP 1.1HTTP是什么 1.2理解“应用层协议” 1.3理解HTTP协议的工作过程 2.HTTP协议格式 2.1抓包工具的使用 2.2抓包工具的原理 2.3抓包结果 3.协议格式总结 1.HTTP 1.1HTTP是什么 HTTP&#xff08;全称为“超文本传输协议”&#xff09;是一种应用非常广泛的应…

如何利用GitHubAction来发布自己的Python软件包

我们开发的python软件包如果想发布到网上&#xff0c;可以让其他人通过pip install下载&#xff0c;一般是把软件包发布到PYPI平台。 PYPI准备 我们要现在pypi注册登录一下 文件组织架构 一般的python软件包的文件组织架构为包名文件夹__init__.py程序&#xff0c;包文件夹的…

Django与前端框架协作开发实战:高效构建现代Web应用

title: Django与前端框架协作开发实战&#xff1a;高效构建现代Web应用 date: 2024/5/22 20:07:47 updated: 2024/5/22 20:07:47 categories: 后端开发 tags: DjangoREST前端框架SSR渲染SPA路由SEO优化组件库集成状态管理 第1章&#xff1a;简介 1.1 Django简介 Django是一…

论文阅读--ActionCLIP

原来的动作识别问题在于标注太难太贵&#xff0c;将动作表示为短语的latent space太大 本文的贡献&#xff1a;&#xff08;1&#xff09;将CLIP的image encoder换成video encoder&#xff0c;方法与CLIP4Clip几乎一样 &#xff08;2&#xff09;CLIP的ground truth来自于文本…

urllib_post请求_百度翻译之详细翻译

百度翻译有一个详细翻译的接口&#xff1a; post请求&#xff1a; 请求参数&#xff08;较多&#xff09;&#xff1a; 打印之后&#xff0c;发现有问题&#xff1a; 改一下请求头&#xff1a; 将Accept-Encoding注释掉&#xff0c;因为我们使用的是utf-8编码&#xff1a; 加上…

F28034中断

DSP中断 中断中断概述中断机制 中断 当CPU正在执行程序时&#xff0c;由于发生了某种随机的事件&#xff08;外部或内部&#xff09;&#xff0c;使CPU的执行中断&#xff0c;转而去执行某一段特殊的程序&#xff08;中断子程序或中断处理程序&#xff09;&#xff0c;以处理该…

轻型web服务器搭建 阿里云

1.购买云服务器 2.远程连接云服务器 重置实例密码 重置后要重启服务器 登录云服务器 密码就是刚刚重置的 3.安装宝塔面板 宝塔面板 - 简单好用的Linux/Windows服务器运维管理面板 (bt.cn) 回车则开始安装&#xff0c;过程中会多次让输入y表示确认下一步&#xff0c;过程大概2…

windows使用gzip和bzip2对文件进行压缩

git软件 git bash&#xff1a;下载地址https://git-scm.com/downloads&#xff0c;安装时一路next。 这个软件是给程序员提交代码用的工具&#xff0c;内置linux系统的命令行&#xff0c;可以使用linux系统特有的压缩软件gzip和bzip2. gzip使用 gzip一般用于压缩tar包&#…

基于机器学习的一线城市租房价格预测分析与实现,实现三种算法预测

本文旨在基于机器学习方法&#xff0c;对一线城市租房价格进行预测分析&#xff0c;并使用Matplotlib可视化、随机森林、一元线性回归和多元线性模型进行模型对比。通过爬取北京链家二手房数据作为研究对象&#xff0c;探讨了租房价格与各种因素之间的关系&#xff0c;阐述了研…

【YOLOv10训练教程】如何使用YOLOv10训练自己的数据集并且推理使用

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

【气象常用】间断时间序列图

效果图&#xff1a; 主要步骤&#xff1a; 1. 数据准备&#xff1a;随机数组 2. 图像绘制&#xff1a;绘制间断的时间序列 详细代码&#xff1a;着急的直接拖到最后有完整代码 步骤一&#xff1a;导入库包及图片存储路径并设置中文字体为宋体&#xff0c;西文为新罗马&…

冷干机使用中的注意事项

冷干机使用中的注意事项 使用冷干机时&#xff0c;以下是几个注意事项&#xff1a; 安装位置&#xff1a;选择一个通风良好、温度适宜的位置安装冷干机。确保周围环境没有过多的灰尘、腐蚀性气体或其他污染物&#xff0c;以免对冷干机的正常运行和寿命产生不利影响。 电源要求…

C++ STL 函数对象:隐藏的陷阱,如何避免状态带来的麻烦?

STL 函数对象&#xff1a;无状态即无压力 一、简介二、函数对象三、避免在函数对象中保存状态3.1、函数对象3.2、lambda 表达式 四、选择合适的更高层次的结构五、总结 一、简介 在使用 C 标准模板库 (STL) 时&#xff0c;函数对象 (Function Object) 是一种强大的工具&#x…

02324 自学考试 离散数学屈婉玲教材 目录

02324 自学考试 离散数学屈婉玲教材 目录 02324 自学考试 离散数学屈婉玲教材 02324离散数学全程班历年真题资料

技术面试,项目实战,求职利器

之前找工作一直想找一个能真正系统性学开发的地方&#xff0c;之前毕业找工作的时候无意间碰到下面这个网站&#xff0c;感觉还挺不错的&#xff0c;用上面的技术实战内容应对技术面试&#xff0c;也算是求职利器了。有需要的可以自取&#xff1a; https://how2j.cn?p156336 实…