yolov9文献阅读记录

本文记录了yolov9文献的阅读过程,对主要内容进行摘选翻译,帮助理解原理和应用,包括摘要、主要贡献、网络结构、主要模块,问题描述和试验对比等内容。

    • 文献
    • 摘要
    • 前言摘选
    • 主要贡献
    • 相关工作
      • 可逆性结构
      • 辅助监督
    • 问题描述
      • 信息瓶颈原理
      • 可逆函数
    • 网络结构
      • 可编程梯度信息
        • 辅助可逆支路
        • 多层次的辅助信息
      • 广义ELAN(GELAN)
    • 试验
      • 对比实验
      • 消融实验
      • 可视化
    • 结论

文献

在这里插入图片描述

摘要

在这里插入图片描述

现在的深度学习方法主要集中在如何设计最合适的目标函数,使得模型的预测结果能够最接近地面真值。同时,一个合适的架构,可以方便地获取足够的信息预测的设计。现有的方法忽略了一个事实,即当输入数据进行逐层特征提取和空间变换时,会丢失大量的信息。本文将深入研究数据在深度网络中传输时造成数据丢失的重要原因,即信息瓶颈和可逆函数。我们提出了可编程梯度信息(PGI)的概念,以应对深度网络实现多目标所需的各种变化。PGI可以为目标任务提供完整的输入信息来计算目标函数,从而获得可靠的梯度信息来更新网络权值。此外,设计了一种新的轻量级网络结构–基于梯度路径规划的广义高效层聚合网络(GELAN)。GELAN的架构证实了PGI在轻量化模型上取得了卓越的成果。我们验证了所提出的GELAN和PGI在MSCOCO数据集上的基于对象的目标探测。结果表明**,Gelan只使用传统的卷积算子来获得比基于深度卷积的最新方法更好的仪器利用率**。PGI可用于从轻量级到大型的各种型号它可以用来获取完整的信息,这样从零开始训练的模型比使用大型数据集预先训练过的最先进的模型能够获得更好的结果,比较结果如图1所示。源代码在 代码。
在这里插入图片描述
图一。MS COCO数据集上实时目标检测器的比较。GELAN和基于PGI的对象检测方法超过了所有以前的训练从头开始的对象检测性能的方法。在精度方面,新方法优于RT DETR[43]使用大型数据集进行预训练,并且优于基于深度卷积的设计 YOLO MS[7]参数利用率方面

前言摘选

在这里插入图片描述

在深度网络中,输入数据在前馈过程中丢失信息的现象通常被称为信息瓶颈。[59],其示意图如图2所示。目前,缓解这一现象的主要方法有以下几种:(1)可逆结构的使用【3,16,19】:这种方法主要使用重复输入数据,并以显式的方式维护输入数据的信息;(2)掩蔽建模【1,6,9,27,7173】的使用:它主要使用重构损失,并采用隐式的方式最大化提取的特征并保留输入信息;(3)深度监控概念的引入【28,51,54,68】:它使用没有丢失太多重要信息的浅层特征,预先建立从特征到目标的映射,以确保重要信息可以传输到更深的层。然而,上述方法在训练过程和推理过程中都存在着不同的弊端。例如,一个可逆的架构需要附加层结合重复输入数据,这将显着增加的推断成本。此外,由于输入数据层到输出层不能有一个太深的路径,这种限制将使它难以在训练过程中建模高阶语义信息领先”之义塞斯对于屏蔽建模,其重建损失有时与目标损失相冲突。此外**,大多数掩码机制也会产生与数据不正确的关联**。对于深层监督机制,会产生误差积累,如果浅层监督在训练过程中丢失信息,后续层将无法检索到所需信息。上述现象在困难的任务和小模型上会更加显著
在这里插入图片描述
如图2所示。不同网络结构随机初始权值输出特征映射的可视化结果:(a)输入图像,(b)PlainNet、©ResNet(d)CSPNet和(e)拟议的GELAN。从图中我们可以看到,在不同的结构中,提供给目标函数计算损失的信息都有不同程度的丢失,而我们的结构可以保留最完整的信息,并为目标函数的计算提供最可靠的梯度信息

在这里插入图片描述

在这里插入图片描述

