【轻量化】YOLOv10: Real-Time End-to-End Object Detection

论文题目:YOLOv10: Real-Time End-to-End Object Detection
研究单位:清华大学
论文链接:http://arxiv.org/abs/2405.14458
代码链接:https://github.com/THU-MIG/yolov10
推荐测试博客:YOLOv10最全使用教程(含ONNX和TensorRT推理)

在这里插入图片描述

一、摘要

  研究人员已经探索了YOLOs的架构设计、优化目标、数据增强策略等方面,取得了显著进展。然而,依赖非极大值抑制(NMS)进行后处理阻碍了YOLOs的端到端部署,并且对推理延迟产生不利影响。此外,YOLOs中各个组件的设计缺乏全面和彻底的检查,导致明显的计算冗余并限制了模型的能力。这使得效率不佳,同时具有相当大的性能改进潜力。在这项工作中,作者旨在从后处理和模型架构两方面进一步推进YOLOs的性能-效率边界。为此,首先提出了NMS-free训练的一致双重分配,为YOLOs带来了竞争性能和低推理延迟。此外,引入了全面的效率-准确性驱动的模型设计策略用于YOLOs。从效率和准确性的角度全面优化了YOLOs的各个组件,大大减少了计算开销并增强了模型的能力。提出一代新的实时端到端目标检测YOLO系列,名为YOLOv10。实验证明,YOLOv10在各种模型规模上实现了最先进的性能和效率。例如,我们的YOLOv10-S在COCO上的类似AP下比RT-DETR-R18快1.8倍,同时拥有2.8倍更少的参数和FLOPs。与YOLOv9-C相比,YOLOv10-B的延迟减少了46%,参数减少了25%而性能相同。

文章目录

    • 一、摘要
    • 二、关键问题
    • 三、创新点
    • 四、原理
      • Consistent Dual Assignments for NMS-free Training
      • Holistic Efficiency-Accuracy Driven Model Design
        • YOLOs的模型架构对效率-准确性权衡设计
    • 五、实验
      • Implementation Details
      • Comparison with state-of-the-arts
      • Model Analyses
    • 六、总结

二、关键问题

  • YOLOs通常在训练过程中采用一对多的标签分配策略,即一个地面真实对象对应多个正样本。尽管这种方法产生了优越的性能,但在推断过程中需要NMS来选择最佳的正预测。这减慢了推断速度,并使性能对NMS的超参数敏感,从而阻止了YOLOs实现最佳的端到端部署。

  • YOLOs中各个组件的综合检查仍然缺乏从效率和准确性两个角度的全面考虑。因此,YOLOs中仍存在相当大的计算冗余,导致参数利用效率低下和效率次优。此外,由此产生的受限模型能力也导致性能较差,为准确性改进留下了充足的空间。

三、创新点

  • 提出一种一致的双重分配策略来解决后处理中冗余预测的问题,该策略适用于无NMS的YOLOs,具有双重标签分配和一致匹配度量。这使得模型在训练过程中能够享受丰富和和谐的监督,同时在推断过程中消除了对NMS的需求,从而实现高效的竞争性能。

  • 提出了全面的效率-准确性驱动的模型设计策略,通过对YOLOs中各个组件进行全面检查。为了提高效率,提出了轻量级分类头部空间-通道解耦下采样排名引导的块设计,以减少显性计算冗余并实现更高效的架构。

  • 探索了大核卷积并提出了有效的部分自注意力模块,以增强模型的能力,在低成本下发挥性能改进的潜力。

在这里插入图片描述

四、原理

Consistent Dual Assignments for NMS-free Training

  在训练过程中,YOLOs [20, 59, 27, 64]通常利用TAL [14]为每个实例分配多个正样本。采用一对多分配方式产生了丰富的监督信号,有助于优化并实现卓越性能。然而,这需要YOLOs依赖NMS后处理,导致部署时推理效率不佳。

  提出了一种无NMS的训练策略,通过双重标签分配和一致的匹配度量,实现了高效率和竞争性性能。

