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

YoloV10 论文翻译(Real-Time End-to-End Object Detection)

​摘要

近年来,YOLO因其在计算成本与检测性能之间实现了有效平衡,已成为实时目标检测领域的主流范式。研究人员对YOLO的架构设计、优化目标、数据增强策略等方面进行了探索,并取得了显著进展。然而,YOLO对非极大值抑制(NMS)后处理的依赖阻碍了其端到端的部署,并对推理延迟产生了不利影响。此外,YOLO中各组件的设计缺乏全面和深入的审查,导致计算冗余明显,并限制了模型的性能。这使得YOLO的效率不尽如人意,且存在相当大的性能提升潜力。在本文中,我们的目标是从后处理和模型架构两个方面进一步推进YOLO的性能-效率边界。为此,我们首先提出了用于YOLO无NMS训练的一致性双重分配策略,该策略同时带来了竞争性的性能和较低的推理延迟。此外,我们引入了面向YOLO的整体效率-准确率驱动的模型设计策略。我们从效率和准确性的角度对YOLO的各种组件进行了全面优化,大大降低了计算开销并提升了性能。我们的努力成果是一种新一代的用于实时端到端目标检测的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。
​​
在这里插入图片描述

1 引言

实时目标检测一直是计算机视觉领域的研究焦点,旨在以低延迟准确地预测图像中物体的类别和位置。它在各种实际应用中得到了广泛应用,包括自动驾驶[3]、机器人导航[11]和物体跟踪[66]等。近年来,研究人员致力于开发基于卷积神经网络(CNN)的目标检测器以实现实时检测[18, 22, 43, 44, 45, 51, 12]。其中,YOLO系列因其在性能和效率之间的出色平衡而备受欢迎[2, 19, 27, 19, 20, 59, 54, 64, 7, 65, 16, 27]。YOLO的检测流程包括两部分:模型前向传播和非极大值抑制(NMS)后处理。然而,这两部分都存在不足,导致精度-延迟边界不理想。具体来说,YOLO在训练时通常采用一对多的标签分配策略,即一个真实物体对应多个正样本。尽管这种方法能够带来优越的性能,但在推理时却需要NMS来选择最佳正预测。这减慢了推理速度,并使性能对NMS的超参数敏感,从而阻碍了YOLO实现最优的端到端部署[71]。一种解决这一问题的方法是采用最近引入的端到端DETR架构[4, 74, 67, 28, 34, 40, 61]。例如,RT-DETR[71]提出了一种高效的混合编码器和不确定性最小化查询选择,使DETR能够应用于实时应用。然而,DETR部署的固有复杂性阻碍了其在精度和速度之间达到最优平衡的能力。另一种方法是探索基于CNN检测器的端到端检测,这通常利用一对一分配策略来抑制冗余预测[5, 49, 60, 73, 16]。然而,这些方法通常会增加额外的推理开销或无法达到最优性能。

此外,YOLO的模型架构设计仍然是一个根本性挑战,对精度和速度有重要影响[45, 16, 65, 7]。为了实现更高效和有效的模型架构,研究人员探索了不同的设计策略。为了增强特征提取能力,为骨干网络提出了各种基本计算单元,包括DarkNet[43, 44, 45]、CSPNet[2]、EfficientRep[27]和ELAN[56, 58]等。对于颈部网络,探索了PAN[35]、BiC[27]、GD[54]和RepGFPN[65]等来增强多尺度特征融合。此外,还研究了模型缩放策略[56, 55]和重参数化[10, 27]技术。尽管这些努力取得了显著进展,但从效率和精度角度对YOLO中各种组件进行全面检查的工作仍然缺乏。因此,YOLO中仍存在相当的计算冗余,导致参数利用率低下且效率不理想。此外,由此导致的模型能力受限也导致性能不佳,留下了大量提升精度的空间。

