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

风格控制水平创新高!南理工InstantX小红书发布CSGO:简单高效的端到端风格迁移框架

论文链接:https://arxiv.org/pdf/2408.16766

项目链接:https://csgo-gen.github.io/

亮点直击

  • 构建了一个专门用于风格迁移的数据集
  • 设计了一个简单但有效的端到端训练的风格迁移框架CSGO框架,以验证这个大规模数据集在风格迁移中的有益效果。
  • 引入了内容对齐评分(Content Alignment Score,简称CAS)来评估风格迁移的质量,有效衡量迁移后内容损失的程度。
  • 大量的定性和定量研究验证了本文提出的方法在零样本风格迁移方面取得了先进的成果。

扩散模型在受控图像生成方面展示了卓越的能力,这进一步激发了对图像风格迁移的兴趣。现有的工作主要集中在基于训练自由的方法(例如图像反演),这是由于特定数据的稀缺。在本研究中,本文提出了一种用于内容-风格-风格化图像三元组的数据构建pipeline,该pipeline生成并自动清理风格化数据三元组。基于此pipeline,本文构建了IMAGStyle数据集,这是第一个包含21万图像三元组的大规模风格迁移数据集,供社区探索和研究。配备IMAGStyle数据集,本文提出了CSGO,一种基于端到端训练的风格迁移模型,该模型通过独立特征注入显式解耦内容和风格特征。统一的CSGO实现了图像驱动的风格迁移、文本驱动的风格化合成以及文本编辑驱动的风格化合成。大量实验表明,本文的方法在增强图像生成中的风格控制能力方面是有效的。

数据 pipeline

在本节中,本文首先介绍用于构建内容-风格-风格化图像三元组的提议pipeline。然后,本文详细描述构建的IMAGStyle数据集。

构建内容-风格-风格化图像三元组的pipeline

风格化图像生成。 给定任意的内容图像 C C C 和任意的风格图像 S S S,目标是生成一个风格化图像 T T T,它既保留 C C C 的内容,又采用 S S S 的风格。本文受到 B-LoRA Frenkel 等人(2024)的启发,该研究发现内容 LoRA 和风格 LoRA 可以通过 SD 训练的 LoRA 隐式分离,分别保留原始图像的内容和风格信息。因此,本文首先使用大量的内容和风格图像训练大量的 LoRA。为了确保生成的图像 T T T 的内容尽可能与 C C C 对齐,针对 C C C 的 LoRA 仅使用一个内容图像 C C C 进行训练。

然后,每个训练好的 LoRA 通过 Frenkel 等人(2024)提到的隐式分离方法分解为一个内容 LoRA 和一个风格 LoRA。最后,将图像 C C C 的内容 LoRA 与 S S S 的风格 LoRA 结合,使用基础模型生成目标图像 T = { T 1 , T 2 , … , T n } T = \{T_1, T_2, \ldots, T_n\} T={T1,T2,,Tn}。然而,隐式分离方法不稳定,导致内容和风格 LoRA 无法可靠地保留内容或风格信息。这表现为生成的图像 T i T_i Ti 并不总是与 C C C 的内容一致,如下图 2 所示。因此,有必要过滤 T T T,选择最合理的 T i T_i Ti 作为目标图像。

风格化图像清理。 通过人工参与的慢速数据清理方法对于构建大规模风格化数据三元组是不可接受的。为此,本文开发了一种自动清理方法,以高效地获得理想且高质量的风格化图像 T T T。首先,本文提出了一个内容对齐评分(CAS),它有效地衡量生成图像与内容图像的内容对齐情况。它被定义为生成图像和原始内容图像的内容语义特征(不包含风格信息)之间的特征距离。其表示如下:

其中 C A S i CAS_i CASi 表示生成图像 T i T_i Ti 的内容对齐评分, ϕ ( ⋅ ) \phi(\cdot) ϕ() 表示图像编码器。

本文比较了主流的特征提取器,结果显示最接近人工筛选结果的是 DINOV2 Li 等人(2023)。 A d a ( F ) Ada(F) Ada(F) 表示移除风格信息的特征 F F F 的函数。本文遵循 AdaIN Huang & Belongie (2017) 的方法,用均值和方差来表示风格信息。其表示如下:

