当前位置: 首页 > news >正文

LeDeCo:AI自动化排版、设计、美化海报

1.简介

平面设计是一门艺术学科,致力于创造吸引注意力和有效传达信息的视觉内容。今天,创造视觉上吸引人的设计完全依赖于具有艺术创造力和技术专长的人类设计师,他们巧妙地整合多模态图形元素,这是一个复杂而耗时的过程,需要仔细考虑许多方面。例如,重要的是确保主对象不被其他元素遮挡、为了可读性,文本和正文之间应该有足够的对比。此外,设计师还需要调整元素的大小,使设计平衡。

这篇文章的核心内容是介绍了一种名为LaDeCo的新型自动图形设计构图方法。LaDeCo通过将大型多模态模型(LMMs)与分层设计原则相结合,能够将多模态图形元素自动组合成一个整体、平衡且美观的图形设计。

它首先对给定的元素集进行层规划,将输入元素根据内容划分为不同的语义层,然后基于规划结果,以层为单位预测控制设计构图的元素属性,并将之前生成层的渲染图像纳入上下文,从而将复杂的任务分解为更易管理的小步骤,使生成过程更顺畅清晰。此外,LaDeCo还可以在图形设计中实现一些有趣的应用,如分辨率调整、元素填充、设计变化等。

实验结果表明,LaDeCo在设计构图方面优于现有基线模型,并且在一些设计子任务上甚至超过了专门的模型,还支持分辨率调整、元素填充、设计变体等有趣的应用。

论文地址:[2412.19712] From Elements to Design: A Layered Approach for Automatic Graphic Design Composition

-

效果展示

-
-

2.任务定义

为了减轻人类设计师的负担,最近,人们越来越有兴趣开发生成模型来简化这一过程。大多数现有工作都集中在设计组合的某些典型子任务上。

以前的方法

例如,一些以前的方法研究内容感知布局生成,其目的是在给定画布上自动排列图形元素,同时确保主对象保持合理布局。虽然这些方法能够创建高质量的布局,但它们通常只考虑背景图像内容,而忽略其他元素的内容。此外,它们在布局生成过程中不会预测与文本相关的属性,这限制了它们生成完全集成设计的能力。

另一个流行的子任务称为排版生成。它的目标是为文本元素生成字体、颜色、大小和其他属性,从而增强美观性和可读性。然而,它忽略了平面设计中的视觉元素。总之,所有这些研究都缺乏整体设计创作。因此,用户必须手动集成不同功能的模型来实现设计组合,这带来了高昂的成本和不必要的障碍。

据我们所知,FlexDM是自动设计组合的唯一尝试。通过将图形设计表示为元素属性的平面组合,FlexDM将各种设计任务制定为掩蔽字段预测问题,包括设计组合任务。

虽然平面表示提供了实用性和多功能性,但它有一个明显的局限性:它忽略了图形设计中固有的层次结构。这种层次结构的出现是因为人类设计师通常遵循分层设计原则。具体来说,它从背景开始,然后逐渐添加底层,图像,文本和小装饰(见上图)。这种分层原则带来了两个主要好处。首先,前面的每一层都为设计后续层提供了坚实的基础,有助于内聚。第二,按层对相似元素进行分组,澄清了设计过程,提高了工作流效率。

作者的方法

基于这一见解,作者提出了LaDeCo,这是一种基于大型多模态模型(Large Multimodal Models,LVMs)的分层设计组合方法。考虑到输入元素本质上是多模态的,并且可以通过顺序预测每个元素的属性来制定设计组合,作者选择Lebron作为这项任务的骨干。

为了支持分层机制,作者开发了一个层规划模块。具体来说,作者仔细设计了任务提示,并利用GPT-4 o通过考虑其内容来预测每个输入元素的语义标签。共享同一标签的元素被放置在同一层上,从而达到层规划。随后,LaDeCo根据层规划结果将生成过程分为几个步骤。在每一步中,都要求LMM预测单个层中的元素属性。在每一步之后,先前生成的层将被渲染为中间设计图像并反馈到LMM中,为后续的层预测提供上下文信息。

