PLA: 语言驱动的开放词汇3D场景理解

news2024/11/20 20:19:03

论文:https://arxiv.org/abs/2211.16312

GitHub - CVMI-Lab/PLA: (CVPR 2023) PLA: Language-Driven Open-Vocabulary 3D Scene Understanding代码:GitHub - CVMI-Lab/PLA: (CVPR 2023) PLA: Language-Driven Open-Vocabulary 3D Scene Understanding

摘要

开放词汇场景理解旨在定位和识别标注标签空间之外的未见类别。最近二维开放词汇感知的突破很大程度上是由具有丰富词汇概念的互联网级配对图像文本数据驱动的。然而,由于大规模3D文本对的不可访问性,这种成功不能直接转移到3D场景中。为此,我们建议通过为3D多视图图像添加字幕来提取预训练视觉语言(VL)基础模型中编码的知识,从而明确地将3D和语义丰富的字幕关联起来。此外,为了从字幕中促进从粗到精的视觉语义表示学习,我们设计了分层的3D字幕对,利用3D场景和多视图图像之间的几何约束。最后,通过采用对比学习,该模型学习连接3D和文本的语言感知嵌入,以完成开放词汇任务。我们的方法不仅在开放词汇语义和实例分割方面显著优于基准方法25.8% ~ 44.7%的hIoU和14.5% ~ 50.4%的hAP50,而且在具有挑战性的零采样域转移任务上表现出稳健的可转移性。

Q:怎么添加字幕以及联系3d图像和文本对,是否不通过对比学习就是正常的过程

背景

挑战

模型能理解人类标签但是无法理解开放世界。以往的视觉语言模型尽管极大地推进了开放词汇图像理解任务,但由于缺乏大规模的3D文本对,这种预训练范式在3D领域并不直接可行。为此,最初的努力[51,20]试图将3D数据投影到2D模式中,如RGB图像和深度图,使预训练的VL基础模型能够处理2D数据并实现对象级开放词汇识别。

主要问题:
1)需要多个RGB图像和深度图来表示一个3D样本,这在训练和推理过程中会产生大量的计算和内存成本。

2)其次,从3D到2D的投影会导致信息丢失,不利于从丰富的3D数据中直接学习,表现不佳

我们的初步研究表明,尖端的2D开放词汇语义分割方法MaskCLIP[52]在用于分析3D ScanNet数据集的投影2D图像时,仅获得了17.8%的mIoU,延迟增加了20倍。

3D图像和文本结合

我们利用预先训练的VL基础模型[1,40]用于描述与3D数据对齐的容易获得的图像数据(即在相应的截锥上产生图像的点集)

请注意,这些图像可以通过神经渲染(neural rendering)[9,47]或从3D数据收集管道(3D data collection pipeline)[7]获得。通过这样做,我们可以将富含语义的文本描述提取到3D领域,从而允许3D和富含词汇的文本之间的显式关联,以实现zero-shot3D场景的理解。

*3D数据收集管道(3D Data Collection Pipeline): 3D数据收集管道是一系列流程和技术,用于捕获和创建现实世界中的三维数据。这些数据可以包括三维模型、点云数据、纹理、深度图等,用于构建虚拟环境或进行计算机图形学研究。

该管道通常包括以下步骤:

1) 传感器采集: 使用不同类型的传感器,如RGB相机、深度传感器(例如Kinect)、激光扫描仪等,来捕获现实世界中的物体和场景。

2) 数据预处理: 对从传感器获得的数据进行清洗、校准和对齐,以确保数据的准确性和一致性。 重建与建模: 使用点云重建、三维建模等技术,将采集到的数据转换为数字化的三维模型。这可能涉及将点云转换为多边形网格、创建纹理映射等。

3)数据融合: 将不同传感器采集的数据融合在一起,以获得更完整和精确的三维表示。 优化和后处理: 对生成的数据进行进一步处理和优化,以提高质量并消除不完美之处。

