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

论文: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.mfbz.cn/a/77277.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

component:()=>import(“@/views/Home.vue“) 报错,ts说没有找到类型声明文件

1 没有写.vue文件的类型声明,要在env.d.ts文件中写.vue的类型声明文件 2 ts.config.josn的incluede字段中,没有把.d.ts文件的路径写对。 如果没写对,就会在项目启动的时候,找不到.d.ts文件。找不到类型声明文件

什么是数据结构

目录 什么是数据结构 线性表 顺序表 链表 栈和队列 树存储结构 图存储结构 什么是数据结构 数据结构,直白地理解,就是研究数据的存储方式。 我们知道,数据存储只有一个目的,即为了方便后期对数据的再利用,就如…

Spark SQL优化:NOT IN子查询优化解决

背景 有如下的数据查询场景。 SELECT a,b,c,d,e,f FROM xxx.BBBB WHERE dt ${zdt.addDay(0).format(yyyy-MM-dd)} AND predict_type not IN ( SELECT distinct a FROM xxx.AAAAAWHERE dt ${zdt.addDay(0).format(yyyy-MM-dd)} ) 分析 通过查看SQL语句的执行计划基本…

gitlab合并新项目和分支切换

一、新建项目 1、创建空白项目 2、先创建一个群组 3、编写群组信息 4、创建群组完成以后新建项目 ​​​​​​​ 二、将代码推送到gitlab 1、初始化 git init 2、关联gitlab地址 # 比如:http://192.168.139.128:7070/cloud/obwt_cloud.git git remote add origin <你…

AIGC绘画:kaggle部署stable diffusion项目绘画

文章目录 kaggle介绍项目部署edit my copy链接显示 结果展示 kaggle介绍 Kaggle成立于2010年&#xff0c;是一个进行数据发掘和预测竞赛的在线平台。从公司的角度来讲&#xff0c;可以提供一些数据&#xff0c;进而提出一个实际需要解决的问题&#xff1b;从参赛者的角度来讲&…

【STM32】FreeRTOS互斥量学习

互斥量&#xff08;Mutex&#xff09; 互斥量又称互斥信号量&#xff08;本质也是一种信号量&#xff0c;不具备传递数据功能&#xff09;&#xff0c;是一种特殊的二值信号量&#xff0c;它和信号量不同的是&#xff0c;它支持互斥量所有权、递归访问以及防止优先级翻转的特性…

Streamlit 讲解专栏(九):深入探索布局和容器

文章目录 1 前言2 st.sidebar - 在侧边栏增添交互元素2.1 将交互元素添加至侧边栏2.2 示例&#xff1a;在侧边栏添加选择框和单选按钮2.3 特殊元素的注意事项 3 st.columns - 并排布局多元素容器3.1 插入并排布局的容器3.2 嵌套限制 4 st.tabs - 以选项卡形式布局多元素容器4.1…

【IDEA报错:Cause: java.sql.SQLSyntaxErrorException: ORA-00942: 表或视图不存在】

报错内容如下&#xff1a; 2023-08-17 11:17:16.274 ERROR [egrant-biz,e44d96001eb5f212,e44d96001eb5f212,true] 29700 --- [ XNIO-1 task-2] c.i.c.l.c.RestExceptionController : 服务器异常org.springframework.jdbc.BadSqlGrammarException: ### Error queryin…

C# WPF 中 外部图标引入iconfont,无法正常显示问题 【小白记录】

wpf iconfont 外部图标引入&#xff0c;无法正常显示问题。 1. 检查资源路径和引入格式是否正确2. 检查资源是否包含在程序集中 1. 检查资源路径和引入格式是否正确 正确的格式&#xff0c;注意字体文件 “xxxx.ttf” 应写为 “#xxxx” <TextBlock Text"&#xe7ae;…

基于php动漫周边电商购物网站系统

动漫周边电商网站系统&#xff0c;是基于php毕业设计&#xff0c;mysql数据库进行开发&#xff0c;本系统分为用户和管理员两个角色&#xff0c;其中用户可以注册登陆系统&#xff0c;用户查看商品分类&#xff0c;商品列表&#xff0c;查看动漫周边商品详情&#xff0c;加入购…

