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

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

继前文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.mzph.cn/diannao/17314.shtml

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

相关文章

吴恩达2022机器学习专项课程C2W2:2.22 多类 softmax softmax与神经网络 softmax的代码改良 多标签分类

目录 多分类问题1.什么是多分类问题2.多分类问题案例3.二分类与多分类的区别 Softmax1. 什么是Softmax2.逻辑回归预测的计算过程3. Softmax预测的计算过程4.Softmax 回归与逻辑回归的关系5. Softmax的损失函数 softmax与神经网络1.设置Softmax层2.Softmax层的计算3.softmax激活…

卸载/删除 Maxask.com,最简单的方法

被绑架的浏览器,太恶心了。 Maxask伪装成了插件,在你搜索网页的时候利用了重定向,导致出现的界面时Maxask的界面,很恶心。 只需要排查正在使用的,如下图有颜色的图表。 删除一个插件,浏览器搜索一下看看有…

先进制造aps专题九 中国aps行业分析

国外aps的问题是不给国内客户定制算法 国外aps的算法都很强大,考虑几百个约束条件,各种复杂的工序关系,还有副资源约束特殊规格约束,排程还优化,光c写的算法代码就几十万行甚至上百万行 国内aps的问题是实现不了复杂的…

项目范围管理

目录 1.概述 2.主要工作 3.基础 4.项目范围管理的过程 5.规划范围管理 6.收集需求 7.定义范围 8.创建 WBS 9.确认范围 10.控制范围 1.概述 项目范围管理是项目管理中的一个重要组成部分,涉及到确定项目需要完成的工作范围,以及如何管理和控制…

String到底创建几个对象?

String在生成的过程中如何创建对象? String s1 new String("hello") String s2 "world" String s3 new String("x") new String("y") String s5 new String("abc") "def" String s6 new String…

mysql数据库安装指南

这里写自定义目录标题 官网下载mysql数据库安装MySQL数据库添加环境变量查看mysql的服务验证是否配置成功 注意:如果用MySQL8的版本安装不成功,可以尝试用MySQL5的版本。MySQL8的版本可能在windows上一直不能启动,经过查询是某个版本的漏洞。…

分布式系列之分布式锁

背景 SOA或微服务架构体系下必不可少的一个分布式组件,常用于解决分布式场景下数据一致性的问题。 应用场景: 资源竞争控制:在分布式系统中,多个节点可能同时访问共享资源,如数据库、文件系统、缓存等。分布式锁可以…

如何在 jQuery 中检查一个元素是否隐藏

在前端开发中,我们常常需要判断一个元素是否隐藏。在 jQuery 中,有多种方式可以实现这一点。然而,并不是所有的解决方案都适用于所有情况。为此,我写了一个通用的解决方案来应对各种复杂情形。本文将详细介绍这个方法及其使用方式…

知识存储概述

文章目录 知识存储概述知识存储方式知识存储基础工具技术发展趋势 知识存储是针对知识图谱的知识表示形式设计底层存储方式,完成各类知识的存储,以支持对大规模图数据的有效管理和计算。知识存储的对象包括基本属性知识、关联知识、事件知识、时序知识和…

操作系统 实验17 批处理操作接口7:until循环与select循环

1、建立文件Until.sh实现累加和 脚本: #!/bin/bash sum010 sum020 i1 until [ $i -gt 100 ] dolet "sum01i"let "ji%2"if [ $j -ne 0 ];thenlet "sum02i"filet "i1" done echo $sum01 echo $sum02命令:. ./Un…

深入解析 RocketMQ 和 Kafka 的消息压缩机制

深入解析 RocketMQ 和 Kafka 的消息压缩机制 消息队列系统在现代分布式系统中扮演着重要角色,它们不仅需要高效地传递消息,还需要在传输过程中尽量减少带宽和存储的占用。消息压缩是一种常见的优化手段,可以显著减少消息的体积。本文将详细探…

Spring Security:认证与授权

Spring Security:认证与授权 在这篇文章中,你将学到与Spring Security相关的五个关键概念和术语,这些是你真正需要了解的。当你学习Spring Security时,你会一次又一次地遇到这些核心术语和概念。因此,在这篇文章中&am…

深入Docker in Docker:原理解析与实战演练

Docker in Docker(简称DinD)是一个在Docker容器内部运行另一个Docker守护进程和客户端的技术。这允许在一个容器中执行Docker命令,就像在宿主机上一样。这种技术在某些用例中非常有用,比如CI/CD管道、测试环境或者某些需要隔离的环…

linux网卡MAC地址

1、ifconfig命令查看网卡MAC地址 1.1 通过HWaddr或ether字段过滤mac地址 ifconfig | grep HWaddr ifconfig | grep ether [rootlocalhost ~]# /sbin/ifconfig | grep ether 注:有些Linux发行版本的MAC地址字段为HWaddr,有些Linux发行版本的MAC地址字段…

智能未来,触手可及,畅享移动云

目录 一、简介 二、移动云强大优势 1. 强大的网络基础设施 2. 可靠服务 3. 丰富产品线 4. 技术应用 5. 优惠价格策略 三、多商对比 网络优势 四、移动云的未来发展 五、实战应用 5.1 服务器选购 ​编辑5.2 服务器启动 5.3 实例操作 六、移动云的服务优势 6.1 客…

postman教程-5-发送put请求

领取资料,咨询答疑,请➕wei: June__Go 上一小节我们学习了postman发送post请求的方法,本小节我们讲解一下postman发送put请求的方法。 HTTP PUT 请求是一种用于传输数据的网络协议方法,它在客户端和服务器之间的通信中扮演着重…

数据中心、HPC、AI等应用场景互联协议混战哪家强?

生成式人工智能快速发展对算力与存力呈指数需求增长,进一步加剧了算力与存力之间既有矛盾,时代在呼唤更大的运力(即计算与存储之间的数据传输)--AIGC时代需要更大带宽,更为快速的数据传输路径。 众所周知,P…

香橙派AIpro初体验,详解如何安装Home Assistant Supervised

香橙派AIpro(OrangePi AIpro)开发版,定位是一块AI开发板,搭载的是华为昇腾310(Ascend310)处理器。 没想到,这几年的发展,AI开发板也逐渐铺开,记得之前看到华为发布昇腾3…

javascript 防抖 节流

在前端开发中,性能优化是提升用户体验的关键环节。防抖(Debounce)和节流(Throttle)作为两种常见的优化技术,能够有效管理和控制频繁触发的事件,减少不必要的计算和资源消耗。无论是在处理用户输…

基于香橙派 Ai Pro的ROS Qt人机交互软件部署指南

一,前言 最近收到了CSDN的邀请,对香橙派新出的Ai Pro进行测评: 说来也巧,其实香橙派本人对其映像挺深刻的,在2017年左右,本人刚上大学,当时是在淘宝购买树莓派,发现有个叫香橙派的国产板子,性能跟树莓派差不多吧,但是…