由于新颖的设计,LaDeCo将具有挑战性的任务分解为更小的可管理步骤。在每一步,模型只关注当前层的设计组合,使过程更容易访问。此外,通过渲染中间设计并将其添加到上下文中,模型可以更好地基于先前的层生成后续层。分层生成还提供了灵活性,允许LaDeCo支持设计组合的某些子任务,而无需任何特定于任务的培训,如第4.5节所示。

-

-

3.LaDeCo

方法概述

设计合成任务的输入和输出分别是一组多模态元素和元素属性。在获得预测属性的基础上,采用现成的渲染器将输入的元素渲染成整体的图形设计,从而实现设计合成。

在本文中,将输入元素分为两种模态:图像模态和文本模态

  1. 对于图像模态元素,输出属性是四个边界框参数,即,左坐标和上坐标、元素宽度和高度。
  2. 对于文本模态元素,我们考虑另外八个属性,即角度、字体、字体大小、颜色、文本对齐、大写、字母间距和行高。这些属性足以描述高质量的设计。

-

在这项工作中,作者从分层设计原则中获得灵感,将整体平面设计分解为不同的层,并逐步创建这些层以达到完整的设计,使设计构图过程更加流畅和清晰。在这里,层是具有相同语义标签的图形元素的集合。

更具体地说,作者的方法包括两个关键技术,即层规划(Layer Planning)模块和分层设计组合过程。层规划模块负责将输入元素分类到预定义的层中。然后,在分层的设计组合过程中,作者的方法预测元素的属性在一个分层的方式,并聚集在一起,以获得完整的属性。

-

层规划(Layer Planning)

第一步是确定合理的层结构。通过检查大量已完成的设计作品并咨询经验丰富的设计师,在这项工作中,作者考虑了5个设计层,即背景层、装饰层、徽标/图像层、文本层和装饰层。通过在空画布G0上顺序渲染这些层,得到G1到G5(参见下图),其中G1仅表示背景层,G2包括背景层和背景层,依此类推,G5表示完整的最终设计。值得注意的是,层结构不限于作者提出的层结构。只要合理,可以灵活地增加或删除一些。

虽然公开可用的数据集不包含元素的任何层信息,但作者发现从元素内容进行推断是可行的。例如,一个纯色的矩形框可能是一个装饰,而一个带有星星的元素是一个装饰。因此,作者将层规划作为元素内容理解问题,并利用预训练的LMM来解决它。在实现中,作者使用GPT-4 o自动生成输入元素标签,从而实现层规划。

为了有效地指导GPT-4o,作者精心制作了提示,明确定义了问题,描述了每个元素标签的特征,并要求模型输出最适合输入元素的标签。除了可获得的真实设计的训练样本,还包括设计图像和一些元数据(例如,画布大小、元素大小)输入到模型中以提高预测精度。

-

分层设计组合

这里的主要思想是根据图层规划结果,从背景层到装饰层以分层的方式生成元素属性。先前层的渲染图像被合并到一起,用于预测后续层的上下文。

值得注意的是,这个过程需要对元素内容有很强的理解能力。例如,如图所示,带有电子邮件地址的文本元素应放置在画布的底部,而理发店徽标应放置在顶部。

同时,对中间结果的理解也很关键。例如,在同一个图中,模型应该通过理解中间渲染图像来避免遮挡物体。为此,作者求助于具有卓越理解能力的LMM,来为多模态设计元素建模分层设计过程。如图所示,在第i个设计层中,LMM为当前层的元素Xi预测属性集Yi。前面的层被渲染为图像G_{i-1},并被重新引入到LMM中,作为上下文输入的一部分,指导Yi的生成。

接下来,我们将详细介绍Xi和Yi的表示,以及模型架构。

Xi和Yi。一般来说,作者分别通过连接当前层的元素内容和属性来表示Xi和Yi。

对于背景层、装饰层、徽标/图像层和修饰层,输入都是视觉元素。因此,Xi是元素图像的组合(即,像素值)。对于文本层,作者将其文本内容连接在一起以构建Xi

