江大白 | 目标检测YOLOv9算法,重磅开源!(附论文及源码)

本文来源公众号“江大白”,仅用于学术分享,侵权删,干货满满。

原文链接:目标检测YOLOv9算法,重磅开源!(附论文及源码)

  • 以下文章来源于知乎:cvprLab
  • 作者:cvprLab
  • 链接:https://mp.weixin.qq.com/s/ybO5wPPBrPFcLGCTzJRo5Q

本文仅用于学术分享,如有侵权,请联系后台作删文处理。

1 导读

但凡谈到目标检测这个话题,总是绕不开YOLO。最近,YOLO又迎来重大更新迎来了其第9个版本即YOLOv9。本文对YOLOv9所带来的革命性贡献进行了简要分析,并对其所涉及的方法及实验进行了详细介绍。希望对大家有所帮助。

在这个飞速发展的技术世界中,目标检测技术的每一次进步都是对未来智能系统能力边界的一次挑战和扩展。最新推出的YOLOv9不仅是一个升级版本,它是对目标检测领域的一次革命性贡献。通过深入分析YOLOv9的核心技术和创新点,我们可以预见到它将如何改变未来的应用场景,从自动驾驶智能监控,再到增强现实,YOLOv9的影响力无处不在。

论文地址:https://arxiv.org/abs/2402.13616

Yolov9源代码:https://github.com/WongKinYiu/yolov9

首先,YOLOv9引入了程序化梯度信息(Programmable Gradient Information, PGI),这是一种全新的概念,旨在解决深层网络中信息丢失的问题。传统的目标检测网络在传递深层信息时,往往会丢失对最终预测至关重要的细节,而PGI技术能够保证网络在学习过程中保持完整的输入信息,从而获得更可靠的梯度信息,提高权重更新的准确性。这一创新显著提高了目标检测的准确率,为实时高精度目标检测提供了可能。

此外,YOLOv9采用了全新的网络架构——泛化高效层聚合网络(Generalized Efficient Layer Aggregation Network, GELAN)。GELAN通过梯度路径规划,优化了网络结构,利用传统的卷积操作符实现了超越当前最先进方法(包括基于深度卷积的方法)的参数利用效率。这一设计不仅提高了模型的性能,同时也保证了模型的高效性,使YOLOv9能够在保持轻量级的同时,达到前所未有的准确度和速度。

MS COCO这样的挑战性数据集上的验证结果显示,YOLOv9在目标检测领域设置了新的性能基准,无论是在效率、速度还是准确性方面,YOLOv9都展示了卓越的性能。这不仅标志着目标检测技术的一大步进,更为各种实时应用开辟了新的可能性,从无人驾驶汽车的即时反应系统到城市安全监控的高效准确识别,再到增强现实应用中的实时互动,YOLOv9的应用潜力是无限的。

随着技术的不断进步,我们期待YOLOv9能够在更多领域发挥其影响力,不仅仅是提高现有应用的性能,更是推动新应用场景的发展。YOLOv9的推出,不仅是对目标检测技术的一次重大更新,更是对未来智能世界的一次勇敢探索。在这个由数据驱动的时代,YOLOv9的出现,无疑为我们打开了一扇通往更加智能、更加高效未来世界的大门

2 摘要

当今的深度学习研究主要关注设计最佳目标函数,以实现模型预测与真实值的高度一致性,并开发合适的架构以确保预测过程中信息的充分利用。然而,传统方法往往忽视了在特征提取和空间转换的多层处理过程中,输入数据可能遭受的信息损失问题。

本研究深入探讨了深度网络中数据传递过程中的信息损失问题,特别是信息瓶颈和可逆函数的挑战。提出了一种新概念——可编程梯度信息(PGI),旨在解决深度网络处理复杂任务时遇到的信息变化挑战。通过PGI,可以在计算目标函数时保留完整的输入信息,从而提供准确的梯度信息以优化网络权重。

进一步地,本文设计了一种创新的轻量级网络架构,即广义高效层聚合网络(GELAN),展示了PGI在提升轻量级模型性能方面的有效性。

通过在MS COCO数据集上进行目标检测任务的实验验证,证明了GELAN在参数效率方面超越了依赖深度可分卷积的现有技术。PGI的适用性跨越从轻量级到大型模型,能够在无需大型预训练数据集的条件下,实现从头开始训练模型的性能优势,如图1所示的比较结果进一步证实了这一点。

