[论文精读]利用大语言模型对扩散模型进行自我修正

本博客是一篇最新论文的精读,论文为UC伯克利大学相关研究者新近(2023.11.27)在arxiv上上传的《Self-correcting LLM-controlled Diffusion Models》 。

内容提要:

  • 现有的基于扩散的文本到图像生成模型在生成与复杂提示精确对齐的图像时仍然存在困难,尤其是需要数值和空间关系的提示。
  • 作者提出了自我校正语言模型控制扩散(SLD)框架,它可以自动迭代地纠正不准确之处, 从而提高文本到图像的对齐。
  • SLD框架包含两个主要组件:语言模型驱动的对象检测和语言模型控制的评估与校正。
  • SLD pipeline首先生成一个图像,然后评估该图像与提示的对齐情况,最后基于检测结果进行自我校正。
  • SLD pipeline可以应用于专有模型生成的图像,并且不需要额外的训练。
  • 实验结果显示,SLD框架可以校正大多数不正确的生成,特别是在数值、属性绑定和空间关系方面。
  • SLD pipeline也可以用来进行图像编辑。

摘要

随着扩散模型的出现, 文本到图像生成而取得了显著进步。尽管能够生成逼真的图像,但当前的文本到图像扩散模型仍然经常难以准确解释和遵循复杂的输入文本提示。与仅以最佳努力生成图像的现有模型相反,我们引入了自我校正语言模型控制扩散(SLD)。SLD是一个框架,它从输入提示中生成一个图像,评估其与提示的对齐程度,并对生成图像中的不准确之处进行自我校正。在语言模型控制器的驱动下,SLD将文本到图像生成转化为一个迭代封闭循环的过程,确保结果图像中的正确性。SLD不仅无需训练,而且还可以与诸如DALL-E 3之类的扩散模型无缝集成,从而进一步提升最先进扩散模型的性能。实验结果表明,我们的方法可以校正大多数不正确的生成,特别是在生成数值、属性绑定和空间关系方面。此外,通过简单地调整给语言模型的指令,SLD可以执行图像编辑任务,弥合文本到图像生成和图像编辑流程之间的差距。我们将公开我们的代码供未来研究和应用。

引言

文本到图像生成随着扩散模型的出现而取得了显著进步。然而,这些模型经常难以解释复杂的输入文本提示,特别是那些需要理解数值概念、空间关系和多个对象的属性绑定等技能的提示。如图1所示,尽管模型大小和训练数据有了惊人扩展,但这些挑战仍然存在于最先进的开源和专有扩散模型中。

为了克服这些局限性,研究者开展了多项研究和工程工作。例如,DALL-E 3等方法聚焦扩散训练过程,并在大规模上将高质量的说明文字合并到训练数据中。但是,这种方法不仅会产生巨大的成本,而且经常无法从复杂的用户提示中生成准确的图像,如图1所示。其他工作利用外部模型的力量,以便在实际图像生成之前的推理过程中更好地理解提示。例如, 参考文献[6,10]利用大型语言模型(LLM)将文本提示预处理为结构化的图像布局,从而确保初步设计与用户的指令一致。然而,这样的集成并没有解决下游扩散模型产生的不准确性,特别是在具有复杂场景的图像中,如多个对象、杂乱的布局或详细的属性。
在这里插入图片描述 图1. 现有的基于扩散的文本到图像生成器(例如,DALL-E 3 [18])通常难以精确生成与复杂输入提示正确对齐的图像,特别是对于需要精确数值和空间关系的图像。 我们的自校正 LLM 控制扩散 (SLD) 框架使这些扩散模型能够通过应用一组潜在空间操作(添加、删除、重新定位等)自动迭代地纠正错误,从而增强文本到图像的对齐 。

