论文阅读:LSeg: LANGUAGE-DRIVEN SEMANTIC SEGMENTATION

可以直接bryanyzhu的讲解:CLIP 改进工作串讲(上)【论文精读·42】_哔哩哔哩_bilibili

这里是详细的翻译工作

原文链接

https://arxiv.org/pdf/2201.03546.pdf

ICLR 2022

0、ABSTRACT

我们提出了一种新的语言驱动的语义图像分割模型LSeg。LSeg使用一个文本编码器来计算描述性输入标签(例如,“草”或“建筑”)的嵌入,同时使用一个基于变压器的图像编码器来计算输入图像的每像素密集嵌入。图像编码器的训练带有一个对比目标,以对齐像素嵌入到相应语义类的文本嵌入。文本嵌入提供了一种灵活的标签表示,语义相似的标签映射到嵌入空间中的相似区域(例如,“cat”和“furry”)。这使得LSeg可以在测试时一般化到以前未见过的类别,而无需重新训练,甚至不需要一个额外的训练样本。我们证明,与现有的zero-shot和few-shot分割方法相比,我们的方法实现了高度竞争的零镜头性能,甚至在提供固定标签集时,与传统分割算法的准确性相匹配。代码和演示可在https://github.com/isl-org/lang-seg获得。

(由于翻译软件的问题,少弹就是few-shot意思,zero-shot 零弹)

1、INTRODUCTION

        语义分割是计算机视觉的核心问题,其目的是将图像分割成具有相应语义类标签的连贯区域。大多数现有的语义分割方法都假定一组有限的语义类标签,这些标签可能被分配给一个像素。类别标签的数量由训练数据集决定,通常范围从10 (Everingham等人,2015年)到数百(Zhou等人,2019;Mottaghi等人,2014)的不同类别。由于英语定义了几十万个名词(Li et al., 2020c),标签集的有限大小很可能严重阻碍了现有语义分词模型的潜在识别性能。

        现有方法中限制标签集的主要原因是注释图像以产生足够的训练数据的成本。为了创建训练数据集,人类注释器必须将数千张图像中的每一个像素与语义类标签关联起来——这是一项极其劳动密集型的任务,即使使用较小的标签集,成本也很高。随着标签数量的增加,注释的复杂性会显著增加,因为人工注释器必须知道细粒度的候选标签。此外,当对象出现在可能适合多个不同描述或受标签层次结构控制的图像中时,注释器之间的一致性就会成为一个问题。(不同数据集之间的label不同)

        zero-shot和few-shot的语义分割方法已经被提出作为一个潜在的补救这个问题。少射方法(Shaban等人,2017;Rakelly等人,2018年;Siam等人,2019年;Wang et al., 2019;Zhang et al., 2019;Nguyen & Todorovic, 2019年;Liu et al., 2020b;Wang et al., 2020;Tian et al., 2020;Boudiaf等人,2021年;Min等人,2021)提供了一种方法,可以学习基于少量标记图像分割新颖的类。然而,这些方法仍然需要包含新类的标记数据,以便于传输。另一方面,zero-shot方法通常利用单词嵌入来发现或生成可见和不可见类之间的相关特征(Bucher等人,2019;Gu等人,2020),而不需要额外的注释。这一领域的现有工作使用标准的单词嵌入(Mikolov等人,2013),并专注于图像编码器。

        在这项工作中,我们提出了一种利用现代语言模型的简单方法来增加语义切分模型的灵活性和通用性。我们的工作受到CLIP图像分类模型的启发(Radford等人,2021),该模型将高容量的图像和文本编码器配对,以产生鲁棒的零拍分类器。我们建议使用在视觉数据上协同训练的最先进的文本编码器,如CLIP,将训练集中的标签嵌入到嵌入空间中,并训练视觉编码器从接近相应标签嵌入的输入图像中产生逐像素嵌入。由于文本编码器被训练嵌入彼此密切相关的概念(例如,“狗”更接近“宠物”而不是“车辆”),我们可以将文本编码器的灵活性转移到视觉识别模块,而只训练由现有语义分割数据集提供的受限标签集。图1(上一行)显示了一个例子,其中模型可以成功地标记属于“宠物”类的像素,尽管训练集不包含这个标签。

        我们的方法使合成零镜头语义切分模型。也就是说,用户可以在测试时任意地扩展、缩小或重新排序为任何图像设置的标签。我们进一步引入了一个输出模块,可以在保持这种灵活性的同时对预测进行空间正则化。我们在图1中演示了几个模型灵活性的例子。LSeg能够根据提供的标签集输出不同的分割映射。例如,在最后一行,输出(a)识别椅子并将所有非椅子对象标识为“other”,因为这是提供给模型的唯一两个标签。当添加标签时,如(b)和(c)所示,模型能够使用扩展的标签集成功分割其他对象。

        我们对各种zero-shot和few-shot语义分词任务进行了定量评价。我们的方法优于现有的方法,在零镜头设置,并在多个少镜头基准竞争。与我们比较的最先进的基线不同,我们的方法不需要额外的训练样本。我们的实验也表明,与标准的固定标签分割方法相比,引入文本嵌入只会在性能上造成微不足道的损失。(是否可以理解为牺牲了一部分准确性换取更大的泛化性)