在Yi方面,作者遵循现有方法中结构化表示的趋势,并将元素属性序列化为JSON字符串

值得注意的是,在每一层内,元素被随机打乱以防止信息泄漏(例如,自上而下的放置顺序)。在没有任何元素的设计层中,作者将其输入表示为null,将输出表示为空JSON字符串{}。

模型体系结构:该模型由三个部分组成:视觉编码器、投影层和LMM主干。

视觉编码器负责对元素图像和中间设计进行编码,生成图像嵌入。然后,投影层投影这些嵌入,以匹配主干所需的隐藏状态维度。最后,主干用于建模跨层的联合分布,以确保分层设计过程中的内聚性。为了降低计算复杂度,对视觉编码器的输出进行二维平均池化运算,有效地压缩了图像标记数。

-

训练和推理

训练:作者根据层规划结果预渲染和缓存中间画布状态\left \{G_i \right \}_{i=1}^5。在训练过程中,作者通过最小化所有层中Yi的负对数似然来微调模型:L=-\sum_{i=1}^{5}logP(Y_i|Y_{< i},X_{< i},G_{< i})

推理:在推理时,LaDeCo迭代生成G1 ~ G5的设计层,从而达到设计合成的目的。与一次生成全部属性相比,LaDeCo仅增加了约20%的渲染时间来获得中间设计,使其成为一种有效且高效的方法。

值得注意的是,LaDeCo在推理方面提供了显着的灵活性。它可以处理其他设计子任务,而无需任何特定任务的训练。例如,当提供真实背景层(G1),并且模型的任务是生成G2到G5时,它可以有效地实现内容感知布局生成。类似地,当G1到G3被给定为基础事实,并且模型被要求生成G4时,它也可以执行排版生成。

-

4.细节

数据集

作者在公开可用的Crello-v4 数据集上进行了实验,该数据集包含来自VistaCreate的23421个图形设计。由于Crello已经为所有元素提供了单独的渲染像素图像,因此可以方便地构建训练输入。

此外,基于像素图像获得的层规划结果,作者可以通过在OpenCOLE中开发的渲染器轻松地渲染训练样本的中间设计效果。

作者采用了与Crello-v4相同的数据分割,将数据集分为19095个训练样本、1951个验证样本和2375个测试样本。

为了提高训练效率,作者筛选出了超过25个元素的训练样本(总共938个示例)。

此外,作者收集了一个类似Crello的大规模商业数据集,研究了数据集大小对性能的影响。作者称之为LargeCrello。LargeCrello数据集总共包含109235个样本。作者还过滤掉了超过25个元素的样本,并手动验证了LargeCrello与Crello的测试集没有重叠。

详细数据

作者选择了最先进的开源大型语言模型(LLM)之一Llama-3.1-8B作为模型的主干。视觉编码器从CLIP ViT-L/14模型初始化,投影层被构造为使用GELU激活函数的两层MLP。

为了实现有效的训练,作者在主干上利用LoRA技术,在保持视觉编码器参数固定的同时,联合优化LoRA参数和投影层。

作者在四个A100- 80 G GPU上进行了训练,全局批量为128,并使用AdamW优化了约7K次迭代,学习速率为2 e-4。对于超参数,LoRA的秩数被设置为32,秩α为64,并且输入图像的令牌数被设置为5(1个cls令牌,2 × 2个压缩令牌)。

在推断时,作者将采样温度设置为0.7,将Top-p(核采样)设置为0.95,以平衡生成的设计的多样性和质量。

评估

基准:为了证明LaDeCo的有效性,作者将其与现有的方法进行了比较:FlexDM和GPT-4 o。

FlexDM最初在Crello-v2上进行实验,该版本具有与Crello-v4不同的数据集拆分。作者在升级后的v4数据集上重新训练它。为了适应设计合成,作者屏蔽了位置和文本属性字段,并同时对其进行预测。在GPT 4o基线中,作者以类似的方法的方式顺序连接元素内容,并提示GPT-4 o逐个生成它们的属性。对于分类属性(例如,字体),作者在上下文中提供了所有选项。

评估指标