受人类画画和扩散模型生成图像的过程的启发,我们观察到他们的创作方式有一个关键的区别。假定一个人类艺术家被要求画一幅画,里面有两只猫。在整个绘画过程中,艺术家都会注意这一要求, 一定会确保画上确实有两只猫才认为工作完成。如果艺术家发现画上只有一只猫,他会添加另一只猫以满足提示的要求。这与当前的文本到图像扩散模型形成了鲜明的对比,后者以开环方式运行。这些模型通过预定的扩散步骤生成图像,并将结果输出给用户,而不考虑其与初始用户提示的对齐情况。不管扩大训练数据还是采用LLM预生成作为条件,这样的过程都缺乏一个健壮的机制来确保最终图像与用户的预期一致。

鉴于此,我们提出了自我校正大语言模型控制扩散(SLD)方法,它执行自我检查以自信地向用户保证提示和生成图像之间的对齐。**SLD采用了一种新颖的闭环方法,使扩散模型能够迭代地识别和纠正错误,有别于传统的单轮生成方法。**我们的SLD框架,如图2所示,包含两个主要组件:语言模型驱动的对象检测以及语言模型控制的评估和校正。

在这里插入图片描述
图2. 现有的基于扩散的文本到图像生成器(例如,DALL-E 3 [18])通常难以精确生成与复杂输入提示正确对齐的图像,特别是对于需要计算能力和空间关系的图像。 我们的自校正 LLM 控制扩散 (SLD) 框架使这些扩散模型能够通过应用一组潜在空间操作(添加、删除、重新定位等)自动迭代地纠正错误,从而增强文本到图像的对齐 。

SLD pipeline遵循标准的文本到图像生成设定。给定概述所需图像的文本提示,SLD首先调用图像生成模块(例如上述的开环文本到图像扩散模型)以尽最大努力生成图像。由于这些开环生成器无法保证输出与提示完全对齐,SLD随后使用语言模型解析关键短语,由开放词汇检测器全面评估生成的图像与提示的一致性。随后,语言模型控制器以检测到的边界框和初始提示为输入,检查检测结果与提示要求之间的潜在不匹配,建议适当的自我校正操作,如添加、移动和删除对象。最后,利用基础扩散模型(例如Stable Diffusion), SLD采用潜空间组合来实现这些调整,从而确保最终图像准确反映用户的初始文本提示。

需要注意的是,我们的流程不对初始生成的来源施加限制,因此适用于通过API访问的专有模型(例如图1中的DALL-E 3)生成的图像。此外,自我校正操作都不需要对我们的基础扩散模型进行任何额外的训练,这使得我们的方法可以轻松地应用于各种扩散模型,而无需人工标注或训练的成本

我们证明了SLD框架在LMD基准测试的复杂提示上可以显着提高当前基于扩散的方法。结果显示,我们的方法可以比LMD+提高9.0%的性能,后者已经利用语言模型在图像生成过程中发挥了很强的作用。更重要的是,使用DALL-E 3进行初始生成后,我们方法生成的图像与校正前相比提高了26.5%的性能。

最后,由于SLD pipeline与最初生成的图像无关,因此它可以轻松地转换为图像编辑pipeline,方法是简单地更改给语言模型的提示。尽管生成性建模社区通常将文本到图像生成和图像编辑视为不同的任务,但我们的SLD能够通过统一的pipeline执行这两项任务。

我们的主要贡献如下:

  1. SLD是第一个集成检测器和大语言模型来自我校正生成模型的方法,确保在没有额外训练或外部数据的情况下准确生成。
  2. SLD提供了图像生成和编辑的统一解决方案,可以提高任何图像生成器(例如DALL-E 3)的文本到图像对齐度,并可以对任何图像进行对象级编辑。
  3. 实验结果表明,我们的方法可以校正大多数不正确的生成,特别是在数值、属性绑定和空间关系方面。

我们将发布我们的代码供未来研究和应用。

相关工作

2.1 文本到图像扩散模型

基于扩散的文本到图像生成有了很大进步。最初的研究表明[21–23]扩散模型能够创建高质量图像,但在复杂的提示下表现较差。后续的研究[3, 9, 20, 28– 30]采用了关键点和边界框等额外输入来控制扩散生成过程。

