论文阅读:Efficient Point Cloud Segmentation with Geometry-Aware Sparse Networks

来源:ECCV2022

链接:Efficient Point Cloud Segmentation with Geometry-Aware Sparse Networks | SpringerLink

0、Abstract

        在点云学习中,稀疏性和几何性是两个核心特性。近年来,为了提高点云语义分割的性能,人们提出了许多通过单个表示或多个表示的方法。然而,这些作品未能保持性能、效率和内存消耗之间的平衡,无法恰当地集成稀疏性和几何体。为了解决这些问题,我们提出了几何感知稀疏网络(GASN),利用点云在单个体素表示中的稀疏性和几何特征。GASN主要由稀疏特征编码器和稀疏几何特征增强两个模块组成。稀疏特征编码器提取局部上下文信息,稀疏几何特征增强增强稀疏点云的几何特性以提高效率和性能。此外,我们在训练阶段提出了深度稀疏监督,以帮助收敛和缓解内存消耗问题。我们的GASN在SemanticKITTI和Nuscenes数据集上都实现了最先进的性能,同时运行速度显著加快和消耗更少的内存。

1 Introduction

        大规模室外点云分割一直是自动驾驶系统的关键任务,对效率、性能和内存消耗都有很高的要求。PointNet[29]和PointNet++[30]是直接在原始点云上操作,维护和利用点云的核心属性之一点态几何(精确测量信息)的开创性工作。然而,由于内存消耗和运行时效率的原因,很难将这些方法应用到户外场景中。RandLA[14]采用了随机抽样策略来减少点数以提高效率,但这会导致一些信息的丢失。随着稀疏卷积的普及[10,50],基于稀疏体素的表示(如AF2S3Net[6]和Cylinder3D[59])也有了一定的进展,稀疏体素表示是一种保留度量空间的表示。与点表示方法相比,稀疏体素表示方法的优点在于能够有效地快速扩展接受域,这是点云的另一个重要特性。此外,基于稀疏体素的表示方法,聚集了局部邻域内的点特征,可以显著减少内存的使用。此外,传统的或目前流行的卷积神经网络(convolutional neural networks, cnn)可以直接应用于提取更好的上下文信息。

        最近,一些作品认识到单一表示的局限性,并通过组合多个表示来探索更丰富的信息。PVCNN[21]融合了基于点和基于体素的表示与MLP层和密集的3D卷积层,但没有考虑到点云稀疏性。SPVCNN[35]和DRINet[52]设计了稀疏卷积层和逐点运算层,融合了稀疏性和几何特征。此外,RPVNet[47]结合了范围视图、点和体素表示用于点云分割。当前多表示学习的总体框架是利用稀疏卷积进行局域性和稀疏性学习,利用点态运算进行几何学习,目的是将稀疏性和几何性结合起来,以获得更好的性能和效率。虽然这些方法带来了一些性能改进,但由于额外的视图或表示带来了额外的计算成本,它们的效率不足以满足实时系统的需要。同时,从这些方法的实验结果来看,基于体素的表示仍然是主要的表示方法,这些方法已经取得了不错的性能。受到这些观察的启发,我们提出了几何感知稀疏网络,以探索基于单个稀疏体素表示的额外几何属性。我们的几何感知稀疏网络稀疏性几何性结合在一个表示中,而不引入多表示融合的额外计算成本。我们的几何感知稀疏网络有两个模块:稀疏特征编码器(SFE)稀疏几何特征增强(SGFE)。每个模块以另一个模块的输出作为输入,以较低的计算成本和内存使用量充分探索点云的稀疏性和几何形状。在SGFE中(如图1所示),我们提出了一种新型的多尺度稀疏投影层,以探索更多的几何形状和关注尺度选择的多尺度特征选择。除此之外,与最常见的密集方式相比,我们采用了深度稀疏监管来缓解内存消耗的压力。

我们的贡献总结如下:

•我们提出了一种新颖的网络架构,以充分利用稀疏性和几何性质。提出了稀疏几何特征增强中的多尺度稀疏投影层和注意尺度选择来增强几何特征学习。

•提出深度稀疏监管,以稀疏方式设计监管,以降低存储成本。

