自动驾驶中的“ImageNet”?CVPR2024新作OccFeat:BEV 自监督预训练

news2024/11/15 5:16:57

论文标题:

OccFeat: Self-supervised Occupancy Feature Prediction for Pretraining BEV Segmentation Networks

论文作者:

Sophia Sirko-Galouchenko, Alexandre Boulch, Spyros Gidaris, Andrei Bursuc, Antonin Vobecky, Patrick Pérez, Renaud Marlet

导读:

本文将为大家介绍CVPR2024自动驾驶最新论文–OccFeat,一种用于纯相机BEV分割网络的自监督预训练方法,它能同时加强对3D场景的几何和语义理解。OccFeat利用三种模式进行预训练:图像、激光雷达和DINOv2特征。在nuScenes上对OccFeat进行了评估,以对车辆和地图布局进行BEV语义分割。结果显示了OccFeat的预训练方法优势。©️【深蓝AI】编译

1. 摘要

作者介绍了一种自监督预训练方法----OccFeat,针对纯视觉的BEV分割网络。使用OccFeat,作者可以借助占据预测和特征蒸馏预训练一个BEV网络。占据预测可以给模型提供对于场景3D几何信息的理解。但是,几何信息学习的类别是不确定的。因此,作者从一个自监督预训练图像基础模型中,通过蒸馏给其他模型添加3D语义信息。使用作者预训练方法的模型,可以显著提高BEV语义分割性能,尤其是在数据稀少的场景下。此外,实验结果表明作者提出的预训练方法是十分有效的。

在这里插入图片描述
▲图1|数据稀少领域性能对比示意图©️【深蓝AI】编译

2. 引言

近年来,纯视觉BEV网络在自动驾驶感知领域产生了巨大影响。BEV的吸引力在于,它为各种传感器(包括环视摄像头、激光雷达和雷达)提供了一个统一的空间,可用于标注和运行时感知目的,并可作为驾驶系统中后续任务(如预测和规划)的输入。一般在BEV特征空间的任务分为语义分割和目标监测。本文工作任务领域为纯视觉BEV语义分割任务。

至今,对于BEV空间中的纯视觉语义分割的训练网络主要依赖于全监督策略,也就是需要针对每个场景的详细标注。这一标注过程耗时耗力——输入的图像需要转化到“合成”的BEV空间。例如,一般有雷达数据生成的标注数据,经过可见性和目标类别的检查之后,才能投射到BEV分割图像中。为减少标注损耗,作者探索了自监督预训练纯视觉BEV分割网络的潜力。

在自监督预训练中,BEV网络首先在无标注数据的任务中进行训练,然后迁移到下游任务中。这一过程的目的是指导网络在预训练阶段学习有用的数据表示,可以提高网络在下游任务上的性能,能够让网络在少量标注数据情况下,依然获得不错的性能。预训练已被证明在图像到激光雷达等多模型数据上的有效性,借助不同的策略,例如:对比学习、教师学生架构和重建任务,预训练可以获得较好的效果。

在自动驾驶领域,针对纯视觉BEV网络的自动监督训练具有很重要的作用,但是没有引起很大的热度。近来也涌现出了一批相关方法,但是它们主要聚焦于3D几何预测任务的预训练。例如,ViDAR利用激光雷达点云预测实施预训练,UniPAD使用3D表面和RGB像素重建,以及UniScene则使用3D占据预测。虽然这些方法帮助BEV网络获得3D几何信息理解,但是无法让网络捕获3D场景的语义感知信息,这一信息对基于BEV的语义分割任务来说尤为重要。

本文所提出的占据特征预测方法(OccFeat),通过提出一个预训练目标----也就是对3D场景更加全面的理解,同时提供几何和语义信息,从而解决了上述问题。在本方法中,纯视觉BEV网络是以预测一个3D体素网格表示为任务:

a. 体素占据的表示;

b. 高级自监督图像特征表征被占据的体素。

为了创建这一体素网格表示,作者利用了自动驾驶中对齐的激光雷达和图像数据,以及一个自监督图像基础模型(如:DINOv2)。 具体来说,本方法是利用激光雷达数据确定每个体素的占用率,如果一个体素包含至少一个激光雷达点,则认为该体素已被占用。同时,自监督图像基础模型使用高级图像特征填充占据的体素。这一过程会将每个占据体素单元中心坐标投射到2D图像特征空间。