(1)总体指标。在COLE的基础上,作者引入了一个稳健的代理模型来进行综合评价。具体来说,作者使用LLaVA-OV-7 B模型来评估五个方面的质量:设计和布局、内容相关性、排版和颜色、图形和图像、创新和原创性。

(2)与几何图形相关的度量。这些指标仅关注元素的几何属性,而不考虑其内容,包括元素有效性、重叠、对齐和底图有效性。对于每个度量,它越接近于根据真实的数据计算的度量(在表中表示为GT),则越好。请注意,较高或较低的值本身并不表示性能更好。例如,模型可以始终将所有元素沿着画布的左侧放置以实现低对齐分数,但是这样的布置不会产生有意义的高质量设计。

评估结果

表1显示了定量结果。LaDeCo在总体指标上显著优于基线模型(即,LLaVA-OV评分),表明LaDeCo在设计构图方面的优越性。特别是,LaDeCo在设计和布局以及排版和颜色方面取得了非常好的成绩。这表明LaDeCo擅长布局生成和细致入微的属性预测,这两者对于设计创作至关重要。在几何相关的指标方面,LaDeCo在大多数指标上的得分接近于在真实的数据(表示为GT)上计算的得分,展示了其对真实世界数据建模的强大能力。相比之下,基线模型通常会遇到一些指标。例如,FlexDM表现出严重的重叠问题,而GPT 4 o具有低重叠效率。

表2显示了消融研究的结果。

(1)LoRA中的等级编号:当秩数从16变化到32,然后变化到64时,定量度量显示出很小的变化,这表明LaDeCo相对于训练参数量具有鲁棒性。

(2)基础模型:作者采用另外两个预先训练好的LLM,llava-v1.5- 7 b和Llama-3. 18 B-Instruct,作为骨干。与之前的消融研究相似,作者的LaDeCo对基础模型的选择具有稳健性。

(3)LaDeCo中的关键技术:作者考虑两种设置。首先,作者移除分层设计组成(LDC),并使用模型来顺序地预测所有元素属性,而不将中间渲染层作为输入。这导致五个总体指标和两个底层有效性指标下降,表明LDC在设计组合中的重要性。其次,作者继续移除层规划(LP)模块,并使用随机排序的设计元素来构造输入-输出表示。上述度量显示了显著的下降,这表明按照层次结构排列元素在设计组成中确实起着关键作用。

(4)数据集大小:当在组合数据集上训练模型时,大多数定量度量都得到了显著改善,并且更接近于地面真实值。实验结果表明,LaDeCo算法在数据集大小方面具有可扩展性。

图8显示了定性结果。LaDeCo在生成布局方面表现出色,可以防止在给定画布内阻塞主要内容。排版生成。

作者利用发布的Typography LMM模型进行比较。图9显示了结果。LaDeCo在排版生成过程中考虑了文本布局、美学和可读性等各个方面。相比之下,基线模型则存在文本重叠和可读性差的问题。

-

-

5.总结

本文引入了LaDeCo进行设计合成。其主要思想是将分层原理在实际设计过程中产生的固有层次结构集成到LMM中。具体地,层规划模块基于输入元素的内容将输入元素分类到不同的层中,并且分层设计合成过程通过使用所呈现的先前层作为上下文来预测控制合成的属性。

喜欢就点个赞吧!

如果你觉得这篇文章对你有所帮助,或者让你眼前一亮,那就快来给我点个赞吧!👍

你的点赞是我持续创作的动力源泉,每一次点赞都像一束光,照亮我前行的道路,让我更有信心为大家带来更多精彩的内容。

同时,也别忘了关注我哦!👀 关注我,你就能第一时间获取到更多有趣、有用的知识和见解,我们可以在知识的海洋里一起遨游,共同成长。

如果这篇文章的内容你特别喜欢,还可以收藏起来呀!⭐️ 收藏它,以后想回顾的时候就能轻松找到,方便又实用。

感谢你的支持,让我们一起在知识的道路上越走越远!

相关文章:

LeDeCo:AI自动化排版、设计、美化海报

