UPerNet:Unified Perceptual Parsing for Scene Understanding论文解读

news2024/11/24 15:51:54

Unified Perceptual Parsing for Scene Understanding

在这里插入图片描述

论文:[1807.10221] Unified Perceptual Parsing for Scene Understanding (arxiv.org)

代码:CSAILVision/unifiedparsing: Codebase and pretrained models for ECCV’18 Unified Perceptual Parsing (github.com)

期刊/会议:ECCV 2018

摘要

人类在多个层面上识别视觉世界:我们毫不费力地对场景进行分类并检测内部物体,同时还识别物体的纹理和表面及其不同的组成部分。在本文中,我们研究了一种名为统一感知解析(Unified Perceptual Parsing)的新任务,该任务要求机器视觉系统从给定的图像中识别尽可能多的视觉概念。开发了一个名为UPerNet的多任务框架和训练策略,以从异构图像标注中学习。我们在统一感知解析上对我们的框架进行了基准测试,并表明它能够有效地从图像中分割出广泛的概念。训练后的网络被进一步应用于发现自然场景中的视觉知识。

1、简介

人类的视觉系统能够从一眼中提取出大量的语义信息。我们不仅可以立即解析其中包含的对象,还可以识别对象的细粒度属性,例如它们的部件、纹理和材质。例如,在图1中,我们可以识别出这是一个客厅,里面有各种物品,如咖啡桌、一幅画和墙壁。同时,我们确定咖啡桌有腿,围裙和顶部,以及咖啡桌是木制的,沙发表面是针织的。我们对视觉场景的解释是在多个层面上组织的,从对材料和纹理的视觉感知到对物体和部分的语义感知。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p1A7Ybn9-1673920639557)(Unified Perceptual Parsing for Scene Understanding.assets/image-20230115154435797.png)]

由于深度神经网络和大规模图像数据集的发展,计算机视觉在人类视觉识别方面取得了很大的进展。然而,各种视觉识别任务大多是独立研究的。例如,目标分类和场景识别已经达到了人类级别。对象和内容在像素级上被精确地解析和分割;在一些论文中研究了纹理和材料的感知和识别。由于场景识别、目标检测、纹理和材料识别在人类视觉感知中交织在一起,这就为计算机视觉系统提出了一个重要的问题:神经网络是否有可能同时解决几个视觉识别任务?这促使我们的工作引入了一种名为统一感知解析(UPP)的新任务,以及一种新的学习方法来解决它。

在UPP中有几个挑战。首先,没有一个单一的图像数据集标注了所有级别的视觉信息。各种图像数据集仅针对特定任务构建,例如用于场景解析的ADE20K,用于纹理识别的描述纹理数据集(Describe Texture Dataset, DTD),用于材料和表面识别的OpenSurfaces。其次,来自不同感知级别的标注是异构的。例如,ADE20K具有像素级标注,而DTD中的纹理标注是图像级的。

为了解决上述挑战,我们提出了一个框架,该框架克服了不同数据集的异质性,并学习联合检测各种视觉概念。一方面,在每次迭代中,我们随机抽取一个数据源,只更新路径上的相关层,从所选的数据源推断出概念。这样的设计避免了不稳定的行为,即关于某个概念的标注的梯度可能有噪声。另一方面,我们的框架利用了单一网络特征的层次性,即对于具有更高层次语义的概念,如场景分类,分类器只建立在具有更高层次语义的特征图上;对于较低级的语义,如对象和材料分割,分类器是建立在所有阶段融合的特征图或仅具有低级语义的特征图上。我们进一步提出了一种训练方法,使网络能够仅使用图像级标注来预测像素级纹理标签。

我们的贡献总结如下:1)我们提出了一个新的解析任务统一感知解析(Unified Perceptual Parsing),它要求系统一次解析多个视觉概念。2)我们提出了一种新的网络,称为UPerNet,它具有分层结构,可以从多个图像数据集中的异构数据中学习。3)该模型能够共同推断和发现图像下面丰富的视觉知识。

1.1 相关工作

我们的工作建立在先前的语义分割和多任务学习的任务上。

