(2023,ControlNet,CFGRW,diffusion,控制组合)向文本到图像扩散模型添加条件控制

news2024/11/27 23:48:48

Adding Conditional Control to Text-to-Image Diffusion Models

公众号:EDPJ(添加 VX:CV_EDPJ 或直接进 Q 交流群:922230617 获取资料)

目录

0. 摘要

1. 简介

2.相关工作

2.1. 微调神经网络 

2.2. 图像扩散 

2.3. 图像到图像的转换

3. 方法 

3.1. ControlNet

3.2. 用于文本到图像扩散的 ControlNet 

3.3. 训练 

3.4. 推断 

4. 实验

4.1. 定性结果 

4.2. 消融研究 

4.3. 定量评价

4.4. 与以前方法的比较

4.5. 讨论

5. 结论

参考

附录

1. 实现细节

1.1 训练参数

1.2 推理参数

2. 消融研究 

2.1 消融的架构 

2.2 结果 

3. 比较 

4. 定量评价(见原始附录) 

5. 零卷积层的梯度计算 

6. 额外结果(见原始附录) 

7. 讨论

S. 总结

S.1 主要贡献

S.2 架构和方法


0. 摘要

我们提出了 ControlNet,这是一种神经网络架构,可将空间条件控制添加到大型预训练文本到图像扩散模型中。 ControlNet 锁定可用于生产的大型扩散模型,并使用其经过数十亿图像预训练的深度且强大的编码层作为强大的骨干来学习一组不同的条件控制。 神经架构与“零卷积”(零初始化卷积层)连接,参数从零逐渐增长,并确保没有有害噪声会影响微调。 我们使用稳定扩散、使用单个或多个条件、有或没有提示来测试各种条件控制,例如边缘、深度、分割、人体姿势等。 我们证明了控制网络的训练对于小型(<50k)和大型(>1m)数据集都是稳健的。 大量结果表明 ControlNet 可以促进更广泛的应用来控制图像扩散模型。

1. 简介

我们中的许多人都经历过视觉灵感的闪现,我们希望将其捕捉到独特的图像中。 随着文本到图像扩散模型 [54,61,71] 的出现,我们现在可以通过输入文本提示来创建视觉上令人惊叹的图像。 然而,文本到图像模型在对图像的空间组成提供的控制方面受到限制。 仅通过文本提示来精确表达复杂的布局、姿势、形状和形式可能很困难。 生成与我们的心理想象准确匹配的图像通常需要多次反复试验,包括编辑提示、检查生成的图像,然后重新编辑提示。

我们能否通过让用户提供直接指定其所需图像组成的附加图像来实现更细粒度的空间控制?

  • 在计算机视觉和机器学习中,这些附加图像(例如,边缘图、人体姿势骨架、分割图、深度(depth)、法线等)通常被视为图像生成过程的条件。
  • 图像到图像的翻译模型 [34, 97] 学习从条件图像到目标图像的映射。
  • 研究界还采取了一些措施来控制文本到图像模型,包括空间掩模 [6, 20]、图像编辑指令 [10]、通过微调进行个性化 [21, 74] 等。
  • 虽然存在一些问题(例如,生成图像变化) 、修复)可以通过免训练技术来解决,例如限制去噪扩散过程或编辑注意层激活,更广泛的问题,例如 depth-to-image,pose-to-image 等,需要端到端的学习和数据驱动的解决方案。 

以端到端的方式学习大型文本到图像扩散模型的条件控制具有挑战性。

  • 特定条件的训练数据量可能明显小于一般文本到图像训练可用的数据。 例如,各种特定问题(例如,物体形状/法线、人体姿势提取等)的最大数据集通常约为 100K,比用于训练稳定扩散 [81] 的 LAION-5B [78] 数据集小 50,000 倍。
  • 使用有限数据直接微调或持续训练大型预训练模型可能会导致过度拟合和灾难性遗忘 [31, 74]。 研究人员表明,可以通过限制可训练参数的数量或秩(rank)来减轻这种遗忘 [14,25,31,91]。
  • 对于我们的问题,设计更深或更定制的神经架构可能对于处理具有复杂形状和不同高级语义的野外条件图像是必要的。

本文介绍了 ControlNet,这是一种端到端神经网络架构,可学习大型预训练文本到图像扩散模型(我们实现中的稳定扩散)的条件控制。

  • ControlNet 通过锁定其参数并制作其编码层的可训练副本来保留大型模型的质量和功能。
  • 该架构将大型预训练模型视为学习各种条件控制的强大支柱。
  • 可训练的副本和原始的锁定模型与零卷积层(权重初始化为零,以便它们在训练过程中逐渐增长)连接。
  • 这种架构确保在训练开始时有害噪声不会添加到大扩散模型的深层特征中,并保护可训练副本中的大规模预训练主干不被此类噪声损坏。

我们的实验表明,ControlNet 可以通过各种条件输入来控制稳定扩散,包括 Canny edges、Hough lines、用户涂鸦、人体关键点、分割图、形状法线、深度等(图 1)。

  • 我们使用单个条件图像测试我们的方法,有或没有文本提示,并且我们演示了我们的方法如何支持多个条件的组合。
  • 此外,我们报告说,ControlNet 的训练在不同大小的数据集上具有鲁棒性和可扩展性,并且对于深度到图像调节等某些任务,在单个 NVIDIA RTX 3090Ti GPU 上训练 ControlNet 可以获得与在大型计算集群上训练的工业模型相媲美的结果。
  • 最后,我们进行消融研究来调查模型每个组件的贡献,并将我们的模型与用户研究的几个强条件图像生成基线进行比较。 