不同于仅仅关注3D几何预测的方法,本文方法通过预测一个更加丰富、更多语义表示的3D场景,且利用预训练的图像基础模型来解放双手进行自动标注。实验证明这一3D场景语言增强策略可以给下游BEV语义分割结果带来巨大的性能提升,尤其是在少量数据的场景下。

3. 相关工作

纯视觉BEV感知。BEV感知为自动驾驶提供车辆周边环境的全面表示,已成为多相机系统的主流范式。它包括三个部分:图像编码器提取2D特征,视觉投影模块将2D特征转换为3D空间的BEV特征,以及执行诸如语义分割、地图预测和3D监测等任务的解码器。视图投影技术多样,包括基于几何的方法和完全基于数据学习的方法。

目前,广泛使用的是Nvidia提出的“推”方法,通过深度不确定性估计将特征投影到BEV空间,以及不依赖深度估计、直接映射3D位置信息到图像空间的方法。近年来,BEV方法预测性能虽提高,但高效标注学习方法开始超越传统数据增强策略。精确3D标注成本高,劳动密集。作者提出提高BEV模型标注效率的策略,并展示在SimpleBEV和BEVFormer两种视图投影上的应用。

在这里插入图片描述
图2|OccFeat自监督BEV预训练方法示意图©️【深蓝AI】编译

自监督表示学习(SSL)是一种使用未标注数据来学习数据表示的方法,它通过无标注代理任务提取数据中的有用模式。SSL常使用预训练模型,在有限标签的任务上进行微调,以此提高性能。诸如图像扰动预测、对比学习、聚类、自蒸馏和掩码图像建模等代理任务已被广泛探索,后者尤其适合于视觉Transformer架构。

虽然SSL在通用图像数据集上效果显著,但用于驾驶数据的SSL预训练面临挑战,如数据冗余和类别不平衡。不过,多传感器数据和视觉基础模型为获取三维和/或语义知识提供了新机会,如无监督语义分割或检测。环视相机与激光雷达的数据同步也用于激光雷达网络的预训练,并通过无标签蒸馏策略在低标签环境中取得进步。

BEV预训练和蒸馏在自动驾驶感知任务中用于提升性能和解决数据标注难题。通常,单目3D目标检测的基线预训练被用作起点。通过教师-学生架构,激光雷达的3D推理能力被蒸馏到相机图像,以补充视觉投影模块中的几何信息损失。然而,激光雷达的3D标注数据获取困难。还有基于摄像头的BEV预训练方法采用自监督学习(SSL)范式,如占用率估计和激光雷达点云预测,但这些方法可能限制图像编码器获取语义知识。作者提出在体素空间中提炼DINOv2预训练图像特征,以生成兼具几何和语义感知能力的BEV特征。这与POP-3D不同,后者将CLIP特征用于开放词汇感知而非预训练。

4. 方法

本文目标是以自监督方式来预训练一个纯视觉BEV分割网络。为此,作者试图在学习到的BEV表示上进一步扩展编码场景3D几何信息和语义相关信息的能力,这一能力对于BEV空间的下游任务(比如:语义分割)尤为重要。为实现这一目标,作者借助当前的可用资源:

1)对齐自动驾驶场景下的激光雷达和图像数据;

2)一个能够提取高级2D图像特征的自监督预训练图像编码器(例如:DINOv2)。

本文提出的自监督BEV预训练方法OccFeat,具体如图2所示,包含两个训练目标:

1)占据重建( L o c c L_{occ} Locc):这一目标关注于通过占据重建任务中的BEV网络捕获场景的3D几何信息;

2)占据指导的特征蒸馏( L f e a t L_{feat} Lfeat):这一目标使得BEV网络能够重建高级语义特征。基于预测占据体素位置,来训练对应的网络模型。

本文自监督预训练方法的整体的目标为:

L = L o c c + λ ⋅ L f e a t L=L_{occ}+\lambda \cdot L_{feat} L=Locc+λLfeat

其中是权重系数,用来平衡两个损失项。除非特殊情况,本文使用 λ = 0.01 \lambda = 0.01 λ=0.01

