SS3D翻译

SS3D

  • Abstract
  • Introduction
  • Related Work
    • Fully-Supervised 3D Object Detection
    • Weakly/Semi-Supervised 3D Object Detection
    • Sparsely-Supervised 2D Object Detection
  • Method
    • Overall Framework
    • Architecture of Detector
    • Missing-Annotated Instance Mining Module 缺失注释实例挖掘模块
      • Score-based filtering
      • IoU-guided suppression
      • Final-step instance bank processing
    • a reliable background mining module 可靠背景挖掘模块
    • point cloud filling data augmentation 点云填充数据增强模块
  • Experiments
    • Datasets and Evaluation Metrics
    • Implementation Details
    • Comparisons with State-of-the-art Methods
    • Ablation Study
    • Quality Analysis
    • Limitation
  • Conclusion

Abstract

传统的基于深度学习的3D目标检测方法需要大量的3D边界框注释来进行训练,这在实践中获取成本很高。稀疏注释的目标检测可以大幅减少注释需求,但由于缺失的注释实例在训练过程中会被视作背景,这一挑战仍然非常巨大。在本文中,我们提出了一种名为SS3D的稀疏监督3D目标检测方法。为了消除由于缺失注释而引起的负面监督,我们设计了一个缺失注释实例挖掘模块,通过严格的过滤策略挖掘正例。同时,我们还设计了一个可靠的背景挖掘模块和点云填充数据增强策略,以生成用于迭代学习的信心数据和可靠监督。所提出的SS3D是一个通用框架,可用于学习任何现代3D目标检测器。在KITTI数据集上的广泛实验表明,使用仅需20%注释的SS3D框架,可以在不同的3D检测器上实现与全监督方法相当的性能。与KITTI上最先进的半监督3D目标检测相比,我们的SS3D在相同的注释工作量下显著提高了基准性能。此外,我们的SS3D还大幅超越了最先进的弱监督方法,突显了其有效性。

Introduction

在这里插入图片描述

三维(3D)目标检测旨在从3D传感器数据(例如,激光雷达点云)中定位和分类对象,由于其在自动驾驶、增强/虚拟现实以及室内机器人技术等多种应用中的广泛性,已经引起了越来越多的关注。最近,基于体素或点特征的一些方法已经被提出,并且在大规模基准数据集上取得了高性能。然而,大多数提出的3D目标检测器需要全监督学习,这意味着模型学习需要一个完全注释的数据集。与2D图像对象相比,注释3D点云对象更加劳动密集:注释者必须在整个3D场景中切换视点或缩放,以仔细标记每个3D对象。因此,开发具有同等检测性能的3D检测器,同时只需要轻量级对象注释,对于实际应用来说是一个有意义的问题。

最近,一些工作已经被提出来解决这个问题。在[10]中,采用了弱监督学习策略。具体来说,采用了点注释方案来减轻注释边界框的负担。然而,点注释提供的监督信息较弱,因此必须额外提供一定数量的全注释,以实现最佳性能。在[24, 33]中,使用了半监督学习策略,其中只有部分数据集被注释,其余未标记。利用教师-学生框架将信息从标记数据传递到未标记数据。然而,当标记和未标记数据之间的差距较大时,信息传递往往会失效。此外,尽管只有部分数据集被注释,但标记个别场景仍然需要不可忽视的劳动,尤其是对于拥挤场景中有许多3D对象的场景,如图1所示。

在本文中,我们采用了稀疏注释策略,只注释场景中的一个3D对象,如图1左侧所示。这样,我们能够为每个场景获得一个3D对象的全面监督信息。直观地说,这有助于学习未标记对象的信息,因为场景内信息传递比跨场景知识传递要容易得多。然而,稀疏注释目标检测也带来了新的挑战:缺失注释的实例将带来错误的监督信号(即作为负样本)干扰网络的训练。在训练期间,由于缺失注释的实例及其附近的区域可能被错误地标记为背景,当梯度反向传播时,网络的权重更新将显著误导。这一挑战已经在2D稀疏目标检测方法[11, 27]中通过利用2D对象之间的重叠或层级关系信息得到解决。然而,这样的信息在3D数据集中可能不存在,例如在KITTI[2]中,这阻碍了直接将这些方法应用于3D应用。