最近的进展[6, 10– 12, 31]是结合了大语言模型来控制扩散模型的生成,无需额外的互补信息作为输入。在这些方法中,大语言模型发挥着核心作用,直接解释用户的文本提示并管理初始的布局配置。尽管取得了一定进展,但这些模型通常以开环方式运行,在单次迭代中生成图像,无法保证生成的图像与用户提示一致。

与之前的工作不同,SLD 是第一个基于闭环扩散的生成方法。 SLD 集成了先进的目标检测器和 LLM,执行迭代自检和校正,显著增强了文本到图像的对齐。 这一改进涵盖了精准识数、多对象属性绑定以及空间推理,适用于包括 DALL-E 3在内的多种模型。

2.2 基于扩散的图像编辑

文本到图像扩散模型的最新进展极大地扩展了其在图像编辑中的应用,涵盖全局编辑和局部编辑任务。诸如Prompt-2-prompt [7]和InstructPix2Pix [2]等技术专门用于全局编辑,如风格转换。相反,SDEdit [16]、DiffEdit [4]和 Plug-and-Paly [24]等方法侧重于局部编辑,瞄准图像中的特定区域。尽管也取得了一些进展,但这些方法通常难以实现精确的对象级操作和需要空间推理的任务,如调整或重新定位对象的大小和位置。虽然最新方法如Self-Guidance [5] 提供了细粒度操作,但在移动或重新定位对象时仍需要用户输入特定坐标。

与这些只关注扩散模型的方法不同,SLD引入了检测器和语言模型的组合来进行编辑,仅需要用户提示即可实现细粒度编辑。此外,SLD在各种对象级编辑任务中表现出色,包括添加、替换、移动和修改属性、交换(swapping)等,在易用性和编辑能力方面显示出显著改进。

自我校正大语言模型控制扩散

在本节中,我们介绍我们的自我校正大语言模型控制扩散(SLD)框架。SLD由两个主要组件组成:大语言模型驱动的对象检测(3.1节)以及大语言模型控制的评估和校正(3.2节)。此外,通过简单地改变大语言模型的指令,我们展示了SLD在图像编辑应用上的适用性,将文本到图像的生成和编辑统一到一起,如3.3节所讨论的。完整的pipeline如算法1所示。
在这里插入图片描述

3.1 大语言模型驱动的对象检测

我们的SLD框架以大语言模型驱动的对象检测作为开始,提取下游评估和校正所需的信息。如图2中的绿色箭头所示,大语言模型驱动的对象检测包括两个步骤:1)我们利用大语言模型作为解析器,它解析用户提示并输出可能与图像评估相关的关键短语。2)这些短语然后被传入开放词汇对象检测器(open-vocabulary object detector)中。检测到的框应该包含支持评估图像是否与用户提示规范对齐的信息。

在初始步骤中,大语言模型解析器被指示从用户提供的文本提示 P P P中提取一系列关键对象详细信息,标记为 S S S。这个解析器在文本指令和上下文示例的帮助下可以轻松完成这项工作,如图3(a)所示。 对于包含“a green motorcycle”和“a blue motorcycle”等短语的用户提示,期望大语言模型识别并输出与“motorcycle车”相关联的“green”和“blue”作为属性。 当提示中引用没有特定数量或属性的对象时,如“a monkey”和“a raccoon”,这些描述符将保持为空。 重要的是,大语言模型的作用不仅限于识别对象名词;它还包括识别任何相关的数量或属性。
在这里插入图片描述
图3. 我们的自我校正pipeline由两个不同的 LLM 驱动:(a)LLM 解析器分析用户提示 P P P 来提取关键对象信息 S S S 的列表,然后将其传递给开放词汇检测器。 (b) LLM控制器将用户提示 P P P和当前检测到的边界框 B c u r r B_{curr} Bcurr作为输入,输出建议的新边界框 B n e x t B_{next} Bnext。 这些随后被转化为一组用于图像处理的潜在空间操作 O p s Ops Ops