总之,

  • 我们提出 ControlNet,一种神经网络架构,可以通过有效的微调将空间局部化的输入条件添加到预训练的文本到图像扩散模型中
  • 我们提出预训练的 ControlNet 来控制稳定扩散,以 Canny edges、Hough lines、用户涂鸦、人体关键点、分割图、形状法线、深度和卡通线条图为条件
  • 我们通过与几种替代架构进行比较的消融实验来验证该方法,并针对之前的几种进行用户研究 不同任务的基线。

2.相关工作

2.1. 微调神经网络 

微调神经网络的一种方法是直接使用额外的训练数据继续训练它。 但这种方法可能会导致过度拟合、模式崩溃和灾难性遗忘。 广泛的研究集中于开发避免此类问题的微调策略。 

超网络(HyperNetwork)

  • 一种起源于自然语言处理 (NLP) 社区 [25] 的方法,旨在训练小型循环神经网络来影响较大循环神经网络的权重。
  • 它已应用于生成对抗网络 (GAN) 的图像生成 [4, 18]。
  • Heathen et al. [26] 和 Kurumuz [43] 实现用于稳定扩散的超网络 [71]来改变其输出图像的艺术风格。 

适配器(Adapter)

  • 广泛用于 NLP 中,通过将新的模块层嵌入到预训练的 Transformer 模型中来定制其他任务 [30, 83]。
  • 在计算机视觉中,适配器用于增量学习 [73] 和域适应 [69]。
  • 该技术通常与 CLIP [65] 一起使用,将预训练的骨干模型转移到不同的任务 [23,65,84,93]。
  • 最近,适配器在视觉 Transformer(ViT)[49, 50] 和 ViT-Adapter [14] 中取得了成功的结果。
  • 在与我们同期的工作中,T2IAdapter [56] 使稳定扩散适应外部条件。 

附加学习(Additive Learning)

  • 通过冻结原始模型权重并使用学到的权重掩模 [51, 73]、修剪 [52] 或硬注意力 [79] 添加少量新参数来避免遗忘。
  • Side-Tuning [91] 使用侧分支(side branch)模型通过线性混合冻结模型和添加网络的输出以及预定义的混合权重计划来学习额外的功能。 

低秩适应 (Low-Rank Adaptation,LoRA)。通过学习低秩矩阵参数的偏移来防止灾难性遗忘 [31],这是基于对许多过度参数化模型驻留在低内在维度子空间中的观察 [2, 47]。 

零初始化层

  • ControlNet 使用零初始化层来连接网络块。
  • 神经网络的研究广泛讨论了网络权重的初始化和操作[36,37,44,45,46,75,82,94]。 例如,权重的高斯初始化可能比用零初始化的风险更小 [1]。
  • 最近,Nichol 等人 [58] 讨论了如何缩放扩散模型中卷积层的初始权重以改进训练,他们的 “零模块” 实现是将权重缩放到零的极端情况。
  • Stability 的模型卡(model cards) [82] 也提到了在神经层中使用零权重。
  • ProGAN [36]、StyleGAN [37] 和 Noise2Noise [46] 中也讨论了操纵初始卷积权重。 

2.2. 图像扩散 

图像扩散模型。

  • 最初由 Sohl-Dickstein 等人 [80] 提出,并且最近已应用于图像生成 [17, 42]。
  • 潜在扩散模型(LDM)[71] 在潜在图像空间 [19] 中执行扩散步骤,这降低了计算成本。
  • 文本到图像扩散模型通过 CLIP [65] 等预训练语言模型将文本输入编码为潜在向量,从而实现最先进的图像生成结果。
  • Glide [57] 是一种文本引导的扩散模型,支持图像生成和编辑。
  • Disco Diffusion [5] 使用剪辑引导(clip guidance)处理文本提示。
  • 稳定扩散 [81] 是潜在扩散 [71] 的大规模实现。
  • Imagen [77] 使用金字塔结构直接扩散像素,而不使用潜在图像。
  • 商业产品包括 DALL-E2 [61] 和 Midjourney [54]。 

控制图像扩散模型。

  • 有助于个性化、定制或特定于任务的图像生成。
  • 图像扩散过程直接提供对颜色变化 [53] 和修复 [66, 7] 的一些控制。
  • 文本引导的控制方法侧重于调整提示、操作 CLIP 特征和修改交叉注意力 [7,10,20,27,40,41,57,63,66]。
  • Make-A-Scene [20] 将分割掩码编码为标记以控制图像生成。
  • SpaText [6] 将分段掩码映射到本地化的标记嵌入中。
  • GLIGEN [48] 在扩散模型的注意力层中学习新参数以进行接地生成(grounded generating)。
  • Textual Inversion [21] 和 DreamBooth [74] 可以通过使用一小组用户提供的示例图像微调图像扩散模型来个性化生成图像中的内容。
  • 基于提示的图像编辑 [10,33,85] 提供了使用提示操作图像的实用工具。
  • Voynov 等人 [87] 提出了一种用草图拟合扩散过程的优化方法。
  • 同期工作 [8,9,32,56] 研究了控制扩散模型的多种方法。