*神经渲染(Neural Rendering): 神经渲染是一种利用神经网络技术来生成高质量的图像或视频序列的渲染方法。传统的渲染技术通常依赖于光线追踪和物理模型,而神经渲染则利用深度学习模型来预测像素的颜色值,从而在生成图像时具有更高的灵活性和效率。 神经渲染可以应用于许多领域,其中之一就是计算机图形学中的图像合成。例如,在3D数据收集管道中获得的三维模型和纹理数据可以输入到神经渲染模型中,以生成高质量的合成图像。神经渲染的一个重要应用是生成逼真的虚拟现实(VR)或增强现实(AR)场景,其中用户可以与虚拟对象进行交互,并感受到逼真的视觉效果。 因此,3D数据收集管道和神经渲染在数字化内容创作、虚拟现实等领域密切合作,前者用于捕获和创建三维数据,后者用于将这些数据转化为高质量的图像或视频序列。

使3D网络能够从(伪)字幕(caption)中学习语言感知嵌入

难点:很难将物体与标题中相应的单词联系起来

幸运的是,来自3D场景的字幕多视图图像是由3D几何图形关联的,可以利用它来构建分层的点标题对,包括场景级、视图级和实体级字幕。

这些多层次的点标题对提供了从粗到精的监督信号,有助于通过对比学习从丰富的词汇中学习足够的视觉语义表示。没有特定于任务的设计,我们的点语言关联范式(Point-Language Association paradigm,即PLA)适用于各种开放词汇的3D场景理解任务,如语义和实例分割。

ScanNet[7]和S3IDS[2]数据集的实验结果表明,我们的方法在只有类别转移的域内开放词汇任务中是有效的,即在同一数据集上进行训练和评估,在语义分割上超过了25.8% ~ 44.7%的hIoU,在实例分割上超过了14.5% ~ 50.4%的hAP50。此外,我们的模型在一个数据集(即Scan- Net)上训练,可以推广到另一个数据集(即S3IDS),同时具有数据分布和类别转移,表明其可转移性。最后,我们的模型可以从更高级的基础模型中受益,这些基础模型提供了更高质量的标题监督,显示了它的可扩展性

相关工作

3D scene understanding 3D场景理解

着重于从点云中理解物体和周围环境的语义。

任务:

三维语义分割

目的是获得点云的逐点语义预测。

代表性作品开发了基于点的解决方案[33,19],使用精心设计的点卷积操作[38,43]或变压器[24]或基于体素的方法[13,6],使用3D稀疏卷积[14]来产生逐点分割结果。

三维实例分割

进一步的目标是基于语义分割区分不同的对象实例。
现有的方法要么采用自顶向下的解决方案:
[46,45]通过预测3D边界框,然后进行掩码细化,或者通过分组点进行自下而上的方法[23,39]。

然而,现有的方法不能识别开集新类别

妈耶,以前完全没接触过感觉又要学一堆了

zero-shot和开放词汇理解

旨在识别训练数据中未标注的新类。

早期的方法主要遵循zero-shot设置,可以粗略地分为判别方法[41,3]和生成方法[4,16]。3DGenZ[28]将[4]扩展到3D场景,用于零镜头语义分割。
除了zero-shot学习之外,更普遍的开放词汇设置假设在训练期间可以访问大量词汇库[50]。

2D开放词汇学习

要么利用大量带注释的图像-文本对为扩大词汇量提供弱监督[50,54],要么利用来自大规模图像-标题对的预训练VL模型,如CLIP[34],来解决开放词汇识别问题,其中研究了知识蒸馏[36,15,49]和提示学习[12,11]。

3D开放词汇学习

还处于起步阶段,只有少量的探索集中在对象分类方面[51,20]。