在第二步中,开放词汇检测器处理第一步解析的关键对象信息列表S,以检测和定位图像中的对象。我们用格式化查询 image of a/an [attribute] [object name] 来提示开放词汇对象检测器,其中“attribute”和“object name”来自解析器的输出。 然后,得到的边界框 B c u r r B_{curr} Bcurr以列表格式[(“[attribute] [object name] [object ID]”, [x, y, w, h])]组织以进行进一步处理。 一种特殊的情况是prompt对对象数量有约束。 对于属性对象(例如“blue dog”)数量不足的情况,我们提供非属性对象(例如“dog”)的补充计数,为后续的语言模型控制器决定是添加更多“蓝狗”还是简单地将现有狗的颜色改为蓝色提供上下文信息。 我们将在3.2.1节更详细地解释这些操作,包括对象添加和属性修改。

3.2 大语言模型控制的分析和校正

我们使用大语言模型控制器进行图像分析和后续校正。 控制器在给定用户提示 P P P和检测到的框 B c u r r B_{curr} Bcurr的情况下,需要分析图像(由对象边界框表示)是否与用户提示的描述对齐,并提供一组校正后的边界框 B n e x t B_{next} Bnext,如图3(b)所示。

**SLD然后以编程方式分析校正后和原始边界框之间的不一致,输出一组编辑操作Ops,包括添加、删除、重新定位和属性修改。 **然而,简单的框集表示没有对应的信息,在多个框共享相同的对象名称时,不允许轻松地比较大语言模型控制器的输入和输出布局。 例如,当输入和输出布局中都有两只猫的boxes时,一个猫的box对应于输出布局中的哪只猫的box是不清楚的。 我们没有引入另一种算法来猜测对应关系,而是提出让大语言模型输出对应关系,方法很简单:我们给每个边界框一个对象ID,每个对象类型内的编号依次增加,作为对象名称后面的后缀添加。 在上下文示例中,我们向大语言模型展示校正前后对象应该具有相同的名称和对象ID。

3.2.1 用于图像校正的免训练潜在操作

大语言模型控制器输出一系列要应用的校正操作。对于每个操作,我们首先将原始图像转换为潜在特征。然后,我们的方法执行一系列操作Ops,如添加、删除、重新定位和属性修改,应用于这些latent layers。我们在下面解释每个操作的执行方式。

添加(Addition)。受[10]的启发,添加过程包括两个阶段:预先生成一个对象并将其潜在表示集成到原始图像的潜在空间中。最初,我们使用扩散模型在指定的边界框内创建一个对象,然后使用模型(例如SAM [8])进行精确分割。然后,该对象通过与我们的基本扩散模型的反向扩散序列进行处理,产生出与该对象对应的masked latent layers,稍后与原始画布合并。

**删除(Deletion)**操作从SAM优化边界框内对象的边界开始。然后重置与这些指定区域相关的潜在层,用高斯噪声填充。这需要在接下来的正向扩散过程中完全重新生成这些区域。

**重新定位(Repositioning)**涉及修改原始图像以将对象与新的边界框对齐,同时保持其原始宽高比。初始步骤包括移动和调整图像空间中的边界框大小。在此之后,SAM优化对象边界,然后是反向扩散过程以生成相关的latent layers,类似于添加操作中的方法。用高斯噪声替换切除部分对应的潜在层,而新添加的部分则集成到最终图像组成中。在重新定位中需要考虑的一个重要因素是在图像空间而不是潜在空间中进行对象调整大小,以维持高质量结果。

**属性修改(Attribute Modification)**从SAM优化边界框内对象的边界开始,然后应用诸如DiffEdit [4]之类的属性修改。然后,基础扩散模型reverse图像,产生一系列masked latent layers,以备最终合成。

在每个对象的编辑操作之后,我们继续进行重组阶段(recomposition phase),如图4所示。在此阶段,移除或重新定位区域的潜在值用高斯噪声重新初始化,而添加或修改的潜在值则相应更新。 对于有多个重叠对象的区域,我们首先放置较大的遮挡,以确保较小对象的可见性。
在这里插入图片描述
图4. 我们的潜在操作可以概括为两个关键概念:(1)删除区域中的潜在表示被重新初始化为高斯噪声,并且新添加或修改的对象的潜在表示被合成到画布上。 (2) Latent composition仅限于初始步骤,随后是标准前向扩散过程的“unfrozen”步骤,增强视觉质量并避免人为复制粘贴效果。