2.3. 图像到图像的转换

条件 GAN [15, 34, 62, 89, 92, 96, 97, 98] 和 Transformer [13, 19, 67] 可以学习不同图像域之间的映射,例如

  • Taming Transformer [19] 是一种视觉 Transformer 方法;
  • Palette [76] 是一个从头开始训练的条件扩散模型;
  • PITI [88] 是一种基于预训练的条件扩散模型,用于图像到图像的转换。

操纵预训练的 GAN 可以处理特定的图像到图像任务,例如,

  • StyleGAN 可以由额外的编码器控制 [70],
  • 更多应用在 [3,22,38,39,55,59,64,70] 中研究。 

3. 方法 

3.1. ControlNet

ControlNet 将附加条件注入神经网络的块中(图 2)。 在这里,我们使用术语网络块来指代一组神经层,这些神经层通常组合在一起形成神经网络的单个单元,例如 resnet 块、conv-bn-relu 块、多头注意力块,transformer 块等。假设 F(·; θ) 是这样一个经过训练的神经块,其参数为 θ,将输入特征图 x 转换为另一个特征图 y,如下所示 

在我们的设置中,x 和 y 通常是 2D 特征图,即 x ∈ R^(h×w×c)。

为了将 ControlNet 添加到这样的预训练神经块中,我们锁定(冻结)原始块的参数 θ,同时将该块克隆到具有参数 θ_c 的可训练副本(图 2b)。 可训练副本采用外部条件向量 c 作为输入。 当这种结构应用于稳定扩散等大型模型时,锁定的参数保留了用数十亿图像训练的生产就绪模型,而可训练的副本使用这种大规模预训练模型来建立一个深度、稳健和强大的骨干来处理不同的输入 条件。 

可训练副本连接到具有零卷积层的锁定模型,表示为 Z(·;·)。 具体来说,Z(·;·) 是一个 1 × 1 卷积层,权重和偏差都初始化为零。 为了构建 ControlNet,我们使用两个零卷积实例,参数分别为 θ_z1 和 θ_z2。 然后完整的 ControlNet 计算 

其中 yc 是 ControlNet 块的输出。 在第一个训练步骤中,由于零卷积层的权重和偏置参数都初始化为零,因此等式 2 中的 Z(·;·) 项均计算为零,并且 

这样,当训练开始时,有害噪声就无法影响可训练副本中神经网络层的隐藏状态。 此外,由于 Z(c;θz1) = 0 并且可训练副本还接收输入图像 x,因此可训练副本功能齐全,并保留大型预训练模型的功能,使其能够作为进一步学习的强大骨干。 零卷积通过消除初始训练步骤中作为梯度的随机噪声来保护该主干网。 我们在补充材料中详细介绍了零卷积的梯度计算。 

3.2. 用于文本到图像扩散的 ControlNet 

我们使用稳定扩散 [71] 作为示例来展示 ControlNet 如何向大型预训练扩散模型添加条件控制。

  • 稳定扩散本质上是一个 U-Net [72],包括编码器、中间块和跳过连接的解码器。
  • 编码器和解码器都包含 12 个块,完整模型包含 25 个块(包括中间块)。 在 25 个块中,8 个块是下采样或上采样卷积层,而其他 17 个块是主块,每个块包含 4 个 resnet 层和 2 个视觉变换器 (ViT)。 每个 ViT 都包含多个交叉注意力和自注意力机制。 例如,在图3a中,“SD 编码器块 A” 包含 4 个 resnet 层和 2 个 ViT,而 “×3” 表示该块重复 3 次。
  • 文本提示使用 CLIP 文本编码器 [65] 进行编码,扩散时间步长使用位置编码的时间编码器进行编码。 

ControlNet 结构应用于 U-Net 的每个编码器级别(图 3b)。 特别是,我们使用 ControlNet 创建 12 个编码块和 1 个稳定扩散中间块的可训练副本。 12个编码块有4种分辨率(64×64、32×32、16×16、8×8),每一个复制3次。 输出被添加到 U-Net 的 12 个跳跃连接和 1 个中间块。 由于稳定扩散是典型的 U-Net 结构,因此这种 ControlNet 架构可能适用于其他模型。 

我们连接 ControlNet 的方式在计算上是高效的——由于锁定的副本参数被冻结,因此在最初锁定的编码器中不需要进行梯度计算来进行微调。 这种方法可以加快训练速度并节省 GPU 内存。 根据在单个 NVIDIA A100 PCIE 40GB 上的测试,与不使用 Control-Net 优化稳定扩散相比,使用 Control-Net 优化稳定扩散仅需要大约 23% 的 GPU 内存和每次训练迭代的 34% 的时间。