双重标签分配。与一对多分配不同,一对一匹配将每个真实标签分配给一个预测,避免了NMS后处理。然而,这导致了弱监督,导致次优的准确性和收敛速度[75]。幸运的是,这种不足可以通过一对多分配来弥补[5]。为了实现这一点,作者为YOLOs引入了双重标签分配,结合了两种策略的优点。具体来说,如2(a)所示,作者为YOLOs引入了另一个一对一头Head。它保留了相同的结构,并采用与原始一对多分支相同的优化目标,但利用一对一匹配来获取标签分配。在训练过程中,两个头与模型一起进行联合优化,使得Backbone和Neck部能够享受一对多分配提供的丰富监督。在推理过程中,舍弃一对多头,利用一对一头进行预测。这使得YOLOs能够端到端部署,而不会产生任何额外的推理成本。此外,在一对一匹配中,采用最高概率对应的选择,其在较少额外训练时间的情况下实现了与匈牙利匹配相同的性能。

一致匹配度量。在分配过程中,一对一和一对多方法都利用度量标准来定量评估预测与实例之间的一致性水平。为了实现对两个分支都进行预测感知匹配,作者采用了一种统一的匹配度量,即:
m ( α , β ) = s ⋅ p α ⋅ I O U ( b ˉ , b ) β , ( 1 ) m(\alpha, \beta) = s \cdot p^{\alpha} \cdot IOU(\bar{b}, b)^{\beta}, \ (1) m(α,β)=spαIOU(bˉ,b)β, (1)
其中 p p p是分类得分, b ˉ \bar{b} bˉ b b b分别表示预测和实例的边界框。s代表空间先验,指示预测的锚点是否在实例内[20, 59, 27, 64]。 α \alpha α和β是平衡语义预测任务和位置回归任务影响的两个重要超参数。将一对多和一对一指标表示为 m o 2 m = m ( α o 2 m , β o 2 o ) m_{o2m}=m(\alpha_{o2m},\beta_{o2o}) mo2m=m(αo2m,βo2o) m o 2 o = m ( α o 2 o , β o 2 o ) m_{o2o}=m(\alpha_{o2o},\beta_{o2o}) mo2o=m(αo2o,βo2o),这些指标影响两个头部的标签分配和监督信息。

  在双重标签分配中,一对多分支提供比一对一分支更丰富的监督信号。直觉上,如果可以协调一对一头部的监督与一对多头部的监督,可以将一对一头部优化朝着一对多头部的优化方向。因此,一对一头部在推理期间可以提供改进的样本质量,从而实现更好的性能。为此,首先分析两个头部之间的监督差距。由于训练过程中的随机性,从一开始就使用具有相同值和产生相同预测的两个头部进行检查,即一对一头部和一对多头部为每个预测-实例对生成相同的 p p p和IoU。注意到两个分支的回归目标不冲突,因为匹配的预测共享相同的目标,而不匹配的预测则被忽略。因此,监督差距在不同的分类目标中。给定一个实例,将其与预测的最大IoU表示为 u ∗ u^{∗} u,将最大的一对多和一对一匹配分数分别表示为 m o 2 m ∗ m^{∗}_{o2m} mo2m m o 2 o ∗ m^{∗}_{o2o} mo2o。假设一对多分支产生正样本 Ω Ω ,一对一分支选择第 i i i个预测,并使用度量 m o 2 o , i = m o 2 o ∗ m_{o2o,i}=m^{∗}_{o2o} mo2o,i=mo2o,可以推导出分类目标 t o 2 m , j = u ∗ ⋅ m o 2 m , j m o 2 m ∗ ≤ u ∗ t_{o2m,j}=u^{∗} \cdot \frac{m_{o2m,j}}{m^{∗}_{o2m}} ≤ u^{∗} to2m,j=umo2mmo2m,ju,对于 j ∈ Ω j \in Ω 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]来推导,即