为了解决上述问题,我们提出了一个新的概念,这是可编程梯度信息(PGI)。其概念是通过辅助可逆分支生成可靠的梯度,使深层特征仍能保持执行目标任务的关键特征。辅助可逆支路的设计避免了传统深度监控过程中集成多径特性可能带来的信号损失。换句话说,我们在不同的语义层上编程梯度信息传播,从而达到最佳的训练效果。PGI的可逆结构是建在辅助分支上,所以没有额外的费用。由于PGI可以自由选择适合目标任务的损失函数,它也克服了掩模建模所遇到的问题。提出的PGI机制可以应用于各种规模的深度神经网络比只适用于非常深的神经网络的深度监督机制更通用

主要贡献

在这里插入图片描述
在本文中,我们还设计了基于ELAN的广义ELAN(GELAN),同时考虑了参数个数、计算复杂度、精度和推理速度。这种设计允许用户为不同的推理设备任意选择适当的计算块。我们将提出的PGI和GELAN相结合,设计了新一代的YOLO系列目标检测系统,我们称之为YOLOv9。我们使用MSCoco数据集进行实验,实验结果验证了我们提出的YOLOv9在所有的比较中实现了最高的性能。
在这里插入图片描述

我们将本文的贡献总结如下:
1.我们从可逆功能的角度对现有的深度神经网络架构进行了理论分析成功地解释了许多过去难以解释的现象。在此基础上设计了PGI和辅助可逆转分支,取得了良好的效果。
2.我们设计的PGI解决了深度监控只能用于深度神经网络架构的问题,从而使新的轻量级架构真正应用到日常生活中
3.我们设计的GELAN仅使用传统的卷积实现了比基于最先进技术的深度卷积设计更高的参数利用率,同时显示出轻便、快速、准确的巨大优势
4.结合提出的PGI和GELAN,对象检测性能的YOLOv9在MSCOCO数据集大大超过现有的实时对象检测器在各个方面。

相关工作

在这里插入图片描述

本文选择YOLOv7[63],已经在各种计算机视觉任务和各种场景中被证明是有效的,以此为基础来开发所提出的方法。我们使用GELAN改进的架构和训练过程与建议的PGI。上述新方法使YOLOv9成为新一代的顶级实时目标检测器。

可逆性结构

在这里插入图片描述

可逆体系结构的操作单元【3,16,19】必须保持可逆转换的特性,这样就可以保证输出特征图中的每一个层操作单元可以保留完整的原始信息。之前,RevCol[3]将传统的可逆单元推广到多层次,从而扩展了不同层次单元所表示的级数。通过对各种神经网络架构的文献回顾,我们发现有许多高性能的架构具有不同程度的可逆特性。例如,Res2Net模块[11]以分层方式将不同的输入分区与下一个分区相结合,并在向后传递之前将所有转换的分区连接起来。CBNet【34,39】重新介绍了原始输入数据通过复合主干获得完整的原始信息,并通过各种复合方法获得不同层次的多层次可逆信息。这些网络架构通常具有优异的参数利用率,但额外的复合层会导致推理速度缓慢动态Det[36]结合了CBNet[34]而高效的实时目标检测器YOLOv7[63]以在速度、参数数量和精度之间实现非常好的权衡。本文介绍了DynamicDet体系结构,作为设计可逆分支的基础。此外,可逆信息被进一步引入到所提出的PGI中。提出的新结构在推理过程中不需要额外的连接,因此它可以充分保持速度,参数量和准确性的优势

辅助监督

在这里插入图片描述

深度监督【28,54,68】是最常见的辅助监控方法它通过在中间层中插入额外的预测层来进行训练。特别是在基于变压器的方法中引入的多层解码器的应用是最常见的。另一种常用的辅助监测方法是利用相关的元信息对地物图进行预处理,并使其具有目标任务所需的属性【18,20,24,29,76】。这种类型的例子包括使用分割损失或深度损失,以提高对象检测器的准确性。重新近年来,在文献【53,67,82】中有许多报道采用不同的标记分配方法来产生不同的辅助监督机制,以加快模型的收敛速度,同时提高模型的鲁棒性。然而,辅助监督机制通常只适用于大型模型,应用于轻量级模型时,容易产生欠参数化现象,使性能变差。我们提出的PGI设计了一种重新编程多层次语义信息的方法,这种设计使得轻量级模型也可以从辅助监督机制中受益

问题描述

在这里插入图片描述