在本文中,我们旨在解决这些问题并进一步提升YOLO的精度-速度边界。我们的目标贯穿整个检测流程,包括后处理和模型架构。为此,我们首先通过提出一种用于无NMS YOLO的一致双重分配策略来解决后处理中的冗余预测问题,该策略结合了双重标签分配和一致匹配度量。它允许模型在训练期间享受丰富且协调的监督,同时在推理期间消除对NMS的需求,从而实现具有高效性的竞争性能。其次,我们提出了针对模型架构的全局效率-精度驱动模型设计策略,通过对YOLO中各种组件进行全面检查来实现这一目标。为了提高效率,我们提出了轻量级分类头、空间-通道解耦下采样和秩引导块设计,以减少明显的计算冗余并实现更高效的架构。为了提高精度,我们探索了大核卷积并提出了有效的部分自注意力模块,以增强模型能力,在低成本下挖掘性能提升的潜力。

基于这些方法,我们成功开发了一个具有不同模型规模的新一代实时端到端检测器系列,即YOLOv10-N/S/M/B/L/X。在标准目标检测基准测试集(如COCO[33])上进行的大量实验表明,我们的YOLOv10在各种模型规模下均能在计算-精度权衡方面显著优于先前最先进的模型。如图1所示,在相似性能下,我们的YOLOv10-S/X分别比RT-DETR-R18/R101快1.8倍/1.3倍。与YOLOv9-C相比,YOLOv10-B在相同性能下延迟降低了46%。此外,YOLOv10展现出高效的参数利用率。我们的YOLOv10-L/X在参数数量分别比YOLOv8-L/X少1.8倍和2.3倍的情况下,性能分别高出0.3 AP和0.5 AP。YOLOv10-M与YOLOv9-M/YOLO-MS具有相似的AP,但参数分别减少了23%/31%。我们希望我们的工作能够激发该领域的进一步研究和进步。
在这里插入图片描述

2 相关工作

实时目标检测器。实时目标检测旨在以低延迟对物体进行分类和定位,这对于实际应用至关重要。过去几年中,研究人员在开发高效检测器方面付出了大量努力[18, 51, 43, 32, 72, 69, 30, 29, 39]。特别是YOLO系列[43, 44, 45, 2, 19, 27, 56, 20, 59]脱颖而出,成为主流。YOLOv1、YOLOv2和YOLOv3确定了典型的检测架构,包括三个部分:骨干网络、颈部网络和头部网络[43, 44, 45]。YOLOv4[2]和YOLOv5[19]引入了CSPNet[57]设计来替换DarkNet[42],并结合了数据增强策略、增强的PAN和更多样化的模型规模等。YOLOv6[27]为颈部网络和骨干网络分别提出了BiC和SimCSPSPPF,并采用锚点辅助训练和自蒸馏策略。YOLOv7[56]引入了E-ELAN以实现丰富的梯度流路径,并探索了几种可训练的免费午餐方法。YOLOv8[20]提出了C2f构建块以进行有效特征提取和融合。Gold-YOLO[54]提供了先进的GD机制以增强多尺度特征融合能力。YOLOv9[59]提出了GELAN以改进架构,并提出了PGI以增强训练过程。

端到端目标检测器。端到端目标检测作为一种从传统流程中的范式转变而出现,提供了简化的架构[48]。DETR[4]引入了Transformer架构,并采用匈牙利损失实现一对一匹配预测,从而消除了手工设计的组件和后处理。自那以后,各种DETR变体被提出来增强其性能和效率[40, 61, 50, 28, 34]。Deformable-DETR[74]利用多尺度可变形注意力模块来加速收敛速度。DINO[67]将对比去噪、混合查询选择和前瞻两次方案集成到DETR中。RT-DETR[71]进一步设计了高效的混合编码器,并提出了不确定性最小化查询选择以提高准确性和延迟。实现端到端目标检测的另一条路线是基于CNN的检测器。可学习NMS[23]和关系网络[25]提出了另一种网络来移除检测器中的重复预测。OneNet[49]和DeFCN[60]提出了一对一匹配策略,以使用全卷积网络实现端到端目标检测。FCOS[73]引入了一个正样本选择器来选择最佳样本进行预测。

3 方法论

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

在训练过程中,YOLO系列[20, 59, 27, 64]通常利用TAL[14]为每个实例分配多个正样本。采用一对多分配可以产生丰富的监督信号,促进优化并实现优越的性能。然而,这导致YOLO依赖于NMS后处理,从而降低了部署时的推理效率。虽然之前的工作[49, 60, 73, 5]探索了一对一匹配来抑制冗余预测,但它们通常会增加额外的推理开销或产生次优性能。