3 介绍

深度学习模型已在计算机视觉、自然语言处理和语音识别等多个领域展现出显著的性能优势,超越了早期人工智能系统的能力。近年来,研究重点转向开发更高级的系统架构和学习策略,如卷积神经网络(CNNs)变压器(Transformers)Mambas等。此外,研究者也在探索更为通用的目标函数设计,包括损失函数、标签分配策略以及辅助监督机制等,旨在更精确地映射输入数据与目标任务之间的关系。尽管如此,大部分现有方法未能充分考虑到正向传播过程中输入数据可能遭遇的信息丢失问题。这种信息遗失可能引起梯度流的偏差,这些偏差梯度随后被用于模型更新。这一过程可能导致深度网络错误地理解目标与输入之间的联系,进而使模型产生不准确的预测结果。

在深度学习中,前向传播过程中输入数据遭受信息丢失,常被描述为信息瓶颈问题,如图2所示。为缓解此问题,研究者提出了几种策略:

  1. 可逆架构:通过重复使用输入数据并显式保留其信息来减少信息丢失;
  2. Mask建模:通过重构损失,隐式地保留输入信息,从而优化特征提取;
  3. 深度监督:利用浅层特征,这些特征未丢失关键信息,建立特征到目标的映射,以保证信息能够传递至深层。

尽管这些方法在理论上能够缓解信息瓶颈问题,但它们在实际应用中存在各自的局限性。例如:

  1. 可逆架构虽能保留信息,但需额外层次处理重复数据,导致推理成本上升,同时限制了模型在捕获高阶语义信息时的深度。
  2. Mask建模可能会与主要目标产生损失冲突,且容易产生不恰当的数据关联。
  3. 深度监督虽有其优点,但若早期监督层丢失信息,后续层次难以补偿这一损失,尤其在处理复杂任务或小型模型时,这些问题更为突出。

为应对深度学习中的信息丢失和梯度偏差问题,本研究引入了一种创新性概念,称为可编程梯度信息(PGI)。PGI通过一个辅助的可逆分支生成稳定的梯度,确保深层网络特征在执行特定任务时维持其关键属性,从而避免传统深度监督中通过融合多路径特征可能导致的语义信息损失。

PGI通过在不同的语义级别上调整梯度信息的传播来优化训练效果,其创新之处在于辅助可逆分支的引入,这一设计无需额外计算成本。PGI的灵活性体现在能够根据任务需求自主选择损失函数,解决了Mask建模在损失函数选择上的局限性。此外,PGI适用于各种规模的深度神经网络,提供了比深度监督机制更广泛的适用性,后者通常仅限于极深网络。

在此基础上,研究团队进一步设计了广义ELAN(GELAN),考虑到了模型的参数数量、计算复杂度、准确性及推理速度,为不同推理设备提供了灵活的计算块选择。结合PGI和GELAN,研究者开发了一种新型的目标检测系统——YOLOv9,基于MSCOCO数据集的实验结果展示了YOLOv9在多个比较中的卓越性能。

本研究的主要贡献可以概括为以下几点:

  • 通过理论分析深度神经网络架构中的可逆函数,本研究阐明了多个之前难以理解的现象。基于此分析,研究者开发了可编程梯度信息(PGI)和辅助可逆分支,实现了显著的性能提升。

  • PGI的设计突破了深度监督技术仅限于极深网络架构的局限,使得轻量级架构能够在实际应用中发挥更大的作用。

  • 通过仅依赖传统卷积操作,GELAN模型展现了相对于采用先进深度可分卷积技术的设计,更高效的参数利用率及其在轻量化、速度和准确性方面的显著优势。

  • 结合PGI和GELAN开发的YOLOv9,在MS COCO数据集上进行的目标检测任务中,其性能全面超越了当前实时目标检测模型,标志着在目标检测领域的一大进步。

4 方法

Programmable Gradient Information

为了解决上述问题,作者提出了一种新的辅助监督框架,称为可编程梯度信息(PGI),如图3(d)所示。

PGI主要包括三个组成部分,即:

  1. 主分支

  2. 辅助可逆分支

  3. 多级辅助信息