1.简介 平面设计是一门艺术学科&#xff0c;致力于创造吸引注意力和有效传达信息的视觉内容。今天&#xff0c;创造视觉上吸引人的设计完全依赖于具有艺术创造力和技术专长的人类设计师&#xff0c;他们巧妙地整合多模态图形元素&#xff0c;这是一个复杂而耗时的过程&#xf…...

Flink CDC解决数据库同步,异常情况下增量、全量问题

Flink 1.11 引入了 Flink SQL CDC&#xff0c;CDC 能给我们数据和业务间能带来什么变化&#xff1f;本文由 Apache Flink PMC&#xff0c;阿里巴巴技术专家伍翀 (云邪&#xff09;分享&#xff0c;内容将从传统的数据同步方案&#xff0c;基于 Flink CDC 同步的解决方案以及更多…...

01、flink的原理和安装部署

flink中主要有两个进程&#xff0c;分别是JobMManager和TaskManager&#xff0c;当然了根据flink的部署和运行环境不同&#xff0c;会有一些不同&#xff0c;但是主要的功能是类似的&#xff0c;下面我会讲下聊下&#xff0c;公司用的多的部署方式&#xff0c;基于yarn集群的部…...

美图脱掉“复古外衣”,在AI浪潮中蜕变

"人工智能就像电力一样&#xff0c;如果你的竞争对手正在使用它&#xff0c;你也需要使用它&#xff0c;否则你就会失去竞争力"&#xff0c;斯坦福大学教授和谷歌前首席科学家安德鲁恩格尔曾这样说到。 而近日拉开序幕的消费电子风向标——科技贸易展国际消费电子展…...

sqlalchemy The transaction is active - has not been committed or rolled back.

连接池参考 参考&#xff1a;https://blog.csdn.net/SunJW_2017/article/details/129332393 1、因为使用了连接池&#xff0c;没有释放 2、解决方法&#xff1a; from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker, scoped_session from gree…...

47.数据绑定的PropertyChanged C#例子 WPF例子

[CallerMemberName] string propertyName null 这段代码中的 [CallerMemberName] 是一个特性&#xff08;Attribute&#xff09;&#xff0c;它应用于 propertyName 参数。这个特性的作用是&#xff0c;在编译时&#xff0c;如果调用 OnPropertyChanged 方法时没有显式提供 pr…...

网络安全 | Web安全常见漏洞和防护经验策略

关注&#xff1a;CodingTechWork 引言 OWASP (Open Web Application Security Project) Top 10是Web应用最常见的安全风险集合&#xff0c;帮助开发人员和安全专家识别和防止最严重的网络安全问题。以下是基于OWASP Top 10的Web安全防护经验策略与规则集。Web开发者必须对潜在…...

Agent一键安装,快速上手Zabbix监控!

目录 一、Linux操作系统部署Agent环境配置1、防火墙配置2、永久关闭selinux yum方式安装1、配置zabbix仓库2、安装agent3、配置 Zabbix-Agent 指向 Zabbix-Server4、启动agent服务 二进制包安装1、下载二进制包2、创建用户和目录及更改属主&#xff08;组&#xff09;3、解压二…...

Edge Scdn是什么,它如何提升网站安全性与访问速度?

随着网络攻击的日益猖獗&#xff0c;尤其是分布式拒绝服务&#xff08;DDoS&#xff09;攻击的频繁发生&#xff0c;如何保护网站的安全性并确保用户的访问体验变得极为重要。Edge Scdn&#xff08;内容分发网络&#xff09;作为一种新兴的技术方案&#xff0c;逐渐被越来越多的…...

ubuntu20.04 docker安装

Ubuntu | Docker DocsPost-installation steps | Docker Docs # 创建目录 sudo mkdir -p /etc/docker # 写入配置文件 sudo tee /etc/docker/daemon.json <<-EOF { "registry-mirrors": [ "https://docker-0.unsee.tech", &qu…...

初始C#.

一.模板 using System; using System.Collections.Generic; using System.L。inq; using System.Text; using System.Threading.Tasks;//引用命名空间 namespace First_progream//项目名或者命名空间 { internal class Program //类名 { static void Main(string[] args)…...