在本文中,我们提出了一种针对YOLO的无NMS训练策略,该策略采用双重标签分配和一致匹配度量,同时实现高效能和竞争性能。

双重标签分配。与一对多分配不同,一对一匹配只为每个真实框分配一个预测,从而避免了NMS后处理。然而,这会导致较弱的监督,从而降低准确性和收敛速度[75]。幸运的是,这一缺陷可以通过一对多分配来弥补[5]。为了实现这一点,我们为YOLO引入了双重标签分配,以结合两种策略的最佳优势。具体来说,如图2(a)所示,我们为YOLO添加了另一个一对一头部。它保留了相同的结构,并采用了与原始一对多分支相同的优化目标,但利用一对一匹配来获得标签分配。在训练期间,两个头部与模型一起联合优化,使骨干网络和颈部网络能够享受一对多分配提供的丰富监督。在推理期间,我们丢弃一对多头部,并利用一对一头部进行预测。这使得YOLO能够实现端到端部署,而不会带来任何额外的推理成本。此外,在一对一匹配中,我们采用选择得分最高的预测作为匹配结果,这与匈牙利匹配[4]具有相同的性能,但额外训练时间更少。

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

在双重标签分配中,一对多分支提供的监督信号比一对一分支丰富得多。直观地说,如果我们能够协调一对一头部和一对多头部之间的监督,我们可以将一对一头部优化到一对多头部优化的方向。因此,一对一头部可以在推理期间提供更高质量的样本,从而获得更好的性能。为此,我们首先分析两个头部之间的监督差距。由于训练过程中的随机性,我们从两个头部以相同值初始化并产生相同预测的情况开始检查,即一对一头部和一对多头部为每个预测-实例对生成相同的p和IoU。我们注意到,两个分支的回归目标不冲突,因为匹配的预测共享相同的目标,而未匹配的预测则被忽略。因此,监督差距在于不同的分类目标。给定一个实例,我们将其与预测的最大交并比(IoU)表示为 u ∗ u^* u,将一对多和一对一匹配的最大分数分别表示为 m o 2 m ∗ m^*_{o2m} mo2m m o 2 o ∗ m^*_{o2o} mo2o。假设一对多分支产生了正样本集 Ω \Omega Ω,且一对一分支根据度量 m o 2 o , i = m o 2 o ∗ m_{o2o,i}=m^*_{o2o} mo2o,i=mo2o选择了第 i i i个预测,我们可以推导出分类目标 t o 2 m , j = u ∗ ⋅ m o 2 m , j m o 2 m ∗ t_{o2m,j}=u^* \cdot \frac{m_{o2m,j}}{m^*_{o2m}} to2m,j=umo2mmo2m,j(对于 j ∈ Ω j \in \Omega jΩ)和 t o 2 o , i = u ∗ ⋅ m o 2 o , i m o 2 o ∗ = u ∗ t_{o2o,i}=u^* \cdot \frac{m_{o2o,i}}{m^*_{o2o}}=u^* to2o,i=umo2omo2o,i=u,这里采用的是与任务对齐的损失函数,如[20, 59, 27, 64, 14]中所使用的。因此,两个分支之间的监督差距可以通过不同分类目标之间的1-Wasserstein距离[41]来推导得出,即:
在这里插入图片描述
这个差距随着一对多头部中第i个样本的分类目标 t o 2 m , i t_{o2m,i} to2m,i的增加而减小,即当第i个样本在一对多匹配结果中的排名越靠前时,差距越小。当 t o 2 m , i = u ∗ t_{o2m,i}=u^* to2m,i=u时,差距达到最小,这意味着第i个样本是一对多匹配结果中的最佳正样本,如图2(a)所示。