图像扩散模型学习逐步对图像进行去噪并从训练域生成样本。

  • 去噪过程可以发生在像素空间或从训练数据编码的潜在空间中。
  • 稳定扩散使用潜在图像作为训练域,因为在这个空间中工作已被证明可以稳定训练过程 [71]。 具体来说,Stable Diffusion 使用类似于 VQ-GAN [19] 的预处理方法将 512 × 512 像素空间图像转换为更小的 64 × 64 潜在图像。
  • 为了将 ControlNet 添加到稳定扩散中,我们首先将每个输入条件图像(例如边缘、姿态、深度等)从 512 × 512 输入大小转换为与稳定扩散大小匹配的 64 × 64 特征空间向量。 特别地,我们使用一个由四个卷积层组成的微型网络 E(·),具有 4 × 4 内核和 2 × 2 步长(由 ReLU 激活,分别使用 16、32、64、128 个通道,用高斯权重初始化并与完整模型联合训练)将图像空间条件 c_i 编码为特征空间条件向量 c_f,然后把 c_f 送入 ControlNet。

3.3. 训练 

给定输入图像 z0,图像扩散算法逐渐向图像添加噪声并生成噪声图像 z_t,其中 t 表示添加噪声的时间。 给定一组条件,包括时间步 t、文本提示 c_t 以及特定于任务的条件 c_f,图像扩散算法用下式学习网络 ϵ_θ 来预测添加到噪声图像 z_t 的噪声 

其中 L 是整个扩散模型的总体学习目标。 该学习目标直接用于通过 ControlNet 微调扩散模型。 

在训练过程中,我们随机将50%的文本提示 c_t 替换为空字符串。 这种方法提高了 ControlNet 直接识别输入条件图像(替代提示)中的语义(例如边缘、姿势、深度等)的能力。 

在训练过程中,由于零卷积不会给网络增加噪声,因此模型应该始终能够预测高质量的图像。 我们观察到该模型并不是逐渐学习控制条件,而是突然成功地遵循输入条件图像; 通常优化步骤少于 10K。 如图 4 所示,我们称之为“突然收敛现象”。 

3.4. 推断 

我们可以通过多种方式进一步控制 ControlNet 的额外条件如何影响去噪扩散过程。 

无分类器引导分辨率加权(Classifier-Free Guidance Resolution Weighting,CFG-RW)

  • 稳定扩散依赖于一种称为无分类器指导 [29] 的技术来生成高质量图像。
  • CFG 的公式为 ϵ_prd = ϵ_uc + β_cfg(ϵ_c − ϵ_uc),其中 ϵ_prd、ϵ_uc、ϵ_c、β_cfg 分别是模型的最终输出、无条件输出、条件输出和用户指定的权重。
  • 当通过 ControlNet 添加条件图像时,可以将其添加到 ϵ_uc 和 ϵ_c,或仅添加到 ϵ_c。 在具有挑战性的情况下,例如,当没有给出提示时,将其添加到 ϵ_uc 和 ϵ_c 将完全删除 CFG 指导(图 5b); 仅使用 ϵ_c 将使指导非常强(图 5c)。
  • 我们的解决方案是首先将条件图像添加到 ϵ_c 中,然后根据每个块的分辨率将权重 w_i = 64/h_i(其中 h_i 是第 i 个块的大小(分辨率),例如 h1 = 8, h2 = 16, ..., h13 = 64)乘以稳定扩散和 ControlNet 之间的每个连接。通过降低 CFG 引导强度,我们可以得到如图 5d 所示的结果,我们称之为 CFG 分辨率加权。 

组合多个 ControlNet。 要将多个条件图像(例如 Canny 边缘和姿势)应用于稳定扩散的单个实例,我们可以直接将相应 ControlNet 的输出添加到稳定扩散模型中(图 6)。 这种组合不需要额外的加权或线性插值。 

4. 实验

我们实现具有稳定扩散的 ControlNet 来测试各种条件,包括 Canny Edge [11]、深度图 [68]、法线图 [86]、M-LSD 线 [24]、HED 软边缘 [90]、ADE20K 分割 [95] 、Openpose [12] 和用户草图。 另请参阅补充材料,了解每种调节的示例以及详细的训练和推理参数。 

4.1. 定性结果 

图 1 显示了几种提示设置下生成的图像。 图 7 显示了我们在没有提示的情况下在各种条件下的结果,其中 ControlNet 稳健地解释了不同输入条件图像中的内容语义。 

4.2. 消融研究 

我们通过以下方式研究 ControlNet 的替代结构:

  • 用高斯权重初始化的标准卷积层替换零卷积
  • 用一个卷积层替换每个块的可训练副本,我们称之为 ControlNet-lite。
  • 另请参阅补充材料,了解这些消融结构的完整细节。 

我们提供了 4 种提示设置来测试现实世界用户可能的行为:

  • (1)无提示; (2)提示不足,没有完全覆盖调节图像中的对象,例如本文默认的提示“高质量、详细、专业的图像”; (3) 改变条件图像语义的冲突提示; (4)完善的提示,描述必要的内容语义,例如 “a beautiful house”。
  • 图 8a 显示 ControlNet 在所有 4 项设置中均成功。 轻量级的 ControlNet-lite(图 8c)不够强大,无法解释调节图像,并且在不足和无提示的情况下会失败。
  • 当替换零卷积时,ControlNet 的性能下降到与 ControlNet-lite 大致相同,这表明可训练副本的预训练主干在微调过程中被破坏(图 8b)。 

4.3. 定量评价