•我们在大规模户外场景数据集上评估了我们提出的方法,包括SemanticKITTI[1]和nuScenes-lidarseg[3],以证明我们的方法的有效性。在Nvidia RTX 2080 Ti GPU上,我们在两个数据集上都实现了最先进的性能,平均运行速度为59 ms。

2 Related Work

Indoor Point Cloud Segmentation.

室内场景中的点云往往具有定位紧密、范围小的点。现有的室内点云分割方法可以根据其模型表示进行分类。对于基于点的方法,PointNet[29]、PointNet++[29]以及他们基于类似架构的相关作品[19,20,28,31,45,53]是本任务中比较流行的模型。这些作品大多探索了当地的邻里环境,同时保留了点云的固有几何形状。它们使用不同的分组和排列不变操作来提高性能。其他主流方法[16,17,21,25,33]遵循体积表示,将空间划分为离散像素/体素,然后将2D/3D CNN架构应用于规则表示。基于图的点云学习方法[37,40,41,43,48,55]也很流行,这是因为图具有处理无序性和建模点之间关系的能力。目前,随着变压器的普及,一些作品[11,56]通过引入基于变压器的架构,在室内点云学习中取得了最先进的性能。虽然已经提出了许多新的体系结构来改善点云学习,但其中一些无法推广到数千个点的户外场景。

Outdoor Point Cloud Segmentation

与室内点云分割相比,现有的方法由于点云的稀疏性和数量较多而面临很大的挑战。KPConv[38]、RandLA[14]等基于点的方法扩展了PointNet[29]或PointNet++[30]的体系结构,采用采样策略来缓解这些问题,但会导致额外的信息丢失。KPConv[38]引入核点选择过程,生成高质量的采样点。基于距离视图的方法[8,44,46]将点云投影到距离视图或球形表示中,并应用高效的CNN架构。然而,范围视图不能维护度量空间并引入失真,这可能会导致性能下降。其他一些方法[6,7,49,54,59]将点云量化到一些预定义的空间或表示中(例如,极坐标网格、二维网格和稀疏三维网格),然后应用规则卷积神经网络或稀疏卷积[10,42,50]来实现效率和性能之间的平衡。有一组作品集成了多种表示,包括范围视图、体素表示和点表示,以深入挖掘不同表示的潜力[21,35,47,52]。这些作品针对不同的表示采用了不同的架构,并提出了不同的融合策略,与基于单一表示的方法相比,表现出了强大的性能增益,但代价是额外的运行时间。

Image Segmentation to Point Cloud Segmentation.

全卷积网络(FCN)[22]是利用深度学习进行图像分割的先驱作品之一。DeepLab[4]、PSPNet[57]等人在FCN和现有流行的CNN架构的基础上,提出了多尺度或多膨胀率策略来挖掘更层次的局部上下文信息[5,51]。此外,HRNet[34]将不同分辨率的热图融合在一个框架中,保持高分辨率以提高性能。考虑到图像分割的巨大过程,很多作品[26,39,52,54,59]都将这些技巧应用到点云分割中,包括层次学习、注意机制或骨干网。一些著作[7,59]建立在具有稀疏卷积加速度的U-net[32]上。

3 Approach

        该方法的整体网络结构由两个模块组成:1)稀疏特征编码器2)稀疏几何特征增强。稀疏特征编码器(Sparse Feature Encoder)是快速局部上下文聚合的基本块。稀疏几何特征增强以稀疏特征编码器的输出作为输入,通过多尺度稀疏投影和注意尺度选择层对几何信息进行增强。两个模块在稀疏空间中交互,节省了计算量,提高了运行效率。此外,我们在体素水平上应用深度稀疏监督,以缓解密集监督导致的内存问题。图2展示了我们提出的方法的总体框架。

图二。GASN的整体结构。在图的上半部分,首先将LiDAR输入体素化为稀疏特征。然后,稀疏特征编码器利用稀疏卷积对稀疏特征进行处理。此外,稀疏几何特征增强通过多尺度稀疏投影和注意尺度选择层对特征进行增强,生成下一阶段的稀疏特征编码器的输入。稀疏监督作为辅助损耗附加在稀疏特征编码器的输出上。底线描述了多尺度稀疏投影和注意尺度选择的细节。N是点的数量,Mi是体素的数量,CE是通道维数。(这个是怎么循环吗?大概意思是紫色方块内是不同分辨率的体素特征,融合到原始的体素特征上,黄色为不同分辨率融合的的特征,最终要行程一个特征,采用的方式加权,权值是不同分辨率混的的结果)