为了应对这一挑战,我们提出了一种新颖有效的稀疏注释3D目标检测方法,即SS3D,它可以应用于任何先进的3D检测器。我们SS3D的主要思想是迭代挖掘高置信度的正例和背景,并进一步使用这些生成的数据来训练3D检测器。我们设计了两个有效的模块,即缺失注释实例挖掘模块和可靠背景挖掘模块,分别挖掘可靠的缺失正例和背景。这确保了3D检测器能够使用置信度较高的监督数据进行训练。通过这种设计,与使用完全注释数据集训练的3D检测器相比,我们的SS3D可以实现相当性能,仅需20%的注释用于稀疏注释数据集。

Related Work

Fully-Supervised 3D Object Detection

现有的3D检测方法大致可以分为两类:基于体素的方法和基于点的方法。对于基于体素的方法,体素化是将不规则点云转换为规则体素以应用传统的2D或3D卷积的常见措施。在VoxelNet中,采用了体素特征编码层,用于从点云中提取统一的特征表示。SECOND通过修改稀疏卷积算法,有效地从3D体素中提取特征。TANet利用堆叠的注意力模块来开发多层次的特征关系。Part-A²提出了一个两阶段网络,通过分组对象内部部分特征来探索空间关系。SE-SSD采用了一对教师和学生检测器来提高性能,而不在推理中引入额外计算。Voxel R-CNN设计了一个体素RoI池化,直接从3D体素特征体积中聚合空间上下文。基于点的方法直接将原始不规则点作为输入,提取局部和全局特征。PointRCNN融合了从3D提议中提取的特征和原始点,以进行精细化。STD提出了一个新颖的球形锚点,以减少锚点数量,并利用从稀疏到密集的思想来提高性能。3DSSD提出了一种基于特征距离的融合采样策略,以保留丰富的信息。PV-RCNN利用体素到关键点的场景编码和关键点到网格的特征聚合来提高性能。尽管先前的工作取得了显著进展并展示了令人印象深刻的性能,但这些结果在很大程度上依赖于大规模的手动注释,这些注释既耗时又劳力密集。我们提出的方法采用了稀疏注释策略,每个场景仅注释一个对象,同时实现了与这些全监督方法相当的性能。此外,无论是基于体素还是基于点的检测器,我们的SS3D都可以直接应用。

Weakly/Semi-Supervised 3D Object Detection

为了减少3D对象的注释,WS3D采用了弱监督学习策略,通过基于点击注释方案的两阶段架构实现。WS3D在第一阶段通过点击注释的场景生成圆柱形对象提议,并在第二阶段使用少量标注实例细化提议以获得立方体。然而,弱监督点注释提供的监督信息较弱,因此必须额外提供一定数量的全注释。同时,基于VoteNet,SESS首先提出了一种半监督3D目标检测方法,利用互为师生的框架来强制实施三种一致性损失。在SESS之后,3DIoUMatch被提出来估计3D IoU作为定位度量,并设置了一个自调整阈值来过滤伪标签。

与这些方法不同,我们提出的方法在每个场景中都精确地提供了对象的监督信息,这使我们能够在场景内传递可靠的监督信息。直观地说,这将优于跨场景传递监督信息,尤其是对于变化较大的场景。

Sparsely-Supervised 2D Object Detection