从图3(d)的展示中,可以观察到可编程梯度信息(PGI)的推理流程仅涉及主分支,避免了额外推理成本的产生。这一设计精巧地应对了深度学习中的关键挑战,通过两个关键组件提升模型性能:

  • 辅助可逆分支:引入此组件是为了解决随着网络深度增加而引发的信息瓶颈问题。这种信息瓶颈会干扰损失函数生成有效梯度的能力,辅助可逆分支通过保持信息流动的完整性来克服这一障碍。

  • 多级辅助信息:此部分旨在解决深度监督可能导致的误差累积问题,尤其是在拥有多个预测分支的结构和轻量级模型中。通过引入多级辅助信息,模型能够更有效地学习并减少误差传播。

作者随后详细阐述了这两个组件的实现和作用,指出它们如何共同作用于提高模型的整体性能,特别是在处理复杂任务和轻量级模型的应用中。

4.1.1 Auxiliary Reversible Branch

在PGI框架中,为了解决深度学习模型中的信息瓶颈问题,作者引入了辅助可逆分支,这一创新设计旨在生成稳定的梯度,促进网络参数的有效更新。这种方法通过确保数据到目标的信息流畅传递,减少了损失函数依赖不完整前馈特征产生误导性关联的风险。虽然可逆架构能够保持信息的完整性,但在推理阶段向其中加入主分支会大幅增加计算成本。通过分析图3(b)的结构,作者指出添加深层到浅层的连接会导致推理时间增加约20%,而将输入反复加入到网络的高分辨率计算层会使推理时间翻倍。

作者认识到,在实现可靠梯度获取的同时,减少推理成本同样重要。因此,考虑到“可逆”在推理阶段非必需,将辅助可逆分支设计为深度监督的一种改进形式。这样,深层主分支中可能因信息瓶颈而丢失的重要信息,可以通过辅助可逆分支获得补充的梯度信息,这些信息有助于网络学习到更准确、更关键的特征,以更有效地完成目标任务。作者进一步指出,可逆架构在处理复杂任务时对深层网络的转换能力不如传统网络,因此提出的方法不追求在主分支上保留完整原始信息,而是通过辅助监督机制提供有用的梯度更新。

此外,辅助可逆分支的设计允许其在推理阶段被去除,从而不影响原始网络的推理效率。这种策略的灵活性也意味着任何可逆架构都可以作为辅助可逆分支的角色,进一步增强了PGI框架的适用性和效率。

4.1.2 Multi-level Auxiliary Information

本节重点讨论了多级辅助信息机制的实现和作用。在深度监督架构中,特别是在目标检测任务中,通常会利用不同层次的特征金字塔来处理不同规模的目标,如图3(c)所展示。这种方法允许模型在特定的深度监督分支下,根据浅层特征识别小型目标,同时将其他规模的目标视为背景。这一做法虽然针对性强,但可能导致深层特征金字塔在预测各种大小目标时丢失关键信息。

作者提出,为了有效地保持目标信息的完整性,每一级的特征金字塔都应该接受到有关所有目标大小的信息。为此,作者引入了一种多级辅助信息框架,通过在辅助监督特征金字塔层和主分支之间加入集成网络,如图3(d)所示。这个集成网络的角色是整合来自不同预测分支的梯度信息,并将这一聚合的信息传递给主分支,以促进参数的更新。

通过这种方法,主分支的特征金字塔不再仅仅被某一特定规模目标的信息所支配,而是能够综合考虑各种规模的目标信息,从而解决了深度监督可能引起的信息断裂问题。此外,多级辅助信息机制的灵活性体现在任何类型的集成网络都可以被用作信息聚合的工具,使得研究者能够根据不同大小的网络架构需求,定制化地规划所需的语义层级,从而指导模型学习。

Generalized ELAN

在这一部分,研究者详细描述了他们开发的新型网络结构——广义高效层聚合网络(GELAN)。GELAN是通过融合两个先进的网络设计理念——具有梯度路径规划能力的CSPNet和ELAN——而诞生的。这种设计致力于实现一个既轻量又快速且精确的网络架构,全面优化了网络性能和效率。其详细架构展示在图4中。在此基础上,研究者对ELAN的应用范围进行了扩展,使其不再局限于传统的卷积层堆叠方式,而是能够灵活地适配各种计算单元,显著提升了网络的通用性和适应性。