其中, μ ( F ) \mu(F) μ(F) ρ ( F ) \rho(F) ρ(F) 分别表示特征 F F F 的均值和方差。显然,更小的 C A S CAS CAS 表明生成的图像更接近原始图像的内容。在下面算法1中,本文提供了本文的pipeline的伪代码。

IMAGSTYLE 数据集详细信息

内容图像。 为了确保内容图像具有清晰的语义信息并在训练后便于分离,本文使用显著性检测数据集 MSRA10K和 MSRA-B作为内容图像。此外,对于素描风格化,本文从 ImageNet-Sketch中抽取了1000张素描图像作为内容图像。内容图像的类别分布如下图3所示。本文使用 BLIP(Li 等人,2023)为每个内容图像生成一个标题。总共训练了11,000张内容图像,并用作内容 LoRA。

风格图像。 为了确保风格多样性的丰富性,本文从Wikiart数据集中抽取了5000张不同绘画风格的图像(历史画、肖像画、风俗画、风景画和静物画)。此外,本文使用Midjourney生成了5000张涵盖多种风格的图像,包括古典、现代、浪漫、现实主义、超现实主义、抽象、未来主义、明亮、黑暗等风格。总共使用了10,000张风格图像来训练风格LoRA。

数据集。 基于前文中描述的pipeline,本文构建了一个风格迁移数据集IMAGStyle,该数据集包含210,000个内容-风格-风格化图像三元组作为训练数据集。此外,本文从网络上收集了248张内容图像,这些图像包含真实场景、素描场景、人脸和风格场景的图像,以及206张不同场景的风格图像作为测试数据集。在测试中,每张内容图像会被转换为206种风格。此数据集将用于社区研究风格迁移和风格化合成。

方法

CSGO框架

所提出的风格迁移模型CSGO,如下图4所示,旨在实现任意图像的任意风格化,而无需微调,包括素描和自然图像驱动的风格迁移、文本驱动的风格化合成以及文本编辑驱动的风格化合成。得益于所提出的IMAGStyle数据集,CSGO支持端到端的风格迁移训练范式。为了确保有效的风格迁移和准确的内容保留,本文精心设计了内容和风格控制模块。此外,为了减少内容图像泄露风格信息或风格图像泄露内容的风险,内容控制和风格控制模块被明确解耦,对应的特征被独立提取。具体来说,本文将CSGO分为两个主要组件,并详细描述它们。

内容控制,内容控制的目的是确保风格化图像保留内容图像的语义、布局和其他特征。为此,本文精心设计了两种内容控制方法。首先,本文通过预训练的ControlNet实现内容控制,其输入是内容图像及其对应的标题。本文利用特定内容可控模型(Tile ControlNet)的能力,减少从头训练内容保留的数据需求和计算成本。紧随ControlNet之后,ControlNet的输出直接注入到基础模型(预训练UNet in SD)的上采样块中,以获得融合输出 D i ′ = D i + δ c × C i D'_i = D_i + \delta_c \times C_i Di=Di+δc×Ci,其中 D i D_i Di表示基础模型第 i i i块的输出, C i C_i Ci表示ControlNet第 i i i块的输出, δ c \delta_c δc表示融合权重。此外,为了在基础模型的下采样块中实现内容控制,本文利用了一个额外的可学习交叉注意力层,将内容特征注入到下采样块中。具体来说,本文使用预训练的CLIP图像编码器和一个可学习的投影层来提取内容图像的语义特征 F ( C ) ′ F(C)' F(C)。然后,本文利用一个额外的交叉注意力层将提取的内容特征注入到基础模型的下采样块中,即 D C ′ = D + λ c × D C D'_C = D + \lambda_c \times D_C DC=D+λc×DC,其中 D D D表示基础模型的输出, D C D_C DC表示内容IP-Adapter的输出, λ c \lambda_c λc表示融合权重。这两种内容控制策略确保了风格迁移过程中内容损失较小。

模型训练和推理

