卷出新高度,直呼太强!时隔三月,YOLO再度进化升级:《YOLOv10—实时端到端目标检测》重磅来袭

news2024/11/18 7:38:18

真的是不止一次感叹,学习的速度都跟不上发论文出新品的速度。。。。。

继前文YOLOv9发布以来也就不到三个月的时间,YOLOv10就来了!

《太卷了,目标检测新成员——YOLOv9: Learning What You Want to LearnUsing Programmable Gradient Information他来了》

YOLOv10,官方论文在这里,如下所示:

官方同时也开源了对应的项目,地址在这里,如下所示:

目前已经有1.4k的star量,默默看到大佬们凌晨还在更新项目,respect!

本文主要是自己看到最新发布的YOLOv10,夜深人静时刻借助翻译器简读论文的记录稿,感兴趣的话可以阅读原始英文论文即可。

摘要

在过去的几年中,YOLOs由于其在计算量和检测性能之间的有效平衡而成为实时目标检测领域的主流范例。研究人员对YOLOs的体系结构设计、优化目标、数据扩充策略等进行了探索,取得了显著的进展。然而,对后处理的非最大抑制(NMS)的依赖阻碍了YOLOs的端到端部署,并对推断延迟产生不利影响。此外,YOLOs中各个组件的设计缺乏全面、透彻的检查,造成了明显的计算冗余,限制了模型的性能。它使效率处于次优状态,同时具有相当大的性能改进潜力。在本文中,我们从后处理和模型体系结构两个方面进一步提高了YOLOs的性能效率边界。为此,我们首先提出了一种一致的双任务的无NMS训练的YOLOs,这带来了竞争性能和低推理延迟的同时。此外,我们还介绍了整体效率-精度驱动的YOLOs模型设计策略。我们从效率和精度两个方面综合优化了YOLOs的各个组件,大大降低了计算开销,增强了性能。我们的成果是用于实时端到端对象检测的新一代YOLO系列,称为YOLOv10。大量的实验表明,YOLOv10在各种模型尺度上都达到了最先进的性能和效率。例如,在COCO上类似AP的情况下,我们的YOLOv10-S比RT-DETR-R18快1.8倍,同时拥有2.8倍更少的参数和触发器。与YOLOv9-C相比,在相同性能下,YOLOv10-B的延迟减少了46%,参数减少了25%。

介绍