稀疏注释目标检测是另一种减少网络对数据注释依赖的方法,它只注释部分对象。由于部分实例未被注释,当梯度反向传播时,网络的权重更新可能会显著误导。为了解决这个问题,现有的先进方法采用了重新加权或重新校准RoI(兴趣区域)损失的策略,以消除未标记实例的影响。Soft sampling利用RoI之间和已注释实例之间的重叠来重新加权损失。基于Focal loss的背景重新校准损失将未标记实例视为硬负样本,并重新校准它们的损失,这仅适用于单阶段检测器。特别是,部分感知采样通过使用人类直觉来忽略标记和未标记实例之间的层次关系,从而忽略了部分类别的分类损失。Co-mining提出了一个共同生成模块,将未标记实例转换为正面监督。上述稀疏注释目标检测方法都是针对2D图像对象的。由于2D图像和3D点云之间的模态差异,这些方法不能直接应用于我们的3D目标检测任务。例如,在KITTI中,3D对象自然分离,这意味着对象之间的重叠为零,对象之间不存在层次关系。与重新加权和重新校准方法相比,在本文中,我们提出了一种新颖的稀疏注释3D目标检测方法,利用缺失注释实例挖掘模块和简单但有效的背景挖掘模块来挖掘置信度高的正例和背景,这对于训练高性能检测器至关重要。

Method

在这里插入图片描述

Overall Framework

作为一个通用框架,所提出的SS3D旨在促进3D检测器从稀疏注释数据集中学习,以获得最佳的检测性能。如图2所示,所提出的SS3D主要由缺失注释实例挖掘模块、可靠背景挖掘模块、点云填充数据增强和实例库组成。给定一个3D检测器,最初,我们在稀疏注释的数据集上从头开始训练检测器。然后,我们使用检测器通过缺失注释实例挖掘模块中的严格过滤策略,从训练数据中的点云挖掘可靠的缺失注释实例。我们将挖掘出的实例(橙色)和原始注释实例(红色)存储到实例库中。依赖于实例库,我们进一步使用检测器通过可靠背景挖掘模块挖掘可靠的背景。基于这两个模块的结果,我们利用所提出的点云填充数据增强构建一个置信的数据集,该数据集可以进一步用于重新训练检测器。通过这种迭代学习方式,我们最终可以获得一个高性能的3D检测器。具体细节如下所述。

Architecture of Detector

我们的方法是一个用于使用稀疏注释数据集训练3D目标检测器的通用框架,可以直接应用于各种检测器。在本文中,我们使用PointRCNN、Part-A2、PV-RCNN和VoxelRCNN等最先进的3D检测器来验证我们的SS3D。我们以PV-RCNN为例,简要回顾这个方法。PV-RCNN是一种高性能且高效的两阶段点云检测器,通过新颖的体素集合抽象模块,深度整合了多尺度3D体素卷积神经网络(CNN)特征和基于PointNet++的集合抽象特征到少量关键点。

Missing-Annotated Instance Mining Module 缺失注释实例挖掘模块

在这里插入图片描述

该模块结合了IoU引导的抑制和基于分数的 过滤方案作为挖掘未标记正实例的强化措施作为高质量的伪实例。然后,将选定的伪实例存储在实例库中,以进一步指导可靠的背景挖掘模块。

Score-based filtering

如图,首先,原始输入点云 x 通过顶部检测器生成预测 pt 。然后,我们执行一组全局增强,其中包括对 x 进行随机旋转、翻转和缩放以生成增强点云 x,与pt 不同步以生成增强预测 pt’,底部检测器基于 x 生成预测 pb 。我们设置一个分类置信度阈值 τ c l s τ_{cls} τcls 来过滤掉可能包含错误类别的 pb 和 pt’ 的预测,然后获得过滤后的预测

IoU-guided suppression

仅基于分数的过滤策略无法获得可靠的预测。受 FixMatch [20] 的启发,我们进一步提出了一种有效的 IoU 引导的抑制策略。得到过滤后的预测后,我们计算 pt 和 pb 的每对边界框之间的 IoU 矩阵,旨在匹配来自不规则点云的两个预测的框。然后我们过滤掉IoU小于阈值 τ I o U τ_{IoU} τIoU的不匹配的配对边框,从而进一步提高伪实例的质量