A = t o 2 o , i − I ( i ∈ Ω ) t o 2 m , i + ∑ k ∈ Ω  i t o 2 m , k , ( 2 ) A = t_{o2o,i} − I(i \in Ω)t_{o2m,i} + \sum_{k \in Ω \ {i}} t_{o2m,k}, \ (2) A=to2o,iI(i)to2m,i+k ito2m,k, (2)

可以观察到随着 t o 2 m , i t_{o2m,i} to2m,i的增加,差距减小,即 i i i Ω Ω 中的排名更高。当 t o 2 m , i = u ∗ t_{o2m,i}=u^{∗} to2m,i=u时,即 i i i Ω Ω 中最佳的正样本时,差距达到最小,如3(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 o 2 m r m_{o2o}=m^{r}_{o2m} mo2o=mo2mr。因此,对于一对多头部来说,最佳的正样本也是一对一头部的最佳样本。因此,两个头部可以一致和和谐地进行优化。为简单取 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名的一对一匹配对的数量。如3(b)所示,在一致的匹配度量下,对齐得到了改善。要更全面地理解数学证明,请参阅附录。

Holistic Efficiency-Accuracy Driven Model Design

YOLOs的模型架构对效率-准确性权衡设计

以效率为驱动的模型设计。YOLO中的组件包括stem、下采样层、具有基本构建块的Stage和头部。stem主干产生少量计算成本,因此对其他三个部分进行以效率为驱动的模型设计

  • (1) 轻量级分类头(Lightweight classification head)。在YOLOs中,分类和回归头通常共享相同的架构。然而,它们在计算开销上存在显著差异。例如,在YOLOv8-S中,分类头的FLOPs和参数数量(5.95G/1.51M)分别是回归头的2.5×和2.4×(2.34G/0.64M)。然而,在分析分类误差和回归误差的影响后(见Tab. 6),发现回归头对YOLOs的性能更为重要。因此,可以减少分类头的开销,而不必担心对性能造成严重影响。因此,简单地采用了一个轻量级架构的分类头,其中包括两个 3 × 3 3 \times 3 3×3的深度可分离卷积DW,后跟一个 1 × 1 1 \times 1 1×1卷积。
    在这里插入图片描述

  • (2) 空间-通道解耦的下采样(Spatial-channel decoupled downsampling)。YOLOs通常利用带有步幅2的常规 3 × 3 3 \times 3 3×3标准卷积,同时实现空间下采样(从 H × W H \times W H×W H 2 × W 2 \frac{H}{2} \times \frac{W}{2} 2H×2W)和通道转换(从 C C C 2 C 2C 2C)。这引入了不可忽略的计算成本 O ( 9 2 H W C 2 ) O(\frac{9}{2} HWC^{2}) O(29HWC2)和参数数量 O ( 18 C 2 ) O(18C^{2}) O(18C2)。相反,提出解耦空间减少和通道增加操作,实现更高效的下采样。
      具体而言,首先利用逐点卷积调制通道维度,然后利用深度卷积执行空间下采样。这将计算成本降低到 O ( 2 H W C 2 + 9 2 H W C ) O(2HWC^{2} + \frac{9}{2} HWC) O(2HWC2+29HWC),参数数量降低到 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替换领先阶段的基本块是否会导致性能下降。如果与给定模型相比没有性能下降,将继续用CIB替换下一个阶段,否则停止该过程。因此,可以在各个阶段和模型规模之间实现自适应的紧凑块设计,实现更高的效率而不损害性能。由于页面限制,将算法的详细信息放在附录中。

  • (4) 精度驱动的模型设计。一步探索了大卷积核和自注意力机制,以实现精度驱动设计,旨在在最小成本下提升性能。
    大卷积核
      采用大卷积核深度卷积是扩大感受野和增强模型能力的有效方式[9, 38, 37]。然而,在所有阶段简单地利用它们可能会引入用于检测小目标的浅层特征的污染,同时在高分辨率阶段引入显著的I/O开销和延迟[7]。因此,作者建议在深层次的CIB中利用大卷积核深度卷积。具体来说,将CIB中第二个 3 × 3 3 \times 3 3×3深度卷积的卷积核大小增加到 7 × 7 7 \times 7 7×7,遵循[37]。此外,采用结构重参数化技术[10, 9, 53],引入另一个 3 × 3 3 \times 3 3×3深度卷积分支以减轻优化问题而无需推断开销。此外,随着模型尺寸的增加,其感受野自然扩大,使用大卷积核的好处逐渐减弱。因此,仅在小型模型规模下采用大卷积核
    部分自注意力(PSA)
      自注意力 [52]由于其出色的全局建模能力而被广泛应用于各种视觉任务 [36, 13, 70]。然而,它具有较高的计算复杂度和内存占用。为了解决这个问题,鉴于普遍存在的注意力头冗余 [63],作者提出了一种高效的部分自注意力(PSA)模块设计,如图3©所示。具体来说,在 1 × 1 1 \times 1 1×1卷积之后,将特征均分成两部分。只将其中一部分馈送到由多头自注意力模块(MHSA)和前馈网络(FFN)组成的NPSA个块中。然后,两部分通过 1 × 1 1 \times 1 1×1卷积进行连接和融合。此外,遵循 [21],将MHSA中查询Q和键K的维度分配为值V的一半,并将LayerNorm [1]替换为BatchNorm [26]以实现快速推断。此外,PSA仅在具有最低分辨率的第4阶段之后放置,避免自注意力的二次计算复杂度带来的过度开销。通过这种方式,全局表示学习能力可以融入到低计算成本的YOLO中,从而有效增强模型能力并提高性能。

五、实验

Implementation Details

  选择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]。