原有工作试图将物体级3D点云投影到多视图2D图像和深度图上,采用预训练的VL模型生成开放词汇表预测,然而,如果应用于3D场景理解任务,计算量大,性能差。在这项工作中,我们提出了一个语言驱动的3D开放词汇表框架,该框架利用多视图图像和VL基础模型直接将3D与文本描述联系起来。它可以广泛应用于各种场景理解任务,并且在训练和推理中只使用3D网络是有效的。

注意:

1)3D点云数据(Point Cloud Data)和我们平时医疗MRI中3D体数据(Volumetric Data)是不同的!

三维体数据是基于体素(Voxel)的表示方法,类似于像素在二维图像中的作用。每个体素可以看作是三维空间中的一个小立方体单元,类似于一个像素点。三维体数据通常表示成一个三维的数组,每个数组元素存储了相应位置的属性或数值。在医学图像中,例如 CT 扫描或 MRI,体数据可以表示不同组织的密度或强度值。在计算机图形学和计算机视觉中,三维体数据常用于表示物体的形状、结构和属性。

点云数据是一组离散的三维点,每个点都包含了其在三维空间中的坐标以及可能的其他属性,如颜色、法向量等。点云可以看作是无数个离散的点在三维空间中的集合,它可以直接从传感器(例如激光雷达、深度相机)中获取,也可以通过三维重建算法从多个视角的图像中生成。点云数据常用于三维重建、环境感知、机器人导航等领域。

方法

Preliminary 准备工作

输入:p

输出:Lsem,Lloc

3D开放词汇场景理解的目的是在没有相应的人工注释监督的情况下,对未见的类别进行定位和识别。在形式上,语义和实例级别Y = {ysem, yins}上的注释分为基本(basic)的CB和未见过(novel)的的CN类别。

在训练阶段,3D模型可以访问所有点云P = {P},但只能访问基类YB的注释,不知道新类CN的注释YN和类别名称。

在推理过程中,三维模型需要对对象进行定位,并对属于基本类别和新的类别CB∪CN的点进行分类。

对于典型的场景理解网络,它由3D编码器F3D、密集语义分类头Fsem和实例定位头Floc组成

详情)。它的推理过程如下所示↓   其中p为输入点云,f p为逐点视觉特征(point-wise visual
feature)
,s为语义评分(semantic score),z为实例建议输出(instance proposal output),σ为softmax函数。

 有了这些网络预测,我们就可以用语义标签system计算语义分类损失Lsem,用实例标签yins计算本地化损失Lloc,类似于↓。注意,system和yins只与基本类别CB相关

Text-Embedded Semantic Classifier 文本嵌入语义分类器

虽然我们可以在Eq.(2)↑中训练一个带有损失函数的场景理解模型,但它实际上是一个带有close-set分类器Fsem的close-set模型,无法识别看不见的类别。在这方面,我们引入文本嵌入语义分类器来获得开放词汇模型,并提出了一个二元校准模块来纠正开放词汇推理中对基本类别的偏差

Text-Embedded Semantic Classifier

首先,如图2所示,为了使模型成为开放词汇学习者,我们将其可学习的语义分类器Fsem替换为类别嵌入f l可学习的视觉语言适配器f θ,以匹配3D特征f p与f l之间的维度,如下图所示↓

其中,f v为使用VL适配器Fθ的投影特征,fl = [fl1, fl2,···,flk]为使用BERT[10]或CLIP[34]等Frozen文本编码器Ftext对类别名称C进行编码得到的一系列类别嵌入(见图2)。

 通过计算投影点特征f v与类别f l之间的余弦相似度来进行预测,然后选择最相似的类别。

注意,在训练过程中,f只包含属于基本类别CB的嵌入,但是在开放词汇推断过程中,同时使用与基本类和新类CB∪CN相关的嵌入使用类别嵌入作为分类器,该模型可以支持任何所需类别的开放词汇推理。上述设计一般遵循LSeg[26],命名为LSeg- 3d作为基准。

  

Semantic Calibration with Binary Head 