实时目标检测一直是计算机视觉领域的研究热点,其目的是在低延迟下准确预测图像中目标的类别和位置。它被广泛应用于各种实际应用中,包括自主驾驶[3]、机器人导航[11]、目标跟踪[66]等。近年来,研究人员致力于设计基于CNN的目标检测器,以实现实时检测[18、22、43、44、45、51、12]。其中,YOLOs凭借其在性能和效率之间的巧妙平衡而越来越受欢迎[2、19、27、19、20、59、54、64、7、65、16、27]。YOLOs检测流水线由模型前处理和NMS后处理两部分组成。但是,这两种方法都存在不足,导致延迟边界的准确性不理想。
具体而言,YOLOs在训练过程中通常采用一对多标签分配策略,其中一个GroundTruth对象对应多个正样本。尽管该方法具有优越的性能,但在推理过程中,NMS必须选择最佳的正预测。这会降低推理速度,并使性能对NMS的超参数敏感,从而阻止YOLOs实现最佳端到端部署[71]。解决这个问题的一条途径是采用最近引入的端到端DETR体系结构[4、74、67、28、34、40、61]。例如,RT-DETR【71】提出了一种高效的混合编码器和不确定性最小查询选择,推动DETR进入实时应用领域。然而,部署DETR的固有复杂性阻碍了其在精度和速度之间实现最佳平衡的能力。另一条路线是探索基于CNN的检测器的端到端检测,它通常利用一对一分配策略来抑制冗余预测[5、49、60、73、16]。然而,它们通常会引入额外的推理开销或获得次优的性能。
此外,模型架构设计仍然是YOLOs面临的一个基本挑战,它对准确性和速度具有重要影响[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]。虽然这些努力取得了显著进展,但仍然缺乏从效率和准确性角度对YOLOs中的各种成分进行全面检查。因此,在YOLOs中仍然存在大量的计算冗余,导致参数利用率低和效率不高。此外,由此产生的受限模型能力也会导致性能下降,为精度改进留下了充足的空间。
在这项工作中,我们的目标是解决这些问题,并进一步提高精度速度边界的约洛斯。我们针对整个检测流程的后处理和模型架构。为此,我们首先针对后处理中的冗余预测问题,提出了一种基于双标签分配和一致匹配度量的无NMS YOLOs一致双分配策略。它使模型在训练过程中得到丰富而和谐的监督,同时消除了推理过程中对NMS的需求,从而获得高效的竞争效果。其次,通过对YOLOs中各个组件的全面检查,提出了整体效率-精度驱动的模型设计策略。为了提高效率,我们提出了轻量级分类头、空间通道解耦降采样和秩引导块设计,以减少计算冗余,实现更高效的体系结构。在精度方面,我们探索了大核卷积,并提出了有效的部分自我注意模块来增强模型性能,利用低成本下的性能改进潜力。
基于这些方法,我们成功地实现了一系列具有不同模型尺度的实时端到端检测器,即YOLOv10-N/S/M/B/L/X。在目标检测的标准基准(即COCO)上进行的大量实验表明,我们的YOLOv10在不同模型尺度下的计算精度权衡方面明显优于以前的最新模型。如图1所示,在相同性能下,我们的YOLOv10-S/X比RT-DETR18/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×。与YOLOv9-M/YOLO-MS相比,YOLOv10-M获得了相似的AP,参数分别减少了23%和31%。我们希望,我们的工作能够激励该领域的进一步研究和进步。

相关工作