Comparison with state-of-the-arts

在这里插入图片描述

  如表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,参数减少了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与其他YOLO进行比较。在这种情况下,考虑模型前向过程的性能和延迟( L a t e n c y f Latency^{f} Latencyf),参考文献 [56, 20, 54]。如表1所示,YOLOv10在不同模型规模下也展示了最先进的性能和效率,表明了我们的架构设计的有效性。

Model Analyses

  • 消融实验
    在这里插入图片描述

  在表2中基于YOLOv10-S和YOLOv10-M提出了消融结果。可以观察到,采用无NMS的训练方法,通过一致的双重分配显著减少了YOLOv10-S的端到端延迟4.63毫秒,同时保持了44.3%的AP竞争性能。此外,效率驱动模型设计导致了YOLOv10-M参数减少了11.8百万个,GFlOPs减少了20.8,YOLOv10-M的延迟显著减少了0.65毫秒,充分展示了其有效性。此外,精度驱动模型设计分别为YOLOv10-S和YOLOv10-M实现了1.8 AP和0.7 AP的显著改进,仅有0.18毫秒和0.17毫秒的延迟开销,充分展示了其优越性。

  • Analyses for NMS-free training.
    双重标签分配。作者提出了适用于无NMS的YOLO的双重标签分配,这可以
    训练过程中为一对多(o2m)分支提供丰富的监督,并在推断过程中为一对一(o2o)分支提供高效性。基于YOLOv8-S验证了其益处,即表2中的排名第一。具体来说,文中分别介绍了仅使用o2m分支和仅使用o2o分支进行训练的基线。如表3所示,双重标签分配实现了最佳的AP-延迟权衡。
    一致匹配度量。引入一致匹配度量,使一对一头更加协调一对多头。基于YOLOv8-S,在不同的 α o 2 o \alpha_{o2o} αo2o β o 2 o \beta_{o2o} βo2o下验证了其益处,即表2中的#1。如表4所示,提出的一致匹配度量,即 α 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,可以实现最佳性能,其中 α o 2 m = 0.5 \alpha_{o2m} = 0.5 αo2m=0.5 β o 2 m = 6.0 \beta_{o2m} = 6.0 βo2m=6.0在一对多头中 [20]。这种改进可以归因于监督间隙的减少(公式 (2)),提供了两个分支之间更好的监督对齐。此外,提出的一致匹配度量消除了对详尽的超参数调整的需求,在实际场景中具有吸引力。

  • 效率驱动模型设计分析
      逐步将基于 YOLOv10-S/M 的效率驱动设计元素纳入其中。基准模型是YOLOv10-S/M 模型,没有效率-准确性驱动的模型设计,即在表2中的#2/#6。如表5所示,每个设计组件,包括轻量级分类头、空间-通道解耦下采样和排名引导的块设计,都有助于减少参数数量、FLOPs 和延迟。重要的是,这些改进是在保持竞争性能的同时实现的。
    轻量级分类头。分析了预测中类别和定位错误对性能的影响,基于表5中YOLOv10-S的#1和#2的结果,如[6]所示。具体来说,通过一对一的分配将预测与实例进行匹配。然后,用实例标签替换预测的类别分数,得到没有分类错误的 A P w / o c v a l AP^{val}_{w/o \ c} APw/o cval。类似地,用实例的位置替换预测的位置,得到没有回归错误的 A P w / o r v a l AP^{val}_{w/o \ r} APw/o rval。如表6所示, A P w / o r v a l AP^{val}_{w/o \ r} APw/o rval远高于 A P w / o c v a l AP^{val}_{w/o \ c} APw/o cval,表明消除回归错误可以实现更大的改进。性能瓶颈因此更多地存在于回归任务中。因此,采用轻量级分类头可以在不影响性能的情况下实现更高的效率。
    在这里插入图片描述