语义分割:为了生成给定图像的像素级语义预测,图像分类网络被扩展以生成语义分割掩码。Chen等的开创性工作,基于结构预测,使用条件随机场(CRF)来细化CNN最终提取的特征图。为这种像素级分类任务设计的最流行的框架是全卷积网络(FCN),它用卷积层取代分类网络中的全连接层。Noh等提出了一个框架,该框架将反卷积(deconvolution)应用于上采样低分辨率特征图。Yu和Vladlen提出了一种基于空洞卷积的架构,它能够在不损失分辨率或覆盖率的情况下以指数方式扩展接受野。最近,RefineNet使用了一种从粗到细的架构,它利用了下行采样过程中所有可用的信息。金字塔场景解析网络(PSPNet)在多个网格尺度上执行空间池化,并在多个分割基准上取得了出色的性能。

多任务学习:多任务学习,旨在训练模型同时完成多个任务,早在深度学习时代之前就引起了人们的关注。例如,之前的许多研究工作都集中在识别与分割的结合上。最近,Elhoseiny等人提出了一种同时执行姿态估计和目标分类的模型。Eigen和Fergus提出了一个共同解决深度预测、表面正常估计和语义标记的架构。Teichmann等人提出了一种通过共享特征提取器执行分类、检测和语义分割的方法。Kokkinos提出了UberNet,这是一个深度架构,能够依靠不同的训练集完成7个不同的任务。最近的另一项工作提出了一个部分监督训练范式,仅使用框标注将对象的分割扩展到3000个对象。将我们的工作与以前关于多任务学习的工作进行比较,只有少数工作在异构数据集上执行多任务学习,也就是说,一个数据集不一定对所有任务具有所有级别的标注。一些任务虽然是由低到高的,如边界检测、语义分割和目标检测等,这些任务没有形成视觉概念的层次结构。在第4.2节中,我们进一步展示了我们提出的任务和框架在从图像中发现丰富的视觉知识方面的有效性。

2、定义统一感知解析

我们将统一感知解析的任务定义为从给定的图像中识别尽可能多的视觉概念。可能的视觉概念被组织成几个层次:从场景标签、对象和对象的部分,到对象的材料和纹理。这项任务取决于不同类型的训练数据的可用性。由于没有一个图像数据集在多个层次上标注了所有视觉概念,我们首先通过组合多个图像标注源来构造一个图像数据集。

2.1 数据集

为了从多个层次完成广泛的视觉概念的分割,我们使用了广泛和密集标记数据集(Broden),这是一个包含各种视觉概念的异构数据集。Broden统一了几个密集标记的图像数据集,即ADE20K, Pascal-Context, Pascal-Part, OpenSurfaces和可描述纹理数据集(DTD)。这些数据集包含了各种场景、物体、物体部件、材料和纹理的样本。目标、目标部分和材料被分割到像素级别,而纹理和场景则在图像级别进行标注。

Broden数据集提供了广泛的视觉概念。然而,由于最初收集它是为了发现视觉概念和卷积神经网络(Convolutional Neural Networks, CNN)的隐藏单元之间的对齐以获得网络可解释性,我们发现来自不同类别的样本是不平衡的。因此,我们将Broden数据集标准化,使其更适合训练分割网络。首先,我们在不同的数据集中合并相似的概念。例如,将ADE20K、PascalContext和Pascal-Part中的目标和部件标注进行合并和统一。其次,我们只包括在整个数据集中出现在至少50张图像中并且包含至少50,000个像素的对象类。另外,出现在至少20个图像中的物体部件可以被认为是有效部件。概念上不一致的对象和部件将被手动删除。第三,我们在OpenSurfaces中手动合并未采样的标签。例如,石头和混凝土合并为石头,而透明塑料和不透明塑料合并为塑料。出现在少于50张图片中的标签也会被过滤掉。第四,我们将来自ADE20K数据集的400多个场景标签映射到来自Places数据集的365个标签。

