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

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.mzph.cn/news/91370.shtml

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

相关文章

FFmpeg 命令:从入门到精通 | ffmpeg 命令分类查询

FFmpeg 命令&#xff1a;从入门到精通 | ffmpeg 命令分类查询 FFmpeg 命令&#xff1a;从入门到精通 | ffmpeg 命令分类查询ffmpeg -versionffmpeg -buildconfffmpeg -formatsffmpeg -muxersffmpeg -demuxersffmpeg -codecsffmpeg -decodersffmpeg -encodersffmpeg -bsfsffmpeg…

基于SSM+Vue的医院住院综合服务管理系统的设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用Vue技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

三、2023.9.29.C++面向对象.3

文章目录 33、简述一下什么是面向对象&#xff1f;34、简述一下面向对象的三大特征&#xff1f;35、简述一下 C 的重载和重写&#xff0c;以及它们的区别&#xff1f;36、说说 C 的重载和重写是如何实现的&#xff1f;37、说说构造函数有几种&#xff0c;分别什么作用?38、只定…

汽车电子——产品标准规范汇总和梳理(开发体系)

文章目录 前言 一、设计架构 二、安全可靠 三、测试验证 四、过程能力 五、质量管理 六、开发指南 总结 前言 见《汽车电子——产品标准规范汇总和梳理》 一、设计架构 《Autosar R22-11 汽车开放系统体系架构》 二、安全可靠 《GB/T 34590.1-2022&#xff08;ISO 262…

表格内日期比较计算

需求&#xff1a;在表格中新增数据&#xff0c;计算开始日期中最早的和结束日期中最晚的&#xff0c;回显到下方。 <el-formref"formRef":model"ruleForm":rules"rules"style"margin-top: 20px;"label-position"top">…

python爬虫基于管道持久化存储操作

文章目录 基于管道持久化存储操作scrapy的使用步骤1.先转到想创建工程的目录下&#xff1a;cd ...2.创建一个工程3.创建之后要转到工程目录下4.在spiders子目录中创建一个爬虫文件5.执行工程setting文件中的参数 基于管道持久化存储的步骤&#xff1a;持久化存储1&#xff1a;保…

Win11下无法打开丛林之狐,提示未检测到DirectX 8.1

新装的win11系统&#xff0c;打开丛林之狐提示未检测到DirectX 8.1. 运行dxdiag检查DirectX版本&#xff1a; DX版本已经是12了&#xff1a; 最终参考了这篇文章解决了&#xff1a; 罪恶都市出现XX-directx version 8.1处理方法 - 知乎 控制面板 > 程序 > 启用或关闭Wi…

小谈设计模式(6)—依赖倒转原则

小谈设计模式&#xff08;6&#xff09;—依赖倒转原则 专栏介绍专栏地址专栏介绍 依赖倒转原则核心思想关键点分析abc 优缺点分析优点降低模块间的耦合度提高代码的可扩展性便于进行单元测试 缺点增加代码的复杂性需要额外的设计和开发工作 Java代码实现示例分析 总结 专栏介绍…

PDF文件压缩软件 PDF Squeezer mac中文版​软件特点

PDF Squeezer mac是一款macOS平台上的PDF文件压缩软件&#xff0c;可以帮助用户快速地压缩PDF文件&#xff0c;从而减小文件大小&#xff0c;使其更容易共享、存储和传输。PDF Squeezer使用先进的压缩算法&#xff0c;可以在不影响文件质量的情况下减小文件大小。 PDF Squeezer…

7、Docker网络

docker网络模式能干嘛&#xff1f; 容器间的互联和通信以及端口映射 容器IP变动时候可以通过服务名直接网络通信而不受到影响 docker 网络模式采用的是桥接模式&#xff0c;当我们创建了一个容器后docker网络就会帮我们创建一个虚拟网卡&#xff0c;这个虚拟网卡和我们的容器网…

【数据结构】队列和栈