训练。 基于提出的数据集IMAGStyle,我们的CSGO是首个端到端风格迁移训练的实现。给定内容图像 C C C、内容图像的描述 P P P、风格图像 S S S和目标图像 T T T,我们基于预训练的扩散模型训练一个风格迁移网络。我们的训练目标是建模在内容图像和风格图像条件下,目标图像 T T T与高斯噪声之间的关系,表示如下:

其中, ϵ \epsilon ϵ表示随机采样的高斯噪声, ϵ θ \epsilon_\theta ϵθ 表示CSGO的可训练参数, t t t表示时间步。注意,在训练过程中,潜变量 z t z_t zt是通过风格图像 T T T构建的, z t = α ˉ t ψ ( T ) + 1 − α ˉ t ϵ z_t = \sqrt{\bar{\alpha}_t}\psi(T) + \sqrt{1 - \bar{\alpha}_t}\epsilon zt=αˉt ψ(T)+1αˉt ϵ,其中 ψ ( ⋅ ) \psi(\cdot) ψ()是将原始输入映射到潜在空间的函数, α ˉ t \bar{\alpha}_t αˉt与扩散模型一致。我们在训练阶段随机丢弃内容图像和风格图像的条件,以在推断阶段启用无分类器指导。

推理。 在推理阶段,我们采用无分类器指导。时间步 t t t 的输出表示如下:

其中 w w w 表示无分类器指导因子(CFG)。

实验

实验设置

设置。 在IMAGStyle数据集中,训练阶段我们建议使用“a [vcp]”作为内容图像的提示词,使用“a [stp]”作为风格图像的提示词。秩值设置为64,每个B-LoRA训练1000步。生成阶段,我们建议使用“a [vcp] in [stv] style”作为提示词。对于CSGO框架,使用stabilityai/stable-diffusion-xl-base-1.0作为基础模型,预训练的ViT-H作为图像编码器,以及TTPlanet/TTPLanet SDXL Controlnet Tile Realistic作为ControlNet。图像统一设置为512×512分辨率。文本、内容图像和风格图像的丢弃率为0.15。学习率为 1 e − 4 1e^{-4} 1e4。训练阶段, λ c = λ s = δ c = 1.0 \lambda_c = \lambda_s = \delta_c = 1.0 λc=λs=δc=1.0。推理阶段,我们建议 λ c = λ s = 1.0 \lambda_c = \lambda_s = 1.0 λc=λs=1.0 δ c = 0.5 \delta_c = 0.5 δc=0.5。我们的实验在8个NVIDIA H800 GPU(80GB)上进行,每个GPU的批量大小为20,训练80000步。

数据集和评估。 使用提出的IMAGStyle作为训练数据集,并使用其测试数据集作为评估数据集。我们采用Somepalli等人提出的CSD评分作为评估指标来评估风格相似性。同时,我们使用提出的内容对齐评分(CAS)作为评估指标来评估内容相似性。

基线方法。 比较了最近的几种先进的基于反演的风格识别方法,包括Chung等人(2024)的StyleID、Hertz等人(2024)的StyleAligned方法,以及基于Transformer结构的StyTR2 Deng等人(2022)。此外,还比较了Wang等人(2024a)的Instantstyle和Junyao等人(2024)的StyleShot(及其细粒度控制方法StyleShot-lineart),这些方法引入了ControlNet和IPAdapter结构作为基线。在文本驱动的风格控制任务中,我们还引入了Qi等人(2024)的DEADiff作为基线。

实验结果

图像驱动的风格迁移。 在下表1中,展示了所提出方法在图像驱动风格迁移任务中与最近先进方法的CSD评分和CAS。就风格控制而言,我们的CSGO获得了最高的CSD评分,表明CSGO在风格控制方面达到了最先进的水平。由于采用了解耦的风格注入方法,所提出的CSGO能够有效地提取风格特征并将其与高质量的内容特征融合。如下图5所示,CSGO在自然、素描、人脸和艺术场景中精确地迁移风格,同时保持内容的语义。