5 实验

Experimental Setup

作者在MS COCO数据集上验证了他们的方法,并采用了YOLOv7 AF模型。实验中,所有模型均从头开始进行了训练,总共进行了500个epoch的训练。学习率的设置如下:

前三个epoch采用线性Warm up策略,后续epoch根据模型规模采用相应的衰减方式。最后的15个epoch中,马赛克数据增强被关闭。更多实验设置请参考附录。

Implimentation Details

作者基于YOLOv7和Dynamic YOLOv7构建了YOLOv9的通用扩展版本。在网络架构设计中,作者用CSPNet块和计划中的RepConv替换了ELAN,并简化了下采样模块以及优化了Anchor-Free点预测头。对于PGI的辅助损失部分,作者完全采用了YOLOv7的辅助头设置。更多详细信息请查阅附录。

Comparison with state-of-the-arts

表1列出了作者提出的YOLOv9与其他从头开始训练的实时目标检测器的比较。总的来说,现有方法中表现最佳的方法包括轻量级模型中的YOLO MS-S,中型模型中的YOLO MS,通用模型中的YOLOv7 AF,以及大型模型中的YOLOv8-X。

与轻量级和中型模型YOLO MS相比,YOLOv9的参数减少了约10%,计算量减少了5-15%,但AP仍然提高了0.4~0.6%。与YOLOv7 AF相比,YOLOv9-C的参数减少了42%,计算量减少了21%,但达到了相同的AP(53%)。与YOLOv8-X相比,YOLOv9-X的参数减少了15%,计算量减少了25%,并且AP显著提高了1.7%。以上比较结果表明,作者提出的YOLOv9在所有方面都比现有方法有显著提升。

在本研究中,作者进一步比较了YOLOv9模型与其他基于ImageNet预训练的模型的性能,如图5所展示。分析聚焦于模型的参数数量和计算量两个关键指标。在参数效率方面,大型模型RT DETR表现突出。图5揭示了YOLOv9(采用传统卷积技术)在参数利用效率上甚至超越了采用深度卷积技术的YOLO MS模型。

特别是在大型模型的参数利用率方面,YOLOv9显著超过了利用ImageNet预训练的RT DETR模型。值得注意的是,YOLOv9在深层网络中的应用展现了利用PGI技术的显著优势,仅需RT DETR-X 64%的参数量就能达到相同的准确度,有效地保持并提取了关键信息以实现数据到目标的精准映射。

在计算量比较方面,从最小到最大的模型性能依次为YOLO MS、PP YOLOe以及RT DETR。图5进一步显示,在计算复杂度上,YOLOv9明显优于完全从头开始训练的方法,并且在与采用深度卷积和ImageNet预训练模型相比时,也展现出了强大的竞争力。

Ablation Studies

5.4.1 Generalized ELAN

在探索GELAN架构的有效性方面,研究者进行了一系列消融实验,以评估不同计算块(如Res块、Dark块和CSP块)替换ELAN架构中卷积层后的性能表现。实验结果汇总于表2,显示了使用这些多样化的计算块后,系统性能依然保持在一个较高水平,验证了用户可以根据需求和推理设备的特性自由选择不同的计算块。

在众多测试中,CSP块特别引人注目,因其不仅成功减少了模型的参数数量和计算需求,而且还实现了0.7%的平均精度(AP)提升。基于这些发现,研究者决定在YOLOv9模型中采用CSP-ELAN作为GELAN的核心组件,进一步强化了模型的性能和效率。

在深入探究GELAN架构的优化过程中,作者对ELAN和CSP块的不同深度配置进行了实验,旨在评估深度变化对模型性能的影响。实验结果,如表3所展示,揭示了在增加ELAN块的深度从1到2时,模型的准确度得到了显著的提升。然而,当ELAN或CSP块的深度超过2之后,进一步增加深度对于参数数量、计算量和准确度的影响呈现出线性关系,表明模型对于深度的增加不再敏感。

这一发现指出,虽然适度增加GELAN中的ELAN块深度可以有效提高模型性能,但超过一定深度后,模型性能的提升将趋于平稳。因此,GELAN展现了对深度变化的鲁棒性,为模型设计提供了灵活性,允许研究者根据具体需求和资源限制调整深度,而无需担心性能急剧下降。