用户研究

  • 我们对 20 个未见过的手绘草图进行采样,然后将每个草图分配给 5 种方法:PIPT [88] 的草图模型、具有默认边缘引导尺度(β = 1.6)的草图引导扩散(SGD)[87]、具有相对较高的边缘引导尺度(β=3.2)的 SGD [87] ,前面提到的ControlNet-lite和ControlNet。
  • 我们邀请 12 位用户根据 “显示图像的质量”和“草图的保真度” 分别对这 20 组 5 个结果进行排名。这样,我们获得了 100 个结果质量排名和 100 个条件保真度排名。
  • 我们使用平均人类排名 (Average Human Ranking,AHR) 作为偏好指标,用户按 1 到 5 的范围对每个结果进行排名(越低越差)。 平均排名如表 1 所示。 

与工业模型的比较

  • Stable Diffusion V2 Depth-to-Image (SDv2-D2I) [82] 使用大规模 NVIDIA A100 集群、数千个 GPU 小时和超过 1200 万张训练图像进行训练。
  • 我们使用相同深度(depth)条件为 SD V2 训练 ControlNet,但仅使用 200k 训练样本、一个 NVIDIA RTX 3090Ti 和 5 天的训练。
  • 我们使用 SDv2-D2I 和 ControlNet 生成的 100 张图像来教 12 位用户区分这两种方法。 然后,我们生成 200 张图像,并要求用户说出每张图像是哪个模型生成的。
  • 用户的平均精度为 0.52±0.17,表明两种方法产生的结果几乎没有区别。 

条件重建和 FID 评分

  • 我们使用ADE20K [95] 的测试集来评估条件保真度。
  • 最先进的分割方法 OneFormer [35] 在 ground-truth 集上实现了 0.58 的 Intersection-over-Union (IoU)。
  • 我们使用不同的方法生成具有 ADE20K 分割的图像,然后应用 OneForm 再次检测分割以计算重建的 IoU(表 2)。
  • 此外,我们使用 Frechet Inception Distance (FID) [28] 来测量使用不同分割条件方法随机生成的 512×512 图像集的分布距离,以及文本图像 CLIP 分数 [65] 和 CLIP 美学分数 [78] ] 在表 3 中。
  • 有关详细设置,另请参阅补充材料。 

4.4. 与以前方法的比较

图 9 展示了基线和我们的方法(稳定扩散 + ControlNet)的视觉比较。 具体来说,我们展示了 PTIT [88]、Sketch-Guided Diffusion [87] 和 Taming Transformers [19] 的结果。 我们观察到 ControlNet 可以稳健地处理不同的条件图像并获得清晰的结果。 

4.5. 讨论

训练数据集大小的影响。 我们在图 10 中展示了 ControlNet 训练的稳健性。训练不会因有限的 1k 图像而崩溃,并且允许模型生成可识别的狮子。 当提供更多数据时,学习是可扩展的。 

解释内容的能力。 我们展示了 ControlNet 从图 11 中的输入条件图像捕获语义的能力。 

转移到社区模型。 由于 ControlNet 不会改变预训练 SD 模型的网络拓扑,因此它可以直接应用于稳定扩散社区中的各种模型,例如 Comic Diffusion [60] 和 Protogen 3.4 [16],如图 12 所示。 

5. 结论

ControlNet 是一种神经网络结构,可学习大型预训练文本到图像扩散模型的条件控制。 它复用源模型的大规模预训练层来构建深度且强大的编码器来学习特定条件。 原始模型和可训练副本通过 “零卷积” 层连接,消除训练期间的有害噪声。 大量的实验验证了 ControlNet 可以在单个或多个条件下、有或没有提示的情况下有效地控制稳定扩散。 不同条件数据集上的结果表明,ControlNet 结构可能适用于更广泛的条件,并促进相关应用。 

参考

Zhang L, Agrawala M. Adding conditional control to text-to-image diffusion models[J]. arXiv preprint arXiv:2302.05543, 2023.

附录

1. 实现细节

1.1 训练参数

我们已经使用不同的基于图像的条件训练了多个 ControlNet 模型,这些模型可以以不同的方式控制大型预训练扩散模型。 表 1 列出了概述。 

1.2 推理参数

除非另有说明,否则我们使用 7.0 作为默认 cfg 比例。 我们使用 DDIM 作为采样器,并使用 20 个步骤对每个图像进行采样。

我们使用四种提示设置进行实验:

  • 无提示。使用空字符串作为输入提示,例如 “”。 
  • 不充分提示。提示未完全覆盖条件图像中的对象,例如,未提及实际图像内容的 “高质量图像”。 
  • 冲突提示。会改变条件图像的语义的提示,例如,用于猫图像的 “狗”。 
  • 完美提示。提示描述所有必要的内容语义,例如 “房屋的数字绘画杰作”。 

基于这四种基本的提示类型,我们提供了带有提示推导的实验: 

  • 默认提示。我们使用 “专业、详细、高质量的图像” 作为默认提示来生成定性结果。 请注意,默认提示是不充分提示,它可以用于任何图像。 
  • 自动提示。为了测试全自动管道的最先进的最大化质量,我们还尝试使用自动图像标题方法(例如BLIP [8]),使用 “默认提示” 模式获得的结果来生成提示 。 在此模式下,我们使用默认提示生成图像,然后自动检测标题,然后使用检测到的提示再次生成图像。 
  • 用户提示。用户给出提示。 

