卷出新高度,直呼太强!时隔三月,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来开发构建目标检测模型。

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

城市空气质量数据爬取分析可视化

城市空气质量数据爬取分析可视化 一、效果展示二、完整代码2.1 数据爬取代码2.2 数据分析代码一、效果展示 先来看一下数据情况以及可视化效果,本项目使用了pyecharts绘制了日历图、雷达图、折线图、柱状图、饼图和平行坐标系。完整代码附后: 数据如下: 日历图: 饼图: …

拿捏数据结构-top_k问题

top_k问题时间复杂度的计算 这里提前说明,时间复杂度的计算的目的是来计算向上调整的更优还是向下调整更优,从肉眼看的话向下调整优于向上调整,接下来我们进行时间复杂度的计算。 此时我们会用到等比数列求和以及裂项相消 如图 首先我们假设求…

Github Actions/workflow的使用

背景 Github提供了免费的Actions执行workflows工作流,在CI/CD场景下可用于跑测试用例、构建、打包、部署/发版等操作。 使用介绍 工作流简介 1个project可以配置多个workflow,每个workflow使用一个yaml文件配置;单个workflow可以配置多个…

身份认证页面该怎么设计更加合理?

一、认证页面的作用 认证页面在应用程序中具有以下几个重要的作用: 验证用户身份:认证页面的主要作用是验证用户的身份。通过要求用户提供正确的凭据(如用户名和密码、生物特征、验证码等),认证页面可以确认用户是合法…

使用华为快传同步文件至电脑

使用华为快传同步文件至电脑,电脑端未发现设备解决办法 1、手机和电脑连同一网络 2、打开手机华为分享,打开电脑网络 3、网络中找到设备,输入账户密码进行连接(未找到设备往下继续看) 未找到设备解决办法&#xff1…

图解 Transformer

节前,我们星球组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、参加社招和校招面试的同学. 针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 汇总合集&…

拿捏数据结构- 链式二叉树

链式二叉树的概念: 链式二叉树解决的是非完全二叉树解决不了的问题 什么意思呢,简单的说就是,链式二叉树 可以是下面三种二叉树 但是非链式二叉树只能是前两种 链式二叉树的存储 节点结构:首先定义一个结构体或类来表示二叉树的节…

Java跨Docker容器备份数据库数据

Java跨Docker容器备份数据库数据 前置背景思路整理编写备份脚本容器启动检验效果Java容器MySQL容器 Java代码执行备份 我的个人博客:Lichg,欢迎大家访问。 前置背景 在我们的开发部署场景中,通常多数使用Docker进行部署。当你的数据库和项目…

Ubuntu22.04之扩展并挂载4T硬盘(二百三十三)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

Java | Leetcode Java题解之第115题不同的子序列

题目&#xff1a; 题解&#xff1a; class Solution {public int numDistinct(String s, String t) {int m s.length(), n t.length();if (m < n) {return 0;}int[][] dp new int[m 1][n 1];for (int i 0; i < m; i) {dp[i][n] 1;}for (int i m - 1; i > 0; …

文刻创作ai工具官网免费工具

文刻创作ai工具官网免费工具 Docshttps://iimenvrieak.feishu.cn/docx/O0UedptjbonN4UxyEy7cPlZknYc 文刻是一种可以帮助用户进行创作的AI工具。 它使用自然语言处理和机器学习技术&#xff0c;可以生成文章、故事、诗歌等文本内容。 用户可以通过输入一些关键词或指定一定的…

MobaXterm连接eNSP设备

1、开启一台交换机 2、右键设置查看交换机串口号&#xff08;2000&#xff09; 3、打开MBX&#xff0c;点击session。 4、配置MBX 5、右键点击 6、配置为force off&#xff0c;点击回车就可以看到效果了

Golang | Leetcode Golang题解之第116题填充每个节点的下一个右侧节点指针

题目&#xff1a; 题解&#xff1a; func connect(root *Node) *Node {if root nil {return root}// 每次循环从该层的最左侧节点开始for leftmost : root; leftmost.Left ! nil; leftmost leftmost.Left {// 通过 Next 遍历这一层节点&#xff0c;为下一层的节点更新 Next …

损失函数篇 | YOLOv8更换损失函数之Inner-IoU | 通过辅助边界框计算IoU损失

前言:Hello大家好,我是小哥谈。损失函数是机器学习中用来衡量模型预测值与真实值之间差异的函数。在训练模型时,我们希望通过不断调整模型参数,使得损失函数的值最小化,从而使得模型的预测值更加接近真实值。为弥补现有IoU损失函数在不同的检测任务中的泛化能力较弱且收敛…

HTTPS加密过程

今天我们说https具体工作原理。 HTTPS概念 HTTPS是一种网络协议&#xff0c;传统的HTTP是明文传输&#xff0c;非常 不安全&#xff0c;所以HTTPS是基于HTTP基础上进行加密传输内容。 HTTPS使用加密传输方式 第一种是非对称加密&#xff0c;是前期建立连接时候使用的数据加密…

Golang | Leetcode Golang题解之第115题不同的子序列

题目&#xff1a; 题解&#xff1a; func numDistinct(s, t string) int {m, n : len(s), len(t)if m < n {return 0}dp : make([][]int, m1)for i : range dp {dp[i] make([]int, n1)dp[i][n] 1}for i : m - 1; i > 0; i-- {for j : n - 1; j > 0; j-- {if s[i] …

R实验 正交试验设计与一元线性回归分析

实验目的&#xff1a; 掌握正交试验设计记号的意义&#xff1b;掌握正交试验设计的直观分析和方差分析&#xff1b;掌握一元线性回归模型的相关概念&#xff1b;掌握最小二乘法的思想&#xff1b;掌握一元线性回归方程的显著性检验和预测。 实验内容&#xff1a; &#xff11;…

Python | Leetcode Python题解之第116题填充每个节点的下一个右侧节点指针

题目&#xff1a; 题解&#xff1a; class Solution:def connect(self, root: Node) -> Node:if not root:return root# 从根节点开始leftmost rootwhile leftmost.left:# 遍历这一层节点组织成的链表&#xff0c;为下一层的节点更新 next 指针head leftmostwhile head:#…

mumu 模拟器安装

1.下载安装 下载地址 Win 历史版本&#xff1a;http://mumu.163.com/update/win/Mac 历史 版本&#xff1a;http://mumu.163.com/20200515/25905_880858.html 2.设置为竖屏 在设置中心--界面设置页面设置宽720&#xff0c;高1280&#xff0c;DPI为240&#xff0c;如下图所示。…

Go语言之GORM框架(三)——Hook(钩子)与Gorm的高级查询

Hook(钩子) 和我们在gin框架中讲解的Hook函数一样&#xff0c;我们也可以在定义Hook结构体&#xff0c;完成一些操作&#xff0c;相关接口声明如下&#xff1a; type CreateUser interface { //创建对象时使用的HookBeforeCreate() errorBeforeSave() errorAfterCreate() …