人们通常将深度神经网络的收敛困难归结为梯度消失或梯度饱和等因素,而这些现象在传统的深度神经网络中确实存在。然而,现代深度神经网络通过设计各种归一化和激活函数,已经从根本上解决了上述问题。然而,深度神经网络仍然存在收敛速度慢或收敛效果差的问题。在本文中,我们进一步探讨上述问题的性质。通过对信息瓶颈的深入分析,我们推断出该问题的根本原因是最初来自一个非常深层的网络的初始梯度在传输后很快丢失了大量实现目标所需的信息。为了证实这一推论,我们用初始权值对不同结构的深度网络进行前馈,然后在图2中对它们进行可视化和可视化。显然,PlainNet在深层目标检测中丢失了很多重要的信息。至于ResNet.CSPNet和GELAN能够保留的重要信息的比例,确实与训练后能够获得的准确性成正相关。我们进一步设计了基于可逆网络的方法来解决上述问题的原因。在这一节中,我们将阐述我们对信息瓶颈原理和可逆函数的分析

信息瓶颈原理

在这里插入图片描述

根据信息瓶颈原理,我们知道数据X在进行转换时可能会造成信息丢失,如式。

在深度神经网络中,f(·)和g(·)分别代表了两个连续层的操作。由式1可以预测随着网络层数的增加,原始数据将更容易丢失。然而,深度神经网络的参数是基于网络的输出以及给定的目标,然后通过计算损失函数生成新的梯度后更新网络。正如人们可以想象的那样,更深层次的神经网络的输出不太能够保留有关预测目标的完整信息。这将有可能在网络训练过程中使用不完整的信息,从而导致不可靠的梯度和较差的收敛

在这里插入图片描述
解决上述问题的一种方法是直接增大模型的尺寸。当我们使用大量的参数来构造模型时,它更有能力对数据进行更完整的转换。上述方法允许即使在数据前馈过程中丢失的信息仍然有机会保留足够的信息来执行到目标的映射。上述现象解释了为什么在大多数现代模型中宽度比深度更重要。然而,上述结论并不能从根本上解决超深度神经网络中梯度不可靠的问题。下面,我们将介绍如何利用可逆函数来解决问题,并进行相关分析。

可逆函数

在这里插入图片描述

当一个函数r有一个反变换函数v时,我们称这个函数为可逆函数,如式2所示。

数据X通过可逆函数转换而不丢失信息,如式所示。3.

当网络的变换函数由可逆函数组成时,可以得到更可靠的梯度来修正模型。当今几乎所有受欢迎的深度学习方法是符合可逆特性的体系结构,如式4。
在这里插入图片描述

其中l表示PreAct ResNet的第L层,f是第l层的变换函数。PreAct 加粗样式ResNet[22]以显式的方式重复地将原始数据X传递到后续层。虽然这样的设计可以让一千层以上的深度神经网络收敛得非常好但是破坏了我们需要深度神经网络的一个重要原因。也就是说,对于困难的问题,我们很难直接找到简单的映射函数将数据映射到目标。这也解释了为什么当层数较少时PreAct ResNet的性能不如ResNet。21]。

在这里插入图片描述

此外,我们尝试使用屏蔽建模,允许转换器模型实现显著的突破。我们使用近似的方法,如公式5,试图找到r的逆变换u,使变换后的特征可以保留足够的信息,使用稀疏的功能,方程式的形式。如公式5所示:
在这里插入图片描述

其中M是一个动态二进制掩码。其他常用的方法是扩散模型和变分自编码器,它们都具有求反函数的功能。然而,当我们将上述方法应用于一个轻量级模型时,就会出现缺陷,因为轻量级模型对于大量的原始数据会参数化不足。由于上述原因,将数据X映射到目标Y的重要信息(Y,X)也将面临同样的问题。对于这个问题,我们将探讨它使用信息瓶颈的概念[59],信息瓶颈的计算公式如下:
在这里插入图片描述
在这里插入图片描述
一般来说,I(Y,X)只会占据I(X,X)中很小的一部分。然而,它是关键的目标任务。因此,即使在前馈阶段丢失的信息量并不显著,只要I(Y,X)被覆盖,训练效果就会受到很大影响。由于轻量化模型本身处于欠参数化状态,在前馈阶段很容易丢失很多重要信息。因此,我们对于轻量级模型的目标是如何从I(X,X)中准确地过滤|(Y,X)。至于完全保存X的信息,那是很难做到的。基于以上分析,我们希望提出一种新的深度神经网络训练方法**,既能生成可靠的梯度来更新模型,又能适用于浅层和轻量级的神经网络**。

网络结构