4.1 BEV网络

BEV网络旨在从标定图像数据中构建一个BEV特征图。本文中,BEV特征图主要用来语义分割。这些BEV网络共享一个基本结构,其中包含:

1)一个图像编码器;

2)一个投射模块;

3)一个解码器。

图像编码器 E 1 E_1 E1针对每一张图像 I c I_c Ic产生一个特征图 F c F_c Fc c c c的范围是从1到 C C C,其中 C C C是车辆上环视相机的数量。一般而言,这些编码器来自于ResNet或者EfficientNet相关模型。

投射模块 P B P_B PB主要是负责改变特征表示空间,从传感器坐标系(特征 F e F_e Fe)到BEV空间。 P B P_B PB以图像特征 { F c } c = 1 C \{F_c\}^C_{c=1} {Fc}c=1C和相机标定信息为输入,将图像特征投射到BEV空间。投射模型的不同工作原理导致模块架构的差异,从沿着垂直轴聚合全图像特征卷(SimpleBEV)或者根据估计深度分布填充稀疏特征卷(LSS)到CVT或者BEVFormer中的基于注意力的投射实现。

解码器 D B D_B DB是以 P B P_B PB模块生成的BEV空间的图像特征为输入,进一步使用2D卷积进行处理,附加一些上采样操作,生成想要的图像分割分辨率。所产生的BEV特征 F B ∈ R N B × H B × W B F_B \in R^{N_B \times H_B \times W_B} FBRNB×HB×WB,其中 H B × W B H_B \times W_B HB×WB是BEV特征的空间分辨率,而 N B N_B NB则是特征的通道数量。

架构无关BEV表示预训练。本文所采用的自监督预训练方法被应用在由 D B D_B DB产生的这些BEV特征 F B F_B FB上。因此,可以通过插入预训练头将这种预训练方法插入到任何BEV模型中,正如作者所描述,在BEV网络结尾和下游任务头之前的位置插入。

在这里插入图片描述
图3|占据网格示意图©️【深蓝AI】编译

4.2 占据重建

之前的研究强调了重构作为图像和激光雷达点云等不同模态的重要先验的有效性,基于这些研究的见解,作者为BEV网络设计了简单的占据重构预训练任务。作者的目标是引导BEV网络学习编码场景三维几何信息的BEV特征。

V V V表示形状为 Z B × H B × W B Z_B \times H_B \times W_B ZB×HB×WB的体素网格,其中 Z B Z_B ZB是高度。为了创建占据目标 O ∈ { 0 , 1 } Z B × H B × W B O \in \{0, 1\}^{Z_B \times H_B \times W_B} O{0,1}ZB×HB×WB,本文采用一般设定,其中一个体素 v ∈ V v \in V vV被认为是占据的,如果存在至少一个激光雷达点落在其中,如图3所示。

为估计占据网格 O ^ \hat{O} O^,作者有用一个“反溅射”解码器网络 D v D_v Dv,它以来自于 D B D_B DB产生的2D BEV特征图 F B ∈ R N B × H B × W B F_B \in R^{N_B \times H_B \times W_B} FBRNB×HB×WB作为输入,然后生成一个3D特征卷 F V ∈ R N B × Z B × H B × W B F_V \in R^{N_B \times Z_B \times H_B \times W_B} FVRNB×ZB×HB×WB

反溅射解码器 D v D_v Dv以两个2D卷积层为开始。第一层,使用3x3卷积核, N B N_B NB表示输出通道,后接实例正则化和ReLU单元。第二层卷积具有1x1卷积核, N B Z B N_BZ_B NBZB作为输出通道。这些层产生形状为 ( N B Z B ) × H B × W B (N_BZ_B) \times H_B \times W_B NBZB×HB×WB的2D BEV特征图,然后转为一个形状为 N B × Z B × H B × W B N_B \times Z_B \times H_B \times W_B NB×ZB×HB×WB的3D特征卷。

之后,解码器 D v D_v Dv使用两个3D卷积层处理这些3D特征。第一层,使用1x1x1卷积核以及 2 N B 2N_B 2NB作为输出通道,后接一个Softplus非线性激活。第二层采用1x1x1卷积核以及 N B N_B NB作为输出通道,产生最终的3D特征卷 F V ∈ R N B × Z B × H B × W B F_V \in R^{N_B \times Z_B \times H_B \times W_B} FVRNB×ZB×HB×WB