然后,修改后的latent堆栈经历最后的正向扩散过程,首先冻结未用高斯噪声重新初始化的区域(即强制与同一步骤的未修改潜在值对齐)。这对于准确形成更新的对象而同时保持背景一致性至关重要。该过程以允许所有内容发生变化的几个步骤结束,产生一个在视觉上连贯和正确的图像。

3.2.2 自我校正过程的终止

尽管我们观察到一轮生成通常足以满足我们遇到的大多数情况,但后续轮次仍可通过提高正确性进一步改善性能,使我们的自我校正成为一个迭代过程。

确定校正轮数的最佳数量对于在效率和准确性之间平衡至关重要。如算法1所概述,我们的方法设置最大尝试校正轮数,以确保整个过程在合理的时间内完成。

当大语言模型输出与输入相同的布局时(即如果大语言模型控制器建议的边界框 B n e x t B_{next} Bnext与当前检测到的边界框 B c u r r B_{curr} Bcurr对齐时),或者当达到最大生成轮数时,该过程完成,这表明该方法无法为提示生成正确的图像。 这一迭代过程根据检测器和大语言模型控制器的准确性提供图像的正确性保证,确保其与初始文本提示紧密对齐。 我们在4.3节中探讨多轮校正的效果。

3.3 统一的文本到图像生成和编辑

除了自我校正图像生成模型之外,我们的 SLD 框架也很容易适应图像编辑应用,仅需要很小的修改。一个关键区别在于用户输入提示的格式。与场景描述不同,图像编辑需要用户详细说明原始图像和所需的更改。例如,要通过将香蕉替换为橙子来编辑包含两个苹果和一个香蕉的图像,提示可以是:“Replace the banana with an orange, while keeping the two apples unchanged.”。

编辑过程类似于我们的自我校正机制。大语言模型解析器从用户的提示中提取关键对象。然后,这些对象由开放词汇检测器识别,建立当前边界框的列表。具备特定任务目标、guidelines和上下文示例的面向编辑的大语言模型控制器分析这些输入。它提出更新的边界框和相应的潜在空间操作,以实现精确的图像操作。

SLD执行细致的对象级编辑的能力将其与InstructPix2Pix [2]和prompt2prompt [7]等现有基于扩散的方法区分开来,后者主要解决全局图像样式更改。此外,SLD通过启用全面的对象重新定位、添加和删除的精确控制,优于DiffEdit [4]和SDEdit [16]等工具,后者仅限于对象替换或属性调整。我们在4.2节的比较分析将进一步突出SLD比现有方法更优越的编辑能力。

在这里插入图片描述
图5. SLD 可增强各种基于扩散的生成模型(例如 SDXL、LMD+ 和 DALL-E 3)的文本到图像对齐。值得注意的是,如第一行中的红色框突出显示的那样,SLD 精确地定位了一辆蓝色自行车与长凳和棕榈树的相对位置关系,同时保持棕榈树和海鸥的准确计数。 第二行进一步证明了 SLD 在复杂、杂乱的场景中的鲁棒性,通过我们的免训练潜在操作有效地管理对象碰撞。

实验

4.1 与图像生成方法的比较

实验设定。我们用LMD基准 [10]测试评估SLD框架的性能,LMD基准专门设计用来评估复杂任务上的生成方法,如处理否定、数值化、对多个对象的精确属性绑定和空间推理。对于每个任务,100个程序生成的提示被馈送到各种文本到图像生成方法中以产生相应的图像。我们用开放词汇检测器OWL-ViT v2 [15]对我们方法和baselines 生成的图像进行评估,以量化输入提示和生成图像之间的对齐情况,从而进行可靠的定量评估。我们将SLD与几种领先的文本到图像扩散方法进行了比较,如MultiDiffusion、BoxDiff、LayoutGPT、LMD+和DALL-E 3。为确保公平比较,所有结合LLM的模型都使用相同的GPT-4模型。 在我们的SLD实现中,我们利用LMD+作为潜在空间操作的基础模型,并使用OWL-ViT v2作为开放词汇对象检测器。