虽然该模型已经具备了开放词汇表的能力,但我们的经验发现,它几乎不能对新类做出任何正确的预测,而是将其误认为基类

由于模型只被训练来识别基本类别,因此不可避免地会产生对基本类别过于自信的预测,而不考虑其正确性,也称为校准问题(calibration problem)[17]。

为此,我们提出了一个二元校准模块,以一个点属于基本类或新类的概率来校正语义分数s。

具体来说,利用binary head Fb来区分标注(即base)和未标注(即novel)的点。在训练过程中,Fb被优化为 ↓ 式中,BCELoss(·,·)为二值交叉熵损失,yb为binary label;,sb为预测binary score,表示点属于新类别的概率

 在推理阶段,我们利用二值概率sb来纠正过度自信的语义分数s,如下所示↓  其中sB是仅在基类上计算的语义分数,新类分数设置为零。类似地,仅对新类计算sN,将基类分数设置为零

我们的经验表明,概率校准在很大程度上提高了基本类别和新类别的性能,表明我们的设计有效地纠正了过度自信的语义预测。

Image-Bridged Point-Language Association  图像桥接 点-语言关联

我们通过采用文本嵌入分类器和二元语义校正模块,得到具有开放词汇能力的深度模型。

然而,它在新类别上的表现非常接近于随机猜测,如表5所示。

 最近开放词汇工作在2D视觉community的成功[26,36,15]表明了引入语言监督来引导视觉主干的有效性。语言监督不仅可以使视觉主干获得丰富的语义概念和大词汇量,还可以帮助将视觉和语言特征映射到一个共同的空间中,以方便多模态的下游任务。然而,互联网规模的成对点文本数据并不像社交媒体上的图像文本数据那样容易获得,这在很大程度上阻碍了语言驱动的3D理解的发展。

为了解决这一挑战,我们提出了PLA,这是一个图像桥接的点语言关联模块,可以在没有人工注释的情况下为3D场景感知提供语言监督(见图2和图3)

我们的核心思想是使用3D场景的多视图图像作为访问VL基础模型中编码的知识的桥梁。如图3所示,文本描述首先由以3D场景图像为输入的强大image-captioning模型生成,然后利用图像与3D场景之间的投影矩阵与3D场景中的一组点关联。我们详细阐述了我们的标题过程以及设计的分层点标题关联,如下所示。

Caption Multi-View Images

由于图像字幕是VL研究领域的一项基础任务[18],因此可以使用大量样本训练的各种基础模型[40,1,30]来解决该任务。

具体来说,以第i个场景第j张图像vij为输入,预训练的image-captioning模型G可以生成其对应的语言描述tv ij,如下所示↓ 令人惊讶的是,虽然G没有在3D场景理解数据集上进行专门的训练,但生成的标题中的实体已经覆盖了流行的3D场景理解数据集ScanNet的整个语义标签空间[7]。此外,标题t对房间类型、具有颜色和纹理属性的语义类别,甚至空间关系都提供了相当准确和全面的描述(参见图3中的语言监督示例和supl中的更多示例)。

Associate Point Cloud with Language

给定图像标题对,下一步是将点集p连接到语言t,以图像v作为桥接,如下所示:

 本文提出了三种不同空间尺度点集的关联模式。

(这里再放一遍图)

Scene-Level Point-Caption Association

最简单和最粗略的关联方式是将语言监督与给定3D点云场景中的所有点连接起来(?),如图3所示,我们取给定场景pj的所有2D图像字幕t vij,通过文本摘要器[25]Gsum得到场景级字幕tsj,如下所示:

其中nj为场景pj的图像个数。通过强迫每个场景p从对应的场景描述中学习,引入丰富的词汇和视觉语义关系,提高三维网络的语言理解能力

尽管场景级标题很简单,但我们从经验上发现它可以大大提高模型的开放词汇能力(参见第5节)。

View-Level Point-Caption Association