表1显示了我们标准化Broden的一些统计数据,称为Broden+。它总共包含57,095张图像,包括来自ADE20K的22,210张图像,来自Pascal-Context和Pascal-Part的10,103张图像,来自OpenSurfaces的19142张图像和来自DTD的5,640张图像。图2显示了目标的分布以及按所属目标分组的部分。我们还在图3中提供了来自Broden+数据集的每个源的示例。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oVZxv0J6-1673920639558)(Unified Perceptual Parsing for Scene Understanding.assets/image-20230116205957592.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-71E3FO7g-1673920639560)(Unified Perceptual Parsing for Scene Understanding.assets/image-20230116210028935.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rnmiDWQN-1673920639561)(Unified Perceptual Parsing for Scene Understanding.assets/image-20230116210123827.png)]

2.2 评估

为了量化模型的性能,我们根据每个数据集的标注设置不同的指标。评估语义分割任务的标准指标包括像素精度(P.A.),它表示正确分类像素的比例,以及平均IoU (mIoU),它表示预测结果和真实结果像素交集,平衡计算所有目标。请注意,由于图像中可能存在未标记的区域,mIoU度量将不计算未标记区域上的预测。这将鼓励人们在训练期间排除背景标签。但不适用于部分分割等任务的评估,因为对于某些目标,带有部分标注的区域只占少量像素。因此,我们使用mIoU,但在某些任务中计算背景区域的预测,记为mIoU-bg。这样,在训练过程中去掉背景标签将会小幅提高P.A.。尽管如此,它将显著降低mIoU-bg的性能。

对于涉及ADE20K、Pascal-Context和OpenSurfaces的目标和材料解析,标注是像素级的。ADE20K和PascalContext中的图像是完全标注的,不属于任何预定义类的区域被分类到未标记类中。OpenSurfaces中的图像是部分标注的,也就是说,如果一个图像中出现了多个区域的材料,则可能不止一个区域没有标注。我们在这两个任务中使用P.A.和mIoU指标。

由于上述原因,对于目标部件,我们使用P.A.和mIoU-bg指标。每个部分的IOU首先在一个对象类别中求平均值,然后在所有对象类别中求平均值。对于场景和纹理分类,我们报告top-1的精度。评估指标如表1所示。

为了平衡不同类别中不同标签的样本,我们首先随机抽取10%的原始图像作为验证集。然后,我们从训练集和验证集中随机选择一张图像,并在交换这两张图像后,检查像素级的标注是否更均衡地接近10%。这个过程是迭代执行的。数据集被分成51,617张用于训练的图像和5,478张用于验证的图像。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E80YEtG2-1673920639561)(Unified Perceptual Parsing for Scene Understanding.assets/image-20230116210928107.png)]

3、统一感知解析框架的设计

我们在图4中展示了我们的网络设计,称为UPerNet(统一感知解析网络),是一种基于特征金字塔网络(FPN)。FPN是一种通用的特征提取器,它利用固有的金字塔层次结构中的多层次特征表示。它使用带有横向连接的自顶向下架构,以极小的额外成本将高级语义信息融合到中低端。为了克服Zhou等人提出的问题,尽管深度CNN的理论感受野足够大,但深度CNN的经验感受野相对要小得多,我们将PSPNet中的金字塔池化模块(PPM)应用于骨干网络的最后一层,然后将其馈送到FPN的自上而下分支中。通过实证研究,我们发现该方法能够带来有效的全局先验表示,与FPN体系结构高度兼容。关于FPN和PPM的更多细节,请参阅相关论文。

使用新的框架,我们能够训练一个单一的网络,该网络能够在多个级别上统一视觉属性的解析。我们的网络是基于残差网络进行设计。