在内容保留方面,可以观察到基于反演的StyleID和StyleAligned在素描风格迁移场景中过于强烈地保持了原始内容(CAS非常低)。然而,它们无法注入风格信息,因为CSD评分很低。使用线条来控制内容的InstantStyle和StyleShot(包括Lineart)受线条细节水平的影响,在不同程度上会丢失内容(如人脸场景)。所提出的CSGO直接利用内容图像的所有信息,内容保留效果最佳。上表1中的定量结果也表明,所提出的CSGO在实现精确风格迁移的同时,保持了高质量的内容保留。

文本驱动的风格化合成。 所提出的方法支持文本驱动的风格控制,即给定一个文本提示词和一个风格图像,生成具有相似风格的图像。下图6展示了所提出的CSGO与最先进方法的生成结果对比。在简单场景中,很直观地观察到我们的CSGO更遵循文本提示。这是因为得益于内容和风格特征的显式解耦,风格图像仅注入风格信息而不暴露内容。此外,在复杂场景中,得益于精心设计的风格特征注入模块,CSGO在转换文本含义的同时实现了最佳的风格控制。如下图7所示,展示了更多结果。

文本编辑驱动的风格化合成。 所提出的CSGO支持文本编辑驱动的风格控制。如下图8所示,在风格迁移过程中,我们保持原始内容图像的语义和布局,同时允许对文本提示词进行简单编辑。上述优秀结果表明,所提出的CSGO是一个强大的风格控制框架。

消融研究

**内容控制和风格控制。**我们讨论了两种特征注入方法的影响,如下图9所示。内容图像必须通过ControlNet注入以保持布局,同时保留语义信息。如果内容特征仅通过IP-Adapter注入到CSGO框架中(下图9(1)),则内容特征只保留语义信息。

引入ControlNet注入后,内容保留的质量得到了提升,如下图12所示。然而,如果风格特征仅注入到基础UNet中而不通过ControlNet注入,这会削弱生成图像的风格,这可以在上图9(2)和(3)的对比中观察到。因此,所提出的CSGO在ControlNet分支中预先注入风格特征,以进一步融合风格特征,从而增强迁移效果。

风格图像投影层。 风格图像投影层可以有效地从原始embedding中提取风格特征。我们探索了普通线性层和重采样器结构,实验结果如下图10所示。使用重采样器结构能够捕捉到更详细的风格特征,同时避免内容泄露。

Token数量。 探讨了风格投影层中token数量 t t t对风格迁移和文本驱动风格合成结果的影响。实验结果如上图10所示,随着 t t t的增加,风格控制逐渐变得更好。这与我们的预期一致,即 t t t影响特征提取的质量。更大的 t t t意味着投影层能够提取出更丰富的风格特征。

内容尺度 δ c \delta_c δc 的影响。 正如下图13所示,当 δ c \delta_c δc 较小时,内容特征注入较弱,CSGO更遵循文本提示和风格。当 δ c \delta_c δc 增大时,内容保留的质量变得更好。然而,我们注意到,当 δ c \delta_c δc 较大时(例如0.9和1.2),风格信息被严重削弱。

CFG尺度的影响。 无分类器引导增强了文本到图像模型的能力。所提出的CSGO同样受CFG尺度强度的影响。正如上图13所示,引入CFG增强了风格迁移效果。

风格尺度 λ s \lambda_s λs 和内容尺度 λ c \lambda_c λc 的影响。风格尺度影响风格注入的程度。如上图13显示,如果风格尺度小于1.0,生成图像的风格会被严重削弱。我们建议风格尺度应在1.0到1.5之间。下采样块中的内容控制利用内容图像的语义信息来强化内容的准确保留。上图13显示,当 λ c \lambda_c λc 接近1.0时效果最佳。

结论

首先提出了一个用于构建内容-风格-风格化图像三元组的流程。基于此流程,我们构建了第一个大规模风格迁移数据集IMAGStyle,该数据集包含21万个图像三元组,涵盖了广泛的风格场景。为了验证IMAGStyle对风格迁移的影响,我们提出了CSGO,这是一种简单但高度有效的端到端训练风格迁移框架。我们验证了所提出的CSGO可以在统一框架下同时执行图像风格迁移、文本驱动的风格合成和文本编辑驱动的风格合成任务。大量实验验证了IMAGStyle和CSGO对风格迁移的有益效果。我们希望我们的工作能够激励研究社区进一步探索风格化研究。