2、RELATED WORK

        广义语义分割。现有的大多数语义分割模型都局限于一个固定的标签集,该标签集是由存在于训练数据集中的标签定义的(Minaee等人,2021年)。少片段语义切分方法的目的是在测试时,当一个或几个带注释的新类的例子可用时,放松固定标签集的限制。这些方法学习在待标注的查询图像和可能包含新的语义类的标注支持图像之间找到可靠的视觉对应关系(Shaban等人,2017;Rakelly等人,2018年;Siam等人,2019年;Wang et al., 2019;Zhang et al., 2019;Nguyen & Todorovic, 2019年;Liu et al., 2020b;Wang et al., 2020;Tian et al., 2020;Wang et al., 2020;Tian et al., 2020;Boudiaf等人,2021年;Min等人,2021)。虽然这种策略可以显著增强结果模型的通用性,但它需要至少一个带有目标标签集的标记示例图像的可用性,这一点并不总是实际的。

        零镜头语义分割方法的目标是在不添加任何新类样本的情况下分割不可见的对象。类标签的文本嵌入在这些作品中起着核心作用。Bucher等人(2019)和Gu等人(2020)提出利用词嵌入和生成模型来生成看不见的类别的视觉特征,而Xian等人(2019)提出将视觉特征投射到一个简单的词嵌入空间,并将产生的嵌入关联起来,以将一个标签分配给一个像素。Hu等人(2020)提出使用不确定性感知学习来更好地处理可见类的嘈杂标签,而Li等人(2020b)引入了一种结构化学习方法来更好地利用可见和不可见类别之间的关系。虽然所有这些都利用了文本嵌入,但据我们所知,我们的论文是第一个表明可以合成与固定标签和少镜头语义分割方法性能相当的零镜头语义分割模型的论文。

        人们提出了多种解决方案(Zhang et al., 2020b;Liu et al., 2020a;Perera等人,2020年;Zhou等人,2021)用于开放集识别(Scheirer等人,2012;耿等,2020)。它们的目的是提供关于给定样本是否在训练分布之外的二元判定,但不旨在预测全新类别的标签。 

        最后,另一项研究通过使用特征对齐、自我训练和信息传播策略探索了语义分割的跨领域适应方法(Yang等人,2021年;王等,2021)。这些作品的目标是增强模型到新的视觉域的可转移性,但它们没有解决限制标签集的问题。因此,它们与我们的工作是正交的。     

        语言驱动识别。语言驱动识别是一个活跃的研究领域。这一领域的常见任务包括视觉回答问题(Antol等人,2015)、图像字幕(Vinyals等人,2014)和图像-文本检索(Li等人,2020a)。CLIP (Radford et al., 2021)表明,通常与语言不相关的经典识别任务可以从语言辅助中极大地受益。CLIP使用对比学习与高容量语言模型和视觉特征编码器,为零拍图像分类合成非常鲁棒的模型。最近的工作已经扩展了这一基本范式,以执行灵活的对象检测。ViLD (Gu et al., 2021)引入了一种利用CLIP的先进的零镜头对象检测方法,而MDETR (Kamath et al., 2021)提出了一种端到端方法,该方法利用从最先进的语言模型中获得的文本特征来调制基于转换器的基线检测器。与CLIP一样,这些工作表明,通过语言辅助,目标检测模型的健壮性和通用性可以得到极大的提高。我们的工作受到了这些方法的启发,据我们所知,我们提出了第一个通过利用高容量语言模型灵活地合成零射语义切分模型的方法。

3、LANGUAGE-DRIVEN SEMANTIC SEGMENTATION

        我们的方法,语言驱动语义分割(LSeg)嵌入文本标签和图像像素到一个公共空间,并分配最接近的标签到每个像素。我们在图2中演示了这个框架,并在下面详细描述了每个部分。