最终,为生成占据预测 O ^ \hat{O} O^,一个简单的3D卷积层,带有1x1x1卷积核,用来处理 F V F_V FV,最后接一个sigmoid激活函数。

损失函数使用的是体素占据上的一个二分类交叉熵损失函数:

L o c c = 1 ∣ V ∣ ∑ v ∈ V BCE ( O ^ v , O v ) L_occ = \frac{1}{|V|} \sum_{v \in V} \text{BCE}(\hat{O}_v, O_v) Locc=V1vVBCE(O^v,Ov)

4.3 占据指导特征蒸馏

作者通过指导BEV网络编码高级语义信息,从而引入一个自监督目标弥补占据重建。具体流程为:使用一个自监督预训练图像网络 E I Y E^Y_I EIY,以图像为输入然后产生 N y N_y Ny特征通道维度的高级2D特征图。本文的OccFeat方法涉及一个特征蒸馏目标,也就是用 E I Y E^Y_I EIY提出的图像特征在 V V V中填充占据体素,然后训练BEV网络来预测体素特征。

V O c c V_{Occ} VOcc表示占据体素的集合,定义为 V O c c − { ∀ v ∈ V ∣ O V = 1 } V_{Occ} - \{ \forall v \in V| O_V=1 \} VOcc{vVOV=1},本文特征蒸馏目标是在这些占据体素上实施的。为了创建针对每一个占据体素 v ∈ V O c c v \in V_{Occ} vVOcc的目标图像特征 T v ∈ R N y T_v \in R^{N_y} TvRNy,作者将体素中心3D坐标投射到使用目标图像编码器 E I Y E^Y_I EIY提取环视图像 { I c } c = 1 C \{I_c\}_{c=1}^C {Ic}c=1C得到的图像特征中。给定这些从3D点到2D图像的投射,作者接着使用双线性采样图像特征 I c I_c Ic从而获得 N y N_y Ny维特征向量。然后,在投射后的图像特征中计算出目标特征 Y v Y_v Yv,作为双线性采样特征向量的平均值。为了预测占据体素的目标特征,作者使用 D v D_v Dv解码器生成3D特征卷 F V ∈ R N B × Z B × H B × W B F_V \in R^{N_B \times Z_B \times H_B \times W_B} FVRNB×ZB×HB×WB。接着,一个卷积核为1x1x1且输出通道维度为 N y N_y Ny的3D卷积层应用在 F v F_v Fv上,生成对应的3D特征卷 Y ^ ∈ R N B × Z B × H B × W B \hat{Y} \in R^{N_B \times Z_B \times H_B \times W_B} Y^RNB×ZB×HB×WB。然后,针对每个占据体素 v ∈ V O c c v \in V_{Occ} vVOcc,作者从 Y ^ \hat{Y} Y^中提取它的对应特征 Y ^ ∈ R N y \hat{Y} \in R^{N_y} Y^RNy

特征拯救损失用来最小化占据体素 v ∈ V O c c v \in V_{Occ} vVOcc对应的预测和目标特征之间的平均非负余弦相似度,定义为:

L f e a t = − 1 ∣ V O c c ∣ ∑ v ∈ V O c c cos ( Y ^ v , Y v ) L_{feat} = - \frac{1}{|V_{Occ}|} \sum_{v \in V_{Occ}} \text{cos}(\hat{Y}_v, Y_v) Lfeat=VOcc1vVOcccos(Y^v,Yv)

需要注意一点:有少量被占据的体素缺乏对任何图像 { I c } c = 1 C \{I_c\}_{c=1}^C {Ic}c=1C的有效投影。虽然为了简化符号而没有在上述公式中明确显示,但这些体素实际上被排除在特征损失的计算之外。

5. 实验

5.1 实验设定

· 数据集:

为了对这项方法进行评估,本次研究使用了nuScenes数据集对纯相机BEV网络进行预训练,并在基于BEV语义分割的下游任务中对其进行微调。该数据集由在波士顿和新加坡录制的1000个序列组成。数据分为训练(700个序列)、验证(100个序列)和测试(200个序列)三个部分。每一帧都包含用 32 层激光雷达获取的点云和6幅覆盖自我车辆周围环境的图像。