3.1 Prerequisite

Voxelization.

给定网格尺寸s,体素化是将点pi =(xi,yi,zi)离散为其体素指数Vi的过程,通过以下公式:

其中·为向下取整功能。Vi表示为第i点pi的体素指数的标量,并且。由于每个体素可以包含多个点或多个细粒度的亚体素,我们定义了分散函数Ψ和收集函数Φ,该函数在[52,58]中被广泛使用,其中,前者在较大的体素尺度下进行聚类过程,将点特征或亚体素特征聚类到体素特征,而后者则从体素特征V反转到点特征或亚体素特征S:

其中C为通道号,V_VV_S为点云的体素索引,V_{V_{j}}为体素特征V_j的体素索引,V_{S_{i}}相同。Eq. 2和Eq. 3主要揭示点特征与体素特征之间的相互转换:散点和聚点。为了将原始点云转换为体素特征,我们使用了类似于在DRINet[52]和Cylinder3D[59]中使用的方法,即GAFE。

3.2 Sparse Feature Encoder

稀疏体素表示使得应用标准的卷积运算来提取局部上下文信息变得容易。因此,为了保持较高的运行效率和探索更多的局部性,我们使用了稀疏卷积层[10,42,50]而不是密集卷积层[21]。稀疏卷积的优点之一在于稀疏性,卷积运算只考虑非空体素。在此基础上,我们利用稀疏卷积构造稀疏特征编码器(SFE),以较低的计算量快速扩展感受野。我们采用ResNet瓶颈[12],而将ReLU激活替换为Leaky ReLU激活[24]。为了保持较高的效率,所有用于稀疏卷积的信道数都设置为64。

3.3 Sparse Geometry Feature Enhancement

在从稀疏特征编码器获得稀疏体素特征后,我们的目标是通过稀疏几何特征增强(SGFE)以更多的几何指导增强体素特征。

Multi-scale Sparse Projection Layer

受前人[30,52,57]的多尺度特征聚合研究的启发,我们注意到分层的上下文信息有助于增强特征提取能力,特别是对于具有固有尺度不变性和几何形状的点云。多尺度特征为点云学习带来了更多的几何增强,因为每个体素尺度反映了一个特定的物理维度属性。但是,由于点云的稀疏性,直接应用PSPNet[57]中的金字塔池模块是不适用的。此外,DRINet[52]通过分散操作提出了点级的点池,但在考虑大规模场景时引入了额外的巨大内存成本。因此,我们通过散射运算提出了多尺度稀疏级别,但在考虑大规模场景时引入了额外的巨大内存开销。因此,我们提出了多尺度稀疏投影层Multi-scale Sparse Projection Layer,以更低的存储成本在稀疏体素水平上利用多尺度特征。

给定输入体素特性,对应体素索引V,预定义池化比例集S,其中NV为体素数,C为通道数。多尺度稀疏投影在算法1中描述。不同尺度包含不同的几何先验,因为点云中的尺度语义与真实维度成正比,反映了物理度量空间。对于每个池化尺度s,我们首先重新计算尺度s下的体素索引,以确保相同池化窗口内的特性具有相同的体素索引。然后,我们应用Scatter运算Ψ进行稀疏池化,以在每个池化区域内获得局部几何先验的特征均值,其中NVs为尺度下的体素数,嵌入特征是基于具有可学习MLP层的归一化特征。然后,我们使用张量元素乘法来获得尺度s下的投影特征。最后,揭示不同尺度下几何形状的特征被叠加在一起。

(这一步获得不同体素尺度下的特征,上图紫色部分)

Attentive Scale Selection.