换句话说,用户可以任意组合GELAN中的组件来设计网络架构,而无需特殊设计即可拥有性能稳定的模型。在表3中,对于YOLOv9-{S,M,C},作者将ELAN深度和CSP深度的配对设置为{{2, 3}, {2, 1}, {2, 1}}。

5.4.2 Programmable Gradient Information

在关于PGI方面,作者对辅助可逆分支以及主干和 Neck 分别上的多级辅助信息进行了消融研究。作者设计了 辅助可逆分支ICN,使用DHLC连接方式来获取多级可逆信息。至于多级辅助信息,作者使用FPN和PAN进行 消融研究, PFH的作用相当于传统的深度监督。所有实验的结果列于表4中。

根据表4的数据分析,PFH(可能指某种特定技术或方法,文中未明确解释)仅在深层模型中显示出有效性。相比之下,作者提出的可编程梯度信息(PGI)技术能够在各种配置组合中提升模型的准确性,特别是当结合ICN(可能是指一种特定的网络结构或技术)使用时,结果表现出稳定性和优越性。此外,作者尝试将YOLOv7中引入的领航头引导分配技术应用于PGI的辅助监督环节,成功地实现了性能的进一步提升。

在对多个不同规模的模型应用PGI概念及深度监督后,作者比较了实验结果,具体数据展示在表5中。这些实验结果确认了作者的初步分析,即深度监督的引入在某些情况下可能会对较浅层模型的准确度造成负面影响。这表明,虽然深度监督可以为深层模型带来明显的好处,但在应用于较浅的模型时,需要谨慎考虑其可能带来的准确度损失。

在常规模型中,深度监督可能导致性能的不稳定性,这种策略主要在极深的模型中才展现出其优势。相对而言,作者提出的可编程梯度信息(PGI)技术有效地解决了信息瓶颈和信息断裂问题,能够在不同规模的模型中实现准确度的全面提升。

PGI技术贡献了两个重要的创新点:1)首先,它使辅助监督方法可以被应用于浅层模型,扩大了深度监督技术的应用范围;2)其次,它为深层模型的训练过程提供了更可靠的梯度,这些梯度有助于模型更精确地建立数据与目标之间的正确关系。

通过逐步从基线的YOLOv7增加到YOLOv9-E的各个组件,作者在表中展示了这一系列改进如何带来模型性能的全面提升。这一过程不仅证明了GELAN和PGI技术的有效性,也展现了这些技术如何协同工作,为深度学习模型带来了显著的性能改进。

Visualization

本节将探讨信息瓶颈问题并将其可视化。此外,作者还将展示提出的PGI如何使用可靠的梯度来寻找数据与目标之间的正确相关性。在图6中,作者展示了使用随机初始权重作为不同架构下的前馈得到的特征图的可视化结果。作者可以看到,随着层数的增加,所有架构的原始信息逐渐减少

例如,在PlainNet的第50层,很难看到物体的位置,到了第100层,所有可辨别的特征都会丢失。至于ResNet,尽管在第50层仍然可以看到物体的位置,但边界信息已经丢失。当深度达到第100层时,整个图像 变得模糊。CSPNet和提出的GELAN表现都非常好,它们都能够维持到第200层时支持清晰识别物体的特征。

在对比中, GELAN的结果更稳定,边界信息也更清晰

图7展示了PGI技术在训练过程中如何提供更准确的梯度信息,这些信息对于更新模型参数至关重要,以确保模型能够有效地识别输入数据与目标之间的关系。通过比较图7(b)和图7(c)中GELAN与YOLOv9(结合了GELAN和PGI)的特征图可视化结果,可以明显观察到PGI技术使模型更加精确地定位到了含有物体的区域。

相比之下,未集成PGI技术的GELAN在检测物体边界时显示出一定程度的发散现象,并且在非目标的背景区域误激活了一些响应。这一对比强有力地证明了PGI技术在提供有助于参数优化的梯度方面的有效性,进而使模型在前馈过程中能够保留更多关键特征,从而提高了检测的准确性和可靠性。

6 结论