文本编码器。该文本编码器将N个可能的标签集嵌入到一个连续向量空间RC中,产生N个向量T1,…Tn∈RC作为输出(图2中的蓝色向量)。多种网络架构是可能的,我们在整个过程中使用预训练的对比语言图像预训练(CLIP) (Radford等人,2021)。通过设计,输出向量集对输入标签的顺序是不变的,并允许它们的数量N自由变化。

图像编码器。与文本编码器类似,图像编码器为每个输入像素(下采样后)生成一个嵌入向量。我们利用密集预测变压器(DPT) (Ranftl等人,2021年)作为底层架构。假设H × W为输入图像大小,s为用户自定义下采样因子(在我们的实现中s = 2)。我们定义H= H/s, W= W/s。其输出是密集的嵌入(图2中的绿色张量)。我们将像素(I, j)的嵌入表示为Iij。

字像素相关张量。在嵌入图像和标签之后,我们通过内积将它们关联起来,创建大小为的张量(图2中的橙色张量),定义为

我们称像素(i, j)的嵌入与所有N个单词的内积的N维向量为,其中在训练过程中,我们鼓励图像编码器提供与对应groundtruth类的文本嵌入接近的像素嵌入。具体来说,给定N个标签的文本嵌入Tk∈RC和像素i, j的图像嵌入Iij∈RC,我们的目标是最大化与像素i, j的ground-truth标签k = yij对应的条目fijk的点积。我们通过在整个图像上定义一个像素化的softmax目标来实现:

其中t为用户定义的温度参数,我们将其设置为t = 0.07 (Wu et al., 2018;Radford等人,2021)。在训练过程中,我们使用交叉熵损失(使用温度标度)最小化逐像素软最大值,这是语义分割的标准1。

Spatial regularization

由于内存限制,图像编码器预测像素嵌入在比输入图像分辨率更低的分辨率。我们使用了一个额外的后处理模块,该模块对预测进行空间正则化,并将其采样到原始输入分辨率。在此过程中,我们必须确保所有操作对于标签保持不变。换句话说,输入通道之间不应该有交互,它们的顺序是由单词的顺序定义的,因此可以是任意的。我们评估了两个实现这一属性的函数:DepthwiseBlock和BottleneckBlock。在最后一步,我们使用双线性插值恢复预测在原来的分辨率。我们将这些函数称为“空间正则块”,并在图3中说明它们。

训练细节。我们使用ViT (Dosovitskiy et al., 2021)或ResNet (He et al., 2016)2中的官方ImageNet预训练权重初始化图像编码器的主干,并随机初始化DPT的解码器。在训练过程中,我们冻结文本编码器,只更新图像编码器的权值。我们为每个图像的文本编码器提供了由每个训练集定义的完整标签集。我们的模型可以在任何语义分割数据集上进行训练,并通过文本编码器支持多数据集的灵活混合。现有的语义分割模型在输出中指定一个固定的通道来表示像素作为对应语义类的概率。相反,我们的方法可以动态地处理不同长度、内容和顺序的标签集。这个属性允许通过简单地更改提供给文本编码器的标签来合成任意的零镜头语义分割模型。

4 EXPERIMENTS

我们设计LSeg主要是为了零镜头设置,其中用于推理的标签在训练中从未出现过。然而,由于缺乏标准化的协议和足够的数据集和基线的零杆设置,我们比较了LSeg和零杆和少杆语义分割模型在少杆基准上。请注意,少射击方法可以获得更多的信息,因此预期会产生更高的准确性。然而,与我们的方法相比,对标签样本的需求严重限制了它们的灵活性。

4.1 EXPERIMENTAL SETUP

4.2 PASCAL-5i AND COCO-20i

4.3 FSS-1000

这些数据集都不咋熟悉,暂时跳过

5 EXPLORATION AND DISCUSSION

5.1 ABLATION STUDIES

我们进一步实证地探讨了LSeg的各种性质。我们在ADE20K数据集(Zhou et al., 2019)上进行实验,该数据集是一个标准的语义分割数据集,包含多种图像,并提供150种不同类别的像素级分割。我们将基础学习率设置为0.004,并对模型进行240次迭代训练。我们使用动量为0.9的SGD和衰减率为0.9的多项式学习率调度器。除非另有说明,我们使用LSeg与DPT和较小的vi - b /32骨干剪辑vi - b /32文本编码器。