场景级标题虽然有效,但仅为场景中的所有点提供单个标题,忽略了语言与局部3D点云的关系,使其不适合场景理解任务。

在这方面,我们进一步提出了一种视点级配图关联,它利用图像和点之间的几何关系,为每个图像配文tv分配给定图像v的三维视锥(frustum)ˆpv内的一个点集(见图3中的蓝框)。

具体来说,为了获得视点集,我们首先使用深度信息d将RGB图像v反投影到3D空间,得到其对应的点集¨p:

 式中[·|·]为分块矩阵(?),T∈R3×4为投影矩阵,由相机固有矩阵和由传感器配置或成熟SLAM方法获得的刚性变换组成[8](?)

由于后投影点¨p和3D场景p中的点可能只是部分重叠,因此我们计算它们的重叠区域,得到视图级点集¨pv如下:

其中V和V−1分别为体素化和反体素化过程,R为基于半径的最近邻搜索[53]。这种基于视图的关联使得模型能够使用区域级别的语言描述进行学习,这在很大程度上增强了模型对未知类别的识别和定位能力。

Entity-Level Point-Caption Association

尽管viewlevel title已经可以将每个图像标题tv与3D场景中的具体局部点集关联起来,但这种关联仍然构建在具有多个语义对象/类别的大型3D区域(即大约25K个点)上,这不利于3D网络从标题监督中学习细粒度的逐点语义属性和实例位置信息。

在这方面,我们进一步提出了一种细粒度的点语言关联,它具有构建实体级点标题对的潜力,即带有标题的对象实例。

具体而言,我们利用相邻视图级点集的差异和交集ˆpv,以及它们对应的视图标题tv,来获得实体级关联点。首先,我们计算实体级配文te如下↓  式中,E表示从标题tv中提取一组实体词w, \和∩分别表示集合差和交集,Concate表示将所有带空格的词串联起来,形成一个实体级标题te。(?)

同样,我们可以很容易地计算出实体级点集,并将其与之前获得的实体级标题关联起来,形成点-标题对,如下所示:

对于实体级〈^pe, te〉对,我们进一步过滤它们以确保每个实体级点集〈pe至少与一个实体相关,并集中在一个足够小的3D空间上,如下所示

 其中γ是定义最小点数的标量,δ是控制最大尺寸的比率,caption te不为空。这样的约束有助于专注于细粒度的3D空间,每个标题监督中的实体更少

Comparison Among Different Point-Caption Association Manners

上述三种由粗到精的点标题关联方式实际上各有优缺点。

如表1所示,

场景级关联实现最简单,但获得的标题和点之间的对应关系最粗略(即每个标题对应超过140K个点);

视图级关联在更精细的层面上提供点-语言映射关系,享受更大的语义标签空间(即超过20倍的标题)和更本地化的点集(即每个标题的对应点减少约6倍)。

实体级关联具有最细粒度的对应关系,每个标题平均只匹配4K个点,从而进一步有利于下游任务的密集预测和实例定位。(感觉医学图像只能视图级和实例级)

我们的经验表明,细粒度关联和语义丰富的标签空间是开放词汇感知任务的两个重要因素(见第5节)。

Contrastive Point-Language Training

使用所得的点标题对〈p, t〉,我们准备引导3D网络F3D从富含词汇的语言监督中学习。在这里,我们介绍了一种通用的点语言特征对比学习,它可以应用于各种粗到细的点-标题对。

具体来说,我们首先使用预训练的文本编码器Ftext获得caption嵌入。对于关联的部分点集^p,我们从自适应特征f v中选择其对应的逐点特征,利用全局平均池化得到其特征向量f ^p,如下所示:

 然后,我们采用对比损失[50]将对应的点说明特征嵌入拉得更近,并推离不相关的点说明特征,如下所示↓ 其中nt是任意给定关联方式下的点标题对的数量,τ是一个可学习的温度,用于将logits调节为CLIP[34]。同样值得注意的是,我们在批量中删除了重复的caption,以避免对比学习过程中的噪声优化。