Final-step instance bank processing

将基于分数的过滤与IoU引导的抑制相结合,我们可以有效地避免生成低质量的伪实例,并最终获得一组边界框 { b r } n = 1 N \{b^{r}\}_{n=1}^{N} {br}n=1N,其中 N N N r r r 分别是训练场景的数量和场景中保留的边界框数。然后,我们计算边界框 b n r b^{r}_{n} bnr 与相同索引 n n n 的实例库 B \mathcal{B} B 中的边界框 b B n b_{\mathcal{B}}^{n} bBn 之间的 IoU,并选择不与 b B n b_{\mathcal{B}}^{n} bBn 重叠的 b r n b_{r}^{n} brn。最后,选择的边界框(橙色)以及相应的预测类标签和点云被存储在实例库中,该库还包含所有稀疏注释的实例

a reliable background mining module 可靠背景挖掘模块

在这里插入图片描述

依托更新的实例库,我们利用提出的可靠背景挖掘模块来挖掘背景点,并进一步消除由于缺失注释实例而导致的负面监督信息。与现有的针对错误监督的重新缩放策略相比,我们的方法更加简单有效。
如图4所示,为了获得可靠的背景点云,我们采用尽可能寻找潜在前景点的策略可能的。具体来说,我们使用具有低置信度分数阈值 τ l τ_l τl 的检测器来获得目标检测结果。同时,我们从检测器中删除了非极大值抑制(NMS)操作。 这样,我们确保结果尽可能包含潜在的前景点, 这意味着原始点云的其余部分往往是可靠的背景点云。为了生成新的训练数据,我们移除检测到的目标的3D边界框(与实例库中的实例不重叠的目标)内部的点数据

point cloud filling data augmentation 点云填充数据增强模块

可靠的背景选择处理完成后,点云场景出现了断裂。同时,场景中的实例可能非常稀疏。这些问题会显著降低网络的性能。受[28]提出的地面真值(GT)采样增强启发,我们进一步提出了一种点云填充数据增强策略来解决这些问题。对于每个保留的边界框,我们从实例库中随机选择一个边界框,并将相应的点云放置在所选边界框的中心处(如果所选边界框与断裂场景中的现有边界框不重叠)。然后,我们利用GT采样增强[28]来进一步增强当前场景。最后,我们获得了具有可信正例和可靠背景的合并点云。
通过这种设计,我们可以修复由于之前删除点而导致的密度不均匀性,同时,更多的地面真值框也减少了在每个场景中只稀疏标注了少量实例时对网络的负面影响。通过前面的处理,可能对网络造成负面影响的模糊点大部分被移除了,包括那些由我们的缺失注释实例挖掘模块缺失注释的实例。
second【28】:我们引入了一种数据增强方法。首先,我们从训练数据集中生成了一个数据库,其中包含所有地面真相及其相关的点云数据(地面真相的三维边界框内的点)的标签。然后,在训练过程中,我们从这个数据库中随机选择一些地面事实,并通过串联的方式将它们引入到当前的训练点云中。使用这种方法,我们可以大大增加每个点云的地面真实值的数量,并模拟在不同环境中存在的对象。为了避免物理上不可能出现的结果,我们在对地面真相进行采样后进行了碰撞测试,并删除了任何与其他物体碰撞的采样对象。
此外,生成了可信数据,为以迭代方式重新训练检测器提供了重要的监督信息。算法1总结了我们的SS3D。
在这里插入图片描述

Experiments

Datasets and Evaluation Metrics