空间正则化块。我们首先对两种不同的空间正则化块进行消融研究,以清理输出。我们消融不同类型的块,并堆叠不同数量的块(N∈[0,1,2,4])。结果如表4所示。我们注意到,可以通过添加几个正则化块来实现一致的改进。最大的改进是通过堆叠两个瓶颈块实现的,这增加了架构的开销很少。

文本编码器。LSeg原则上支持任意文本编码器。我们在表5中展示了使用不同文本编码器的影响,其中我们去掉了CLIP零拍图像分类模型提供的各种编码器(Radford等人,2021年)。请注意,所有文本编码器都具有相同的基于转换器的体系结构,该体系结构只对文本进行操作。编码器之间的主要区别是在CLIP预训练期间配对的图像编码器(例如,标记为“vi - b /32”的文本编码器是与一个vi - b /32图像编码器一起训练的)和嵌入尺寸的大小。

我们观察到,在所有文本编码器中,使用RN50×16实现了最好的性能,比最弱的vi - b /32文本编码器高出2.5%。我们推测这是因为这个编码器提供的嵌入尺寸较大。

固定标签集的比较。语言帮助可以提高对未注释或不可见类的识别性能。但是,这种灵活性可能会影响具有固定标签集的任务的性能。为了测试这一点,我们在这个数据集上使用标准协议在ADE20K上训练LSeg,其中训练和测试标签是固定的(也就是说,在测试时没有看不见的类标签)。我们将结果与高度竞争的标准语义分割模型进行比较,包括OCNet (Yuan et al., 2020)、ACNet (Fu et al., 2019)、DeeplabV3 (Chen et al., 2017;Zhang等人,2020a)和DPT (Ranftl等人,2021)。结果如表6所示。我们发现LSeg在使用RN50 × 16文本编码器时具有竞争力,与最接近的固定标签分割方法(DPT)相比,在性能上的损失可以忽略不计。

5.2 QUALITATIVE FINDINGS

最后,我们在7个不同数据集的混合上训练LSeg (Lambert等人,2020),包括ADE20K (Zhou等人,2019)、BDD (Yu等人,2020)、cityscape (Cordts等人,2016)、COCO-Panoptic (Lin等人,2014;Caesar et al., 2018)、IDD (Varma et al., 2019)、Mapillary vista (Neuhold et al., 2017)和SUN RGBD (Song et al., 2015)。请注意,我们在这些数据集提供的原始标签集上训练我们的模型,而没有进行任何预处理或重新标记。我们遵循与ADE20K上相同的训练协议,用一个vi - l /16骨干和一个vi - b /32文本编码器训练LSeg,用于200个时代,基本学习率为0.004。如果一个类有多个标签,我们只使用在培训期间提供的第一个标签。我们从web中选择图像,并在图5中显示结果,以说明结果模型的使用。

相关但之前未见过的标签。在图5(a)中,我们举例说明了LSeg推广到新类的能力的一些突出例子。在第一行,在左边,我们首先从标签设置“天空”、“道路”、“房子”和“植物”开始,观察模型能够将图像分割到所提供的类中。然后我们将“房子”的标签改为“建筑”,将“植物”的标签改为“绿色植物”。该模型在这个不同但语义相关的标签集上产生类似的分割。尽管事实上“绿色植物”甚至“绿色”的标签并没有出现在任何训练图像中。第二行显示了类似的效果,其中LSeg成功地分割了图像,并正确地分配了标签“cake”或“dessert”(同样,在训练中没有看到标签“dessert”),同时成功地抑制了在视觉上和语义上都相关的标签“bread”。

不可见的分级标签。图5(b)展示了LSeg可以隐式地为标签的层次结构提供正确的分割映射。在第一行,模型能够识别图像中的“猫”、“植物”和“草”部分,正如预期的那样,因为这些标签出现在训练集中。当将“猫”替换为“毛茸茸的”标签时,我们注意到模型能够成功地识别出这个父类别(也就是说,大多数猫是毛茸茸的,但不是所有毛茸茸的物体都是猫)。同样地,当删除“草”标签时,我们注意到原来的“草”区域被合并为“植物”,这再次表明了文本嵌入的灵活性所提供的隐性层次结构。第二行演示了一个类似的场景,其中LSeg识别沙发和其他对象。而左侧的小shelf被分割为未知类别“other”。当我们将“沙发”改为“家具”时,LSeg成功地将沙发和小架子都定义为“家具”。请注意,“家具”从未出现在培训标签集中。