我们将ResNet中每个阶段最后的特征图集合表示为{C2, C3, C4, C5}, FPN输出的特征图集合表示为{P2, P3, P4, P5},其中P5也是直接在PPM之后的特征图。下采样率分别为{4,8,16,32}。场景标签是在图像级标注的最高级别属性,通过P5的全局平均池化和线性分类器来预测。值得注意的是,与基于空洞卷积的框架不同,P5的下采样率比较大,使得全局平均池化后的特征更加关注高级语义。对于对象标签,我们经验地发现融合FPN的所有特征图比只使用最高分辨率的特征图(P2)更好。目标部分基于与目标相同的特征映射进行分段。对于材料,直观地说,如果我们事先知道这些区域属于“杯子”这个物体,我们就可以合理地推测它可能是由纸或塑料构成的。这个上下文内容是有用的,但我们仍然需要局部表观特征来决定哪一个是正确的。还应该注意的是,一个物体可以由各种材料组成。基于上述观察,我们在P2之上分割材料,而不是融合特征。纹理标签是在图像级别上给出的,它基于非自然图像。直接将这些图像与其他自然图像进行融合不利于其他任务的完成。同时,我们也希望该网络能够在像素级上预测纹理标签。为了实现这样的目标,我们在C2的顶部附加了几个卷积层,并迫使网络在每个像素处预测纹理标签。该分支的梯度被阻止反向传播到骨干网络,纹理的训练图像被调整为较小的大小(~ 64 × 64)。这些设计背后的原因是:1)纹理是最低层次的感知属性,因此它纯粹是基于明显的特征,不需要任何高级信息。2)正确预测纹理的基本特征是在其他任务的训练中隐式学习的。3)该分支的感受野需要足够小,这样当正常尺度的图像输入网络时,网络能够预测不同区域的不同标签。我们只在整个网络完成其他任务的训练后对纹理分支进行几个epoch的微调。

当只对目标监督进行训练时,如果没有进一步的增强,我们的框架产生的性能几乎与最先进的PSPNet相同,而在相同的epoch数量下只需要63%的训练时间。值得注意的是,根据他们论文中的实验,除了尺度抖动外,我们甚至没有在PSPNet中使用深度监督或数据增强。消融实验在第4.1节中提供。

3.1 实施细节

每个分类器之前都有一个单独的卷积头。为了融合具有不同尺度(如{P2, P3, P4, P5})的层,我们通过双线性插值将它们调整为P2的大小,并连接这些层。然后应用卷积层来融合来自不同层次的特征以及减少通道维度。所有额外的非分类卷积层,包括在FPN中,带有512通道输出的有批归一化(batch normalization)。批归一化后应用ReLU。我们使用“poly”学习率策略,其中当前迭代的学习率等于初始学习率乘以 ( 1 − i t e r m a x − i t e r ) p o w e r (1-\frac{iter}{max-iter})^{power} (1maxiteriter)power。初始学习率和power分别设置为0.02和0.9。我们使用的权重衰减为0.0001,动量为0.9。在训练过程中,输入图像调整大小,使其较短边的长度从{300,375,450,525,600}中随机选择。对于推理,我们没有应用多尺度测试来进行公平的比较,长度设置为450。为避免GPU内存溢出,将长边的最大长度设置为1200。在ImageNet上预训练权值初始化骨干网中的各层。

在每次迭代过程中,如果一个小批处理是由来自多个来源的不同任务的图像组成的,那么相对于某个任务的梯度可能是有噪声的,因为每个任务的实际批处理大小实际上是减小的。因此,我们在每次迭代中根据每个数据源的规模随机抽取一个数据源,只更新路径来推断与所选数据源相关的概念。对于物品和材料,我们不计算未标记面积的损失。对于部分,如第2.2节所述,我们添加了background作为有效标签。同样,部分的损失只适用于其超对象的区域内。

由于物理内存的限制,每个GPU上的mini-batch处理只涉及2个图像。我们采用跨8个GPU的同步SGD训练。值得注意的是,batch size已被证明对分类、语义分割和目标检测等任务的精确统计数据非常重要。我们实现了batch normalization,这样它就能够跨多个GPU同步。在训练过程中,我们不固定任何batch normalization层。仅ADE20k(包含~ 20k张图像)的训练迭代次数就为100k。如果在更大的数据集上训练,我们会根据数据集中的图像数量线性增加训练迭代。

3.2 设计讨论

最先进的分割网络主要基于全卷积网络。由于缺乏足够的训练样本,分割网络通常由预先训练的网络初始化用于图像分类。为了实现语义分割的高分辨率预测,已经提出了空洞卷积技术,该技术去除卷积层的步长,并在卷积滤波器的每个位置之间添加孔,以缓解下采样的副作用,同时保持感受野的扩展率。空洞卷积已成为语义分割的实际范式。