通过Eq.(17)和Eq.(18),我们可以很容易地计算场景级Ls cap、视图级Lv cap和实体级Le cap上的caption损失。我们最终的标题损失是如下加权组合:

其中α1、α2、α3为权衡因子。如图2,整体训练目标可写成

感觉这个真的用的好多🤔

实验

数据集

ScanNet[7]在20个类中密集注释,S3DIS[2]在语义和实例分割任务上都有13个类。

评估指标

我们分别采用广泛采用的平均交联(mIoU)和50% IoU阈值下的平均精度(mAP50)作为语义分割和实例分割的评估指标。这些指标分别在基本类和新类上标为B和N(例如mIoUB)的基础上计算。此外,我们将谐波平均IoU (hIoU)和AP50 (hAP50)作为流行的zero-shot学习工作[41,44]的主要指标,以考虑基础类别和新类别之间的划分。

架构和Baseline

我们采用流行的高性能稀疏卷积UNet[13, 6]作为3D编码器F3D, CLIP的文本编码器Ftext,两个全连接的批处理归一化层[21]和ReLU[31]作为VL适配器Fθ,一个UNet解码器作为二进制头Fb。此外,我们还利用最先进的实例分割网络SoftGroup[39]作为实例head Fins。

对于基线方法,除了上文3.2.1节中的LSeg-3D之外,我们还重新制作了两种3Dzero-shot学习方法3DGenZ[28]和3DTZSL[5],并进行了任务化修改。实现细节在supply中提供。

实验结果

 

Zero-shot 域迁移

我们的方法在解决具有类别转换的领域内开放词汇场景理解任务方面已经显示出了很好的潜力。然而,跨不同领域/数据集的可转移开放词汇学习器也值得探索,因为它们面临类别和数据分布的变化。在这方面,我们进行了零射击域转移实验,在ScanNet的基类上训练模型,并在没有微调的情况下在所有S3DIS类上进行测试。值得注意的是,S3DIS有4个在ScanNet中不存在的类别。如表4所示,我们的PLA在语义分割方面持续优于LSeg- 3D [26] 7.7% ~ 18.3% mIoU,在实例分割方面优于5.0% ~ 9.5% mAP50。这种显著的改进证实了我们的模型在类别转移和数据分布转移方面的通用性。注意,我们在这里没有使用二进制头进行域传输,因为基本/新分区是特定于数据集的。我们将域外开放词汇场景下的校准基础和新语义预测留给未来的工作

消融实验

我们通过深入的消融研究来检查我们框架的关键组成部分。实验默认在ScanNet B15/N4分区上进行。默认设置用灰色标记。

组件分析

当我们组合不同类型的caption时,模型并不总是在所有场景中获得改进,这可能是由于在某些任务上难以同时优化不同粒度的多个标题损失。

 

Caption成分分析

由于标题可以组合实体(如沙发)、实体之间的关系(如空间关系)和属性(如颜色和纹理),我们研究了哪些类型的词主要有助于开放词汇能力。

文本编码器选择

 

定性分析

 

词汇外类识别的定性结果。(a)论证识别同义类的结果。(b)为抽象概念的分割结果。(c)为数据集中未标注类别的分割结果。↑ 

Synonymical Novel Classes.

在这里,我们用相关但新的单词替换类名来进行推理。如图S9 (a)所示,当我们将“sofa”替换为“couch”或将“refrigerator”替换为“freezer”时,模型仍然可以获得高质量的分割掩码。这表明我们的模型在识别同义概念方面具有鲁棒性。

Abstract Novel Classes.

除了对象实体,我们发现该模型能够理解更多抽象概念,如房间类型。如图S9 (b)所示,通过去掉输入类别中的“浴帘”、“马桶”、“水槽”、“浴缸”,加入“浴室”,预测的“浴室”大致覆盖了真实的浴室区域。正确的例子表明,该模型还可以理解“厨房”区域。这表明我们的模型能够识别超出具体语义对象的词汇外和抽象概念