为了实现这一点,我们提出了一致匹配度量,即设置 α o 2 o = r ⋅ α o 2 m \alpha_{o2o}=r \cdot \alpha_{o2m} αo2o=rαo2m β o 2 o = r ⋅ β o 2 m \beta_{o2o}=r \cdot \beta_{o2m} βo2o=rβo2m,这意味着一对一匹配度量 m o 2 o m_{o2o} mo2o与一对多匹配度量 m o 2 m m_{o2m} mo2m成正比(系数为r)。因此,对于一对多头部而言的最佳正样本也是一对一头部的最佳正样本。这样,两个头部就可以在训练和推理过程中保持一致的优化方向,实现和谐优化。为了简化,我们默认取 r = 1 r=1 r=1,即 α o 2 o = α o 2 m \alpha_{o2o}=\alpha_{o2m} αo2o=αo2m β o 2 o = β o 2 m \beta_{o2o}=\beta_{o2m} βo2o=βo2m

为了验证这种一致匹配度量带来的监督对齐改进,我们在训练后统计了一对一匹配对在一对多结果前1名、前5名和前10名中的数量。如图2(b)所示,在使用一致匹配度量后,监督对齐得到了改善。

关于数学证明的更全面理解,请参考附录部分。

3.2 整体效率-精度驱动的模型设计

除了后处理之外,YOLO的模型架构也对效率-精度的权衡提出了巨大挑战[45, 7, 27]。尽管以前的工作探索了各种设计策略,但对YOLO中各种组件的综合检查仍然缺乏。因此,YOLO的模型架构存在不可忽视的计算冗余和受限的能力,这阻碍了其实现高效能和性能的潜力。在这里,我们旨在从效率和精度两个角度对YOLO进行整体模型设计。

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

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

(2)空间-通道解耦下采样。YOLO通常利用步长为2的常规3×3标准卷积来实现空间下采样(从H×W到H/2×W/2)和通道变换(从C到2C)同时进行。这引入了不可忽视的计算成O(9/2HWC^2).
和参数数量O(18C2)。相反,我们提出将空间降维和通道增加操作解耦,以实现更高效的下采样。具体来说,我们首先利用点卷积来调制通道维度,然后利用深度卷积进行空间下采样。这将计算成本降低到 O ( 2 H W C 2 + 9 / 2 H W C ) O(2HWC^2 + 9/2HWC) O(2HWC2+9/2HWC)并将参数数量减少到 O ( 2 C 2 + 18 C ) O(2C^2 + 18C) O(2C2+18C)同时,它在下采样过程中最大限度地保留了信息,从而在降低延迟的同时保持了竞争性能。
(3)基于秩的指导块设计。YOLO通常对所有阶段使用相同的基本构建块[27, 59],例如YOLOv8中的瓶颈块[20]。为了彻底检查YOLO的这种同质设计,我们利用内在秩[31, 15]来分析每个阶段的冗余性。具体来说,我们计算每个阶段中最后一个基本块的最后一个卷积的数值秩,即计算大于阈值的奇异值数量。图3(a)展示了YOLOv8的结果,表明深层阶段和大模型更容易表现出更多的冗余性。这一观察结果表明,对所有阶段简单地应用相同的基本块设计对于实现最佳容量-效率权衡来说并不是最优的。为了解决这个问题,我们提出了一种基于秩的指导块设计方案,旨在通过紧凑的架构设计来降低冗余阶段的复杂性。

我们首先提出了一种紧凑的倒置块(CIB)结构,如图3(b)所示,它采用廉价的深度卷积进行空间混合和成本效益高的点卷积进行通道混合。它可以作为高效的基本构建块,例如嵌入在ELAN结构中[58, 20](如图3(b)所示)。然后,我们提倡一种基于秩的指导块分配策略,以在保持竞争性能的同时实现最佳效率。具体来说,给定一个模型,我们根据其内在秩按升序对其所有阶段进行排序。我们进一步检查用CIB替换领先阶段中的基本块后的性能变化。如果与给定模型相比没有性能下降,则继续进行下一阶段的替换,否则停止该过程。因此,我们可以实现跨阶段和模型尺度的自适应紧凑块设计,从而在不影响性能的情况下提高效率。由于页面限制,我们在附录中提供了算法的详细信息。

精度驱动的模型设计。我们进一步探索了大核卷积和自注意力机制以进行精度驱动的设计,旨在以最小的成本提高性能。