(怎么和图有点不大一样)

        从多尺度稀疏投影层获取多尺度特征后,多尺度特征融合的简单方法是应用张量拼接或张量求和。因此,来自不同尺度的所有特征都具有相同的权重,并被同等对待。在点云中有一个共识,即不同尺度的特征具有不同的几何先验,并侧重于场景理解。从这个角度出发,在SENet[13]和SKNet[18]的激励下,融合多尺度特征的更好方法是在尺度维度上对每个特征通道采用重加权策略,重新分配每个尺度的重要性。

        我们首先对第一阶段融合的所有输入张量{Os|s∈s}求和,收集不同尺度的所有信息,如下所示:

其中在求和的特征中。受最近流行的关注作品[18]的启发,我们应用了一个尺度上的具有sigmoid激活的MLP层来得到每个尺度的注意嵌入。最后,应用注意权值张量与多尺度特征的张量相乘,得到尺度维的张量和:

其中A O∈RNV×C是SGFE模块的输出注意事项。图3展示了整个过程。

3.4 Deep Sparse Supervision

在二维和三维语义分割任务中,对每个像素/体素进行密集监控是一种流行的方法。之前的方法[54,59]通过密集的监督生成密集的特征图。虽然这些作品在其网络架构中考虑了稀疏性,但在设计损耗时却忽略了这一特性,而损耗是2D和3D数据的关键区别之一。事实上,使用细粒度特性映射的密集监控会给内存使用带来严重的过载。例如,当使用0.2 m的网格时,对于具有20个类的单一密集特征图,内存消耗(大约500 Mb)可能会有问题。在此基础上,受[23]的启发,我们提出了一种新的深度稀疏监督(DSS)方法来处理深度稀疏的监督问题。

具体来说,我们在训练阶段生成不同尺度的体素语义标签,监督只对有效体素起作用,而不是对整个密集的特征图起作用。每个体素标签都使用体素内的主要投票点标签进行分配。由于我们在不同尺度上叠加了生成稀疏体素特征的多个SFE块,我们将稀疏监督作为辅助损失逐步应用于输出体素特征,这是一种有用的优化技术。我们还对主最终预测分支应用了稀疏监督。辅助损耗有助于优化训练,而主分支损耗占梯度的大部分。

在测试阶段,所有辅助分支都被禁用,以保持运行时效率。这种训练策略在基于图像的分割[22]中已经证明了其有效性。我们考虑了点云的稀疏性,并以稀疏的方式应用它以节省内存消耗。

(多层分辨率的损失函数旨在训练用,计算损失函数只再有内容的上计算 )

3.5 Final Prediction

对于最终的语义预测,我们将每个稀疏几何特征增强层输出的多阶段特征通过收集操作融合到最细粒度的体素尺度上。为了获得逐点结果,我们还采用了收集策略,即每个点都附加其所在体素的语义特征。我们框架的整个算法在算法2中进行了说明。

4 Experiments

我们在大规模户外场景数据集SemanticKITTI[1]和Nuscenes[3]上进行了实验,验证了所提方法的有效性。除此之外,我们还进行消融研究来验证所提议的组件。

4.1 Datasets

SemanticKITTI.

Nuscenes.

网络细节。我们对两个数据集使用相同的设置。我们沿着xyz维度用0.2 m的体素尺度量化点云,以生成初始稀疏体素特征。我们用稀疏特征编码器和稀疏几何特征增强四个块设计了几何感知稀疏网络。在消融研究中,我们也评估了块数选择对性能和效率的影响。对于多尺度稀疏投影层,我们采用核大小和stride[2, 4, 6, 8],可以覆盖粗池和细池区域。与之前的研究类似,我们在训练阶段采用了随机翻转、随机点辍学、随机尺度和全局旋转等方法。在损耗设计中,我们结合了Lovasz损耗[2]和交叉熵损耗作为监督。使用了Adam优化器[15],初始学习率为0.0002,批处理大小为4,用于50个epoch。学习速率每15个epoch以0.1的比率衰减。

4.2 Results On SemanticKITTI

单次扫描:我们在表1中提供了我们的几何感知稀疏网络以及其他最新方法的每类详细定量结果。与以前的方法相比,我们的GASN在保持实时推理效率的同时实现了最先进的性能。虽然我们的几何感知稀疏网络并不是每个类都能达到最好的结果,但它在所有类之间都达到了平衡的结果。即使与多种表示融合方法相比[35,47,52],我们的方法仍然有相当大的优势。