在这里插入图片描述
图3所示。PGI和相关网络体系结构和方法。(a)路径聚合网络[37],(b)可逆色谱柱(RevCol)[3],©传统的深部监督,和(d)我们提出的可编程梯度信息(PGI)。PGI主要由三部分组成:(1)主枝:用于推理的体系结构;(2)**辅助可逆枝:**生成可靠的梯度,为主枝提供向后传输;(3)多级辅助信息:控制主分支学习可规划的多层次语义信息

可编程梯度信息

在这里插入图片描述
为了解决上述问题,我们支持提出了一个新的辅助监督框架,称为可编程梯度信息,如图3d。PGI主要包括三个部分,即(1)主支路,(2)辅助可逆支路,以及(3)多层次辅助信息。从图3(d)我们PGI的推理过程只使用主分支,因此不需要任何额外的推理开销。至于其他两个组件,它们用于解决或减缓深度学习方法中的几个重要问题。其中,辅助可逆支路的设计是为了解决神经网络深化所带来的问题。网络深化会造成信息瓶颈,使损失函数无法产生可靠的梯度。在多级辅助信息方面,针对深度监控带来的错误累积问题特别是多预测分支的架构和轻量级模型。接下来,我们将一步一步介绍这两个组件。

辅助可逆支路

在这里插入图片描述

在PGI中,我们提出了辅助可逆分支来产生可靠的梯度和更新网络参数。通过提供从数据映射到目标的信息损失函数可以提供指导并且避免从与目标相关性较小的不完整的前馈特征中发现虚假相关性的可能性。通过引入可逆体系结构,提出了完整信息的维护,但在可逆体系结构中增加主枝将消耗大量的推理开销。我们分析了图3(b)的架构,发现当增加由深到浅层的额外连接时,推理时间将增加20%。当我们反复将输入数据添加到网络的高分辨率计算层(黄色框)时,推理时间甚至超过两倍。
由于我们的目标是使用可逆的结构,以获得可靠的梯度,“可逆”是不是唯一的必要条件,在推理阶段。鉴于此,我们将可逆支路作为深度监控支路的扩展,设计辅助可逆支路,如图3(d)所示。对于因信息瓶颈而丢失重要信息的主支路深支,可以从辅助可逆支路中获得可靠的梯度信息。 这些梯度信息将驱动参数学习以帮助提取正确而重要的信息,而上述操作可以使主分支获得对目标任务更有效的结果。此外,由于在较深的网络中复杂的任务需要转换,可逆结构在浅层网络中的性能要比在一般网络中差。我们提出的方法并不强制主分支保留完整的原始信息,而是通过辅助监督机制产生有用的梯度来更新它。该设计的优点是该方法也适用于较浅的网络

最后,由于在推理阶段可以去除辅助可逆支路,因此可以保持原网络的推理能力。我们也可以选择PGI中任意的可逆结构来起到辅助可逆分支的作用

多层次的辅助信息

在本节中,我们将讨论多级辅助信息是如何工作的。包含多个预测分支的深度监控架构如图3©所示。对于物体检测,不同的特征金字塔可以用来执行不同的任务,例如它们可以一起检测不同大小的物体。因此,在连接到深层监控分支后,浅层特征将被引导学习小目标检测所需的特征,此时系统将把其他尺寸的目标位置作为背景。然而,上述行为将导致深度特征金字塔丢失大量的信息,需要预测的目标对象。考虑到这个问题,我们认为每个特征金字塔都需要接收所有目标对象的信息,以便Subse Quent主分支能够保留完整的信息来学习各种目标的预测
多级辅助信息的概念是插入辅助监督的特征金字塔高层与主分支之间的集成网络,然后使用它来组合来自不同预测头的返回梯度,如图3(d)所示。然后利用多级辅助信息对包含所有目标对象的梯度信息进行聚合,并将其传递给主分支进行参数更新。此时,主干特征金字塔层次结构的特征将不受某些特定对象信息的支配。结果表明,该方法可以缓解深度监控中的信息不完整问题。此外,任何综合网络都可以用于多层次的辅助信息。因此,我们可以规划所需的语义层次,以指导不同规模的网络架构的学习。

广义ELAN(GELAN)

在这里插入图片描述
图4所示。GELAN的体系结构:(a)CSPNet[64],(b)环境法网络[65],以及©提议的Gelan。我们模仿CSPNet和ELAN扩展到可
以支持任何计算块。
在这里插入图片描述