· BEV分割任务:

作者考虑了与BEV细分相关的两个不同任务。首先,作者在车辆分割任务中验证他们的方法,通过映射车辆的锚点框到BEV平面构建目标BEV分割全局真值。本文采用通用的设定,也就是本体车辆周围50米的范围,且BEV真值大小为200x200像素。其次,作者在地图分割上验证。这里,作者验证他们微调之后的BEV网络的能力,实现对背景类别的分割:道路、人行道、十字路、泊车区域以及道路分割线。

· 架构:

采用BEV网络。作者采用两个BEV架构的网络进行实验:SimpleBEV和BEVFormer。

· 图像编码器:

作为BEV分割网络的图像基干,作者采用EfficientNet-B0(EN-B0)或者ResNet-50(RN-50)。遵循纯视觉BEV分割的一般操作,这些图像基干都在 ImageNet 上经过了预训练,训练方式可以是监督式训练(针对 EN-B0),也可以是使用MoCov2进行自我监督式训练(针对RN-50)。

· 教师模型:

自监督基础模型用作教师,针对特征蒸馏实施占据指导,具体是采用DINOv2的变种ViT-S/14。

· OccFeat预训练:

作者在4张V100上使用批次为16对BEV分割网络进行预训练,且采用Adam优化器,权重衰减为1e-7,固定学习率为1e-3,默认训练50个周期。除非特殊情况,采用的图像帧分辨率为224x400。

· 微调:

作者分别采用1%,10%和100%的微调比例进行实验。采用AdamW优化器,以及采用1e-7权重衰减大小的一个周期调度器。如果正在进行微调的BEV分割网络尚未使用OccFeat进行预训练,作者将按照 OccFeat 预训练前使用的相同初始化过程,即使用在 ImageNet 上预训练的权重初始化其图像骨干。这是纯视觉 BEV 分割的常见做法。

5.2 预训练基线

为验证作者OccFeat方法的有效性,也就是将3D几何预测和特征蒸馏的效果,作者实现一个仅关注3D几何重建的预训练基线。为实现这一基线----Img-ALSO,作者将激光雷达预训练方法ALSO修改实现纯视觉BEV网络的预训练。ALSO作为自监督预训练激光雷达网络,是解决重建的最佳方法。它的代理任务是学习一个隐式函数,划分空闲和占据空间,监督信号直接由输入的激光雷达数据产生。这就需要完成几何重建任务,其中每一对三维点/输出特征都必须重建一个局部邻域。为了实现文中的Img-ALSO基线,作者从ALSO 体开始,该变体专为激光雷达检测网络(如SECOND网络)的预训练而定制,在该网络中,输入三维点云的特征被投射到一个俯视平面上。这样的设定下,作者用预训练的图像BEV网络取代3D基干网络。由于Img-ALSO中的监督信号仍来自激光雷达点(与ALSO中相同),因此作者使用了与ALSO相同的超参数,即10厘米的抽取网格、10厘米的最大查询距离和1米的重构半径。

在这里插入图片描述
表1|分割结果示意图©️【深蓝AI】编译

5.3 结果

· 和基线对比:

在表1中展示了SimpleBEV结果,作者的OccFeat自监督BEV预训练方法和基线方法Img-ALSO进行对比,没有采用任何BEV预训练。作者提供了利用1%、10%和100%的注释训练数据进行车辆和地图分割的结果。对于SimpleBEV网络,作者使用EN-B0或RN-50图像基干和224×400图像分辨率来处理输入图像帧。

作者观察到,与不进行BEV预训练相比,他们的OccFeat几乎可以在所有情况下提高分割结果。唯一的例外是使用带有RN-50的SimpleBEV进行 100%注释的车辆分割。在仅有1%或10%注释数据的情况下,这种改进尤为明显,显示了我们的方法在低镜头设置中的有效性。与所研究的基线(Img-ALSO)相比,我们的OccFeat几乎在所有情况下都优于它们。一个有趣的现象是,Img-ALSO仅在1%注释的情况下提高了分割性能,而在10% 和100%注释的情况下效果较差。