(1)*大核卷积。*采用大核深度卷积是扩大感受野和增强模型能力的一种有效方法[9, 38, 37]。然而,简单地在所有阶段中利用它们可能会在用于检测小物体的浅层特征中引入干扰,同时还会在高分辨率阶段引入显著的I/O开销和延迟[7]。因此,我们提出在深层阶段中的CIB内利用大核深度卷积。具体来说,我们将CIB中第二个3×3深度卷积的核大小增加到7×7,遵循[37]。此外,我们采用结构重参数化技术[10, 9, 53]来引入另一个3×3深度卷积分支,以缓解优化问题而不增加推理开销。此外,随着模型尺寸的增加,其感受野自然会扩大,使用大核卷积的好处会减少。因此,我们仅对小模型尺寸采用大核卷积。

(2)部分自注意力(PSA)。自注意力机制[52]因其显著的全局建模能力而被广泛应用于各种视觉任务中[36, 13, 70]。然而,它表现出较高的计算复杂性和内存占用。为了解决这个问题,鉴于普遍存在的注意力头冗余性[63],我们提出了一种高效的部分自注意力(PSA)模块设计,如图3©所示。具体来说,在1×1卷积之后,我们将特征在通道上均匀划分为两部分。我们仅将其中一部分输入到由多头自注意力模块(MHSA)和前馈网络(FFN)组成的NPSA块中。然后,将两部分进行拼接并通过1×1卷积进行融合。此外,我们遵循[21]将MHSA中查询和键的维度分配给值维度的一半,并将LayerNorm[1]替换为BatchNorm[26]以实现快速推理。此外,PSA仅放置在具有最低分辨率的第4阶段之后,以避免自注意力二次计算复杂度的过多开销。通过这种方式,可以以较低的计算成本将全局表示学习能力整合到YOLO中,从而很好地增强了模型的能力并提高了性能。

4 实验

4.1 实现细节

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

4.2 与最先进技术的比较

如表1所示,YOLOv10在各种模型尺寸上均实现了最先进的性能和端到端延迟。我们首先将YOLOv10与基线模型YOLOv8进行比较。在N/S/M/L/X五个变体上,YOLOv10的AP分别提高了1.2%/1.4%/0.5%/0.3%/0.5%,参数减少了28%/36%/41%/44%/57%,计算量减少了23%/24%/25%/27%/38%,延迟降低了70%/65%/50%/41%/37%。与其他YOLO系列模型相比,YOLOv10在精度和计算成本之间也展现出了优越的权衡。具体来说,对于轻量级和小型模型,YOLOv10-N/S在参数减少51%/61%和计算量减少41%/52%的情况下,分别比YOLOv6-3.0-N/S高出1.5 AP和2.0 AP。对于中型模型,与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与使用原始一对多训练方法的其他YOLO进行了比较。在这种情况下,我们遵循[56, 20, 54],考虑了模型的性能和前向传播过程的延迟(Latencyf)。如表1所示,YOLOv10在不同模型尺寸上也表现出了最先进的性能和效率,这表明了我们架构设计的有效性。

4.3 模型分析