本文中,作者提出的可编程梯度信息(PGI)旨在克服信息瓶颈和深度监督在轻量级网络中应用的局限性。GELAN,一种新型高效且轻量的网络架构,被设计出来以优化目标检测任务。GELAN证明了其在不同计算单元和深度配置下的强大性能和稳定性,表明其具有广泛适用性。

PGI的引入显著提升了轻量级及深层模型的准确度。YOLOv9,结合了PGI和GELAN的设计,展现出了卓越的性能。与YOLOv8相比,YOLOv9在参数和计算量上分别减少了49%和43%,同时在MS COCO数据集上的平均精度(AP)提升了0.6%。

附录A中提供了YOLOv9的训练细节,包括使用SGD优化器进行500周期的训练,以及特定的数据增强设置。YOLOv9的网络架构基于YOLOv7 AF,采用CSP-ELAN块替换了原有的ELAN块,优化了下采样模块,并在预测层进行了调整。

附录B中,作者将YOLOv9与采用不同训练策略的先进实时目标检测模型进行了比较,包括从头开始训练、使用ImageNet预训练、知识蒸馏和更复杂的训练过程等。结果显示,YOLOv9在所有比较中均表现最佳,展示了其在参数效率和计算效率上的优势。

综上所述,YOLOv9不仅在不同规模模型中展示了帕累托最优性,而且在处理计算复杂度与准确度权衡时表现出色,强调了PGI和GELAN的创新设计在提高深度学习模型性能方面的重要贡献。

THE END!

文章结束,感谢阅读。您的点赞,收藏,评论是我继续更新的动力。大家有推荐的公众号可以评论区留言,共同学习,一起进步。

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

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

相关文章

服务器防漏扫

什么是漏扫? 漏扫是漏洞扫描的简称。漏洞扫描是一种安全测试方法,用于发现计算机系统、网络或应用程序中的潜在漏洞和安全弱点。通过使用自动化工具或软件,漏洞扫描可以检测系统中存在的已知漏洞,并提供相关的报告和建议&#xf…

Nexus Repository Manager

Nexus Repository Manager https://s01.oss.sonatype.org/#welcome https://mvnrepository.com/-CSDN博客

网络安全与信创产业发展:构建数字时代的护城河

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua,在这里我会分享我的知识和经验。&#x…

二,几何相交---1,预备--(1)元素唯一性EU