此外,我们还对一些最先进的方法和表2中的GASN的模型复杂性和延迟进行了定量分析,以说明我们的方法的高性能时间比。与以往的方法相比,该方法以最小的计算成本获得了最佳的mIoU结果,证明了该方法的有效性和有效性。SemanticKITTI验证集上的一些定量结果如图4所示。

SemanticKITTI Multiple Scans:同时,我们也对SemanticKITTI Multiple Scans挑战进行实验,以验证我们的GASN的有效性。在该任务中,我们直接将多个对齐的扫描图像叠加为输入,不需要任何时间融合算法,然后根据算法2生成逐点输出预测。我们不应用任何后期处理来细化。如表3所示,与之前的方法相比,我们的几何感知稀疏网络在两个指标上都有了显著的改进。与同样基于体素的AF2S3Net[6]算法相比,该算法获得了非常有竞争力的收益(约4.4%)。我们的方法几乎在所有方面都超过了现有的方法,证明了我们的方法的有效性和泛化能力。为此,GASN可以作为大规模点云语义分割任务的高效、强大的骨干。

4.3 Results On Nuscenes

为了验证我们的方法的泛化能力,我们还报告了测试集上Nuscenes-lidarSeg[3]任务的结果。如表4所示,GASN取得了非常强的结果,16个大类中有10个优于其他方法。对于行人类、摩托车类等规模较小的类,稀疏几何特征增强效果显著,证明了我们通过分层特征学习和注意尺度选择来捕获和整合多尺度上下文信息的稀疏几何特征增强的有效性。

4.4 Ablation Study

Components Study

我们的基线模型,如表5所示,只使用了稀疏特征编码器,已经取得了不错的性能。结果表明,稀疏卷积体素表示在室外点云语义分割任务中具有较强的特征提取和上下文信息学习能力。多尺度稀疏投影层捕获层次几何信息的能力提高了1.8%。此外,我们运用细心的尺度选择来重新分配每个尺度对每个渠道的重要性。这种策略使网络的焦点集中在更显著的规模上,性能增益约为1.9%。其次,在训练阶段加入深度稀疏监督,mIoU提高到69.4%,提高了1.7%。更重要的是,当推理时,深度稀疏监督将被禁用,不会为部署带来额外的计算成本。

block个数

块数的选择在网络中起着至关重要的作用。更少的块可能会导致欠拟合问题,而更多的块意味着更多的计算成本和内存消耗,这意味着效率低下。为了找到更好的块数,我们进行了改变该参数的实验。当块号为1 - 5时,性能分别为50.8%、61.3%、67.4%、69.4%和69.9%,速度分别为26 ms、33 ms、41 ms、59 ms和70 ms。当块数增加到5时,性能从50.8%增加到70.2%,而运行速度几乎翻倍。此外,当块号为4时,增加一个块会引入额外的11 ms延迟,而mIoU仅提高了约0.5%。因此,我们在实验中选择block number为4。

Scale Features Fusion Strategy

通过与不同融合策略的比较,分析了所提算法的有效性。我们采用了特征融合中常用的张量拼接和张量求和方法。对于这项工作,我们使所有其他建议的模块能够进行公平的比较。如表6所示,ASS层是融合多尺度特征的较好方法,与张量求和相比增加了2.0%,但只带来了2ms的代价。表7还显示,其他利用多种表示的模型也可以从ASS策略中受益。与DRINet[52]相比,原来的SPVCNN[35]在逐点分支中不存在分层学习,启用ASS后其性能会有所提高。

Sparse or Dense Supervision

        深度稀疏监管是我们GASN的另一个特征。在这个实验中,我们比较了稀疏和密集监控的内存成本和性能。为了简单起见,我们去掉了深度辅助损失分支,只留下主要监督。稀疏和密集监督的内存消耗都只包括预测张量和标记张量,而不包括梯度张量的内存消耗。稀疏监视(6 Mb)的内存占用率仅为密集监视(552 Mb)的1%左右,且两种方法的结果接近,分别为69.4%和69.5%。通过引入稀疏监督,我们可以使用更大的批量进行训练,从而实现高效的训练。

Deep Sparse Supervision.