未来工作。 尽管所提出的数据集和框架已经取得了非常先进的性能,但仍有改进的空间。由于时间和计算资源的限制,我们仅构建了21万个数据三元组。我们相信,通过扩大数据集的规模,CSGO的风格迁移质量将会更好。同时,所提出的CSGO框架是一个基础版本,仅验证了生成风格化数据集对风格迁移的有益效果。我们认为,通过优化风格和内容特征提取及融合方法,可以进一步提高风格迁移的质量。

参考文献

[1] CSGO: Content-Style Composition in Text-to-Image Generation

相关文章:

风格控制水平创新高!南理工InstantX小红书发布CSGO:简单高效的端到端风格迁移框架

论文链接:https://arxiv.org/pdf/2408.16766 项目链接:https://csgo-gen.github.io/ 亮点直击 构建了一个专门用于风格迁移的数据集设计了一个简单但有效的端到端训练的风格迁移框架CSGO框架,以验证这个大规模数据集在风格迁移中的有益效果。…...

python文件自动化(4)

接上节课内容,在开始正式移动文件到目标文件夹之前,我们需要再思考一个问题。在代码运行之前,阿文的下载文件夹里已经存在一些分类文件夹了,比如图例中“PDF文件”这个文件夹就是已经存在的。这样的话,在程序运行时&am…...

HTTP 方法

HTTP 方法 1. 引言 HTTP(HyperText Transfer Protocol,超文本传输协议)是互联网上应用最为广泛的协议之一。它定义了客户端和服务器之间交换信息的格式和规则。在HTTP通信中,客户端(通常是浏览器)向服务器…...

通过redis-operator 来部署 Redis Cluster 集群

安装 Redis Operator 首先,需要安装 redis-operator。可以通过 Helm 或直接应用 YAML 文件来安装。 使用 Helm 安装: helm repo add ot-helm https://ot-container-kit.github.io/helm-charts/ helm install redis-operator ot-helm/redis-operator --…...

vue3集成sql语句编辑器

使用的是codemirror 安装 pnpm add codemirror vue-codemirror --savepnpm add codemirror/lang-sqlpnpm add codemirror/theme-one-dark使用 <template><codemirror v-model"configSql" placeholder"Code goes here..." ref"codemirrorR…...

Optuna发布 4.0 重大更新:多目标TPESampler自动化超参数优化速度提升显著

Optuna这个备受欢迎的超参数优化框架在近期发布了其第四个主要版本。自2018年首次亮相以来&#xff0c;Optuna不断发展&#xff0c;现已成为机器学习领域的重要工具。其用户社区持续壮大&#xff0c;目前已达到以下里程碑&#xff1a; 10,000 GitHub星标每月300万 下载量16,00…...

https和harbor仓库跟k8s

目录 https 做证书 harbor仓库 https https是加密的http&#xff0c;它的端口是443&#xff0c;它的协议是tcp协议。建立连接和普通的tcp是一样的&#xff0c;都是三次握手和四次挥手&#xff0c;但是它三次握手之后有一个步骤&#xff1a;SSL或者TLS握手的过程&#xff0c…...

云计算之网络

目录 一、VPC&#xff1a;云网络的基石 1.1 VPC产品介绍 1.2 vswitch交换机 1.3 vrouter路由器 1.4 产品架构 1.5 常见问题解答及处理 1.5.1 VPC内如何查询某个IP归属? 1.5.2 网络ACL阻断导致ECS访问CLB不通 1.5.3 EIP秒级突发/分布式限速丢包 1.5.4 NAT网关的流量监…...

MySQL Workbench 的入门指南

前言 MySQL Workbench 是一个官方的图形化工具&#xff0c;用于开发、管理和设计 MySQL 数据库服务器。它提供了丰富的功能&#xff0c;可以帮助数据库管理员、开发者以及DBA们高效地工作。下面是一个MySQL Workbench的入门指南&#xff0c;介绍如何安装和使用它。 安装 MyS…...

【SpringBoot】使用Nacos服务注册发现与配置管理