如何获取数组中元素的唯一性? 先通过o(nlogn)的时间复杂度排序(上下界都是o(nlogn),再比较相邻的两个元素即可。

VScode连接远端服务器一直输入密码解决方法

文章目录 1 关闭远程连接2打开命令面板3 输入remote-ssh: kill vs code server on host… 1 关闭远程连接 2打开命令面板 3 输入remote-ssh: kill vs code server on host… remote-ssh: kill vs code server on host… 然后一路回车(选中出问题的主机),输一遍密码…

LASSO算法

LASSO (Least Absolute Shrinkage and Selection Operator) 是一种回归分析的方法,它能够同时进行变量选择和正则化,以增强预测准确性和模型的解释性。LASSO通过在损失函数中加入一个L1惩罚项来实现这一点。该惩罚项对系数的绝对值进行约束。 基本概念 …

nginx-ingress-controller组件中Nginx的版本升级

参考链接:https://blog.csdn.net/qq_22824481/article/details/133761302 https://blog.csdn.net/mengfanshaoxia/article/details/127155020 https://blog.csdn.net/weixin_39961559/article/details/87935873 概要 业务区k…

Vue响应式状态ref()与reactive()

1. ref()声明响应式状态 <template><!--在DOM元素调用变量时,不需要指定输出变量的value,因为Vue会帮你输出.value但是注意,这个帮助只会帮助顶级的ref属性才会被解包--><div>{{ count }}</div><div>{{ object }}</div><div>{{ arr…

matlab经验模式分解的R波检测算法

1、内容简介 略 56-可以交流、咨询、答疑 2、内容说明 略 心血管疾病是威胁人类生命的主要疾病之一&#xff0c;而心电信号&#xff08;electrocardiogram, ECG&#xff09; 则是评价心脏功能的主要依据&#xff0c;因此&#xff0c;关于心电信号检测处理的研究一直为各方所…

C++ 之LeetCode刷题记录(三十四)

&#x1f604;&#x1f60a;&#x1f606;&#x1f603;&#x1f604;&#x1f60a;&#x1f606;&#x1f603; 开始cpp刷题之旅。 目标&#xff1a;执行用时击败90%以上使用 C 的用户。 12. 整数转罗马数字 罗马数字包含以下七种字符&#xff1a; I&#xff0c; V&#xf…

机器学习简单介绍

&#xff08;本文为简单介绍&#xff0c;内容源于网络和AI&#xff09; 当今世界,技术与创新的步伐日新月异。在各类智能技术当中,如果说有一个绝对不容忽视的关键词,那就是“机器学习”(Machine Learning)。它是人工智能领域的核心分支,使得机器获得从数据中学习、进而做出决…

【JavaScript 漫游】【022】事件模型

文章简介 本篇文章为【JavaScript 漫游】专栏的第 022 篇文章&#xff0c;对 JavaScript 中事件模型相关的知识点进行了总结。 监听函数 浏览器的事件模型&#xff0c;就是通过监听函数&#xff08;listener&#xff09;对事件做出反应。事件发生后&#xff0c;浏览器监听到…

linux操作系统期末练习题

背景&#xff1a; 一、远程登录 1&#xff0e;利用远程登录软件&#xff0c;以用户userManager(密码123456)&#xff0c;远程登录教师计算机&#xff08;考试现场给出IP地址&#xff09;&#xff0c;只有操作&#xff0c;没有命令。 2&#xff0e;以stu班级学生个人学号后3位…

改善C++程序与设计的55个具体做法——2.尽量以const,enum,inline替换#define

const和#define 这个条款或许改为“宁可以编译器替换预处理器”比较好&#xff0c;因为或许#define不被视为语言的一部分。那正是它的问题所在。当你做出这样的事情&#xff1a; #define ASPECT RATIO 1.653 记号名称ASPECT_RATIO也许从未被编译器看见&#xff1b;也许在编译…

操作系统——处理机调度

文章目录 进程调度0.概念1.调度分类高级调度低级调度中级调度七状态模型调度对比 2.进程调度进程调度的时机进程调度的方式进程的切换方式调度器/调度程序闲逛进程 3. 调度算法的评价指标CPU利用率系统吞吐量周转时间等待时间响应时间 4. 调度算法先来先服务(FCFS)短作业优先(S…

装饰模式(Decorator Pattern)

定义 装饰模式&#xff08;Decorator Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许通过将对象包装在装饰器类的实例中来动态地添加新的行为和责任。这种模式可以在不修改现有代码的情况下&#xff0c;灵活地扩展对象的功能。 示例 考虑一个咖啡店的场景&…

设计模式(六)代理模式

相关文章设计模式系列 1.代理模式简介 代理模式介绍 代理模式也叫委托模式&#xff0c;是结构型设计模式的一种。在现实生活中我们用到类似代理模式的场景有很多&#xff0c;比如代购、代理上网、打官司等。 定义 为其他对象提供一种代理以控制这个对象的访问。 代理模式…

老吕在CSDN写文章之必学【Markdown编辑器教程】

老吕在CSDN写文章之必学【Markdown编辑器教程】 一、作者前言二、介绍Markdown1.Markdown简介2.Markdown优势2.1 使用 Markdown 的优点 3.Markdown发展历程3.1 标准化3.2 CommonMark3.3 GFM3.4 Markdown Extra 4.Markdown应用场景4.1 在线阅读4.2 文本编辑 5.Markdown适用人群 …

搜维尔科技:第九届元宇宙数字人大赛,参赛小组报名确认公告

各位参赛选手大家好&#xff0c;近期已收到新增报名信息如下表&#xff0c;请各位参赛选手确认&#xff0c;如果信息有误或信息不完整请电话联系赛务组工作人员进行更正 随着元宇宙时代的来临&#xff0c;数字人设计成为了创新前沿领域之一。为了提高大学生元宇宙虚拟人角色策划…

js:通过input标签或Drag拖拽文件实现浏览器文件上传获取File文件对象

文档 https://developer.mozilla.org/zh-CN/docs/Web/API/Filehttps://developer.mozilla.org/zh-CN/docs/Web/API/HTMLElement/drag_event 通过读取文件可以获取File对象的信息 lastModified: 1707210706000 lastModifiedDate: Tue Feb 06 2024 17:11:46 GMT0800 (中国标准…