消融研究。我们在表2中基于YOLOv10-S和YOLOv10-M展示了消融结果。可以观察到,我们采用一致双重分配的无NMS训练显著降低了YOLOv10-S的端到端延迟4.63毫秒,同时保持了44.3% AP的竞争性性能。此外,我们的效率驱动模型设计导致YOLOv10-M的参数减少了1180万,浮点运算次数(FLOPs)减少了208亿次,延迟显著降低了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所示,每个设计组件(包括轻量级分类头、空间-通道解耦下采样和基于秩的指导块设计)都有助于减少参数数量、浮点运算次数和延迟。重要的是,这些改进是在保持竞争性能的同时实现的。
在这里插入图片描述

  • 轻量级分类头。我们分析了预测的类别和定位误差对性能的影响,基于表5中YOLOv10-S的#1和#2,类似于[6]。具体来说,我们通过一对一分配将预测与实例进行匹配。然后,我们将预测的类别分数替换为实例标签,从而在没有分类误差的情况下获得APval w/o c。类似地,我们用实例的位置替换预测的位置,从而在没有回归误差的情况下获得APval w/o r。如表6所示,APval w/o r远高于APval w/o ,表明消除回归误差可以实现更大的改进。因此,性能瓶颈更多地在于回归任务。因此,采用轻量级分类头可以在不损害性能的情况下实现更高的效率。

  • 空间-通道解耦下采样。我们为了效率而解耦了下采样操作,其中首先通过点卷积(PW)增加通道维度,然后通过深度卷积(DW)降低分辨率以最大限度地保留信息。我们将其与通过DW进行空间降维后通过PW进行通道调制的基线方式进行了比较,基于表5中YOLOv10-S的#3。如表7所示,我们的下采样策略通过在下采样过程中减少信息损失而实现了0.7% AP的改进。

  • 紧凑倒置块(CIB)。我们引入了CIB作为紧凑的基本构建块。我们基于表5中YOLOv10-S的#4验证了其有效性。具体来说,我们引入了倒置残差块(IRB)作为基线,其实现了次优的43.7% AP,如表8所示。然后,我们在其后附加了一个3×3深度卷积(DW),表示为“IRB-DW”,这带来了0.5% AP的改进。与“IRB-DW”相比,我们的CIB通过以极小的开销在其前附加另一个DW进一步实现了0.3% AP的改进,表明其优越性。

  • 基于秩的指导块设计。我们引入了基于秩的指导块设计,以自适应地整合紧凑块设计来提高模型效率。我们基于表5中YOLOv10-S的#3验证了其优势。基于内在秩按升序排序的阶段为Stage 8-4-7-3-5-1-6-2,如图3(a)所示。如表9所示,当逐渐将每个阶段中的瓶颈块替换为高效的CIB时,我们观察到从Stage 7开始性能开始下降。在内在秩较低且冗余性较高的Stage 8和4中,我们可以采用高效的块设计而不会损害性能。这些结果表明,基于秩的指导块设计可以作为提高模型效率的有效策略。

  • 精度驱动模型设计分析。我们展示了基于YOLOv10-S/M逐步集成精度驱动设计元素的结果。我们的基线是在集成了效率驱动设计之后的YOLOv10-S/M模型,即表2中的#3/#7。如表10所示,采用大核卷积和PSA模块在最小延迟增加(分别为0.03毫秒和0.15毫秒)的情况下,为YOLOv10-S带来了显著的性能提升(分别为0.4% AP和1.4% AP)。请注意,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.05毫秒的情况下带来了0.3% AP的提升。性能提升可能归因于通过减轻注意力头中的冗余性来缓解自注意力中的优化问题[62, 9]。此外,我们研究了不同NPSA的影响。如表13所示,将NPSA增加到2带来了0.2% AP的提升,但延迟增加了0.1毫秒。因此,我们默认将NPSA设置为1,以增强模型能力同时保持高效率。

5 结论

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

相关文章:

YoloV10 论文翻译(Real-Time End-to-End Object Detection)

​摘要 近年来,YOLO因其在计算成本与检测性能之间实现了有效平衡,已成为实时目标检测领域的主流范式。研究人员对YOLO的架构设计、优化目标、数据增强策略等方面进行了探索,并取得了显著进展。然而,YOLO对非极大值抑制&#xff0…...

第R1周:RNN-心脏病预测

本文为🔗365天深度学习训练营 中的学习记录博客 原作者:K同学啊 要求: 1.本地读取并加载数据。 2.了解循环神经网络(RNN)的构建过程 3.测试集accuracy到达87% 拔高: 1.测试集accuracy到达89% 我的环境&a…...

Golang | Leetcode Golang题解之第321题拼接最大数

题目&#xff1a; 题解&#xff1a; func maxSubsequence(a []int, k int) (s []int) {for i, v : range a {for len(s) > 0 && len(s)len(a)-1-i > k && v > s[len(s)-1] {s s[:len(s)-1]}if len(s) < k {s append(s, v)}}return }func lexico…...

远程连接本地虚拟机失败问题汇总

前言 因为我的 Ubuntu 虚拟机是新装的&#xff0c;并且应该装的是比较纯净的版本&#xff08;纯净是指很多工具都尚未安装&#xff09;&#xff0c;然后在使用远程连接工具 XShell 连接时出现了很多问题&#xff0c;这些都是我之前没遇到过的&#xff08;因为之前主要使用云服…...

WebRTC 初探