Unannotated Novel Classes

由于标注成本过高,目前的3D数据集无法对所有的类进行注释,我们的模型拥有识别那些没有注释的类的高质量预测的潜力,促进开放世界的应用。如图S9 (c)所示,该模型使用准确的掩码成功识别了数据集注释中未包含的“monitor”和“blackboard”。

附录看不动了,下次一定.jpg

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

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

相关文章

【RabbitMQ】消息队列-RabbitMQ篇章

文章目录 1、RabbitMQ是什么2、Dokcer安装RabbitMQ2.1安装Dokcer2.2安装rabbitmq 3、RabbitMQ入门案例 - Simple 简单模式4、RabbitMQ的核心组成部分4.1 RabbitMQ整体架构4.2RabbitMQ的运行流程 5、RabbitMQ的模式5.1 发布订阅模式--fanout 1、RabbitMQ是什么 RabbitMQ是一个开…

通用与垂直大模型之战:大模型驱动的商业智能变革之路

科技云报道原创。 是做通用大模型还是垂直大模型,这一个争论在“百模大战”的下讨论愈发热烈。 目前,以微软、谷歌、百度、阿里等为代表的发力于通用大模型的科技大厂,也都开始推动大模型在垂直领域的商业化落地。 比如说,微软…

【JAVA】变量的作用域与生存周期

个人主页:【😊个人主页】 系列专栏:【❤️初识JAVA】 文章目录 前言变量的作用域变量的生命周期局部变量全局变量 前言 变量,我们学习过程中逃不掉的知识,无论在哪种语言中我们都需要学会去合理的运用它,今…

电测知识分享——错过就要被淘汰掉?这个电子测试超重要项目你了解多少?

一、为什么准确性这么重要? 任何测试都会有误差的存在。假设我们现在有个项目:设计一个LNA,其噪声系数NF2dB.测试误差为0.5dB。这就意味着设计人员需将NF指标控制在1.5dB甚至更低,NF超1.5dB的产品在测试过程中就要被淘汰掉。如果…

ES6自用笔记

原型链 引用类型:__proto__(隐式原型)属性,属性值是对象函数:prototype(原型)属性,属性值是对象 ​​​​​​​ 相关方法 person.prototype.isPrototypeOf(stu) Object.getPrototypeOf(Object)替换已不推荐的Object._ _ pro…

【项目设计】负载均衡式在线OJ

🌠 作者:阿亮joy. 🎆专栏:《项目设计》 🎇 座右铭:每个优秀的人都有一段沉默的时光,那段时光是付出了很多努力却得不到结果的日子,我们把它叫做扎根 目录 👉项目地址&am…

自研的EtherCAT总线一拖四开环步进驱动器低成本方案

自研的EtherCAT总线一拖四开环步进驱动器,可以连接TwinCAT 欧姆龙 汇川PLC Codesys SOEM主站,IGH主站。 电机单轴驱动电流最大4A,可以带42/57/86电机。带12路数字输入,8路数字输出。 EtherCAT总线DC同步周期125us,支持…

“深入剖析Java多态:点燃编程世界火花“

White graces:个人主页 🙉专栏推荐:Java入门知识🙉 🙉 内容推荐:“继承与组合:代码复用的两种策略“🙉 🐹今日诗词:马踏祁连山河动,兵起玄黄奈何天🐹 快去学习 🌸思维导…

8月14日上课内容 LVS负载均衡的群集

知识点: 本章结构: 企业群集概述 集群的含义: 1、群集的含义 ①、Cluster、集群、群集 ②、由多台主机构成,但对外只表现为一个整体,只提供一个访问入口(域名与IP地址),相当于一台大型计算机。…