· 利用更长的BEV预训练时间进行缩放:

在表1中,不同于50个预训练周期的结果,作者同样包含了针对OccFeat方法并且对SimpleBEV(使用EN-B0或者RN-50)使用一个扩展到100个预训练周期的策略。作者观察到,随着预训练时间的延长,分割结果也在不断改善。这一观察结果凸显了本文方法的可扩展性,表明它有能力从更长的预训练时间中获得更多益处。

· 适用于各种BEV网络架构:

如之前内容所述,本文的BEV预训练方法可用于任何BEV网络结构。在表1中,除了SimpleBEV网络的结果外,作者还介绍了他们的BEV预训练方法,除了SimpleBEV网络的结果,还列出了使用BEVFormer分割网络在1%、10%和100%标注设定下的结果。此外,作者将OccFeat方法的性能与未进行BEV预训练的情况进行了比较。可以发现,即使采用BEVFormer 网络架构,作者的OccFeat预训练方法也能在所有评估设置中提高分割性能。

在这里插入图片描述
表2|图像分辨率的影响分析©️【深蓝AI】编译

· 利用更高分辨率的图像:

在表2中,作者展示了使用224×400或448×800分辨率对输入SimpleBEV网络的图像帧进行分割的结果。在全部情况下,作者的OccFeat预训练方法都能持续增强分割结果。值得注意的是,使用较低的224×400分辨率进行预训练,然后使用较高的448×800分辨率进行微调,也能改善结果,几乎与直接使用较高分辨率进行预训练的效果一样。

在这里插入图片描述
图4|鲁棒性的研究分析©️【深蓝AI】编译

· 鲁棒性研究:

作者通过nuScenes-C基准上对OccFeat进行评估,研究其鲁棒性。该基准包括八种不同的数据损坏,每种损坏有三个强度级别,并应用于nuScenes验证集。图4展示了在nuScenes-C上使用BEVFormer和EN-B0主干微调对100%注释数据进行车辆分割的结果。对于每种损坏类型,作者报告了三种严重程度的平均值。作者将OccFeat与未进行BEV预训练的情况进行了对比,结果表明OccFeat预训练提高了最终BEV模型的鲁棒性。

在这里插入图片描述
表3|损失函数的消融实验分析©️【深蓝AI】编译

5.4 消融研究

在表3中,作者在两个预训练目标上进行消融实验,叫做 L o c c L_{occ} Locc L f e a t L_{feat} Lfeat。评估的重点是使用SimpleBEV和BEVFormer网络对1%注释训练数据进行车辆和地图分割的结果比对。针对SimpleBEV, L o c c L_{occ} Locc(一个3D几何预测目标)和 L f e a t L_{feat} Lfeat(一个占据指导特征蒸馏目标)与没有进行BEV预培训的情况相比,展示了性能提升。将这两种预训练目标结合起来,形成作者的OccFeat方法,产生了最理想的分割结果。这凸显了本文的OccFeat预训练方法的功效,使其有别于之前仅依赖3D几何预测的自监督BEV预训练工作。使用特征蒸馏( L f e a t L_{feat} Lfeat)增强3D几何预测( L o c c L_{occ} Locc)的优势在BEVFormer上得到进一步验证。

在这里插入图片描述
表4|损失权重的消融实验分析©️【深蓝AI】编译

· 损失权重的影像:

在表4中,作者研究了损失权重的影像,损失权重负责平衡OccFeat中两个损失项。最优的分割结果来自于从0.001到0.01的范围中,并且为0.01是最优选择。

在这里插入图片描述
图6|校正图©️【深蓝AI】编译

5.5 定性分析结果

在图5和图6中,作者评估了重建特征的语义质量,具体使用从PCA中获得的颜色图(图5)和校正图(图6)。可以看到,DINOv2的语义信息得到了保留,重建特征中汽车等语义类别也很容易分离。此外,不同场景中的表征也是一致的,例如,在图5(右图)中,将在左侧场景中计算出的PCA映射应用到新的场景中。

6. 总结

本文提出的方法结合了两个预训练目标:

· 使用原始激光雷达数据的3D占据预测任务;

· 基于自监督预训练图像基础模型DINOv2的占据指导特征蒸馏任务。

