向文本到图像扩散模型添加条件控制
摘要解读:
我对摘要英文的理解:
我们提出了一个神经网络架构ControlNet,可以向大规模的预训练好的文本到图像的扩散模型中添加空间条件控制。ControlNet锁住了准备生产的大规模扩散模型,并且重新使用了他们从数十亿图像上的预训练好的编码器层作为一个强大的骨架来学习多样的的条件控制,少神经网络架构和零卷积层相连接(用0初始化的卷积层)渐进式的从零增长参数,确保没有噪声扰乱优化。我们使用stable diffusion 测试了大量的条件控制比如边缘深度分割和人的姿势,使用单个或者多个条件,有或者没有提示,我们展示了在小于50k 和大于1m d的数据集上训练control net 是鲁棒性的,大量的实验证明controlnet 可以促进控制图像扩散模型更广阔的应用
翻译软件:
我们提出了ControlNet,这是一种神经网络架构,旨在为大型、预训练的文本到图像扩散模型添加空间条件控制。ControlNet保留(locks )了已准备好用于生产的大型扩散模型,并重新利用了它们通过数十亿图像预训练得到的深层且稳健的编码层,作为学习多样化条件控制的强大基础。该神经网络架构通过“零卷积”(即初始化为零的卷积层)进行连接,这些卷积层逐步从零开始增长参数,确保在微调过程中不会受到有害噪声的影响。我们使用Stable Diffusion测试了多种条件控制,如边缘、深度、分割、人体姿态等,这些测试采用了单个或多个条件,并且可以包含或不包含提示。我们展示了ControlNet的训练在小型(<50k)和大型(>1m)数据集上都具有鲁棒性。广泛的实验结果表明,ControlNet可能促进图像扩散模型在更广泛应用中的控制。
学习到的 单词 lock(有保留的意思)zero convolutions 即初始化为零的卷积层 progressively grow the parameters from zero从零开始增长参数 finetuning 微调
introduction
提出了问题和挑战:
我们中的许多人都经历过视觉灵感的闪现,我们希望将其捕捉到独特的图像中。随着文本到图像扩散模型 [54,61,71] 的出现,我们现在可以通过输入文本提示来创建视觉上令人惊叹的图像。然而,文本到图像模型在对图像的空间组成提供的控制方面受到限制。仅通过文本提示来精确表达复杂的布局、姿势、形状和形式可能很困难。生成与我们的心理想象准确匹配的图像通常需要多次反复试验,包括编辑提示、检查生成的图像,然后重新编辑提示。
我们能否通过让用户提供直接指定其所需图像组成的附加图像来实现更细粒度的空间控制?
在计算机视觉和机器学习中,这些附加图像(例如,边缘图、人体姿势骨架、分割图、深度、法线等)通常被视为图像生成过程的条件。图像到图像翻译模型 [34, 97] 学习
文本到图像(text-to-image)模型的控制方法以及解决相关问题的不同策略。我们可以从以下几个方面来理解:
- 控制文本到图像模型的方法:
- 空间掩码(Spatial Masks):这是一种在生成图像时用于控制图像特定区域的技术。通过在模型中加入空间掩码,可以指定哪些区域应该被保留或修改,从而实现更精细的图像控制。
- 图像编辑指令(Image Editing Instructions):这种方法允许用户通过指令直接对生成的图像进行编辑,比如修改颜色、添加元素等。
- 个性化微调(Personalization via Finetuning):通过微调模型,可以使其适应特定用户或特定任务的需求,从而生成更加个性化的图像。
- 解决文本到图像生成问题的方法:
- 无训练技术(Training-free Techniques):对于一些简单的问题,如生成图像的不同变体或图像修复(inpainting),可以通过无需额外训练的技术来解决。例如,通过限制去噪扩散过程或编辑注意力层激活,可以在不重新训练整个模型的情况下实现这些功能。
- 端到端学习和数据驱动解决方案(End-to-end Learning and Data-driven Solutions):对于更复杂的问题,如从深度信息生成图像(depth-to-image)、从姿态信息生成图像(pose-to-image)等,通常需要采用端到端的学习方法和数据驱动的解决方案。这是因为这些问题涉及到多个复杂因素之间的相互作用,需要模型能够从大量数据中学习到这些因素的映射关系。
- 总结:
- 文本到图像模型的控制方法多种多样,包括空间掩码、图像编辑指令和个性化微调等。
- 解决文本到图像生成问题的策略也因问题的复杂程度而异。对于简单问题,可以采用无训练技术;而对于复杂问题,则需要依赖端到端学习和数据驱动的解决方案。
深入讨论了在大规模文本到图像(text-to-image)扩散模型中以端到端方式学习条件控制所面临的挑战,并提出了一些解决方案和研究方向。我们可以从以下几个方面来理解:
- 训练数据量的挑战:
- 对于特定条件的训练数据,其数量可能远远少于用于通用文本到图像训练的数据。例如,针对特定问题(如物体形状/法线、人体姿态提取等)的最大数据集通常只有约10万张图片,这相比于用于训练Stable Diffusion的LAION-5B数据集(包含50亿张图片)来说,数据量小了50,000倍。
- 这种数据量的巨大差异使得直接在有限的数据上对大规模预训练模型进行微调或继续训练变得困难,因为这很容易导致过拟合(即模型在训练数据上表现良好,但在未见过的数据上表现不佳)和灾难性遗忘(即模型在学习新任务时忘记了旧任务)。
- 缓解过拟合和灾难性遗忘的策略:
- 研究者已经提出了一些策略来缓解这些问题,其中之一是通过限制可训练参数的数量或秩(即参数矩阵的秩)。这种方法可以减少模型在有限数据上的复杂性,从而降低过拟合的风险。
- 然而,仅仅通过限制参数可能不足以完全解决问题,特别是在处理具有复杂形状和多样高级语义的野外条件图像时。
- 设计更深的或更定制化的神经网络架构:
- 为了更好地处理这些复杂的条件图像,可能需要设计更深的或更定制化的神经网络架构。这种架构应该能够捕捉图像中的高级语义信息,并将其与文本输入有效地结合起来,以生成符合条件的图像。
- 这种定制化的设计可能包括引入新的网络层、改变层之间的连接方式、使用注意力机制等,以便模型能够更好地理解和学习复杂的条件信息。
- 总结:
- 在大规模文本到图像扩散模型中以端到端方式学习条件控制是一个具有挑战性的任务,主要是由于特定条件的训练数据量有限。
- 为了缓解过拟合和灾难性遗忘的问题,研究者提出了限制可训练参数数量和秩的策略,但这可能不足以完全解决问题。
- 因此,设计更深的或更定制化的神经网络架构可能是一个有效的解决方案,以便模型能够更好地处理复杂的条件图像并生成符合条件的图像。
这篇论文介绍了ControlNet,一个端到端的神经网络架构,它学习对大型预训练的文本到图像扩散模型(在我们的实现中为Stable Diffusion)进行条件控制。ControlNet通过锁定大型模型的参数并制作其编码层的可训练副本,从而保留了该模型的质量和能力。该架构将大型预训练模型视为学习各种条件控制的强大基础。可训练副本和原始锁定模型通过零卷积层连接,这些层的权重初始化为零,以便在训练过程中逐渐增长。这种架构确保了在训练开始时不会向大型扩散模型的深层特征中添加有害噪声,并保护了可训练副本中的大规模预训练基础不受此类噪声的破坏。我们的实验表明,ControlNet可以使用各种条件输入(包括Canny边缘、霍夫线、用户涂鸦、人体关键点、分割图、形状法线、深度等)来控制Stable Diffusion(如图1所示)。我们使用单个条件图像进行测试,无论是否包含文本提示,并展示了我们的方法如何支持多个条件的组合。此外,我们还报告了ControlNet的训练是稳健且可扩展的,适用于不同大小的数据集,并且对于某些任务(如深度到图像的条件控制),在单个NVIDIA RTX 3090Ti GPU上训练的ControlNet可以获得与在大型计算集群上训练的工业模型相媲美的结果。最后,我们进行了消融研究,以调查模型中每个组件的贡献,并将我们的模型与几个强大的条件图像生成基线进行了用户研究比较
总之,(1)我们提出 ControlNet,一种神经网络架构,可以通过有效的微调将空间局部化的输入条件添加到预训练的文本到图像扩散模型中,(2)我们提出预训练的 ControlNet 来控制稳定扩散,以 Canny 为条件边缘、霍夫线、用户涂鸦、人体关键点、分割图、形状法线、深度和卡通线条图,以及(3)我们通过与几种替代架构进行比较的烧蚀实验来验证该方法,并针对之前的几种进行用户研究不同任务的基线。
3. Method
ControlNet 是一种神经网络架构,可以通过空间局部、特定于任务的图像条件增强大型预训练文本到图像扩散模型。我们首先在3.1节中介绍ControlNet的基本结构,然后在3.2节中描述如何将ControlNet应用于图像扩散模型Stable Diffusion [71]。我们在第 3.3 节中详细阐述了我们的训练,并详细介绍了推理过程中的几个额外注意事项,例如在第 3.4 节中组成多个 ControlNet
3.1. ControlNet
ControlNet 将附加条件注入神经网络的块中(图 2)。
在这里,我们使用术语network block来指代一组神经网络层,这些神经层通常组合在一起形成神经网络的单个单元,例如 resnet 块、conv-bn-relu 块、多头注意力块、transformer
假设 F(x; θ) 是这样一个经过训练的神经块,其参数为 θ,将输入特征图 x 转换为另一个特征图 y,如下所示
在我们的设置中,x 和 y 通常是 2D 特征图,即 x ∈ Rh×w×c,其中 {h, w, c} 分别作为图中的高度、宽度和通道数(图 2a)。为了将 ControlNet 添加到这样的预训练神经块中,我们锁定(冻结)lock (freeze)原始块的参数 θ,同时将该块克隆到具有参数 θc 的可训练副本 trainable copy(图 2b)。(避免数据集太小的时候出现过拟合的现象)
可训练副本rainable copy采用外部条件向量 c 作为输入。当这种结构应用于稳定扩散等大型模型时,锁定的参数保留了用数十亿张图像训练的生产就绪模型,而可训练的副本rainable copy重用此类大规模预训练模型来建立一个深度、稳健且强大的骨干来处理不同的输入状况。
可训练副本rainable copy连接到具有零卷积层zero convolution layers的锁定模型,表示为 Z(·;·)。具体来说,Z(·;·) 是一个 1 × 1 卷积层,权重和偏差都初始化为零。
为了构建 ControlNet,我们使用两个零卷积zero convolution实例,
参数分别为 θz1 和 θz2。然后完整的 ControlNet 计算
其中 yc 是 ControlNet 块的输出。在第一个训练步骤中,由于零卷积层的权重和偏置参数都初始化为零,因此等式(2)中的 Z(·;·) 项均计算为零,并且
这样,当训练开始时,有害噪声就无法影响可训练副本中神经网络层的隐藏状态。此外,由于 Z(c; θz1) = 0 并且可训练副本还接收输入图像 x,因此可训练副本功能齐全,并保留大型预训练模型的功能,使其能够作为进一步学习的强大骨干。零卷积通过消除初始训练步骤中作为梯度的随机噪声来保护该主干网。我们在补充材料中详细介绍了零卷积的梯度计算。
3.2. ControlNet for Text-to-Image Diffusion用于文本到图像扩散的 ControlNet
我们使用Stable Diffusion[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 text encoder 进行编码,扩散时间步长通过使用位置编码的时间编码器进行编码。 ControlNet 结构应用于 U 网的每个编码器级别(图 3b)。
特别地,我们使用 ControlNet 创建 12 个编码块和 1 个Stable Diffusion中间块的可训练副本。 12个编码块有4种分辨率(64×64、32×32、16×16、8×8),每一个复制3次。输出被添加到 U 网的 12 个跳跃连接和 1 个中间块。由于稳定扩散是典型的 U 网结构,因此这种 ControlNet 架构可能适用于其他模型。我们连接 ControlNet 的方式在计算上是高效的——由于锁定的副本参数被冻结,因此在最初锁定的编码器中不需要进行梯度计算来进行微调。这种方法可以加快训练速度并节省 GPU 内存。根据在单个 NVIDIA A100 PCIE 40GB 上的测试,使用 ControlNet 优化稳定扩散仅需要大约 23% 的 GPU 内存和 34% 的内存,与在没有 ControlNet 的情况下优化稳定扩散相比,每次训练迭代需要更多时间。图像扩散模型学习逐步对图像进行去噪并从训练域生成样本。去噪过程可以发生在像素空间或从训练数据编码的潜在空间中。稳定扩散使用潜在图像作为训练域,因为在这个空间中工作已被证明可以稳定训练过程[71]。具体来说,Stable Diffusion 使用类似于 VQ-GAN [19] 的预处理方法将 512 × 512 像素空间图像转换为更小的 64 × 64 潜在图像。为了将 ControlNet 添加到Stable Diffusion中,我们首先将每个输入调节图像(例如边缘、姿态、深度等)从 512 × 512 输入大小转换为与Stable Diffusion大小匹配的 64 × 64 特征空间向量。
特别地,我们使用一个由四个卷积层组成的微型网络 E(·),具有 4 × 4 内核和 2 × 2 步长(由 ReLU 激活,分别使用 16、32、64、128 个通道,用高斯权重初始化并联合训练与完整模型)将图像空间条件 ci 编码为特征空间条件向量 cf
调节向量 cf 被传递到 ControlNet。
3.3.训练
给定输入图像 z0,图像扩散算法逐渐向图像添加噪声并生成噪声图像 zt,其中 t 表示添加噪声的次数。给定一组条件,包括时间步 t、文本提示 ct 以及特定于任务的条件 cf,图像扩散算法学习网络 εθ 来预测添加到噪声图像 zt 的噪声
其中L是整个扩散模型的总体学习目标。该学习目标直接用于通过 ControlNet 微调扩散模型。在训练过程中,我们随机将50%的文本提示ct替换为空字符串。这种方法提高了 ControlNet 直接识别输入调节图像中的语义(例如边缘、姿势、深度等)的能力,以替代提示。在训练过程中,由于零卷积不会给网络增加噪声,因此模型应该始终能够预测高质量的图像。我们观察到该模型并不是逐渐学习控制条件,而是突然成功地遵循输入条件图像;通常优化步骤少于 10K。如图4所示,我们称之为“突然收敛现象”。
3.4.推论 我们可以通过多种方式进一步控制 ControlNet 的额外条件如何影响去噪扩散过程。
无分类器引导分辨率加权。
稳定扩散依赖于一种称为无分类器指导 (CFG) [29] 的技术来生成高质量图像。 CFG 的公式为 εprd = εuc + βcfg(εc − εuc),其中 εprd、εuc、εc、βcfg 分别是模型的最终输出、无条件输出、条件输出和用户指定的权重。当通过 ControlNet 添加调节图像时,可以将其添加到 εuc 和 εc,或仅添加到 εc。在具有挑战性的情况下,例如,当没有给出提示时,将其添加到 εuc 和 εc 将完全删除 CFG 指导(图 5b);仅使用 εc 将使指导非常强大(图 5c)。我们的解决方案是首先将调节图像添加到 εc 中,然后根据每个块的分辨率 wi = 64/hi 为 Stable Diffusion 和 ControlNet 之间的每个连接乘以一个权重 wi,其中 hi 是第 i 个块的大小,例如 h1 = 8, h2 = 16, ..., h13 = 64。通过降低CFG引导强度,我们可以得到如图5d所示的结果,我们称之为CFG分辨率加权。
组成多个 ControlNet。
要将多个条件图像(例如 Canny 边缘和姿势)应用于稳定扩散的单个实例,我们可以直接将相应 ControlNet 的输出添加到稳定扩散模型中(图 6)。这种组合不需要额外的加权或线性插值。