我们的深度稀疏监督可以作为点云语义分割任务的一个通用组件,并将该策略与其他流行的模型相结合,验证其有效性。如表7所示,深度稀疏监督可以在不增加推理计算开销的情况下提高流行模型的性能。

Voxel Size

为了选择最适合实验的体素尺寸,我们还进行了实验来验证效果。如表8所示,运行速度、内存消耗和性能随着体素尺寸的增大而显著下降。因此,我们在实验中选择体素尺寸为0.2 m。

5 Conclusion

在本文中,我们提出了我们的几何感知稀疏网络,作为一个有效的网络体系结构的点云分割。我们的GASN通过充分利用稀疏体素表示中的稀疏性和几何形状来处理点云分割,以保持性能和效率。GASN由稀疏特征编码器(SFE)和稀疏几何特征增强(SGFE)组成。SFE可以提取局部上下文信息,而SFE可以通过多尺度稀疏投影和注意尺度选择来增强几何形状。此外,我们采用深度稀疏监督的方法,以较低的内存开销加速收敛。在大型户外场景数据集上的实验表明,我们的方法实现了最先进的性能和令人印象深刻的运行效率

自己总结:

1、稀疏特征编码器(SFE)和稀疏几何特征增强(SGFE)这两个模块顺序是怎么一次前向传播传递的呢?

2、Attentive Scale Selection 实际上是不同尺度的特征融合的方法

3、稀疏卷积?稀疏监督?

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

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

相关文章

5、Kafka集成 SpringBoot

SpringBoot 是一个在 JavaEE 开发中非常常用的组件。可以用于 Kafka 的生产者,也可以 用于 SpringBoot 的消费者。 1)在 IDEA 中安装 lombok 插件 在 Plugins 下搜索 lombok 然后在线安装即可,安装后注意重启 2)SpringBoot 环境准…

SpringCloud 微服务全栈体系(一)

第一章 认识微服务 随着互联网行业的发展,对服务的要求也越来越高,服务架构也从单体架构逐渐演变为现在流行的微服务架构。这些架构之间有怎样的差别呢? 一、单体架构 单体架构:将业务的所有功能集中在一个项目中开发&#xff…

Looper分析

Looper分析 在 Handler 机制中,Looper 的作用是提供了一个消息循环 ( message loop ) 的机制,用于处理和分发消息。 Looper 是一个线程局部的对象,每个线程只能有一个 Looper 对象。它通过一个无限循环来不断地从消息队列中取出消息&#x…

C#,数值计算——分类与推理Phylo_clc的计算方法与源程序