我们认为这样的框架对于所提议的统一感知解析任务有很大的缺点。首先是最近提出的深度CNN,它成功地完成了图像分类和语义分割等任务,通常有数十或数百层。这些深度CNN的设计非常复杂,为了获得更大的感受野和更轻的计算量,在网络的早期阶段,下采样率迅速增长。例如,在总共有100个卷积层的ResNet中,Res-4和Res-5 Block加起来有78个卷积层,下采样率分别为16和32。在实际应用中,在空洞型分割框架中,需要对两个块进行空洞卷积,以确保所有特征图的最大下采样率不超过8。然而,由于两个块内的特征映射增加到指定大小的4或16倍,计算复杂性和GPU内存占用都大大增加。第二个缺点是这样的框架只利用了网络中最深的特征映射。先前的工作已经展示了网络中特征的层次性,即较低的层倾向于捕获局部特征,如角落或边缘/颜色连接,而较高的层倾向于捕获更复杂的模式,如某些对象的部分。使用具有最高层次语义的特征来分割对象等高级概念可能是合理的,但它自然不适合分割多个层次的感知属性,特别是纹理和材料等低层次的感知属性。在接下来的内容中,我们展示了我们的UPerNet的有效性和效率。

4、实验

实验部分组织如下:在4.1节,我们首先介绍了定量研究在我们提出的框架上及进行原始语义分割任务和UPP任务。然后,我们应用该框架在第4.2节中发现场景理解背后的视觉常识知识。

4.1 主要的结果

总体架构:为了证明我们提出的架构在语义分割上的有效性,我们在表2中报告了在不同设置下使用目标标注在ADE20K上训练的结果。一般来说,FPN表现出具有竞争力的性能,同时需要更少的计算资源进行语义分割。使用特征图仅向上采样一次,下采样率为16 (P4),它达到mIoU和P.A.为34.46/76.04,几乎与PSPNet中展示的强baseline参考相同,而在相同次数的迭代中只需要大约1/3的训练时间。分辨率越高,性能越好。添加金字塔池化模块(PPM)将性能提高了4.87/3.09,这表明FPN也存在感受野不足的问题。根据经验,我们发现融合来自所有级别FPN的特征可以产生最佳性能,在其他工作中也观察到一致的结论。

FPN的性能令人惊讶,考虑到它的简单性,特征映射只是通过双线性插值向上采样,而不是耗时的反卷积(deconvolution),并且自顶向下路径与自底向上路径通过1x1卷积层融合,然后是元素和,没有任何复杂的细化模块。正是简单成就了它的效率。因此,我们采用统一感知解析的这种设计。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ojfg2KgQ-1673920639562)(Unified Perceptual Parsing for Scene Understanding.assets/image-20230117093312735.png)]

异构标注的多任务学习:我们报告了在单独或融合不同标注集上训练的结果。目标解析的基线是在ADE20K和Pascal-Context上训练的模型。mIoU和P.A.分别为24.72/78.03。与ADE20K的结果相比,这个结果相对较低,因为Broden+有更多的目标类。材料的基线是在OpenSurfaces上训练的模型。得到mIoU和P.A.为52.78/84.32。目标解析和部件解析联合训练的结果是对象解析23.92/77.48,部件解析30.21/48.30。训练对象解析加上部分标注的性能与只训练目标标注的性能几乎相同。在添加场景预测分支后,它在场景分类上产生了71.35%的顶级精度,而目标和部分性能的下降可以忽略不计。将材料与目标、部件、场景分类联合训练,材料解析的得分为54.19/84.45,目标解析的得分为23.36/77.09,部件解析的得分为28.75/46.92。值得注意的是,由于非均匀性,在OpenSurfaces数据集上,目标和部件的性能都略有下降,而材料的性能与仅训练的相比有所提高。我们推测,这是由于目标中的信息作为材料解析的先验的有用性。如上所述,我们发现直接将纹理图像与其他自然图像融合对其他任务是有害的,因为图像在DTD中与自然图像之间存在着重大差异。在使用所有其他任务训练的模型对纹理图像进行微调后,我们可以通过选择频率最高的像素级预测作为图像级预测来获得定量的纹理分类结果。它的分类准确率为35.10。在纹理上的性能表明,只对纹理标签上的网络进行微调并不是最优的。然而,这是克服自然数据源和合成数据源融合的必要步骤。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G6HwzKDA-1673920639563)(Unified Perceptual Parsing for Scene Understanding.assets/image-20230117093350856.png)]