前者提升3D几何相关的BEV特征的学习,后者主要关注于语义相关BEV特征。本文的实验结果表面,两个预训练目标相较于没有任何操作的BEV预训练在性能上取得巨大提升。

编译|匡吉

审核|Los

移步公众号【深蓝AI】,第一时间获取自动驾驶、人工智能与机器人行业最新最前沿论文和科技动态。

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

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

相关文章

Nginx实战(安装部署、常用命令、反向代理、负载均衡、动静分离)

文章目录 1. nginx安装部署1.1 windows安装包1.2 linux-源码编译1.3 linux-docker安装 2. nginx介绍2.1 简介2.2 常用命令2.3 nginx运行原理2.3.1 mater和worker2.3.3 Nginx 的工作原理 2.4 nginx的基本配置文件2.4.1 location指令说明 3. nginx案例3.1 nginx-反向代理案例013.…

紧固件松动的危害及原因——SunTorque智能扭矩系统

智能扭矩系统-智能拧紧系统-扭矩自动控制系统-SunTorque 紧固件松动,这一看似微小的机械问题,实际上可能引发一系列严重的后果。在机械设备中,紧固件扮演着至关重要的角色,它们通过紧固作用将各个部件紧密连接在一起,…

招聘视角,看数据产品经理求职面试技巧

近几年负责数据产品团队,经历团队人员的变迁,进行过几百简历的筛选,近百场社招、校招面试。金三银四的求职/招聘季接近尾声,想把自己招聘数据产品经理的过程进行总结,分享给想找数据产品经理工作的求职者。 一、数据产…

【C语言】数据指针地址的取值、赋值、自增操作避坑

【C语言】数据指针的取值、赋值、自增操作避坑 文章目录 指针地址指针自增指针取值、赋值附录:压缩字符串、大小端格式转换压缩字符串浮点数压缩Packed-ASCII字符串 大小端转换什么是大端和小端数据传输中的大小端总结大小端转换函数 指针地址 请看下列代码&#…

css3实现0.5px边框

效果图 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>css3实现0.5px边框</title><s…

HotSpot虚拟机的几个实现细节

文章目录 STW安全点安全区域记忆集与卡表读写屏障 STW 收集器在根节点枚举这步都是必须要暂停用户线程的&#xff08; STW &#xff09;&#xff0c;如果不这样的话在根节点枚举的过程中由于引用关系在不断变化&#xff0c;分析的结果就不准确 安全点 收集器在工作的时候某些…

如何设置XHSC(华大)单片机的IO口中断

XHSC(华大)单片机IO口中断使用 一、代码说明 华大单片机的历程在华大或者小华的官网上都可以下载到,但是我们下载的历程基本注释都是非常简单,有的还没有注释;再加上小华跟华大的历程在代码架构上有所区别,所以新手在直接调用华大或者小华历程后,历程代码的可读性并不…

解析气膜场馆造价—轻空间

随着社会的发展和对环保及时间成本的重视&#xff0c;气膜场馆逐渐成为众多体育场馆的首选建筑模式。气膜建筑包括气膜篮球场、气膜室内足球场、气膜羽毛球场、气膜乒乓球馆、气膜网球场以及气膜滑冰场等&#xff0c;因其多项优势受到广泛应用。 气膜场馆的显著特点 1. 气膜场馆…

不可错过的数据存储指南:JVS物联网平台存储策略详解

在物联网时代&#xff0c;数据的采集、存储和分析成为了关键环节。随着设备点位不断生成大量数据&#xff0c;如何高效地管理和保存这些数据&#xff0c;同时考虑存储成本和后续的数据分析价值&#xff0c;成为了亟待解决的问题。JVS物联网平台提供了灵活多样的存储策略&#x…

安泰电子:使用高压放大器时有哪些需要注意的呢

随着科技的不断进步&#xff0c;高压放大器在各种科学实验、工程应用和产业生产中扮演着重要的角色。然而&#xff0c;由于高压放大器的特殊性&#xff0c;使用时需要特别小心和谨慎。下面将详细介绍使用高压放大器时需要注意的事项&#xff0c;以确保安全、稳定地进行实验和应…