空间通道解耦下采样。为了提高效率而解耦下采样操作,首先通过点卷积(PW)增加通道维度,然后通过深度卷积(DW)降低分辨率,以实现最大信息保留。将其与基线方法进行比较,基线方法是通过DW进行空间降维,然后通过PW进行通道调制,基于表5中YOLOv10-S的#3。如表7所示,下采样策略在下采样过程中减少信息丢失,实现了0.7%的AP改进。
紧凑倒置块(CIB)。将CIB引入为紧凑的基本构建块。基于表5中YOLOv10-S的#4验证了其有效性。具体来说,引入了倒置残差块 (IRB)作为基准,其在表8中显示为次优的43.7% AP [46]。然后在其后附加了一个 3 × 3 3 \times 3 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替换每个阶段中的瓶颈块时,观察到从第7阶段开始性能下降。在具有较低内在排名和更多冗余性的第8和4阶段中,因此可以采用高效的块设计而不会影响性能。这些结果表明,基于排名的块设计可以作为提高模型效率的有效策略

  • 准确性驱动模型设计分析
      展示了基于 YOLOv10-S/M 逐步整合准确性驱动设计元素的结果。基准是在融合效率驱动设计后的YOLOv10-S/M 模型,即在表2中的#3/#7。如表10所示,采用大卷积核和PSA 模块导致YOLOv10-S 的性能显著提升,分别为 0.4%AP 和1.4% AP,而延迟仅增加了0.03ms 和0.15ms。请注意,大卷积核未用于YOLOv10-M(见表12)
    大卷积核。首先基于表10中YOLOv10-S的#2号研究了不同卷积核尺寸的影响。如表11所示,性能随着卷积核尺寸的增加而提高,并在 7 × 7 7 \times 7 7×7的卷积核尺寸附近停滞,表明大感知范围的好处。此外,在训练过程中去除重新参数化分支可实现0.1%的AP降级,显示了其优化效果。此外,基于YOLOv10-N/S/M检查了大卷积核在模型规模上的益处。如表12所示,对于大模型,即YOLOv10-M,它并未带来改进,这是由于其固有的广泛感受野。因此,仅在小模型,即YOLOv10-N/S中采用大卷积核
    部分自注意力(PSA)。引入PSA以在最小成本下融入全局建模能力,以增强性能。首先基于表10中YOLOv10-S的#3验证其有效性。具体来说,引入Transformer块,即MHSA后跟FFN,作为基线,标记为“Trans.”。如表13所示,与其相比,PSA带来了0.3%的AP改进,同时减少了0.05ms的延迟。性能提升可能归因于在自注意力中缓解优化问题[62, 9],通过减少注意力头中的冗余。此外,研究了不同NPSA的影响。如表13所示,将NPSA增加到2可以获得0.2%的AP改进,但会增加0.1ms的延迟。因此默认将NPSA设置为1,以增强模型能力同时保持高效率。