js高亮文本

高亮文本 const inputs ["这是一个普通文本&#xff0c;包含关键字测试。",<p style"font-size: 10px">这是一个<span>GVM</span> <strong>测试</strong>内容。</p>, ];const keywords ["测试", "G…...

解决SpringBoot 健康检测接口 actuator/health 访问一直卡着,但 actuator/info等其他接口能正常访问的问题

背景 最近在做服务迁移&#xff0c;迁移完后的新服务&#xff0c;直接将pod的配置丢到新的K8S集群中&#xff0c;健康监测一直失败 Debug思路 先看日志&#xff0c;日志显示SpringBoot已成功启动&#xff0c;按理说不应该无法访问其/actuator/health接口 拉长健康监测延时时…...

KVM创建ubuntu20.04虚机,部署K8S,再克隆出二份,做为Worker节点加入集群,通过Helm创建2个Pod,让它们之间通过域名互访

KVM创建ubuntu20.04虚机,部署K8S,再克隆出二份,做为Worker节点加入集群,通过Helm创建2个Pod,让它们之间通过域名互访 一.背景二.操作步骤1.安装KVMA.在BIOS中开启VT-dB.修改grub,开启iommu在/etc/default/grub 中 GRUB_CMDLINE_LINUX行 添加 intel_iommuon iommupt重新创建引导…...

GaussDB中的Vacuum和Analyze

GaussDB中的Vacuum和Analyze 基本概念与区别手动Vacuum和Analyze查看Vacuum和Analyze记录Autovacuum配置参数 基本概念与区别 使用VACUUM、VACUUM FULL和ANALYZE命令定期对每个表进行维护&#xff0c;主要有以下原因&#xff1a; VACUUM FULL可回收已更新或已删除的数据所占据…...

IvorySQL 4.2 发布

IvorySQL 4.2 已于 2025 年 1 月 13 日正式发布。新版本全面支持 PostgreSQL 17.2&#xff0c;并修复了多项 bug。 增强功能 PostgreSQL 17.1 增强功能 确保当 RLS 应用于非顶级表引用时&#xff0c;缓存的计划会标记为依赖于调用角色使 libpq 在 SSL 或 GSS 协议协商期间丢…...

浅谈云计算20 | OpenStack管理模块(下)

OpenStack管理模块&#xff08;下&#xff09; 五、存储管理5.1 存储管理概述 5.2 架构设计5.2.1 Cinder块存储架构5.2.2 Swift对象存储架构 六、网络管理6.1 网络管理概述6.2 架构解析6.2.1 Neutron网络服务架构6.2.2 网络拓扑架构 6.3 原理与流程6.3.1 网络创建原理6.3.2 网络…...

去年社融增量超32万亿 货币信贷平稳增长-乐享数科

数据显示&#xff0c;2024年全年&#xff0c;社会融资规模增量为32.26万亿元&#xff1b;去年12月末&#xff0c;社会融资规模同比增长8.0%&#xff0c;广义货币供应量&#xff08;M_[2]&#xff09;同比增长7.3%&#xff0c;人民币贷款同比增长7.6%&#xff0c;增速相比上月有…...

STM32 HAL库函数入门指南:从原理到实践

1 STM32 HAL库概述 STM32 HAL(Hardware Abstraction Layer)库是ST公司专门为STM32系列微控制器开发的一套硬件抽象层函数库。它的核心设计理念是在应用层与硬件层之间建立一个抽象层&#xff0c;这个抽象层屏蔽了底层硬件的具体实现细节&#xff0c;为开发者提供了一套统一的、…...

React封装倒计时按钮

背景 在开发过程中&#xff0c;经常需要使用到倒计时的场景&#xff0c;当用户点击后&#xff0c;按钮进行倒计时&#xff0c;然后等待邮件或者短信发送&#xff0c;每次都写重复代码&#xff0c;会让代码显得臃肿&#xff0c;所以封装一个组件来减少耦合 创建一个倒计时组件…...

深入探究Linux树状目录结构

Linux 作为一款广泛使用的开源操作系统&#xff0c;其目录结构采用了树状设计&#xff0c;这种结构清晰、有条理&#xff0c;便于用户和系统进行文件管理与操作。 一、根目录&#xff08;/&#xff09; 根目录是整个 Linux 文件系统的起始点&#xff0c;就像一棵大树的根部&…...

Realsense相机驱动安装及其ROS通讯配置——机器人抓取系统基础系列(四)

文章目录 概要1 Realsense相机驱动安装Method1: 使用Intel服务器预编译包Method2: 使用ROS服务器预编译包Method3: 使用SDK源代码方法对比总结 2 Realsense-ROS通讯配置与使用2.1 Realsense-ROS包安装2.2 ROS节点启动 小结Reference 概要 本文首先阐述了Realsense相机驱动安装…...

linux安装nvm

下载命令 wget https://github.com/nvm-sh/nvm/archive/refs/tags/v0.39.1.tar.gz当前盘打开终端后的nvm文件夹中 mkdir -p /nvm/.nvm如果树根不够就用加sudo 解压文件 tar xvf v0.39.1.tar.gz输入pwd 确定当前文件完成路径 在当前文件中写入。bashrc文件及代码回车进入编辑…...

图论1-问题 C: 算法7-6:图的遍历——广度优先搜索

题目描述 广度优先搜索遍历类似于树的按层次遍历的过程。其过程为&#xff1a;假设从图中的某顶点v出发&#xff0c;在访问了v之后依次访问v的各个未曾被访问过的邻接点&#xff0c;然后分别从这些邻接点出发依次访问它们的邻接点&#xff0c;并使“先被访问的顶点的邻接点”先…...

基于 STM32 的多功能时间管理器项目

引言 在快节奏的生活中&#xff0c;时间管理显得尤为重要。本项目旨在通过 STM32 开发一个多功能时间管理器&#xff0c;功能包括计时器、闹钟和日历。用户可以方便地设置不同的提醒和计时任务&#xff0c;以更好地管理日常生活和工作。 项目名称 多功能时间管理器 环境准备 …...

Java工程结构:二方库依赖规约

文章目录 I jar 包分类一方库:二方库:三方库:II 专有名词GAV(GroupId、ArtifactId、Version):Maven 坐标III GAV 规则GroupId 格式ArtifactId 格式二方库版本号命名方式:主版本号.次版本号.修订号I jar 包分类 一方库: 本工程内部子项目模块依赖的库(jar 包)。 二…...

Django自带admin管理系统使用

1、admin路径地址 localhost:8000/admin 2、使用命令行创建超级管理员 python manage.py createsuperuser 之后按照提示一步一步往下走就好了。 3、修改管理员密码 python manage.py changepassword admin admin是超级管理员的账号 4、后台管理系统注册模型&#xff0c;…...

Jmeter 简单使用、生成测试报告(一)

一、下载Jmter 去官网下载&#xff0c;我下载的是apache-jmeter-5.6.3.zip&#xff0c;解压后就能用。 二、安装java环境 JMeter是基于Java开发的&#xff0c;运行JMeter需要Java环境。 1.下载JDK、安装Jdk 2.配置java环境变量 3.验证安装是否成功&#xff08;java -versio…...

手摸手实战前端项目CI CD

由于图片和格式解析问题&#xff0c;为了更好阅读体验可前往 阅读原文 CI/CD 是 持续集成&#xff08;Continuous Integration&#xff09; 和 持续交付/部署&#xff08;Continuous Delivery/Continuous Deployment&#xff09; 的缩写&#xff0c;是现代软件开发中的一种自动…...

【Elasticsearch】搜索类型介绍,以及使用SpringBoot实现,并展现给前端

Elasticsearch 提供了多种查询类型&#xff0c;每种查询类型适用于不同的搜索场景。以下是八种常见的 Elasticsearch 查询类型及其详细说明和示例。 1. Match Query 用途&#xff1a;用于全文搜索&#xff0c;会对输入的文本进行分词&#xff0c;并在索引中的字段中查找这些分…...