大家中秋节快乐&#xff0c;玩了好几天没有学习&#xff0c;今天分享的是栈以及队列的相关知识&#xff0c;以及栈和队列相关的面试题 1.栈 1.1栈的概念及结构 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作…

UG\NX二次开发 通过点云生成曲面 UF_MODL_create_surf_from_cloud

文章作者:里海 来源网站:《里海NX二次开发3000例专栏》 感谢粉丝订阅 感谢 Rlgun 订阅本专栏,非常感谢。 简介 有网友想做一个通过点云生成曲面的程序,我们也试一下 效果 代码 #include "me.hpp" /*HEAD CREATE_SURF_FROM_CLOUD CCC UFUN */

安全学习_开发相关_Java第三方组件Log4jFastJSON及相关安全问题简介

文章目录 JNDI&#xff1a;(见图) Java-三方组件-Log4J&JNDILog4J&#xff1a;Log4j-组件安全复现使用Log4j Java-三方组件-FastJsonFastJson&#xff1a;Fastjson-组件安全复现对象转Json(带类型)Json转对象Fastjson漏洞复现&#xff08;大佬文章 JNDI&#xff1a;(见图) …

C# Task任务详解

文章目录 前言Task返回值无参返回有参返回 async和await返回值await搭配使用Main async改造 Task进阶Task线程取消测试用例超时设置 线程暂停和继续测试用例 多任务等最快多任务全等待 结论 前言 Task是对于Thread的封装&#xff0c;是极其优化的设计&#xff0c;更加方便了我…

PL/SQL+cpolar公网访问内网Oracle数据库

文章目录 前言1. 数据库搭建2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射 3. 公网远程访问4. 配置固定TCP端口地址4.1 保留一个固定的公网TCP端口地址4.2 配置固定公网TCP端口地址4.3 测试使用固定TCP端口地址远程Oracle 前言 Oracle&#xff0c;是甲骨文公司的一款关系…

Centos 7分区失败,进入 dracut 页面,恢复操作

1. 问题场景&#xff1a; 分区失败&#xff0c;重启了虚拟机&#xff0c;导致系统进入 dracut 页面。开机显示 直接回车&#xff0c;等待重启失败的页面 自动进入了 dracut 模式(救援)。 2. 临时解决进入系统 查了一下&#xff1a;如果出现 “dracut” 提示、进入 dracut…

elementui 菜单选中优化

/** 父级菜单悬浮样式**/ .el-submenu__title:hover {color:#1890ff!important; } /** 父级菜单箭头悬浮样式**/ .el-submenu__title:hover>.el-submenu__icon-arrow{font-size: 13px!important;} /** 子菜单悬浮样式**/ .el-menu-item:hover{color:#1890ff!important; } /*…

数据结构算法--6 希尔排序和计数排序

希尔排序 希尔排序与插入排序原理相同&#xff0c;希尔排序是一种分组插入排序算法 > 首先取一个整数d1n/2&#xff0c;将元素分为d1个组&#xff0c;每组相邻两元素之间距离为d1&#xff0c;在各组内之间插入排序。 > 取第二个整数d2n/2&#xff0c;重复上述分组排序…

VBA技术资料MF62:创建形状添加文本及设置颜色

【分享成果&#xff0c;随喜正能量】须知往生净土&#xff0c;全仗信、愿。有信、愿&#xff0c;即未得三昧、未得一心不乱&#xff0c;亦可往生。且莫只以一心不乱&#xff0c;及得念佛三昧为志事&#xff0c;不复以信、愿、净念为事。。 我给VBA的定义&#xff1a;VBA是个人…

英语单词记忆学习打卡系统 微信小程序

本单词记忆系统使用了计算机语言Java和存放数据的仓库MySQL&#xff0c;采用了微信小程序模式来实现。本系统使用了框架SSM和Uni-weixin实现了单词记忆系统应有的功能&#xff0c;系统主要角色包括管理员和用户。 关键词&#xff1a;Java&#xff1b;MySQL&#xff1b;SSM  在…