我们遵循最新的方法[4, 8, 17, 18, 34, 35],在KITTI 3D和BEV目标检测基准[2]上评估我们的SS3D。这是一个广泛用于性能评估的流行数据集,包含3D目标检测的完整注释。数据集包含7481个训练样本和7518个测试样本,我们进一步将训练样本划分为3712个样本的训练子集和3769个样本的验证子集,这是一种常见的做法[16]。此外,由于对象的遮挡和截断级别,KITTI基准测试在评估中有三个难度级别:简单、中等和困难。遵循[31]中的稀疏注释数据集生成方法,我们从训练子集中随机保留每个3D场景中的一个注释对象,以生成极其稀疏的分割。与KITTI上所有对象的完整注释相比,极其稀疏的分割只需要用20%的对象进行注释。为了公平比较,我们报告了在40和11个召回位置的mAP,对于三个类别:汽车、行人和骑自行车的人,分别使用3D重叠阈值为0.7、0.5、0.5。

Implementation Details

首先,我们按照PCDet[23]中的全监督方式使用极其稀疏的分割来训练我们的检测器,并保持使用检测器的相同监督损失。在训练阶段,我们采用ADAM优化器和余弦退火学习率[9],批量大小为8,训练6个周期。我们将低分阈值τl设为0.01,用于可靠背景选择。对于基于分数的过滤和IoU引导抑制,我们将置信度分数阈值τcls和IoU阈值τIoU都设为0.9。注意,我们将迭代学习次数M设为10。在我们的全局增强中,我们以0.5的概率随机沿X轴和Y轴翻转每个场景,然后用从[0.8, 1.2]中均匀采样的因子进行缩放。最后,我们围绕Z轴旋转点云,随机角度从 −π/4,π/4范围内采样。

Comparisons with State-of-the-art Methods

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

我们比较所提出的方法与四种最先进的全监督方法:PointRCNN[17]、Part-A2[18]、PVRCNN[16]、Voxel-RCNN[1],在完整注释的训练分割和极其稀疏的训练分割上。这些在极其稀疏分割上训练的检测器被用作我们方法的初始检测器。不同方法的结果如表1所示。从表中可以看出,由于缺失注释实例的负面影响,这四个检测器在极其稀疏分割上训练的性能平均下降了10%以上。我们的方法显著提高了这些检测器的性能,使它们接近全监督的性能,这表明我们的方法在挖掘缺失注释实例和可靠背景方面具有良好的效果。我们SS3D预测结果的可视化如图5所示。为了更好地查看结果,我们将3D点云的预测投影到相应的彩色图像上。从这个图中我们可以看到,所提出的方法具有高质量的预测结果。
在这里插入图片描述

与半监督方法的比较:我们将所提出的方法与基于先进检测器PV-RCNN[16]的半监督方法3DIoUMatch[24]进行比较。为了进行公平比较,我们也采用PV-RCNN作为检测器,并保持所有方法训练时注释对象的数量相同。在KITTI训练分割中,共有3712个场景,这些场景包含17289个汽车、行人和骑自行车的对象。对于半监督方法,1%标记的数据意味着37(3712×1%)个场景,其中包括平均172(17289×1%)个用于训练的标记对象。因此,对于我们极其稀疏分割中的1%标记数据,我们随机选择包含172个标记对象的172个场景进行训练。我们还测试了两种方法在2%标记训练数据的情况下的性能。不同标记数据比例的结果可以从表2中看到,这表明我们的SS3D在所有三个类别和三个难度级别下显著优于当前最先进的3DIoUMatch。与3DIoUMatch相比,我们网络的更大优势在于,训练过程中只使用了172个场景。我们放弃了剩余的场景,而3DIoUMatch在训练分割中使用了所有3712个场景进行信息传递。
在这里插入图片描述

与弱监督方法的比较:在弱监督方法中,WS3D[10]使用了500个带有中心点击标签的场景和534个精确注释的实例来训练网络。由于标准检测器不适用于中心点击标签,我们只使用相同的534个精确注释实例来训练我们提出的SS3D。表3显示了比较结果。显然,我们的SS3D在所有难度级别上都取得了最高结果,与WS3D相比有了大幅度的提升,同时标记工作量更少。