由于 Stable Diffusion 依赖 CFG-Scale 来生成高质量图像,而 CFG-Scale 在推理过程中使用“ 负面提示(negative prompt)” 来指导去噪,因此我们使用以下设置: 

  • 负面提示。对于与其他方法的所有比较以及在 “无提示” 设置中,我们使用空字符串作为负面提示。 对于其他定性结果,我们使用 “丑陋、低质量” 作为负面提示。 
  • CFG 尺度。我们使用 7.0 作为 CFG 尺度的默认设置。 CFG-RW(在主论文中提到)适用于 “无提示” 或 “提示不足” 测试。 

2. 消融研究 

2.1 消融的架构 

我们研究了以下消融的架构,如图 1 所示:  

  • 提议的。主论文中提议的架构。
  • 没有零卷积。用高斯权重初始化的标准卷积层替换零卷积。 
  • 连接到编码器的轻量级层。该架构不使用可训练的副本,并直接为每个 U-Net 级别初始化单个卷积层。 输出被添加到原始扩散模型的编码器中。 
  • 连接到解码器的轻量级层。该架构不使用可训练的副本,并直接为每个 U-Net 级别初始化单个卷积层。 输出被添加到原始扩散模型的解码器。 
  • 以零卷积连接到解码器的轻量级层。与 “连接到解码器的轻量级层” 相同,但使用零卷积连接到原始扩散模型。 
  • 直接精调原始权重。只在 Stable Diffusion 的第一层添加一层,训练原始的 Stable Diffusion 权重。 该架构在数学上与 Stable Diffusion V2 的深度(depth)到图像微调方法相同。 请注意,这种架构有一些局限性,例如不支持多个控制,当微调数据集相对较小时会遭受过度拟合或遗忘,并且将这种形式的控制转移到其他社区模型相对困难。 

2.2 结果 

我们在图 2、图 3 和图 4 中展示了这项消融研究的结果。我们可以看到,所提出的结构对于不同的提示设置相对稳健。 

3. 比较 

我们在图 6 中展示了在不使用任何类别指导或提示的情况下对 canny-edge-to-image 进行的比较。比较的方法是 Palette [14]、Taming Transformer [4]、LDM [13]、PITI [20] 以及我们的 Canny 模型。 这些方法是使用相同的 GPU 小时数在同一数据集上实现的。 

在图 5 中​​,我们使用不同的提示设置与的同期工作 T2I-Adapter [10] 进行比较。

我们使用经过训练来控制 Stable Diffusion V1.5 和 Stable Diffusion V2.1 的两种不同模型,在图 7 中与 Stable Diffusion V2 的深度(depth)到图像进行了比较。 

4. 定量评价(见原始附录) 

5. 零卷积层的梯度计算 

我们简要描述零卷积层的梯度计算。 考虑一个 1 × 1 卷积层,其权重为 W,偏差为 B,空间位置为 p,通道索引为 i。 给定一个输入映射 I ∈ R^(h×w×c),前向传播可以写为 

由于零卷积层初始化为 W = 0 和 B = 0(即在任何优化步骤之前),因此在 I_(p,i) ≠ 0 的任何地方梯度都会变为 

我们看到,虽然零卷积会导致特征项 I 的梯度变为零,但权重和偏差的梯度不受影响。 只要特征 I非零,权重 W 就会在第一次梯度下降迭代中被优化为非零矩阵。 值得注意的是,在我们的例子中,特征项是从数据集中采样的输入数据或条件向量,这自然确保了非零 I。 

例如,考虑具有总体损失函数 L 和学习率 β_lr ≠ 0 的经典梯度下降,如果 “外部” 梯度

不为零,我们有 

其中 W* 是一个梯度下降步骤后的权重,⊙是Hadamard乘积。 经过这一步,我们有 

其中,非零梯度被获得,并且神经网络开始学习。 通过这种方式,零卷积成为一种独特类型的连接层,以学习的方式逐渐将参数从零增长到优化值。 

6. 额外结果(见原始附录) 

我们在图 8 中展示了 “Canny Edge” 模型的结果。

我们在图 9 中展示了 “Hough 线” 模型的结果。

我们在图 11 中展示了 “HED 边界” 模型的结果。

我们在图 10 中展示了 “用户草图” 模型的结果。

我们在图 12 中展示了 “人体姿势 (Openpifpaf)” 模型的结果。

我们在图 16 中展示了 “语义分割 (COCO)” 模型的结果。

我们在图 15 中展示了 “语义分割 (ADE20K)” 模型的结果。 

我们在图 17 中展示了 “法线贴图(Map)” 模型的结果。

我们在图 18 中展示了 “卡通线条画” 模型的结果。

我们展示了基于同一源图像的六种控制类型的结果,包括 Canny Edge、HED、M-LSD Line、Depth、Normal 和 Scribbles,如图 23、图 24、图 25 所示。

7. 讨论

图 1 比较了未使用 ControlNet 训练的模型。 该模型的训练方法与 Stability 的深度到图像模型完全相同(向 SD 添加通道并继续训练)。 