实时目标探测器。实时目标检测的目的是对弱小目标进行分类和定位,这对于实际应用至关重要。在过去的几年里,大量的努力已经转向开发高效的探测器[18,51,43,32,72,69,30,29,39]。尤其是theYOLO系列[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和SIMCSPSPF,以及锚辅助训练和自蒸馏策略。YOLOv7[56]介绍了E-ELAN用于富梯度流路,并探索了几种可训练的免费袋方法。YOLOv8[20]提出了用于有效特征提取和融合的C2f构建块。Gold YOLO[54]提供了先进的GD机制,以增强多尺度特征融合能力。YOLOv9[59]建议GELAN改进体系结构,PGI增强训练过程。
端到端目标探测器。端到端目标检测已成为传统流程的一种范式转变,提供了简化的体系结构[48]。DETR[4]引入变压器结构,采用匈牙利损耗实现一对一匹配预测,省去了手工制作的元器件和后期处理。从那时起,各种DETR变体被提出以增强其性能和效率[40、61、50、28、34]。可变形DETR[74]利用多尺度可变形注意模块加快收敛速度。DINO[67]将对比去噪、混合查询选择和两次前瞻方案集成到DETR中。RT-DETR[71]进一步设计了高效的混合编码器,并提出了不确定性最小查询选择,以提高准确性和延迟。另一种实现端到端目标检测的线是基于CNN的检测器。可学习NMS[23]和关系网络[25]提供了另一个网络,用于删除检测器的重复预测。OneNet[49]和DeFCN[60]提出了一对一匹配策略,以实现完全卷积网络的端到端目标检测。FCOSpss【73】引入了一个正样本选择器来选择最佳样本进行预测。

方法论

Consistent Dual Assignments for NMS-free Training

在训练期间,YOLOs[20、59、27、64]通常利用TAL[14]为每个实例分配多个阳性样本。采用一对多分配可以产生丰富的监控信号,有利于优化并获得优异的性能。然而,YOLOs必须依赖NMS后处理,这导致部署的推理效率不理想。虽然之前的工作[49、60、73、5]探索了一对一匹配以抑制冗余预测,但它们通常会引入额外的推理开销或产生次优性能。在这项工作中,我们提出了一个无NMS的训练策略为YOLOs与双标签分配和一致的匹配度量,实现高效率和有竞争力的表现。双标签指定。与一对多分配不同,一对一匹配只为每个地面真值分配一个预测,避免了NMS后处理。然而,这会导致监管不力,导致精度和收敛速度不理想[75]。幸运的是,这种缺陷可以通过一对多分配来弥补。为了实现这一点,我们为YOLOs引入了双标签分配,以结合这两种策略的优点。具体地说,如图2(a)所示,我们为YOLOs合并了另一个一对一的头部。它保留了与原始一对多分支相同的结构并采用相同的优化目标,但利用一对一匹配来获得标签分配。在训练过程中,两个头与模型联合优化,使骨干和颈部享受一对多任务提供的丰富监督。在推理过程中,我们丢弃一对多的头,利用一对一的头进行预测。这使得YOLOs能够进行端到端部署,而不会产生任何额外的推断成本。此外,在一对一匹配中,我们采用了top one选择,以较少的额外训练时间实现了与匈牙利匹配相同的性能[4]。

Holistic Efficiency-Accuracy Driven Model Design

除了后处理之外,YOLOs的模型架构还对效率-精度权衡提出了巨大挑战[45,7,27]。虽然之前的工作探索了各种各样的设计策略,但仍然缺乏对YOLOs中各种组件的全面检查。因此,模型体系结构具有不可忽略的计算冗余和受限能力,这阻碍了其实现高效率和高性能的潜力。在这里,我们的目标是从效率和准确性的角度为YOLOs整体地执行模型设计。效率驱动的模型设计。YOLO中的组件包括杆、下采样层、具有基本构建块的阶段和头部。stem产生的计算成本很少,因此我们对其他三个部分执行效率驱动的模型设计。
(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) 空间通道解耦下采样。
(3) 秩引导块设计。YOLOs通常为所有阶段使用相同的基本构建块[27,59],例如,YOLOv8中的瓶颈块[20]。为了彻底检查YOLOs的同质设计,我们利用内在秩[31,15]来分析每个阶段的冗余2。具体地说,我们计算每个阶段最后一个基本块中最后一个卷积的数值秩,计算大于阈值的奇异值的数量。图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(c)所示。具体地说,在1×1卷积之后,我们将跨通道的特征均匀地划分为两部分。我们只将一部分反馈到由多头部自我注意模块(MHSA)和前馈网络(FFN)组成的NPSA模块中。然后将两部分串联起来,通过1×1卷积进行融合。此外,我们按照[21]将查询和键的维数指定为MHSA中值的一半,并将LayerForm[1]替换为BatchNorm[26],以实现快速推理。此外,PSA仅放置在具有最低分辨率的第4阶段之后,避免了由于自我注意的二次计算复杂性而产生的过多开销。通过这种方法,可以以较低的计算代价将全局表示学习能力融入到YOLOs中,从而很好地增强了模型的能力,提高了模型的性能。

实验

Implementation Details

我们选择YOLOv8[20]作为我们的基准模型,因为它具有值得称赞的延迟准确性平衡,并且在各种型号中都可用。我们采用一致的双重任务进行NMS自由训练,并在此基础上进行整体效率-精度驱动的模型设计,得到了我们的YOLOv10模型。YOLOv10具有与YOLOv8相同的变体,即N/S/M/L/X。此外,通过简单地增加YOLOv10-M的宽度比例因子,我们推导了一个新的变体YOLOv10-B。我们在相同的从头开始训练设置下,在COCO上验证了所提出的检测器[33]。此外,所有模型的延迟都使用TensorRT FP16在T4 GPU上进行测试,如下所示[71]。

Comparison with state-of-the-arts

如表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%。与其他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%的潜伏期降低,同时显著改善了1.4%的AP。此外,与RT-DETR相比,YOLOv10获得了显著的性能和延迟改善。值得注意的是,在相同性能下,YOLOv10-S/X的推理速度比RT-DETR-R18/R101分别快1.8倍和1.3倍。这些结果很好地证明了YOLOv10作为实时端到端检测器的优越性。我们还使用原始的一对多训练方法将YOLOv10与其他YOLOs进行了比较。在这种情况下,我们考虑模型转发进程(Latencyf)的性能和延迟,如下所示[56,20,54]。如表1所示,YOLOv10还展示了不同模型规模的最先进性能和效率,表明了我们建筑设计的有效性。

Model Analyses

消融研究。表2给出了基于YOLOv10-S和YOLOv10-M的消融结果。可以观察到,我们的NMS自由训练与一致的双重任务显著降低了YOLOv10-S的端到端延迟4.63ms,同时保持了44.3%AP的竞争性能。此外,我们的效率驱动模型设计减少了11.8 M参数和20.8 GFlOPs,对于YOLOv10-M,延迟显著减少了0.65 ms,很好地显示了其有效性。此外,我们的精度驱动模型设计实现了1.8 AP和0.7 AP的显著改进,仅0.18ms和0.17ms的延迟开销,很好地证明了其优越性。

NMS-free训练分析

•双标签分配。针对无NMS的YOLOs提出了双标记分配,既可以在训练过程中对一对多(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中#1和#2的YOLOv10-S,如[6]分析了预测的类别和定位误差对性能的影响。具体地说,我们通过一对一的分配将预测与实例相匹配。
•空间通道解耦下采样。为了提高效率,我们对下采样操作进行解耦,首先通过逐点卷积(PW)增加信道维数,然后通过深度卷积(DW)降低分辨率,以最大限度地保留信息。基于表5中#3的YOLOv10-S,我们将其与DW空间缩减后PW信道调制的基线方法进行了比较。如表7所示,我们的降采样策略通过减少降采样过程中的信息损失,实现了0.7%的AP改善。
•紧凑型倒块(CIB)。我们引入CIB作为紧凑的基本构建块。通过表5中#4的YOLOv10-S验证了该方法的有效性。具体来说,我们引入反向残差块[46](IRB)作为基线,实现了次优43.7%AP,如表8所示。然后在其后面附加一个3×3深度卷积(DW),表示为“IRB-DW”,可使AP提高0.5%。与“IRB-DW”相比,我们的CIB以最小的开销预处理另一个DW,进一步实现了0.3%的AP改进,表明了它的优越性。
•等级导向块设计。为了提高模型效率,引入秩引导块设计,自适应地集成紧凑块设计。通过表5中#3的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模块,在最小延迟增加0.03ms和0.15ms的情况下,YOLOv10-S的性能分别提高了0.4%AP和1.4%AP。请注意,对于YOLOv10-M,不使用大的内核卷积(参见表12)。
•大内核卷积。我们首先根据表10中#2的YOLOv10-S,研究了不同粒径对其影响。如表11所示,性能随着内核大小的增加而提高,并在7×7的内核大小附近停滞,这表明了大感知场的好处。此外,去除训练过程中的重参数化分支,AP降解率达到0.1%,显示了其优化的有效性。此外,我们检验了基于YOLOv10-N/S/M的模型尺度上的大核卷积的好处。如表12所示,由于其固有的广泛感受野,它对大型模型(即YOLOv10-M)没有带来任何改进。因此,对于小模型,即YOLOv10-N/S,我们只采用大核卷积。
•部分自我关注(PSA)。我们引入PSA,通过在最小成本下结合全局建模能力来提高性能。首先利用表10中#3的YOLOv10-S验证了该方法的有效性。具体地说,我们引入变压器块,即MHSA和FFN,作为基线,表示为“Trans”。如表13所示,PSA与it相比,AP提高了0.3%,延迟降低了0.05ms。性能的提高可归因于通过减少注意头中的冗余来减轻自我注意中的优化问题[62,9]。此外,我们还研究了不同NPSA的影响。如表13所示,将NPSA增加到2可以获得0.2%的AP改善,但延迟开销为0.1ms。因此,默认情况下,我们将NPSA设置为1,以增强模型功能,同时保持较高的效率。

结论

在本文中,我们针对整个YOLOs检测管道的后处理和模型架构。在后处理方面,我们提出了一致的双任务NMSfree训练,实现了高效的端到端检测。在模型体系结构方面,引入了整体效率-精度驱动的模型设计策略,提高了性能-效率权衡。这带来了我们的YOLOv10,一种新的实时端到端目标探测器。大量的实验表明,与其他先进的检测器相比,YOLOv10在性能和延迟方面都达到了先进水平,充分显示了其优越性。

时间有限、精力有限、水平有限,对于YOLOv10最新发表的论文内容的学习记录就到这里了,感兴趣的话还是建议自行阅读官方英文论文即可,后续我会基于YOLOv10来开发构建目标检测模型。

 

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

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

相关文章

openflow协议抓包分析

1、准备实验拓扑: 在Mininet环境中创建一个简单的SDN拓扑,包括控制器、交换机、主机等。 确保拓扑能够正常运行,SDN交换机与控制器建立连接。 采用主机Ubuntu22.04主机,IP地址是192.168.87.130,安装opendaylight控制…

DreamerV3阅读笔记

DreamerV3 文章希望解决的一个挑战是用固定的hyperparameter来同时处理不同domain的任务。文章发现,通过结合KL balancing 和free bits可以使得world model learn without tuning(是指上面这件事,即不需要对不同任务改变hyperparameter&#…

力扣239. 滑动窗口最大值

Problem: 239. 滑动窗口最大值 文章目录 题目描述思路复杂度Code 题目描述 思路 1.编写实现优先队列类: 1.1.实现push(int n):将元素n添加到队列尾,同时将n前面大于n的元素删除 1.2.实现int max():将队列头元素取出(由于实现了push所以此时队…

【Python性能优化】取最值的差异

取最值的差异 测试Windows 测试结果Linux 测试结果 测试 测试内容:从一组 x, y, z 坐标值中获得每个维度(x、y、z)的值域范围。此处不考虑将数据临时存放到内存,再整组获取值域的操作(因为对单文件这么做问题不大&…

多线程基本常识

多线程的状态 在Java中,一个线程的生命周期有以下几种状态: 新建(New):当线程对象被创建时,线程处于新建状态。此时线程对象存在,但还没有调用start()方法启动线程。 运行(Runnable…

Prometheus Operator创建告警规则并接入钉钉报警

prometheus之钉钉报警 前言1. 添加prometheus报警规则1.2 添加自定义报警规则文件 2. 配置钉钉报警2.2 部署dingding插件 3. 编写alertmanager配置文件 前言 在kubenetes上安装了kube-promethues(包含Prometheus Operator),程序正常跑起来了&#xff0c…

【找出缺失的观测数据】python

思路: 主要在于分配剩余的部分分配问题 代码: class Solution:def missingRolls(self, rolls: List[int], mean: int, n: int) -> List[int]:m len(rolls)total_sum (n m) * meantoset total_sum - sum(rolls)# 检查 toset 是否在可能的范围内i…

影响所有股票、债券和ETF交易!一文看懂美国“T+1”结算新规

T1对投资者有何好处?有哪些风险?T1已经到来,T0还远吗? 美股将在本周迎来历史性时刻。 从当地时间5月28日开始,美股交易结算周期将由T2缩短至T1,即投资者当天卖出的股票,在交易后一个工作日就能…

C# Chart图表应用

1,Chart简介 Chart控件是微软自带的一种图形可视化组件,使用简单灵活。在.NET4.0之后(即VS2010之后)已集成在了VS里面,直接拖拽控件到窗体即可使用。 需要使用命名空间:using System.Windows.Forms.DataVis…

NDIS驱动程序堆栈

NDIS 6.0 引入了暂停和重启驱动程序堆栈的功能。 若要支持 NDIS 6.0 提供的堆栈管理功能,必须重写旧版驱动程序。 NDIS 6.0 还引入了 NDIS Filter驱动程序。 Filter驱动程序可以监视和修改协议驱动程序与微型端口驱动程序之间的交互。 与 NDIS 5 相比,F…

AI智能体研发之路-模型篇(四):一文入门pytorch开发

博客导读: 《AI—工程篇》 AI智能体研发之路-工程篇(一):Docker助力AI智能体开发提效 AI智能体研发之路-工程篇(二):Dify智能体开发平台一键部署 AI智能体研发之路-工程篇(三&am…

Vue中,点击提交按钮,路由多了个问号

问题 当点击提交按钮是路由多了问号: http://localhost:8100/#/ 变为 http://localhost:8100/?#/原因 路由中出现问号通常是由于某些路径或参数处理不当造成的。在该情况下,是因为表单的默认行为导致的。提交表单时,如果没有阻止表单的默…

完全背包洛谷题单

[USACO08NOV] Buying Hay S 题解:这题看到每个都可以卖出无限多个干草包,就应该想到完全背包,但又不同于普通的完全背包,普通的完全背包是让你通过对应的背包求出最大的价值,但是在这题理解上却是知道能够达到背包容量…

EPSON爱普生RTC RA8900CE/RA8000CE+松下Panasonic电池组合

RTC是一种实时时钟,用于记录和跟踪时间,具有独立供电和时钟功能。在某些应用场景中,为了保证RTC在断电或者其他异常情况下依然能够正常工作,需要备份电池方案来提供稳定的供电。本文将介绍EPSON爱普生RTC RA8900CE/RA8000CE松下Pa…

【Linux】升级GCC(版本9.3),补充:binutils

GCC:GNU Compiler Collection 。编译器,几乎Linux中所有程序(包括内核)都是gcc编译的,包括libc。 gcc不仅仅是编译器,gcc也有很多库,依赖libc。gcc和libc互相依赖。 GCC官网:GCC, …

【B站 heima】小兔鲜Vue3 项目学习笔记Day05

Day05 文章目录 Day05登录1. 整体认识和路由设置2. 表单校验实现3. 表单-统一校验4. 基础登录业务实现5. Pinia管理用户数据6. Pinia 数据持久化7. 登录和非登录状态下的模板适配8. 请求拦截器携带Token9. 退出登录功能的实现10. Token失效401拦截处理 购物车1. 流程梳理2. 本地…

ubuntu下vscode的安装包

1.引言 ubuntu下面安装vscode,编码调用接口时可以跳到接口api的位置,因此在ubuntu下安装vscode还是非常有意义的。 2.下载地址 链接:https://pan.baidu.com/s/1j3XNmvbL574p_hYeBqO6dg?pwdryr7 提取码:ryr7 --来自百度网盘超…

【考研数学】线代除了「李永乐」,还能跟谁?

考研线代,除了利用了老师,我觉得还有一个宝藏老师的课程值得听! 那就是喻老,这个是我在b站上面新发现的老师,听完他的课程发现真的喜欢 他不仅在B站上开设了课程,还编写了配套的线性代数辅导讲义&#xff…

网页图片加载慢的求解指南

网页/图片加载慢的求解指南 一、前言与问题描述 今天刚换上华为的HUAWEI AX3 Pro New,连上WIFI后测速虽然比平时慢,但是也不算太离谱,如下图所示: 估计读者们有也和作者一样,还没意识到事情的严重性😁。 …

智能客服新突破:大型模型训练助力提升客户服务体验

项目场景:训练大模型智能客服 智能客服新方法在金融服务领域的科技前沿应用 ** 一、 引言 随着科技的飞速发展,智能客服作为金融服务领域的一大创新点,正在逐渐改变传统的客户服务模式。特别是在自然语言处理(NLP)等…