实验结果。如表1所示,将SLD方法应用于开源(LMD+)和专有模型(DALL-E 3)可以显著提高其生成正确性的性能。 对于否定任务,由于LMD+将包含“without”信息的用户提示转换为否定提示,在没有集成SLD的情况下已经达到了100%的精确度。 相比之下,尽管DALL-E 3也使用语言模型重写提示,但它仍然无法处理某些否定案例,这可能是因为语言模型仅将否定关键词(例如“without”)放入重写后的提示中。 在这种情况下,我们的SLD方法可以自动纠正其中大多数错误。 对于计数任务,将SLD与LMD+集成可以获得显著改进,达到98%的准确度。 我们注意到,DALL-E 3经常无法生成具有正确对象数量的图像。 但是,此问题通过SLD得到了实质性的缓解,其性能提高了20%以上。 对于属性绑定任务,SLD分别提高了DALL-E 3和LMD+ 6%和14%的性能。 值得注意的是,DALL-E 3最初在此任务中优于LMD+,这可能是由于其在高质量图像caption数据集上的训练。 最后,对于空间推理任务,将SLD与LMD+和DALL-E 3集成可以分别提高12%和6%的性能。

表1 - 我们的方法可以应用于各种图像生成方法,并大幅提高生成精度。
在这里插入图片描述

4.2 应用于图像编辑

如3.3节所述,与现有方法相比,SLD擅长细粒度图像编辑。 如图6所示,我们将开放语言检测器与大语言模型集成,实现了局部潜在空间区域的精确修改。 SLD熟练地执行特定编辑,如无缝地将苹果替换为南瓜,同时保持周围对象的完整性。 相比之下,InstructPix2Pix等方法局限于全局转换,DiffEdit通常无法准确定位要修改的对象,导致不良后果。
在这里插入图片描述
图6. 当被指示执行对象级图像编辑时。 InstructPix2Pix [2] 完全无法完成任务,而 DiffEdit [4] 也未能完成任务,如图中绿色框中突出显示的那样。 相反,我们的方法在执行这些对象级编辑方面表现出明显更好的性能。

此外,如图7所示,SLD支持广泛的编辑指令,包括计数控制(如添加、删除或替换对象)、属性修改(如改变颜色或材质)和复杂的位置控制(包括对象交换、调整大小和移动)。 一个突出的例子出现在第一行的“Object Resize”列中,SLD精确地按1.25倍的比例放大了桌子上的杯子。 我们鼓励读者用尺子验证这一点,以清楚地展示我们方法的精度。这种精度水平源于探测器的精确物体定位以及LLM的推理能力和新放置建议的能力。 这种对空间调整的详细控制是以前任何方法都无法比拟的,凸显了 SLD 对细粒度图像编辑的贡献。
在这里插入图片描述
图7. SLD 可以在自然、类似人类的指令的指导下处理各种图像编辑任务。 其功能涵盖从调整对象数量到更改对象属性、位置和大小。

4.3 讨论

多轮自我校正。我们在表2中的分析突出了多轮自我校正的好处,以及第一轮校正总是最有效的,并且效果边际递减。第一轮校正可显着减轻Stable Diffusion中固有的问题。然后,第二轮校正仍可在所有四项任务上取得显着改进。

表2 - 虽然大多数错误通常在第一轮中得到纠正,但多轮纠正始终优于单轮方法。
在这里插入图片描述

局限性和未来工作。我们方法的一个局限性如图8所示,其中SLD未能准确移除一个人的头发。在这种情况下,尽管成功识别和定位头发,但由于其复杂的形状,用于区域选择的SAM模块会对相邻部分进行意外分割,从而对人脸进行意外移除。 然而,由于人的衣服没有被移除,基础扩散模型无法生成自然的组合。这表明需要一个更好的区域选择方法来进一步改进生成和编辑质量。
在这里插入图片描述
图8. SLD 难以处理复杂形状的物体,因为 SAM 模块可能会在此过程中无意中分割相邻部分。

结论