重要日期提醒软件是哪个?帮你记住重要日程的提醒软件

生活、工作、学习中有众多重要的日期,如生日、纪念日、会议、截止日期等,它们承载着我们珍贵的回忆和重要的任务,因此绝对不能忘记。然而在信息爆炸的时代,我们的生活和工作节奏都是非常快的,时常会忘记这些重要的日程…

关于git执行提交报错问题

1.在执行git中 执行git init 执行 git add . 执行git commit -m “first commit” 时会出现 git config --global user.email "youexample.com" git config --global user.name "username" 这个问题是由于在git中没有设置默认的user跟emali导致需要手…

Cesium加载Supermap的wmts服务

最近使用cesium 加载supermap的wmts 服务,多次遇到加载异常与白页面问题,纠结好久最后才搞定[特此记录] 1、首先找到方法加载wmts 的api 文档 官方提示使用WebMapTileServiceImageryProvider加载wmts 2、然后编辑加载代码 //1.新建ImageryProviderlet…

产品经理为什么是程序员转行的首选?答案在这里!

经常看到有程序员小哥工作几年因为压力大想转行,这种情况确实是存在的。整日泡在无穷无尽的代码中,确实是一件很枯燥的事情。这可能不仅仅是工作量方面的压力,更多的是做到一定程度后,对这个工作不够感兴趣,需要找到更…

WMS:SurfaceView绘制显示

WMS:SurfaceView绘制显示 1、SurfaceView控件使用1.1 Choreographer接受VSync信号1.2 自定义SurfaceView1.3 结果 2、SurfaceView获取画布并显示2.1 SurfaceHolder.lockCanvas()2.2 SurfaceHolder.unlockCanvasAndPost(Canvas canvas) 1、SurfaceView控件使用 1.1 Choreograph…

如何做好出入库管理工作,好用的出入库管理系统有哪些?

出入库管理通常会涉及到多个供应商和分销渠道,人为错误、货品损坏或盗窃等问题可能导致库存数量与实际不符,需要花费大量时间和人力资源。 借助出入库管理系统,能够自动记录出入库活动、生成报告,并实时跟踪库存情况,建…

小程序开发中事件绑定的执行方法

事件是渲染层到逻辑层的通讯方式。通过事件可以将用户在渲染层产生的行为,反馈到逻辑层进行业务的处理。小程序中常用属性和绑定方式如下: 当事件回调触发的时候,会收到一个事件对象 event,它的详细属性如下表所示: …

「快学Docker」探索Docker的优势和多样化用途

「快学Docker」探索Docker的优势和多样化用途 Docker的优势Docker的多样化用途总结 Docker的优势 环境一致性:传统软件开发和部署中,环境配置常常是一个棘手的问题,不同环境之间可能存在差异,导致问题难以定位和解决。Docker通过…

机器学习深度学习——注意力分数(详细数学推导+代码实现)

👨‍🎓作者简介:一位即将上大四,正专攻机器学习的保研er 🌌上期文章:机器学习&&深度学习——机器翻译(序列生成策略) 📚订阅专栏:机器学习&&…

【实战】十一、看板页面及任务组页面开发(一) —— React17+React Hook+TS4 最佳实践,仿 Jira 企业级项目(二十三)

文章目录 一、项目起航:项目初始化与配置二、React 与 Hook 应用:实现项目列表三、TS 应用:JS神助攻 - 强类型四、JWT、用户认证与异步请求五、CSS 其实很简单 - 用 CSS-in-JS 添加样式六、用户体验优化 - 加载中和错误状态处理七、Hook&…

docker安装redis7-主从模式

说明 系统版本:CentOS7.9 redis版本:7.0.5镜像 此模式为1主2从,主节点端口为6379,从节点端口为6380、6381以下所有的示例以redis7.0.5为例 下载镜像 docker pull redis:7.0.5 创建挂载路径 所有节点的数据、配置文件以及日志都挂载到宿…