失败案例。虽然LSeg总体上取得了非常有希望的结果,但我们也观察到了一些失败的情况,如图6所示。左边的图像说明LSeg只使用一个类的阳性样本进行训练。当测试时间输入标签不包含对应像素的任何真实标签时,模型将文本嵌入空间中最近的标签赋值的概率最高。在这个具体的例子中,由于狗的视觉特征在嵌入空间中明显更接近于“玩具”而不是“草”,并且没有其他的标签可以解释视觉特征,模型将标签赋给了“玩具”。第二个失败案例显示在右侧,当多个解释与标签集一致时,模型聚焦于一个最可能的对象。在这个具体的例子中,房子的窗户被标记为“house”而不是“window”,即使标签“window”是可以选择的。我们希望这些失败案例可以为未来的工作提供参考,包括使用负样本增强训练,或者构建细粒度的语言驱动语义分割模型,当多个解释很好地符合数据时,可以分配多个标签。

6 CONCLUSION

我们介绍了一种新的训练语言驱动语义切分模型的方法和体系结构LSeg。LSeg实现了一种灵活的标签表示,将语义相似的标签映射到嵌入空间中的相似区域,并学习在该空间中关联视觉概念以产生语义分段。我们的公式使零镜头语义分割模型的合成与任意标签集的飞行。我们的实证结果表明,在不牺牲现有固定标签集的准确性的情况下,所得到的模型是零镜头语义分割的强有力的基线,甚至可以与少镜头分割模型相匹敌。

自己总结:

之前的想法通过更大的模型去分割,然后通过标签转换的方式直接得到结果,但显然这样更为巧妙。应该早点去读clip的图像的结果特征不应该被固定的标签而定义,而输入特定标签,然后通过相似性输出最有可能的结果,感觉用在自动驾驶应该不错不同的传感器,视觉、激光、雷达,分别训练后融合,特征向量可能存在不同的坐标系中,而通过语言模型,相当于把大家统一起来了,最近有空试一下这个想法。

疑问是,这个仍然是通过语义标签的去训练的,那没见过的标签实际是靠clip这大模型本身的能力吗?

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

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

相关文章

dockerfile简单实践部署(jenkins,wordpress)

实现部署jenkins的流程 配置java环境,导入jenkins包,运行命令 java -jar jenkins包,这里为了减少进入jenkins的web端安装插件,将插件提前部署到容器内。 制作dockerfile 创建镜像所在的文件夹和Dockerfile文件 mkdir /test cd …

【Flink系列六】Flink里面的状态一致性

状态一致性 有状态的流处理,内部每个算子任务都可以有自己的状态,对于流处理器内部来说,所谓的状态一致性,其实就是我们所说的计算结果要保证准确。一条数据不应该丢失,也不应该重复计算。再遇到有故障时可以恢复状态…

P30 C++智能指针

前言 🎬 个人主页:ChenPi 🐻推荐专栏1: 《C_ChenPi的博客-CSDN博客》✨✨✨ 🔥 推荐专栏2: 《Linux C应用编程(概念类)_ChenPi的博客-CSDN博客》✨✨✨ 🛸推荐专栏3: ​​​​​​《 链表_Chen…

在Spring Cloud使用Hystrix核心组件,并注册到Eureka注册中心去

其实吧,写Spring Cloud系列,我有时候觉得也挺难受的,因为Spring Cloud的微服务启动都需要一个一个来,并且在IDea中也需要占用比较大的内存,并且我本来可以一篇写完5大核心组件的,但是我却分了三篇&#xff…

QT 重定向qdebug输出到自绘界面

因为在嵌入式中调试qt需要查看输出信息,特意写了一个类用户便捷查看qdebug信息 界面如下: 提供了开始,停止,保存,清空,退出功能,具体代码下文给出 文件如下 #ifndef QDEBUGREDIRECT_H #define QDEBUGREDIRECT_H /**qdebug 重定向类 定向到界面控件*李吉磊 2023.12.7* */#in…

【dig命令查询方法】