前提&#xff1a;需要提前部署好nacos服务&#xff0c;这里可以参考我的文章&#xff1a;Windows下Nacos安装与配置 0. 版本信息 Spring Boot3.2.8Spring Cloud2023.0.1Spring Cloud alibaba2023.0.1.0nacos2.3.2本地安装的nacos2.3.0 Spring Boot、Spring Cloud、Spring Clo…...

Leetcode面试经典150题-210.课程表II

这个题是图的问题&#xff0c;因为图的拓扑排序在实际应用中有非常多的用途图&#xff0c;所以最近考的越来越多 解法都在代码里&#xff0c;不懂就留言或者私信 看这个题之前一定要好好看看207题我写的题解&#xff0c;也许207看懂了的话&#xff0c;210只是一个coding问题了…...

视频汇聚平台LntonAIServer视频质量诊断功能--偏色检测与噪声检测

随着视频监控技术的不断进步&#xff0c;视频质量成为了决定监控系统性能的关键因素之一。LntonAIServer新增的视频质量诊断功能&#xff0c;特别是偏色检测和噪声检测&#xff0c;进一步强化了视频监控系统的可靠性和实用性。下面我们将详细介绍这两项功能的技术细节、应用场景…...

Vue 使用接口返回的背景图片和拼图图片进行滑动拼图验证

一、背景 前两天发了一篇 vue-monoplasty-slide-verify 滑动验证码插件使用及踩坑_vue-monoplasty-slide-verify 引用后不显示-CSDN博客 这两天项目又需要通过接口校验&#xff0c;接口返回了背景图片和拼图图片&#xff0c;于是在网上找了一篇帖子&#xff0c;vue 图片滑动…...

1-7 掩膜的运用 opencv树莓派4B 入门系列笔记

目录 一、提前准备 二、代码详解 num_pixels np.sum(mask 255) contours, _ cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) c max(contours, keycv2.contourArea) x, y, w, h cv2.boundingRect(c) M cv2.moments(contours[0]) if contours…...

EG边缘计算网关连接华为云物联网平台(MQTT协议)

需求概述 实现一个流程&#xff1a;EG8200mini采集Modbus RTU数据&#xff0c;通过MQTT协议连接华为云物联网平台 Modbus RTU采集此处不做过多赘述&#xff0c;可参考其他案例&#xff08;串口读取Modbus传感器数据&#xff09;介绍。下文默认已经采集到Modbus RTU数据。 要…...

List中常见的方法和五种遍历方式

有序&#xff1a;存取的顺序一致 有索引&#xff1a;可以通过索引操作元素 可重复&#xff1a;存储的元素可以重复 package mylist;import java.util.ArrayList; import java.util.List;public class A01_LIstDemo1 {public static void main(String[] args) {List<String…...

华为 HCIP-Datacom H12-821 题库 (8)

有需要题库的可以看主页置顶 1.在 DHCP 运行过程中&#xff0c;如果客户端 IP 地址在相约过去 87.5%还没有完成续约的话&#xff0c;客户将发送什么报文进行再次续约&#xff1f; A、DHCP discover 广播报文 B、DHCP release 单播报文 C、DHCP request 广播报文 D、DHCP reques…...

12. GIS地图制图工程师岗位职责、技术要求和常见面试题

本系列文章目录&#xff1a; 1. GIS开发工程师岗位职责、技术要求和常见面试题 2. GIS数据工程师岗位职责、技术要求和常见面试题 3. GIS后端工程师岗位职责、技术要求和常见面试题 4. GIS前端工程师岗位职责、技术要求和常见面试题 5. GIS工程师岗位职责、技术要求和常见面试…...

ORACLE 统计信息的备份与恢复