Ablation Study

在这里插入图片描述

在本节中,我们进行了一系列消融研究,以分析SS3D中所提出的模块的效果。遵循一般原则,所有模型都在KITTI极其稀疏分割上进行训练,并在验证分割上进行评估。我们以Voxel-RCNN[1]作为检测器来进行消融研究,因为其训练速度快,我们使用其他检测器的方法类似。表4总结了我们的IoU引导抑制(IoU-GS)、基于分数的过滤(Score-BF)、可靠背景挖掘模块(RBMM)和点云填充数据增强(PCFD)策略的消融结果。所有结果都是在11个召回点上报告的。

可靠背景挖掘模块的效果:表4的第1行中,我们移除了所有模块,因此它代表了在极其稀疏分割上训练的标准Voxel-RCNN检测器。在第2行中,我们添加了RBMM,并用GT采样[28]替换了PCFD。此外,实例库仅包含稀疏注释的实例,而没有更新。我们的可靠背景挖掘模块显著提高了所有三个难度级别的性能。这种大幅度的改进表明,挖掘可靠的背景有助于更好地消除缺失注释实例引起的负面监督。

点云填充数据增强策略的效果:在表4的第3行中,通过结合RBMM和PCFD,我们的SS3D进一步提高了性能。这表明我们的PCFD通过修复由于之前的点云移除操作而导致的原始点云的结构信息,优于GT采样数据增强。

缺失注释实例挖掘模块的效果:如表4的第4和第5行所示,无论是单独使用IoU-GS还是Score-BF进行伪实例过滤,与仅使用可靠背景挖掘模块相比,都有一定的改进,表明更多的正例可以促进更好的模型优化。此外,通过结合IoU-GS和Score-BF获得高质量的伪实例,我们的SS3D将简单、中等和困难的性能分别提高了约1.88、6.16和2.51个百分点,如第3和第6行所示。这验证了联合过滤策略的有效性,并显示了网络中高质量伪实例的重要性。

Quality Analysis

在这里插入图片描述

在本节中,我们探讨了我们的SS3D如何在极其稀疏分割上进行训练,并进一步分析了实例库中伪实例的质量。图6中的曲线显示,在训练过程中,生成的伪实例对缺失注释实例的覆盖率逐渐增加。这里,预设阈值下的覆盖率意味着具有IoU大于阈值的伪标签与缺失注释实例配对的百分比[24]。从图6中我们可以看到,一开始,由于严格的过滤机制,伪实例的覆盖率相对较低。随着训练的进行,改进的检测器导致过滤的通过率更高,因此伪实例的覆盖率更高,这反过来又推动了SS3D的发展。在训练结束时,IoU@0.7的覆盖率可以达到0.75,这意味着我们的网络有效地挖掘了75%的未标记实例。

Limitation

原则上,全监督方法的性能是我们SS3D的上限。然而,在表1中,我们的方法甚至在某些情况下超过了全监督方法,这可能是因为我们的方法可以挖掘原始数据集中的一些缺失注释实例,而这些缺失实例可能会对全监督方法的训练产生负面影响。未来的工作计划验证上述假设。

Conclusion

在本文中,我们提出了一种名为SS3D的新颖方法,用于从稀疏注释的点云中迭代学习3D目标检测器。通过结合我们的缺失注释实例挖掘模块和可靠背景挖掘模块,我们大大确保了每个场景在迭代训练检测器时都具有置信的监督信息,从而消除了稀疏注释策略中缺失注释实例的负面影响。此外,我们的SS3D是一种通用方法,可以应用于学习任何先进的检测器。广泛的实验验证了我们提出的方法的有效性,仅需20%的注释,我们的网络就取得了令人印象深刻的结果,接近于使用完全注释数据集训练的检测器。此外,我们的方法在KITTI上大幅超越了当前的半监督和弱监督方法。

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

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

相关文章

什么是好用的人才测评系统?