六、总结

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

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

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

相关文章

c++与c

命名空间的设置: 避免冲突 命名空间: 如果将变量全部定义在全局可能不安全,都可以进行修改。 如果将变量定义在局部,当出了大括号就不能使用。 所以说在定义一个命名空间的时候 定义函数,变量,命名空间…

Linux——简单指令汇总

Linux,一般指GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯本纳第克特托瓦兹(Linus Benedict Torvalds)于1991年10月5日首次发布,它主要受到Minix和Unix思想的启发,是一个…

js 给数组对象添加多个属性

// 假设有一个数组对象 let items [{ id: 1, name: Item 1 },{ id: 2, name: Item 2 },{ id: 3, name: Item 3 } ];// 要添加的新属性 const newProps {newProp1: value1,newProp2: value2 };// 使用map方法添加新属性 let updatedItems items.map(item > ({ ...item, ..…

计算机毕业设计hadoop+spark+hive物流快递大数据分析平台 物流预测系统 物流信息爬虫 物流大数据 机器学习 深度学习 知识图谱 大数据

1.Python爬虫采集物流数据等存入mysql和.csv文件; 2.使用pandasnumpy或者MapReduce对上面的数据集进行数据清洗生成最终上传到hdfs; 3.使用hive数据仓库完成建库建表导入.csv数据集; 4.使用hive之hive_sql进行离线计算,使用spark之…

植物大战僵尸杂交版全平台 PC MAC 安卓手机下载安装详细图文教程

最近植物大战僵尸杂交版非常的火,好多小伙伴都想玩一玩,但作者只分享了 win 版,像手机还有MAC电脑都没有办法安装,身为 MAC 党当然不能放弃,经过一番折腾,也是成功在所有平台包括手机和MAC电脑都成功安装上…

JS加密解密/XSS的防御

之前有一篇文章提到过xss&#xff0c;今天说一下防御策略 分析一下这段代码&#xff0c;拆解一下代码&#xff0c;写一篇对于防御xss的心得 if (arr ! null) { var filterXSS function(e) {if (!e)return e;for (; e ! unescape(e); )e unescape(e);for (var r ["<…

前端框架前置知识之Node.js:fs模块、path模块、http模块、端口号介绍

什么是模块&#xff1f; 类似插件&#xff0c;封装了方法 / 属性 fs 模块- 读写文件 代码示例 // 1. 加载 fs 模块对象 const fs require(fs) // 2. 写入文件内容 fs.writeFile(./test.txt, hello, Node.js, (err) > {if (err) console.log(err) //若 err不为空&#xf…

AI图 - 卡哇伊Q版 (7)

在看一本如何画Q版人物的绘画书时&#xff0c;收集了一些图片想临摹&#xff0c;收集过程中发现同类图片越来越多&#xff0c;肯定都是AI生成的了&#xff0c;就去搜有没有同款现成的Lora可用&#xff0c;下载了几个效果都很差&#xff0c;就找回以前的经验&#xff0c;准备了一…

数据结构--关键路径

事件v1-表示整个工程开始&#xff08;源点&#xff1a;入度为0的顶点&#xff09; 事件v9-表示整个工程结束&#xff08;汇点&#xff1a;出度为0的顶点&#xff09; 关键路径&#xff1a;路径长度最长的路径 求解关键路径问题&#xff08;AOE网&#xff09; 定义四个描述量 …

事务详讲(本地及分布式)

本地事务在分布式的问题: 因为在分布式服务中,难免一个接口中会有很多调用远程服务的情况,这个就非常容易出现问题,以下是一个详细的例子: 例如,你为了保证事物的一致性等要求,所以,你方法上只写了Transactional,但你的业务中又需要调用其他微服务的方法(Feign),这时就容易出现…