在本节中,我们将介绍所提出的新的网络体系结构-GELAN。通过结合两种神经网络架构,CSPNet[64]和ELAN[651,在梯度路径规划的基础上,**设计了具有轻量化、推理速度快、精度高的广义高效层聚合网络(GELAN)。**其总体架构如图4所示。我们将ELAN的性能进行了遗传化。[65],最初只使用卷积层的堆叠,到一个可以使用任何计算块的新架构。

试验

对比实验

在这里插入图片描述

消融实验

在这里插入图片描述
在这里插入图片描述

可视化

在这里插入图片描述
GELAN随机初始权值输出的特征图(可视化结果)经过100层后,ResNet开始图6所示。不同深度Plain Net、ResNet、CSpNet、产生前馈输出,该输出足以模糊对象信息。我们提出的Gelan仍然可以保留相当完整的信息,直到第150层,并且仍然有很好的区分直到第200层

结论

在这里插入图片描述

在本文中,我们建议使用PGI来解决的信息通信瓶颈问题和深度监控机制不适合轻量级神经网络的问题。我们设计了一个高效、轻量级的神经网络GELAN。在目标检测方面,GELAN在不同的计算块和深度设置下都具有强大而稳定的性能。它确实可以被广泛扩展为适合各种推理设备的模型。对于以上两个问题,PGI的引入让轻量级模型和深度模型在精度上都得到了显著的提升由PGI和GELAN联合设计的YOLOv9显示出了强大的竞争力。与YOLOv8相比,其出色的设计使深度模型的参数数量减少了49%,计算量减少了43%,但在MSCOCO数据集上仍有0.6%的AP改进

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

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

相关文章

Linux 恶意软件“Migo”针对 Redis 进行加密劫持攻击

安全研究人员遇到了一种新的加密劫持活动,该活动使用一种名为 Migo 的新恶意软件,该恶意软件针对 Linux 主机上的 Redis 服务器。在 Cado Security 研究人员注意到在野外利用 Redis 系统的新命令后,该活动曝光了。 初始访问 根据 Cado secu…

传统模型用腻了?GCN图卷积神经网络一键实现西储大学轴承故障诊断!发文新思路!

​ 声明:文章是从本人公众号中复制而来,因此,想最新最快了解各类智能优化算法及其改进的朋友,可关注我的公众号:强盛机器学习,不定期会有很多免费代码分享~ 目录 数据介绍与故障诊断讲解 1.数据…

实时获取 Pacific Time Zone (太平洋时区) 时间

实时获取 Pacific Time Zone [太平洋时区] 时间 1. Google -> Pacific Time2. Pacific Time - exact time nowReferences 1. Google -> Pacific Time 2. Pacific Time - exact time now https://time.is/zh/PT References [1] Yongqiang Cheng, https://yongqiang.blog…

原理图设计的通用规范

原理图各页内容依次为:封面、目录、电源、时钟、CPU、存储器、逻辑、背板(母板)接口等。 原理图上所有的文字方向应该统一,文字的上方应该朝向原理图的上方(正放文字)或左方(侧放文字&#xff…

文件操作详解(二)

目录 一.文件的顺序读写1.顺序读写函数(适合于所有的流)1.1 fgetc(读字符)1.2 fputc(写字符)1.3 fgets(读字符串)1.4 fput(写字符串)1.5 fscanf(格式化地读)1.6 fprintf(格式化地写) 2.顺序读写函数(只适用于文件流)2.1 fread(二进…

蓝桥杯嵌入式学习笔记(9):RTC程序设计

目录 前言 1. RTC介绍 2. 使用CubeMx进行源工程配置 3. 代码编程 3.1 准备工作 3.2 进行bsp_rtc.h编写 3.3 进行bsp_rtc.c编写 3.4 main.c编写 3.4.1 头文件引用 3.4.2 变量声明 3.4.3 子函数声明 3.4.4 函数实现 3.4.5 main函数编写 4. 代码实验 5. 总结 前言 因本人备赛蓝…

分布式链路追踪与云原生可观测性

分布式链路追踪系统历史 Dapper, a Large-Scale Distributed Systems Tracing Infrastructure - Google Dapper,大规模分布式系统的跟踪系统大规模分布式系统的跟踪系统:Dapper设计给我们的启示 阿里巴巴鹰眼技术解密 - 周小帆京东云分布式链路追踪在金…

WPS二次开发专题:如何获取应用签名SHA256值

作者持续关注WPS二次开发专题系列,持续为大家带来更多有价值的WPS开发技术细节,如果能够帮助到您,请帮忙来个一键三连,更多问题请联系我(QQ:250325397) 在申请WPS SDK授权版时候需要开发者提供应用包名和签…

Jmeter各组件超详细介绍

1、JMeter和Loadrunner的区别? 2、JMeter如何开发脚本的?强化脚本的技术? 代理服务器录制脚本,Fiddler录制脚本,Badboy录制脚本,根据API,手写脚本,根据抓包,手写脚本。 …

docker版Elasticsearch安装,ik分词器安装,用户名密码配置,kibana安装

1、安装es和ik分词器 创建映射目录并赋予权限: mkdir -p /docker_data/elasticsearch/conf mkdir -p /docker_data/elasticsearch/data mkdir -p /docker_data/elasticsearch/plugins chmod -R 777 /docker_data/elasticsearch编写配置文件: vi /dock…

数据结构—红黑树

红黑树介绍 红黑树(Red Black Tree)是一种自平衡二叉查找树。由于其自平衡的特性,保证了最坏情形下在 O(logn) 时间复杂度内完成查找、增加、删除等操作,性能表现稳定。 在 JDK 中,TreeMap、TreeSet 以及 JDK1.8 的 …

【C++】C++中的list

一、介绍 官方给的 list的文档介绍 简单来说就是: list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中…

帝国cms自适应html5成语大全/成语查询/成语接龙网站源码整站模板moretag插件带采集

(购买本专栏可免费下载栏目内所有资源不受限制,持续发布中,需要注意的是,本专栏为批量下载专用,并无法保证某款源码或者插件绝对可用,介意不要购买!购买本专栏住如有什么源码需要,可向博主私信,第二天即可发布!博主有几万资源) 帝国cms自适应html5成语大全/成语查询…

STM32-04基于HAL库(CubeMX+MDK+Proteus)中断案例(按键中断扫描)

文章目录 一、功能需求分析二、Proteus绘制电路原理图三、STMCubeMX 配置引脚及模式,生成代码四、MDK打开生成项目,编写HAL库的按键检测代码五、运行仿真程序,调试代码 一、功能需求分析 在完成GPIO输入输出案例之后,开始新的功能…

Plonky2.5:在Plonky2中验证Plonky3 proof

1. 引言 Plonky2.5为QED Protocol团队主导的项目,定位为: 在Plonky2 SNARK中验证Plonky3 STARK proof。 从而实现Plonky系列的递归证明。 开源代码实现见: https://github.com/QEDProtocol/plonky2.5https://github.com/Plonky3/Plonky3&a…

【Java核心能力】饿了么一面:Redis 面试连环炮

欢迎关注公众号(通过文章导读关注:【11来了】),及时收到 AI 前沿项目工具及新技术的推送! 在我后台回复 「资料」 可领取编程高频电子书! 在我后台回复「面试」可领取硬核面试笔记! 文章导读地址…

AMRT3D数字孪生引擎

产品概述 AMRT3D引擎是由眸瑞网络科技自主研发、拥有完全自主知识产权的一款全球首款轻量化3D图形引擎,引擎以核心的轻量化技术及AMRT轻量格式为支柱,专为数字孪生项目开发打造。 AMRT3D引擎提供一整套完善的数字孪生解决方案,在数据处理方…

PDF编辑和格式转换工具 Cisdem PDFMaster for Mac

Cisdem PDFMaster for Mac是一款功能强大的PDF编辑和格式转换工具。它为用户提供了直观且易于使用的界面,使常用功能触手可及,从而帮助用户轻松管理、编辑和转换PDF文件。 软件下载:Cisdem PDFMaster for Mac v6.0.0激活版下载 作为一款完整的…

自动化测试如何管理测试数据

前段时间,知识星球里有同学问到:自动化case越多,测试数据越多,数据的管理成本也越来越高,是否需要一个数据池来专门管理测试数据?这是一个好问题,也是很多测试同学在自动化测试实践中必须面对的…

LeetCode-146. LRU 缓存【设计 哈希表 链表 双向链表】

LeetCode-146. LRU 缓存【设计 哈希表 链表 双向链表】 题目描述:解题思路一:双向链表,函数 get 和 put 必须以 O(1) 的平均时间复杂度运行。一张图:知识点__slots__ 解题思路二:0解题思路三:0 题目描述&am…