图 21 显示了训练过程。 我们看到一种 “突然收敛现象”,即模型突然能够遵循输入条件。 当使用 1e-5 作为学习率时,我们已经在训练过程中看到这种情况发生,通常在 5000 到 10000 步之间。

图 22 显示了使用不同数据集规模训练的基于 Canny 边缘的 ControlNet。

图 19 显示,如果扩散过程被掩蔽,则模型可以用于基于笔的图像编辑。

图 26 可以看出,当物体比较简单时,模型可以实现对细节的比较准确的控制。

图 27 显示,当 ControlNet 仅应用于 50% 扩散迭代时,用户可以获得不遵循输入形状的结果。

图 28 显示,当语义解释错误时,模型可能难以生成正确的内容。

图29展示了本文中用于边缘检测、姿态提取等的所有源图像。 

S. 总结

S.1 主要贡献

本文提出一种神经网络架构  ControlNet,可将条件控制添加到大型预训练文本到图像扩散模型中。

本文使用预训练的 ControlNet 来控制稳定扩散,以 Canny edges、Hough lines、用户涂鸦、人体关键点、分割图、形状法线、深度和卡通线条图为条件。

使用无分类器引导分辨率加权(Classifier-Free Guidance Resolution Weighting,CFG-RW)来提高生成质量。

S.2 架构和方法

本文以稳定扩散作为示例(主干)来展示 ControlNet 如何向大型预训练扩散模型添加条件控制,完整架构如图 3 所示。

  • 稳定扩散本质上是一个 U-Net,包括编码器、中间块和跳过连接的解码器。
  • 为了将 ControlNet 添加到这样的预训练稳定扩散模型中,冻结主干的参数,同时将主干的编码器、中间块克隆获得具有可训练参数的副本。
  • 可训练副本与冻结主干通过有零卷积层连接。零卷积通过消除初始训练步骤中作为梯度的有害随机噪声来保护该主干网。这种方法可以加快训练速度并节省 GPU 内存。
  • 可训练副本采用外部条件向量 c 作为输入。使用微型网络 E(·) 将图像空间条件 c_i 编码为特征空间条件向量 c_f,然后把 c_f 送入 ControlNet。
  • 文本提示 c_t 使用 CLIP 文本编码器进行编码,扩散时间步 t 使用位置编码的时间编码器进行编码。 
  • z_t 是通过图像扩散算法逐渐向给定输入图像 z0 添加噪声获得的噪声图像。

无分类器引导分辨率加权。 首先将条件图像添加到无分类器引导的条件输出中,然后根据每个块的分辨率将权重 w_i = 64/h_i(其中 h_i 是第 i 个块的大小(分辨率),例如 h1 = 8, h2 = 16, ..., h13 = 64)乘以稳定扩散和 ControlNet 之间的每个连接,从而降低无分类器引导的引导强度。

组合多个 ControlNet。 要将多个条件图像应用于稳定扩散的单个实例,可以直接将相应 ControlNet 的输出添加到稳定扩散模型中。 这种组合不需要额外的加权或线性插值。

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

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

相关文章

基于electron25+vite4创建多窗口|vue3+electron25新开模态窗体

在写这篇文章的时候&#xff0c;查看了下electron最新稳定版本由几天前24.4.0升级到了25了&#xff0c;不得不说electron团队迭代速度之快&#xff01; 前几天有分享一篇electron24整合vite4全家桶技术构建桌面端vue3应用示例程序。 https://www.cnblogs.com/xiaoyan2017/p/17…

【C++哈希应用】位图、布隆过滤器

【C哈希应用】位图、布隆过滤器 目录 【C哈希应用】位图、布隆过滤器位图概念位图的实现位图改造位图应用总结布隆过滤器布隆过滤器的提出布隆过滤器的概念布隆过滤器的查找布隆过滤器删除布隆过滤器优点布隆过滤器缺陷 作者&#xff1a;爱写代码的刚子 时间&#xff1a;2023.9…

【人物】知识就是金钱,程序员搞副业年入200万,各行各业的你也可以效仿

优秀的普通人 大家好&#xff0c;我是老李。一个专注于收集互联网有用信息的博主。 今天我们这一期要讲的是人物。讲什么人物呢&#xff1f; 首先我们不会讲一些特别知名和特别牛逼的人物&#xff0c;比如马云&#xff0c;雷军。刘强东。这些人固然很厉害很成功&#xff0c;…

【【萌新的RiscV学习之流水线控制-9】】

萌新的RiscV学习之流水线控制-9 我们按照在之前的单周期设计加入控制单元 那么我们能够在后续的设计中提供方便 我们也在流水线中加入一个control单元 我们先按照书上的指令op码值介绍一遍基本功能 接下来我们讲述control 的 控制效果 关于这些串口判别的使用 由于控制线从…

状态压缩dp,291. 蒙德里安的梦想

291. 蒙德里安的梦想 - AcWing题库 求把 NM 的棋盘分割成若干个 12 的长方形&#xff0c;有多少种方案。 例如当 N2&#xff0c;M4 时&#xff0c;共有 5 种方案。当 N2&#xff0c;M3 时&#xff0c;共有 3 种方案。 如下图所示&#xff1a; 输入格式 输入包含多组测试用例…

【yolov5】原理详解