前言 项目中有局域网投屏与文件传输的需求&#xff0c;所以研究了一下 webRTC&#xff0c;这里记录一下学习过程。 WebRTC 基本流程以及概念 下面以 1 对 1 音视频实时通话案例介绍 WebRTC 的基本流程以及概念 WebRTC 中的角色 WebRTC 终端,负责音视频采集、编解码、NAT 穿…...

Python:read,readline和readlines的区别

在Python中&#xff0c;read(), readline(), 和 readlines() 是文件操作中常用的三个方法&#xff0c;它们都用于从文件中读取数据&#xff0c;但各自的使用方式和适用场景有所不同。 read() 方法&#xff1a; read(size-1) 方法用于从文件中读取指定数量的字符。如果指定了si…...

重生之我学编程

编程小白如何成为大神&#xff1f;大学新生的最佳入门攻略 编程已成为当代大学生的必备技能&#xff0c;但面对众多编程语言和学习资源&#xff0c;新生们常常感到迷茫。如何选择适合自己的编程语言&#xff1f;如何制定有效的学习计划&#xff1f;如何避免常见的学习陷阱&…...

如何将PostgreSQL的数据实时迁移到SelectDB?

PostgreSQL 作为一个开源且功能强大的关系型数据库管理系统&#xff0c;在 OLTP 系统中得到了广泛应用。很多企业利用其卓越的性能和灵活的架构&#xff0c;应对高并发事务、快速响应等需求。 然而对于 OLAP 场景&#xff0c;PostgreSQL 可能并不是最佳选择。 为了实现庞大规…...

关于c语言的const 指针

const * type A 指向的数据是常量 如上所示&#xff0c;运行结果如下&#xff0c;通过解引用的方式&#xff0c;改变了data的值 const type * A 位置是常量&#xff0c;不能修改 运行结果如下 type const * A 指针是个常量&#xff0c;指向的值可以改变 如上所示&#xff0c…...

万能门店小程序开发平台功能源码系统 带完整的安装代码包以及安装搭建教程

互联网技术的迅猛发展和用户对于便捷性需求的不断提高&#xff0c;小程序以其轻量、快捷、无需安装的特点&#xff0c;成为了众多商家和开发者关注的焦点。为满足广大商家对于门店线上化、智能化管理的需求&#xff0c;小编给大家分享一款“万能门店小程序开发平台功能源码系统…...

C#初级——字典Dictionary

字典 字典是C#中的一种集合&#xff0c;它存储键值对&#xff0c;并且每个键与一个值相关联。 创建字典 Dictionary<键的类型, 值的类型> 字典名字 new Dictionary<键的类型, 值的类型>(); Dictionary<int, string> dicStudent new Dictionary<int, str…...

git版本控制的底层实现

目录 前言 核心概念串讲 底层存储形式探测 本地仓库的详细解析 提交与分支的深入解析 几个问题的深入探讨 前言 Git的重要性 Git是一个开源的版本控制工具&#xff0c;广泛用于编程开发领域。它极大地提高了研发团队的开发协作效率。对于开发者来说&#xff0c;Git是一个…...

深入解析数据处理的技术与实践

欢迎来到我的博客,很高兴能够在这里和您见面!欢迎订阅相关专栏: 工💗重💗hao💗:野老杂谈 ⭐️ 全网最全IT互联网公司面试宝典:收集整理全网各大IT互联网公司技术、项目、HR面试真题. ⭐️ AIGC时代的创新与未来:详细讲解AIGC的概念、核心技术、应用领域等内容。 ⭐…...

python-调用c#代码

环境&#xff1a; win10&#xff0c;net framework 4&#xff0c;python3.9 镜像&#xff1a; C#-使用IronPython调用python代码_ironpython wpf-CSDN博客 https://blog.csdn.net/pxy7896/article/details/119929434 目录 hello word不接收参数接收参数 其他例子 hello word 不…...

构建铁路安全防线:EasyCVR视频+AI智能分析赋能铁路上道作业高效监管

一、方案背景 随着我国铁路特别是高速铁路的快速发展&#xff0c;铁路运营里程不断增加&#xff0c;铁路沿线的安全环境对保障铁路运输的安全畅通及人民群众的生命财产安全具有至关重要的作用。铁路沿线安全环境复杂多变&#xff0c;涉及多种风险因素&#xff0c;如人员入侵、…...