我们希望未来的研究能够发现更好地利用这种图像级标注进行像素级预测的方法。

定性的结果。我们提供了UPerNet的定性结果,如图5所示。UPerNet能够统一组合视觉知识,同时有效地预测分层输出。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BFP4dHDM-1673920639563)(Unified Perceptual Parsing for Scene Understanding.assets/image-20230117094922909.png)]

4.2 在自然场景中发现视觉知识

统一感知解析需要一个能够从给定图像中识别尽可能多的视觉概念的模型。如果一个模型成功地实现了这一目标,它可以发现现实世界背后丰富的视觉知识,比如回答诸如“客厅和卧室之间有什么共同点?”或“杯子是用什么材料做的?”在自然场景中发现甚至推理视觉知识将使未来的视觉系统更好地理解周围环境。在本节中,我们将演示在Broden+上训练的框架能够在多个层次上发现组合视觉知识。这也是异构数据标注训练网络的特殊应用。我们使用place -365的验证集,其中包含来自365个场景的36500张图像,作为我们的测试平台,因为place数据集包含来自各种场景的图像,更接近真实世界。我们以层次的方式定义了几种关系。请注意,只有object-part关系可以直接从基本真实标注中读出,其他类型的关系只能从网络预测中提取。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kmvw4eRM-1673920639564)(Unified Perceptual Parsing for Scene Understanding.assets/image-20230117094956569.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-75FjZ5GT-1673920639565)(Unified Perceptual Parsing for Scene Understanding.assets/image-20230117095433772-16739204746681.png)]

5、总结

这项工作研究了统一感知解析的任务,该任务旨在跨场景类别、目标、部件、材料和图像纹理分析视觉概念。开发了异构标注处理的多任务网络和训练策略,并进行了基准测试。我们进一步利用训练过的网络来发现场景之间的视觉知识。

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

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

相关文章

第二章.线性回归以及非线性回归—岭回归

第二章.线性回归以及非线性回归 2.12 岭回归(Ridge Regression) 1.前期导入: 1).标准方程法[w(XTX)-1XTy]存在的缺陷: 如果数据的特征比样本点还多,数据特征n,样本个数m,如如果n>m&#xf…

5种气血不足的面相

我们常用“气色好”形容人良好的健康状态,反之,气血不足就是不健康的表现。想知道自己是否气血不足,可以从以下几种表现中判断。眼白黄:所谓人老珠黄,就是指眼白的颜色变得浑浊、发黄、有血丝,很可能气血不…

网络编程基础(1)

1 OSI七层模型(理论) 七层模型,亦称OSI(Open System Interconnection)。参考模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系,一般称为OSI参考模型或七层…

cycle_gan使用教程

junyanz/pytorch-CycleGAN-and-pix2pix: Image-to-Image Translation in PyTorch (github.com) 如果是用cycle_gan 数据集 /数据集文件夹名,下面四个子文件名 testA testB trainA trainB trainA是A风格图片,trainB是B风格图片。 训练参数 test…

CCF BDCI | 算能赛题决赛选手说明论文-04

基于TPU平台实现人群密度估计 队名:innovation 陈照照 数据科学与大数据技术20级 台州学院 中国-瑞安 479253198qq.com董昊数据科学与大数据技术20级 台州学院 中国-杭州 donghaowifi163.com陈晓聪数据科学与大数据技术20级 台州学院 中国-宁波 2637491…

Golang -- openwechat微信发送消息、自动回复

开篇 马上就要到农历新年了,不妨写一段代码准时为好友们送上祝福。 该 Demo 使用开源项目 openwechat ,实现获取好友列表、为好友发送消息、图片或文件,接收来自好友或群组的消息并设置自动回复等功能。 openwechat Github地址 openwechat 文…

管道(匿名,有名)

文章目录Linux 进程间通信的方式管道匿名管道有名管道Linux 进程间通信的方式 管道 管道特点 管道其实是一个在内核内存中维护的缓冲器,这个缓冲器的存储能力是有限的,不同的操作系统大小不一定相同管道拥有文件的特质:读操作、写操作 匿名管…

线扫相机DALSA-变行高拍照