一.模型框架 二.对Yolov5的描述 Yolov5的模型主要由 输入、Backbone、Neck、Head、输出 五部分组成。2.1 输入 输入 640x640x32.2 backbone Backbone&#xff1a;负责提取输入图像的特征。 在Yolov5中&#xff0c;常见的Backbone网络包括CSPDarknet53或ResNet。这些网络都是…

uniapp使用scroll-into-view实现锚点定位和滚动监听功能【楼层效果 / 侧边导航联动效果】

大佬网址&#xff1a; https://blog.csdn.net/weixin_47136265/article/details/132303570 效果 代码 <template><!-- 这里面有2个bug&#xff0c;已经解决&#xff0c;需要知道的地方1.methods里的scrollEvt(e)方法里面的 this.tabIndex index ! -1 ? index :…

python -m pip install --upgrade pip失败

显示这样的报错&#xff1a; You are using pip version 9.0.1, however version 23.2.1 is available. You should consider upgrading via the python -m pip install --upgrade pip command. 换源安装 python -m pip install --upgrade pip -i https://pypi.douban.com/s…

2023-9-30 JZ34 二叉树中和为某一值的路径

题目链接&#xff1a;二叉树中和为某一值的路径 import java.util.*;/** public class TreeNode {* int val 0;* TreeNode left null;* TreeNode right null;* public TreeNode(int val) {* this.val val;* }* }*/public class Solution {/*** 代码中的类名、…

1.物联网射频识别,RFID概念、组成、中间件、标准,全球物品编码——EPC码

1.RFID概念 RFID是Radio Frequency Identification的缩写&#xff0c;又称无线射频识别&#xff0c;是一种通信技术&#xff0c;可通过无线电讯号识别特定目标并读写相关数据&#xff0c;而无需与被识别物体建立机械或光学接触。 RFID&#xff08;Radio Frequency Identificati…

MyBatis的一级缓存和二级缓存:原理和作用

MyBatis的一级缓存和二级缓存&#xff1a;原理和作用 引言 在数据库访问中&#xff0c;缓存是一种重要的性能优化手段&#xff0c;它可以减少数据库查询的次数&#xff0c;加快数据访问速度。MyBatis作为一款流行的Java持久层框架&#xff0c;提供了一级缓存和二级缓存来帮助…

机器学习之广义增量规则(Generalized Delta Rule)

文章目录 广义增量规则的公式s型函数的增量规则 广义增量规则的公式 对于单层神经网络的增量规则&#xff0c;已经过时啦&#xff0c;现在存在一种更广义的增量规则形式。对于任意激活函数&#xff0c;增量规则表示如下式它与前一节的delta规则相同&#xff0c;只是ei被替换为…

案例突破——再探策略模式

再探设计模式 一、背景介绍二、 思路方案三、过程1. 策略模式基本概念2. 策略模式类图3. 策略模式基本代码策略类抽象策略类Context类客户端 4. 策略模式还可以进行优化的地方5. 对策略模式的优化&#xff08;配置文件反射&#xff09; 四、总结五、升华 一、背景介绍 在做项目…

ccf_csp第一题汇总

ccf_csp第一题汇总 printf()输出格式大全&#xff08;附 - 示例代码&#xff09;现值计算AcWing 4699. 如此编码AcWing 4509. 归一化处理(小数位数根号函数)AcWing 4454. 未初始化警告AcWing 4280. 序列查询AcWing 4006. 数组推导(小陷阱)AcWing 3292. 称检测点查询AcWing 3287…

git你学“废”了吗?——git本地仓库的创建

git你学“废”了吗&#xff1f;——git本地仓库的创建&#x1f60e; 前言&#x1f64c;初识gitgit 本地仓库的创建1、基于centos7环境下 git的下载2、设置自己的用户名和邮箱 查看.git中的结构区分清楚版本库和工作区 查看git中的相关内容查看仓库的状态 总结撒花&#x1f49e;…

给奶牛做直播之一

一、前言 前几天看了薇亚写的一本书《人生是用来改变的》&#xff0c;和同事聊的时候同事问我这本书讲了什么&#xff0c;我回想了一下说主要是讲&#xff1a;我很辛苦&#xff0c;我很上进&#xff0c;我很牛逼&#xff0c;我很善良&#xff01;话说成功人士放个屁都是香的&am…

[题]修剪草坪 #单调队列优化

题目 洛谷上的题目 Acwing上的题目 根据y总的一波分析&#xff0c;我们得出……公式就是一切…… 所以&#xff0c;我要学会推公式…… 推公式…… 公式…… #include<bits/stdc.h> using namespace std; typedef long long ll; const int N 1e5 10; int n, m; ll s[N…

知识库系统都有哪些?知识库系统功能和介绍

知识库的建立是企业数字化转型的重要一步&#xff0c;能够为企业的可持续发展奠定坚实的基础。使用HelpLook创建的知识库知识库系统已经成为当前很多人的选择。 HelpLook可以实现并制作企业帮助中心设计、产品说明书、常见问题手册、在线知识库、企业文档制作。 点击注册使用&…

pip version 更新

最近报了一个错&#xff1a; 解决办法&#xff1a; 在cmd输入“conda install pip” conda install pip 完了之后再输入&#xff1a; python -m pip install --upgrade pip ok.