神经网络基础

文章目录 一、神经网络的基本构成部分1.1 神经元1.2 单层神经网络1.3 多层神经网络1.4 非线性激活函数&#xff08;activation functions&#xff09;1.5 输出形式 二、神经网络的训练方式2.1 损失函数2.2 梯度下降法2.3 反向传播&#xff08;Backpropagation&#xff09; 三、…

二叉查找树

一、实验题目 &#xff08;1&#xff09;实验题目 二叉查找树 &#xff08;2&#xff09;问题描述 对于查找集合进行动态查找&#xff0c;为了使得元素的插入、删除和查找操作都能够很快地完成&#xff0c;可以采用二叉查找树作为查找结构。对于给定的查找集合&#xff0c;给出…

UFS协议—新手快速入门(二)【5-6】

目录 五、UFS协议栈 六、UFS技术演进与详解 1、UFS应用层 设备管理器 任务管理器 2、UFS传输层 3、UFS互联层 UFS协议—新手快速入门&#xff08;一&#xff09;【1-4】 五、UFS协议栈 UFS&#xff08;Universal Flash Storage&#xff09;协议是针对固态存储设备&…

【UE5教程】使用蓝图显示鼠标

首先&#xff0c;在您的项目中创建一个新的蓝图类&#xff0c;继承自PlayerController。在蓝图编辑器中&#xff0c;找到Event BeginPlay节点&#xff0c;并从它引出一条线。添加Set Show Mouse Cursor节点&#xff0c;勾选Visible&#xff0c;以确保鼠标在游戏开始时可见。 鼠…

SpringCloud Consul基础入门与使用实践总结

【1】Consul简介 官网地址&#xff1a;https://www.consul.io/intro/index.html 下载地址&#xff1a;https://www.consul.io/downloads.html 中文文档&#xff1a;https://www.springcloud.cc/spring-cloud-consul.html ① 基础概念 Consul 是一套开源的分布式服务发现和…

AI网络爬虫:对网页指定区域批量截图

对网页指定区域批量截图&#xff0c;可以在deepseek的代码助手中输入提示词&#xff1a; 你是一个Python编程专家&#xff0c;一步一步的思考&#xff0c;完成一个对网页指定区域截图的python脚本的任务&#xff0c;具体步骤如下&#xff1a; 设置User-Agent: Mozilla/5.0 (…

Visual C++2010学习版详细安装教程(超详细图文)

Visual C 介绍 Visual C&#xff08;简称VC&#xff09;是微软公司推出的一种集成开发环境&#xff08;IDE&#xff09;&#xff0c;主要用于开发C和C语言的应用程序。它提供了强大的编辑器、编译器、调试器、库和框架支持&#xff0c;以及丰富的工具和选项&#xff0c;使得开…

Android约束布局ConstraintLayout的使用

Android引入约束布局的目的是为了减少布局层级的嵌套&#xff0c;从而提升渲染性能。约束布局综合线性布局、相对布局、帧布局的部分功能&#xff0c;缺点也很明显&#xff0c;就是可能要多写几行代码。所以约束布局使用时&#xff0c;还得综合考虑代码量。提升性能也并不一定非…

CTFHUB-技能树-web-web前置技能-HTTP协议全

目录 1.请求方式 2.302跳转 3.Cookie 4.基础认证 5.响应包源码 1.请求方式 curl -v -X http://challenge-3022c877a8dcedeb.sandbox.ctfhub.com:10800/index.php 2.302跳转 参考链接&#xff1a;http://t.csdnimg.cn/aqdNG 301——永久性重定向。该状态码表示请求的资源已…

LangChain知识库构建与RAG设计

RAG:检索增强生成是什么? RAG的主要流程 Retrieval-Augmented Generation: 检索增强生成 能够根据问题的特点还有上下文, 生成更加个性化和精确的回答 为LLM提供来自外部知识源的额外信息的概念。这允许它们生成更准确和有上下文的答案&#xff0c;同时减少幻觉(1)检索&…