CamExpert在线阵模式中默认的Buffer设置是Fixed Length。在这种设置下,在一帧采集结束前所接收到的新的帧触发信号都会被忽略。在有的应用中,需要新一帧的外触发信号能够中断当前帧的采集,开始新的一帧。这需要将Buffer设为Variable Length。…

【云原生】k8s之HPA,命名空间资源限制

内容预知 1.HPA的相关知识 2.HPA的部署运用 2.1 进行HPA的部署设置 2.2 HPA伸缩的测试演示 (1)创建一个用于测试的pod资源 (2)创建HPA控制器,进行资源的限制,伸缩管理 (3)进入其中一个pod容器仲&#xf…

Redhat OpenStack使用命令行发放云主机

OpenStack中各大组件的作用Glance:负责管理镜像(镜像的上传、删除、下载)Swift:提供镜像存储的空间Nova:负责配额的修改、启动云主机(实例)、创建密钥对、绑定弹性IP等Keystone:提供…

jQuery(二):属性、元素、尺寸位置操作、事件

jQuery属性操作内容文本值元素操作尺寸、位置操作事件注册事件处理事件对象拷贝对象属性操作 1.获取固有属性语法 prop(‘‘属性’’) 固有属性就是html自带的,例如a元素里面的 href ,input 元素里面的 type。 2.设置固有属性语法 prop(‘‘属性’’, …

Python NumPy 搜索 数组

前言NumPy(Numerical Python的缩写)是一个开源的Python科学计算库。使用NumPy,就可以很自然地使用数组和矩阵。NumPy包含很多实用的数学函数,涵盖线性代数运算、傅里叶变换和随机数生成等功能。本文主要介绍Python NumPy 搜索 数组…

Linux小黑板(8)管道

"让我们,笑吧"一、什么是通信?管道是属于进程间通信的一个实现方式。再讲管道之前呢,我们先来说说什么叫做进程间通信。我们日常生活中,给自己的家人、朋友给一个call,或者弹一条微信、QQ等等,从而让人家能够知道我们想…

Databend 开源周报第 76 期

英文版移步:https://databend.rs/blog/2023-01-11-databend-weekly Databend 是一款强大的云数仓。专为弹性和高效设计。自由且开源。即刻体验云服务:https://app.databend.com 。 What’s New 探索 Databend 本周新进展,遇到更贴近你心意的…

vue 中由浅拷贝引发问题的一些场景

在工作的过程中踩了很多的由浅拷贝导致的坑,今天总结在这里,希望对大家有所帮助 1. 组件中直接抛出一个引用类型变量 🌰举个例子 (ps: 以下代码为伪代码,主要展示逻辑用) 子组件(uploadImg&a…

线 程 同 步、线程的死锁问题

线程同步: 模拟售票程序出现问题:当多个线程同时访问共享数据时,产生无序、重复、超额售票等多线程安全问题 解决:将多个线程需要访问的共享数据,包装起来视为一个整体,确保一次只有一个线程执行流访问共享…

春节福利丨神策数据 2022 年数字化营销资料打包全送

2022 年,神策数据出品多份行业研究报告,覆盖银行、证券、零售、教育、电商、融合媒体等多个行业,帮助更多企业通过多视角洞见紧握数字化营销的方向和趋势,用方法论结合落地实践驱动企业数字化经营。01B2B 电商数字化运营聚焦四类 …

【自学Python】Python查找字符串位置

Python查找字符串位置 大纲 Python查找字符串位置教程 在开发过程中,很多时候我们有在一个 字符串 中查找另一个字符串位置的需求,在 Python 中,在一个字符串中查找另一个字符串的位置我们使用 index() 函数。 index() 函数的功能与 find(…

力扣(78.90)补9.22

78.子集 感觉不太难&#xff0c;但是就是不会写。感觉回溯里有很多细节问题。 class Solution { private: vector<vector<int>> res; vector<int> num; void back(vector<int>& nums,int index,int end){ res.push_back(num); …

【JavaEE初阶】第三节.多线程基础篇

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 文章目录 前言 一、认识线程 二、多线程程序 2.1 第一个Java多线程程序 2.2 怎么样观察线程的详细情况 2.3 sleep方法 2.4 run 和 start 方法的区别是什么 三、创…