openai command not found (mac)

题意&#xff1a;mac 系统上无法识别 openai 的命令 问题背景&#xff1a; Im trying to follow the fine tuning guide for Openai here. 我正在尝试遵循 OpenAI 的微调指南 I ran: 我运行以下命令 pip install --upgrade openaiWhich install without any errors.…...

鸿蒙(API 12 Beta2版)NDK开发【LLDB高性能调试器】调试和性能分析

概述 LLDB&#xff08;Low Level Debugger&#xff09;是新一代高性能调试器。 当前HarmonyOS中的LLDB工具是在[llvm15.0.4]基础上适配演进出来的工具&#xff0c;是HUAWEI DevEco Studio工具中默认的调试器&#xff0c;支持调试C和C应用。 工具获取 可通过HUAWEI DevEco S…...

HAL库源码移植与使用之DMA

内存到内存不支持传输计数器自动重装 结构&#xff1a; 与DMA具有连线的外设都可以完成搬运 DMA触发源 DMA优先级分配 由仲裁器来决定 寄存器作用&#xff1a; DMA.C #include "./BSP/DMA/dma.h" #include "./SYSTEM/delay/delay.h"DMA_HandleTypeDef…...

Scrapy爬虫框架介绍、创建Scrapy项目

Scrapy官网&#xff1a;https://scrapy.org/ 什么是Scrapy Scrapy 是一个基于 Python 的快速的高级网页抓取和网页爬取框架&#xff0c;用于抓取网站并从其页面中提取结构化数据。它可用于多种用途&#xff0c;从数据挖掘到监控和自动化测试。 Scrapy核心组件 1. Scrapy Engin…...

如何监测某个进程是否退出(C++)?

使用WaitForSingleObject函数&#xff0c;可以判断进程是否退出。 WaitForSingleObject函数的作用是&#xff1a;等待直到指定的对象处于信号状态&#xff08;通知状态&#xff09;或到达指定的等待时间&#xff08;超时时间&#xff09;。 函数声明如下&#xff1a; 1 DWOR…...

mongodb源码分析session执行handleRequest命令find过程

mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程&#xff0c;并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令&#xff0c;把数据流转换成Message&#xff0c;状态转变流程是&#xff1a;State::Created 》 St…...

2.Vue编写一个app

1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...

Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析

Java求职者面试指南&#xff1a;Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问&#xff08;基础概念问题&#xff09; 1. 请解释Spring框架的核心容器是什么&#xff1f;它在Spring中起到什么作用&#xff1f; Spring框架的核心容器是IoC容器&#…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP

编辑-虚拟网络编辑器-更改设置 选择桥接模式&#xff0c;然后找到相应的网卡&#xff08;可以查看自己本机的网络连接&#xff09; windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置&#xff0c;选择刚才配置的桥接模式 静态ip设置&#xff1a; 我用的ubuntu24桌…...

JavaScript基础-API 和 Web API

在学习JavaScript的过程中&#xff0c;理解API&#xff08;应用程序接口&#xff09;和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能&#xff0c;使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement 1. LAB环境2. L2公告策略2.1 部署Death Star2.2 访问服务2.3 部署L2公告策略2.4 服务宣告 3. 可视化 ARP 流量3.1 部署新服务3.2 准备可视化3.3 再次请求 4. 自动IPAM4.1 IPAM Pool4.2 …...

Spring Security 认证流程——补充

一、认证流程概述 Spring Security 的认证流程基于 过滤器链&#xff08;Filter Chain&#xff09;&#xff0c;核心组件包括 UsernamePasswordAuthenticationFilter、AuthenticationManager、UserDetailsService 等。整个流程可分为以下步骤&#xff1a; 用户提交登录请求拦…...

9-Oracle 23 ai Vector Search 特性 知识准备

很多小伙伴是不是参加了 免费认证课程&#xff08;限时至2025/5/15&#xff09; Oracle AI Vector Search 1Z0-184-25考试&#xff0c;都顺利拿到certified了没。 各行各业的AI 大模型的到来&#xff0c;传统的数据库中的SQL还能不能打&#xff0c;结构化和非结构的话数据如何和…...