我们引入了自我校正大语言模型驱动(SLD)框架,这是使用检测器和大语言模型显着提高文本到图像对齐的先进自我校正系统。此方法不仅在图像生成基准测试中达到了新的标杆性能,而且还与各种生成模型(包括DALL-E 3)兼容。而且,SLD将其用途扩展到图像编辑应用,提供了超越现有方法的细粒度对象级操作。

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

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

相关文章

xampp环境安装

XAMPP是完全免费且易于安装的Apache发行版,其中包含Apache、MariaDB、PHP和Perl。 类似XAMPP的服务器套件还有很多,我用过的还有UPUPW,它们都极大的简化了开发环境的配置。 下载链接Download XAMPP 我选的最新的 一路next就安装好了。 访问…

P1006 [NOIP2008 提高组] 传纸条

洛谷的题 网址:P1006 [NOIP2008 提高组] 传纸条 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 还是动态规划,这题和我上一篇博客写的题差不多 区别在于,这个地图不再是方阵,路线不能交叉,而且地图的大小可能大得多…

flex布局实战之自动填充剩余

案例目标 文字部分自适应并且居中 图中是一个弹窗&#xff0c;我现在使用flex的布局来实现&#xff0c;标题和关闭按钮。因为是uni-app,所以标签是view 。你可以自行替换为 代码 <view class"popup-box"><view class"title"><view class&…

Oracle:左连接、右连接、全外连接、(+)号详解

目录 Oracle 左连接、右连接、全外连接、&#xff08;&#xff09;号详解 1、左外连接&#xff08;LEFT OUTER JOIN/ LEFT JOIN&#xff09; 2、右外连接&#xff08;RIGHT OUTER JOIN/RIGHT JOIN&#xff09; 3、全外连接&#xff08;FULL OUTER JOIN/FULL JOIN&#xff0…

【剑指offer|图解|位运算】训练计划VI+撞色搭配

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;数据结构、剑指offer每日一练 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 一. ⛳️训练计划VI&#xff08;题目难度&#xff1a;中等&#xff09;1.1 题目1.2 示例1.3 …

(11_29)畅捷通的 Serverless 探索实践之路

作者&#xff1a;计缘 畅捷通介绍 畅捷通是中国领先的小微企业财税及业务云服务提供商&#xff0c;成立于2010年。畅捷通在2021年中国小微企业云财税市场份额排名第一&#xff0c;在产品前瞻性及行业全覆盖方面领跑市场&#xff0c;位居中国小微企业云财税厂商矩阵领军象限前…

免费WordPress站群插件-批量管理站群的免费软件

WordPress站群插件&#xff1a;让文章管理如丝般顺滑 在众多网站建设工具中&#xff0c;WordPress一直以其简便易用、丰富的插件生态而备受青睐。对于站群管理者而言&#xff0c;如何高效地更新、发布和推送文章是一项不可忽视的任务。本文将专注分享一款WordPress站群插件&am…

SQL Server 2016(分离和附加数据库)

1、实验环境。 基于上一个实验《SQL Server&#xff08;创建数据库&#xff09;》 2、需求描述。 class数据库的数据文件和事务日志文件都位于C:\db_class目录下。现在需要把class数据库的数据文件和事务日志文件分开存放&#xff0c;数据文件class.mdf存放于原位置&#xff0…

GNN Maximum Flow Problem (From Shusen Wang)

Maximum Flow Problem ShusenWang 图数据结构和算法课程笔记 Slides Maximum Flow Problem Description Naive Algorithm Residual Capacity - FlowLeft: Original GraphRight: Residual Graph - Bottleneck capacity 2- Iteration 2:- Find an augmenting path: s -&g…

unity 2d入门飞翔小鸟按钮点击功能且场景切换(二)

1、素材包获取 链接: https://pan.baidu.com/s/1KgCtQ_7wt2mlbGbIaMVvmw 提取码: xxh8 2、将素材全部拉进去 3、创建新的场景 并且将场景添加到build settings里面 4、脚本 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityE…

❀My学习Linux命令小记录(14)❀