对于企业HR来说,在人才测评是必不可少的工具,什么是好用的人才测评? 1、测评效果靠谱;2、操作实施简便。 人才测评的目的是为找到最适合企业的人选,测评就是一个方法,一个工具,能达到预期目的才…

【笔试强训】Day3 --- 简写单词 + dd爱框框 + 除2!

文章目录 1. 简写单词2. dd爱框框3. 除2! 1. 简写单词 【链接】:简写单词 解题思路:简单模拟题,主要是处理⼀下输⼊的问题。(也可以利用string类中的find函数,但时间复杂度会偏高) #include …

FreeRTOS之静态创建任务

1.在前面的文章中介绍了FreeRTOS的动态创建方法,本文介绍一下FreeRTOS的静态任务创建方法xTaskCreateStatic()。相比较动态任务创建过程,静态创创建任务的过程稍显复杂。主要步骤为: (1)配置相关的宏定义:…

16.4 冒泡排序

题目简介 排序动画模拟网站 phttps://www.cs.usfca.edugalles/visualization/ComparisonSort.htm 简洁版 #include <stdio.h> int main() {int a[10]{9,3,6,5,8,2,4,1,7,0};int n sizeof(a)/sizeof(int);int temp 0;for(int j0;j<n-1;j){ //外层循环循环9轮即可f…

怎么在本地debug使用idea计算对象内存

在工作的过程中&#xff0c;我们遇到一个觉得比较大的对象的时候&#xff0c;经常需要判断一个对象大小&#xff0c;以此来决定是将数据放在内存还是缓存来提升性能&#xff0c;我看到现在很多文章介绍的要么是不完善&#xff0c;要么是不够准确&#xff0c;因此打算自己写一篇…

48-PCIE转串口和并口电路设计

视频链接 PCIE转串口和并口电路设计01_哔哩哔哩_bilibili PCIe转串口和并口电路设计 1、PCIe转串并口电路设计基本介绍 2、PCIe转串口和并口的方案(京东) 2.1、PCIe转串口 2.1.1、ASIX (亚信)MCS9922-PCIe转2路RS232扩展卡 2.1.2、ASIX (亚信)MCS9900-PCIe转4路RS232扩展卡…

【Java基础】19.继承(面向对象的三大特征:封装、继承、多态)

文章目录 前言一、继承的概念二、继承的步骤1.类的继承格式2.继承的实例3.继承类型 三、继承的特性四、继承的关键字1.extends关键字2.implements关键字3.super 与 this 关键字4.final 关键字 五、构造器 前言 一、继承的概念 继承是java面向对象编程技术的一块基石&#xff…

适合生产制造企业用的ERP系统有哪些?

适合生产制造企业用的ERP系统有哪些&#xff1f; 想选择适合生产制造企业的ERP&#xff0c;首先了解市面上有哪些ERP系统 市面上的ERP系统主要分为三大类&#xff1a; 1、垂直领域的ERP系统&#xff1a;这些系统是针对特定行业或垂直市场定制的ERP解决方案&#xff0c;通常具…

功能测试前景揭秘:会被淘汰吗?

在当今快速发展的信息时代&#xff0c;软件已经成为我们工作、学习乃至生活中不可或缺的一部分。随着技术的不断进步和应用的广泛普及&#xff0c;软件测试作为保障软件质量和功能实现的关键步骤&#xff0c;其职业发展路径也受到了广泛的关注。特别是针对功能测试这一细分领域…

我与C++的爱恋:隐式类型转换

​ ​ &#x1f525;个人主页&#xff1a;guoguoqiang. &#x1f525;专栏&#xff1a;我与C的爱恋 朋友们大家好&#xff0c;本篇内容我们来介绍初始化列表&#xff0c;隐式类型转换以及explicit的内容 一、初始化列表 1.1 构造函数体赋值 在创建对象时&#xff0c;编译器…

etcd campaign