备份 --需要先创建统计信息基础表 exec dbms_stats.create_stat_table(USER1,STAT_TIMESTAMP); --导出某个用户的所有统计信息 exec dbms_stats.export_schema_stats(USER1,STAT_TIMESTAMP);--测试(插入100条&#xff0c;更新统计信息&#xff0c;略) select num_rows,last_ana…...

2. GIS数据工程师岗位职责、技术要求和常见面试题

本系列文章目录&#xff1a; 1. GIS开发工程师岗位职责、技术要求和常见面试题 2. GIS数据工程师岗位职责、技术要求和常见面试题 3. GIS后端工程师岗位职责、技术要求和常见面试题 4. GIS前端工程师岗位职责、技术要求和常见面试题 5. GIS工程师岗位职责、技术要求和常见面试…...

Spark MLlib模型训练—文本算法 LDA(Latent Dirichlet Allocation)

Spark MLlib模型训练—文本算法 LDA(Latent Dirichlet Allocation) Latent Dirichlet Allocation(LDA)是一种用于主题建模的生成式概率模型,广泛应用于文本分析和自然语言处理。LDA 的目标是从一组文档中发现潜在的主题,并将每个文档表示为这些主题的概率分布。它通过推断…...

C++ ─── List的模拟实现

目录 ​编辑 一&#xff0c; List的模拟实现 二&#xff0c;代码实现 三、list和vector的区别 一&#xff0c; List的模拟实现 List 是一个双向循环链表,由于List的节点不连续&#xff0c;不能用节点指针直接作为迭代器&#xff0c;因此我们要对结点指针封装&#xff0c;来…...

Spring Boot详解

好的&#xff01;Spring Boot 是一个基于 Spring 框架的项目&#xff0c;它为简化配置、快速启动项目而生。它使得构建独立运行、生产级别的 Spring 应用变得非常简单&#xff0c;让开发者专注于业务逻辑而不再被繁琐的配置所困扰。接下来&#xff0c;我将从以下几个方面为你详…...

Proxfier+burpsuite抓包配置问题

1、burp证书配置 导出证书 后缀为cer 打开浏览器设置 搜索证书--》点安全 管理证书 在圈起来的三个地方添加证书 2、Proxifer配置 配置代理服务器 配置ip和port 配置代理规则 注意画圈部分...

sqli-lab靶场学习(一)——Less1-4

前言 最近一段时间想切入安全领域&#xff0c;因为本身有做数据库运维工作&#xff0c;就打算从sql注入方向切入。而sql注入除了学习日常书本上的概念外&#xff0c;需要有个实践的环境&#xff0c;刚好看到sqli-lab这个靶场&#xff0c;就打算先用这个来学习。 安装部署 网上…...

el-select如何同时获取value和label?

在element ui 中 下拉框默认获取下拉框value的值&#xff0c;但是有时候根据 业务需求&#xff0c;我们需要label值也发送给后端&#xff0c;在这提供一下获取value、和label 的方式 1、在给el-option绑定:value值时使用对象的方式&#xff0c;将value和label同时绑定到:value…...

1.初识ChatGPT:AI聊天机器人的革命(1/10)

引言 在当今的数字化世界中&#xff0c;人工智能&#xff08;AI&#xff09;正以其独特的方式重塑我们的生活和工作。其中&#xff0c;AI聊天机器人作为人机交互的前沿技术&#xff0c;已经成为企业与客户沟通、提供个性化服务的重要工具。这些机器人通过模拟人类的对话方式&a…...

API安全 | 发现API的5个小tips

在安全测试目标时&#xff0c;最有趣的测试部分是它的 API。API 是动态的&#xff0c;它们比应用程序的其他部分更新得更频繁&#xff0c;并且负责许多后端繁重的工作。在现代应用程序中&#xff0c;我们通常会看到 REST API&#xff0c;但也会看到其他形式&#xff0c;例如 Gr…...

数据结构---单向链表

单向链表 //链表的创建 Link_t *create_link() {Link_t *plink malloc(sizeof(Link_t));if(NULL plink){perror("fail plink");return NULL;}plink->phead NULL;plink->clen 0;return plink; } //头插 int push_link_head(Link_t *plink, DataType data…...

基于STM32设计的ECG+PPG人体参数测量系统(华为云IOT)(217)

文章目录 一、前言1.1 项目介绍【1】开发背景【2】项目实现的功能【3】项目硬件模块组成1.2 设计思路【1】整体设计思路【2】整体构架【3】上位机开发思路【4】ESP8266工作模式配置1.3 项目开发背景【1】选题的意义【2】可行性分析【3】参考文献【4】摘要【5】项目背景1.4 开发…...