目录 ❀My学习Linux命令小记录&#xff08;14&#xff09;❀ 56.man指令 57.whatis指令 58.info指令 59.--help指令 60.uname指令 ❀My学习Linux命令小记录&#xff08;14&#xff09;❀ 56.man指令 功能说明&#xff1a;查看Linux中的指令帮助。 &#xff08;ps.man命…

初识Linux——基本指令(详解)1

呀哈喽&#xff0c;我是结衣。 在学习数据结构的同时&#xff0c;也不要忘了Linux的学习啊。今天我们开始Linux的教学&#xff0c;在学习之前我们肯定要会搭建Linux的学习环境&#xff0c;在我们的以前的博客里是有讲解的&#xff0c;所以所以这里我们就不在多说&#xff0c;我…

你好!哈希表【JAVA】

1.初识&#x1f3b6;&#x1f3b6;&#x1f3b6; 它基本上是由一个数组和一个哈希函数组成的。哈希函数将每个键映射到数组的特定索引位置&#xff0c;这个位置被称为哈希码。当我们需要查找一个键时&#xff0c;哈希函数会计算其哈希码并立即返回结果&#xff0c;因此我们可以…

【Math】高斯分布的乘积 Product of Guassian Distribution【附带Python实现】

【Math】高斯分布的乘积 Product of Guassian Distribution【附带Python实现】 文章目录 【Math】高斯分布的乘积 Product of Guassian Distribution【附带Python实现】1.推导2. CodeReference 结果先放在前面 1.推导 在学习PEARL算法的时候&#xff0c;encoder的设计涉及到了…

Linux下安装Nginx

目录 Nginx简介 Nginx安装 Nginx指令 停止nginx服务 安全退出 重新加载配置文件 查看nginx进程 Nginx简介 Nginx 是一个高性能的HTTP和反向代理web服务器&#xff0c;其特点是占有内存少&#xff0c;并发能力强&#xff0c;其并发能力在同类型的网页服务器中表现较好。 …

行业内卷严重到什么程度了?

一.内卷现状 最近大家都吐槽找工作难&#xff0c;确实很难。 不得不说&#xff0c;现在找工作的难度是以前的很多倍。甚至可以说地狱级都不为过。 以前只要简历一挂到网上&#xff0c;就有很多电话打过来。特别是在一线城市&#xff0c;各种类型企业的HR都来找&#xff0c;希…

DFT(离散傅里叶变换)的通俗理解

本文包含了博主对离散傅里叶变换&#xff0c;负频率&#xff0c;实信号与复信号频谱的理解&#xff0c;如有不妥&#xff0c;欢迎各位批评指正与讨论。 文章目录 DFT的理解信号的频谱实信号的频谱复信号的频谱 DFT的理解 傅里叶变换是一种将信号从时域转换到频域的数学工具。…

TCP_握手+挥手过程状态变化分析

TCP状态解读 握手挥手过程状态变化 同时握手 双发同时发起syn请求&#xff0c;状态变化过程如下&#xff1a; 图片来源&#xff1a;http://www.tcpipguide.com/free/t_TCPConnectionEstablishmentProcessTheThreeWayHandsh-4.htm 同时挥手 4次挥手&#xff0c;可以理解为2…

2023.12.2 做一个后台管理网页(左侧边栏实现手风琴和隐藏/出现效果)

2023.12.2 做一个后台管理网页&#xff08;左侧边栏实现手风琴和隐藏/出现效果&#xff09; 网页源码见附件&#xff0c;比较简单&#xff0c;之前用很多种方法实现过该效果&#xff0c;这次的效果相对更好。 实现功能&#xff1a; &#xff08;1&#xff09;实现左侧边栏的手…

智安网络|语音识别技术:从历史到现状与未来展望

语音识别技术是一种将语音信号转化为可识别的文本或命令的技术&#xff0c;近年来得到了广泛应用和关注。 一. 语音识别的发展现状 1.历史发展 语音识别技术的起源可以追溯到20世纪50年代&#xff0c;但直到近年来取得了显著的突破和进展。随着计算机性能的提升和深度学习算法…