1. 引言 本文主要讲解使用etcd进行选举的流程&#xff0c;以及对应的缺陷和使用场景 2. etcd选举流程 流程如以代码所示&#xff0c;流程为&#xff1a; clientv3.New 创建client与etcd server建立连接 concurrency.NewSession 创建选举的session&#xff0c;一般会配置ses…

java:Java中的接口

什么是接口 概念&#xff1a; 官方解释&#xff1a;Java接口是一系列方法的声明&#xff0c;是一些方法特征的集合&#xff0c;一个接口只有方法的特征没有方法的实现&#xff0c;因此这些方法可以在不同的地方被不同的类实现&#xff0c;而这些实现可以具有不同的行为&#x…

Java Maven项目推送到 Maven 中央仓库

准备阶段 namespace 域名认证 当需要在 sonatype 认证 com.xxx命名空间时&#xff0c;需要将 .xxx.com 配置域名解析。 记录类型&#xff1a;TXT 文本内容&#xff1a;验证的 key。 GPG 公私钥生成 GPG 下载地址&#xff1a;https://www.gnupg.org/download/index.html M…

零代码编程:用kimichat将mp4视频批量转为mp3音频

一个文件夹里面有多个子文件夹&#xff0c;里面的视频需要转成为mp3音频格式。可以在kimichat中键入提示词&#xff1a; 你是一个Python编程专家&#xff0c;要完成一个Python脚本的编写任务&#xff0c;具体步骤如下&#xff1a; 打开文件夹&#xff1a;D:\CHATGPT For TikT…

SpringBoot中异步执行事务REQUIRED和REQUIRED_NEW的区别

springboot中事务的使用方式 在spring的bean中&#xff0c;要开启数据库事务只需要在方法中标注注解 Transactional 注解常用的参数有 Class[] rollbackFor() default {} 指定回滚异常Propagation propagation() default Propagation.REQUIRED 事务的传播机制Isolation iso…

【Spring进阶】基于注解的面向切面编程(AOP)详解

hi&#xff0c;我是程序员王也&#xff0c;一个资深Java开发工程师&#xff0c;平时十分热衷于技术副业变现和各种搞钱项目的程序员~&#xff0c;如果你也是&#xff0c;可以一起交流交流。 今天我们聊一聊Spring中的AOP~ AOP的核心概念 面向切面编程&#xff08;AOP&#xff…

【一】ECharts----【基本概念、基本实例】

目录 零.前言 一.ECharts的安装 1.1独立版本的安装 1.2CDN的安装 1.3NPM的安装 二.ECharts实例 三.系列(series) 四.创建一个ECharts图表的基本步骤 4.1创建一个DOM容器 4.2使用DOM节点初始化ECharts对象 4.3设置配置信息 4.3.1图表标题 4.3.2提示信息 4.3.3图例组…

提取点云-------PCL

提取点云 /// <summary> /// VoxelGrid滤波下采样 /// </summary> /// <param name"cloud">需要滤波的点云</param> /// <param name"lx">三维体素栅格的x</param> /// <param name"ly">三维体素栅格…

全新Linux教程-驱动大全-PCI和PCIe子系统-P2-PCI设备的访问方法-非桥设备

主要讲PCI设备的硬件访问方法。 1、PCI的硬件结构 CPU发出的地址是CPU地址&#xff0c;可能是访问底下任何一个设备。地址范围不一样&#xff0c;访问到的外设就不一样。在嵌入式中&#xff0c;通常将4G内存地址空间分成好几个区域&#xff0c;不同的访问分给不同的地址。桥内…

Github首页美化(updating)

Github首页美化 一、新建仓库二、美化Github首页主页访问量统计仓库状态统计常用语言占比统计社交链接 界面展示 一、新建仓库 对Github首页进行美化&#xff0c;需要新建一个仓库名和自己 Github 用户名相同的仓库&#xff1b;并且需要添加一个 README.md自述文件即可。 如果…