1 文本格式 using System; using System.Collections.Generic; namespace Legalsoft.Truffer { public class Phylo_clc : Phylagglom { public override void premin(double[,] d, int[] nextp) { } public override double dminfn(double[…

WebSocket的入门秘籍?

一、是什么 WebSocket,是一种网络传输协议,位于OSI模型的应用层。可在单个TCP连接上进行全双工通信,能更好的节省服务器资源和带宽并达到实时通迅 客户端和服务器只需要完成一次握手,两者之间就可以创建持久性的连接&#xff0c…

Linux常用命令——clockdiff命令

在线Linux命令查询工具 clockdiff 检测两台linux主机的时间差 补充说明 在ip报文的首部和ICMP报文的首部都可以放入时间戳数据。clockdiff程序正是使用时间戳来测算目的主机和本地主机的系统时间差。 选项 -o:使用IP时间戳选项来测量系统时间差。时间戳只用3个…

【OpenCV概念】 11— 对象检测

一、说明 这都是关于物体识别的。物体识别是指通过计算机视觉技术,自动识别图像或视频中的物体及其属性和特征,是人工智能领域的一个分支。物体识别可应用于多个领域,包括工业自动化、智能家居、医疗、安防等。请随时阅读这篇文章&#xff1a…

【Qt进阶之自定义控件】使用QListWidget实现自定义Item效果

目的 Q:如何在Qt库的基础上,实现自定义控件呢? A:根据官方文档回答,就是继承需实现的控件,然后实现自定义功能。 以下是实现QListWidget控件的自定义item。 先看下最终效果是如何: listItem 主…

【LeetCode】94. 二叉树的中序遍历 [ 左子树 根结点 右子树 ]

题目链接 文章目录 Python3方法一: 递归 ⟮ O ( n ) ⟯ \lgroup O(n) \rgroup ⟮O(n)⟯方法二: 迭代 ⟮ O ( n ) ⟯ \lgroup O(n) \rgroup ⟮O(n)⟯方法三: Morris ⟮ O ( n ) 、 O ( 1 ) ⟯ \lgroup O(n)、O(1) \rgroup ⟮O(n)、O(1)⟯ C…

【计算机网络笔记】OSI参考模型中端-端层(传输层、会话层、表示层、应用层)功能介绍

系列文章目录 什么是计算机网络? 什么是网络协议? 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能(1)——速率、带宽、延迟 计算机网络性能(2)…

openGauss学习笔记-106 openGauss 数据库管理-管理用户及权限-管理员

文章目录 openGauss学习笔记-106 openGauss 数据库管理-管理用户及权限-管理员106.1 初始用户106.2 系统管理员106.3 安全管理员106.4 审计管理员106.5 监控管理员106.6 运维管理员106.7 安全策略管理员 openGauss学习笔记-106 openGauss 数据库管理-管理用户及权限-管理员 10…

嵌入式硬件中常见的100种硬件选型方式

1请列举您知道的电阻、电容、电感品牌(最好包括国内、国外品牌)。 电阻: 美国:AVX、VISHAY 威世 日本:KOA 兴亚、Kyocera 京瓷、muRata 村田、Panasonic 松下、ROHM 罗姆、susumu、TDK 台湾:LIZ 丽智、PHY…

springBoot--web开发--WebMvcAutoConfiguration原理

WebMvcAutoConfiguration原理 自动配置类的生效条件hiddenHttpMethodFilter和formContentFilter的作用WebMvcConfigurer的作用使用演示 自动配置类的生效条件 点击ctarln 搜索类WebMvcAutoConfiguration hiddenHttpMethodFilter和formContentFilter的作用 hiddenHttpMethodF…

基于浣熊优化的BP神经网络(分类应用) - 附代码

基于浣熊优化的BP神经网络(分类应用) - 附代码 文章目录 基于浣熊优化的BP神经网络(分类应用) - 附代码1.鸢尾花iris数据介绍2.数据集整理3.浣熊优化BP神经网络3.1 BP神经网络参数设置3.2 浣熊算法应用 4.测试结果:5.M…

【JVM系列】- 类加载子系统与加载过程

类加载子系统与加载过程 😄生命不息,写作不止 🔥 继续踏上学习之路,学之分享笔记 👊 总有一天我也能像各位大佬一样 🏆 博客首页 怒放吧德德 To记录领地 🌝分享学习心得,欢迎指正…

C++ 类

类中成员变量叫做属性,类中成员函数叫做方法。 在C中,通过定义一个类来定义数据结构。一个类定义了一个类型,以及与其关联的一组操作。 对象的概念类似于C语言中的结构体变量,而类类似于结构体。 定义类 定义一个类&#xff0…

Matlab/C++源码实现RGB通道与HSV通道的转换(效果对比Halcon)

HSV通道的含义 HSV通道是指图像处理中的一种颜色模型,它由色调(Hue)、饱和度(Saturation)和明度(Value)三个通道组成。色调表示颜色的种类,饱和度表示颜色的纯度或鲜艳程度&#xf…

061:mapboxGL利用fitBounds同时将多个点放在可视范围内

第061个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+mapbox中加载geojson数据,利用fitBounds同时将多个点放在可视范围内。 直接复制下面的 vue+mapbox源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源代码(共134行)相关API参考:专栏目标示例…

vscode中快速生成vue3模板

步骤:设置 -> 用户代码片段 -> vue.json(没有vue.json,选vue也可)-> 定义自己所需的代码段 代码段 如下, {"Print to console": {"prefix": "vue3", //键入该值,按tab…

【linux】Linux 查看内存使用情况的几种方法汇总

文章目录 GUI 查看命令获取命令 free命令 vmstat命令 top命令 htop Linux 查看内存使用情况的几种方法包括使用 free 命令、top 命令、htop 命令、vmstat 命令和/proc/meminfo 文件。这些方法可以帮助用户了解系统内存的使用情况,包括总内存、已用内存、空闲内存、缓…