搭载昇腾310NPU的Orange Pi AIpro开箱体验以及深度学习样例测试

Orange Pi AIpro开箱体验以及样例测试 随着人工智能和物联网技术的快速发展&#xff0c;单板计算机&#xff08;Single Board Computer, SBC&#xff09;在创客和开发者社区中越来越受到欢迎。我最近入手了一款高性能的单板计算机——Orange Pi AIpro。 在入手此款AI开发板之…

【BI 可视化插件】怎么做? 手把手教你实现

背景 对于现在的用户来说&#xff0c;插件已经成为一个熟悉的概念。无论是在使用软件、 IDE 还是浏览器时&#xff0c;插件都是为了在原有产品基础上提供更多更便利的操作。在 BI 领域&#xff0c;图表的丰富性和对接各种场景的自定义是最吸引人的特点。虽然市面上现有的 BI 软…

如何理解 Java 类和对象

Java 中的类和对象是学习 Java 编程的基础之一。类是 Java 中的核心概念之一&#xff0c;它提供了一种组织和封装数据以及相关行为的方式。对象是类的实例&#xff0c;它是在运行时创建的&#xff0c;具有特定的状态和行为。 类和对象的概念 1. 类&#xff08;Class&#xff…

Micro SD封装是什么?

我们了解客户对于Micro SD封装的疑问。在这篇文章中&#xff0c;我们将详细解释Micro SD封装是什么&#xff0c;以及其在存储领域的技术原理和应用情况&#xff0c;帮助客户更好地理解这一技术。 1. Micro SD封装的定义 Micro SD封装是指一种特定尺寸的存储芯片封装方式&#x…

汇凯金业:纸黄金和实物黄金的价格有什么区别

纸黄金和实物黄金的价格主要受到全球黄金市场行情的影响&#xff0c;二者的基础价格并无太大差异&#xff0c;但在具体交易时&#xff0c;可能会存在一些价格上的区别&#xff0c;这些差异主要来自以下几个方面&#xff1a; 交易费用与管理费&#xff1a;纸黄金交易通常需要支…

操作系统实战(四)(linux+C语言)

目录 实验目的 前提知识 实验题目 题目分析 实验程序 头文件 头文件实现 核心代码文件 &#xff08;各类进程&#xff09; 生产者 抽烟者A 抽烟者B 抽烟者C makefile文件 实验运行 运行结果分析 总结 实验目的 加深对并发协作进程同步与互斥概念的理解&…

学浪视频怎么下载保存到本地

你是否曾经因为想要保存一份珍贵的学浪视频却苦于无法下载而感到烦恼&#xff1f;现在&#xff0c;我将向你揭示一个简单易行的方法&#xff0c;让你轻松地将学浪视频保存到本地&#xff0c;随时随地享受学习的乐趣。你是否曾经因为想要保存一份珍贵的学浪视频却苦于无法下载而…

大模型的发展方向:让大模型感知人类所处的物理世界,文字、听、看、闻、触摸、动手操作等信息接收和输出能力,向物理世界学习 大模型开发者方向

大模型的发展方向非常广泛&#xff0c;除了让大模型感知人类所处的物理世界&#xff0c;通过文字、听觉、视觉、嗅觉、触觉和动手操作等信息接收能力&#xff0c;还包括以下几个重要的方向&#xff1a; 多模态学习与融合&#xff1a; 多模态感知&#xff1a;整合来自不同感知渠…

【Linux】TCP的三次握手和四次挥手

三次握手 在TCP/IP协议中&#xff0c;TCP协议提供可靠的连接服务&#xff0c;采用三次握手建立一个连接。注意&#xff01;三次握手只是用来建立连接用的&#xff0c;和TCP可靠稳定没有关系&#xff0c;TCP的可靠是通过重传和检错等机制实现的。 默认创建一个socket后&#xff…

瑜伽馆约课会员管理系统小程序的作用是什么

瑜伽馆有着众多学员&#xff0c;如瘦身、改变气质、减脂塑形等往往属于长期多次跟随教练学习&#xff0c;或是自己在家里学习等&#xff0c;对商家来说&#xff0c;品牌宣传、吸引客户到店以及长期经营、提高自身服务效率是重中之重。 客户多次进店享受服务的同时还需要悦己&a…