dig(Domain Information Groper)是一个用于查询DNS(域名系统)的命令行工具,它可以帮助您获取关于域名的各种信息,如IP地址、MX记录、NS记录等。下面是dig的详细使用教程。 基本语法: dig [ser…

【数据库】树形数据组织架构下的封锁并发控制,B树索引并发访问控制,树协议原理及案例分析

数据库并发访问树协议 ​专栏内容: 手写数据库toadb 本专栏主要介绍如何从零开发,开发的步骤,以及开发过程中的涉及的原理,遇到的问题等,让大家能跟上并且可以一起开发,让每个需要的人成为参与者。 本专栏会…

docker基本管理和概念

1、定义:一个开源的应用容器引擎,基于go语言开发,运行在liunx系统中的开源的、轻量级的“虚拟机” docker的容器技术可以在一台主机上轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器 docker的宿主机是liunx系统,集…

深度学习与逻辑回归模型的融合--TensorFlow多元分类的高级应用

手写数字识别 文章目录 手写数字识别1、线性回归VS逻辑回归Sigmoid函数 2、逻辑回归的基本模型-神经网络模型3、多元分类基本模型4、TensorFlow实战解决手写数字识别问题准备数据集数据集划分 特征数据归一化归一化方法归一化场景 标签数据独热编码One-Hot编码构建模型损失函数…

NLP自然语言处理学习笔记

参考:NLP(自然语言处理)介绍 - 知乎 (zhihu.com) 一、NLP是什么 自然语言处理( Natural Language Processing, NLP)是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。自…

uni-app 微信小程序之好看的ui登录页面(一)

文章目录 1. 页面效果2. 页面样式代码 更多登录ui页面 uni-app 微信小程序之好看的ui登录页面(一) uni-app 微信小程序之好看的ui登录页面(二) uni-app 微信小程序之好看的ui登录页面(三) uni-app 微信小程…

原生微信小程序将字符串生成二维码图片

weapp-qrcode.js再最后 inde.ts中的内容 // pages/qrCode/index.ts // 引入weapp-qrcode.js文件 var QRCode require(../../utils/weapp-qrcode) Page({/*** 页面的初始数据*/data: {orderNo:"",imagePath:},/*** 生命周期函数--监听页面加载*/onLoad(options:any)…

渗透测试(Lab1.0)

1、用搜索引擎Google或百度搜索麻省理工学院网站中文件名包含“network security”的pdf文档,截图搜索得到的页面。 2、照片中的女生在哪里旅行? 截图搜索到的地址信息。 搜索餐厅的名字,找一下关键词 3、手机位置定位 通过LAC&#xff0…

【AIGC】prompt工程从入门到精通--图片生成专题

本文为系列教程【AIGC】prompt工程从入门到精通的子教程。 一、介绍 与文本提示相比,找到最佳的提示词来生成完美的图片并没有那么成熟。这可能是因为创建对象自身的挑战,这些对象基本上是主观的并且往往缺乏良好的准确性度量方法。 本指南涵盖了基本…

前端典例算法集合

前言 刷算法顺序:1、熟悉本文章第1点的内容;2、刷力扣算法,可以参考这本书的顺序与思想:代码随想录完整版PDF下载 | 合集下载 | 百度云 | | 代码随想录 (programmercarl.com) 3、刷牛客的高频考题 1、熟悉数组Array&#xff0c…

uni-app 微信小程序之好看的ui登录页面(四)

文章目录 1. 页面效果2. 页面样式代码 更多登录ui页面 uni-app 微信小程序之好看的ui登录页面(一) uni-app 微信小程序之好看的ui登录页面(二) uni-app 微信小程序之好看的ui登录页面(三) uni-app 微信小程…

uni-app 微信小程序之好看的ui登录页面(二)

文章目录 1. 页面效果2. 页面样式代码 更多登录ui页面 uni-app 微信小程序之好看的ui登录页面(一) uni-app 微信小程序之好看的ui登录页面(二) uni-app 微信小程序之好看的ui登录页面(三) uni-app 微信小程…

2023五岳杯量子计算挑战赛数学建模思路+代码+模型+论文

目录 计算力网络(CPN)是一种新型的信息基础设施,完整论文代码见文末 问题描述 2.1 问题1 2.2 问题2 2.3 问题3 问题1的解答过程: 问题3的解答过程: 决策优化应用场景:人工智能模型超参数调优 背景信…

【开源】基于Vue和SpringBoot的车险自助理赔系统

项目编号: S 018 ,文末获取源码。 \color{red}{项目编号:S018,文末获取源码。} 项目编号:S018,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 角色管理模块2.3 车…

MQTT源码分析

目录 MQTT源码分析 1. MQTT客户端功能 2. 客户端软件如何实现 3. 程序分层 4. 情景分析 4.1 连接服务器 4.2 创建线程 4.3 发布消息 4.4 最复杂:订阅消息 MQTT源码分析 分析源码:mqttclient\test\emqx\test.c 参考资料: kawaii-mqt…