网络通信原理TCP的四次断开连接(第四十九课)

FIN:发端完成发送任务标识。用来释放一个连接。FIN=1表明此报文段的发送端的数据已经发送完毕,并要求释放连接。 SEQ:序号字段。 TCP链接中传输的数据流中每个字节都编上一个序号。序号字段的值指的是本报文段所发送的数据的第一个字节的序号。 序列号为X ACK :确认号 。 …

【脚踢数据结构】队列(顺序和链式)

(꒪ꇴ꒪ )&#xff0c;Hello我是祐言QAQ我的博客主页&#xff1a;C/C语言,Linux基础,ARM开发板&#xff0c;软件配置等领域博主&#x1f30d;快上&#x1f698;&#xff0c;一起学习&#xff0c;让我们成为一个强大的攻城狮&#xff01;送给自己和读者的一句鸡汤&#x1f914;&…

接口测试工具——Postman测试工具 Swagger接口测试+SpringBoot整合 JMeter高并发测试工具

目录 Postman测试工具接口测试工具swaggerKnife4j1.引入依赖2.配置3.常用注解4.接口测试 JMeter什么是JMeter?JMeter安装配置1.官网下载2.下载后解压3.汉语设置 JMeter的使用方法1.新建线程组2.设置参数3.添加取样器4.设置参数&#xff1a;协议&#xff0c;ip&#xff0c;端口…

【JUC】线程池ThreadPoolTaskExecutor与面试题解读

1、ThreadPoolTaskExecutor 创建线程池 从它的创建和使用说起&#xff0c;创建和使用的代码如下&#xff1a; 创建&#xff1a; ThreadPoolTaskExecutor executor new ThreadPoolTaskExecutor();executor.setCorePoolSize(corePoolSize);executor.setMaxPoolSize(maxPoolSize…

使用PHP实现随机调用图片

&#x1f482; 个人网站:【工具大全】【游戏大全】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 预览地址&#xff1a;ht…

【CI/CD】基于 Jenkins+Docker+Git 的简单 CI 流程实践(上)

基于 JenkinsDockerGit 的简单 CI 流程实践&#xff08;上&#xff09; 在如今的互联网时代&#xff0c;随着软件开发复杂度的不断提高&#xff0c;软件开发和发布管理也越来越重要。目前已经形成一套标准的流程&#xff0c;最重要的组成部分就是 持续集成 及 持续交付、部署。…

深入探索JavaEE单体架构、微服务架构与云原生架构

课程链接&#xff1a; 链接: https://pan.baidu.com/s/1xSI1ofwYXfqOchfwszCZnA?pwd4s99 提取码: 4s99 复制这段内容后打开百度网盘手机App&#xff0c;操作更方便哦 --来自百度网盘超级会员v4的分享 课程介绍&#xff1a; &#x1f50d;【00】模块零&#xff1a;开营直播&a…

2023-08-15 linux mipi 屏幕调试:有一个屏幕开机时候不显示,开机后按power 按键休眠唤醒就可以显示。原因是reset gpio 被复用

一、现象&#xff1a;今天更新了一个新版本的buildroot linux sdk &#xff0c;调试两个mipi 屏幕&#xff0c;这两个屏幕之前在其他的sdk都调好了的&#xff0c;所有直接把配置搬过来。但是有一个屏幕可以正常显示&#xff0c;有一个屏幕开机时候不显示&#xff0c;开机后按po…

django-基本环境配置

文章目录 django 环境安装1. 安装环境1.1 安装 Python (配置虚拟环境)1.1.1 步骤 1.2 Conda配置环境参考 django 环境安装 1. 安装环境 1.1 安装 Python (配置虚拟环境) 由于国外源速度慢&#xff0c;可以pip添加清华源 pip config set global.index-url https://pypi.tuna.…

Jmeter进阶使用:BeanShell实现接口前置和后置操作

一、背景 我们使用Jmeter做压力测试或者接口测试时&#xff0c;除了最简单的直接对接口发起请求&#xff0c;很多时候需要对接口进行一些前置操作&#xff1a;比如提前生成测试数据&#xff0c;以及一些后置操作&#xff1a;比如提取接口响应内容中的某个字段的值。举个最常用…
最新文章