《Adding Conditional Control to Text-to-Image Diffusion Models》
目录
1.背景介绍
2.原理详解
2.1 Controlnet
2.2 用于Stable Diffusion的ControlNet
2.3 训练
2.4 推理
3.实验结果
3.1 定性结果
3.2 消融实验
3.3 和之前结果比较
3.4 数据集大小的影响
4.结论
Stable Diffusion大模型的开源,使得AI绘画的应用变得空前火热。虽然Stable Diffusion生成的图片质量远超以往的GAN,VAE等,但还达不到精细化可控生成的目的。文本到图像模型在控制图像的空间构图方面是有限的;仅仅通过文本提示很难精确地表达复杂的布局、姿势、形状和形式。ControlNet在Stable Diffusion的基础上加入了更多可控生成方式,在AI绘图大规模商用上成为可能。此外,ControlNet和SAM同时获得了ICCV2023的最佳论文。让我们一起来看一看它的魔力~
下面是ControlNet相关的一些资料,本文参考了几位博主的文章,已经在下面提供了链接。
论文链接:https://arxiv.org/pdf/2302.05543.pdf
代码地址:GitHub - lllyasviel/ControlNet: Let us control diffusion models!
GitHub - Mikubill/sd-webui-controlnet: WebUI extension for ControlNet
论文解读:https://zhuanlan.zhihu.com/p/664595339
ControlNet 是一种神经网络架构,旨在将空间条件控制添加到大型预训练的文本到图像扩散模型中。 ControlNet 将锁定生产就绪的大型扩散模型,并重用由数十亿图像预先训练的强大主干中的深层和鲁棒编码层,以学习多样化的条件控制集。神经架构通过“零卷积”(零初始化的卷积层)连接,使参数逐渐从零增长,并确保不会有有害噪声影响微调过程。使用Stable Diffusion测试各种条件控制例如边缘、深度、分割、人体姿态等,具有单个或多个条件,带有或不带有提示。 表明 ControlNet 的训练过程对于小型(<50k)和大型(>1m)数据集都具有很强的鲁棒性。大量的实验结果表明,ControlNet 有助于更广泛的应用于控制图像扩散模型。
通过让用户提供额外的图像来直接指定所需图像的组成,实现更精细的空间控制呢。这些额外的图像(例如边缘图、人体姿态骨架、分割图、深度、法线等)通常被视为对图像生成过程的条件约束。特定条件下的训练数据量显著小于可用于一般文本到图像训练的数据量。直接微调或继续训练具有有限数据的大型预训练模型可能会导致过拟合和灾难性遗忘。因此,通过限制可训练参数的数量或等级,可以缓解这种遗忘。
ControlNet 通过锁定大型预训练模型的参数并复制其编码层,保留了该大型模型的质量和能力。这种架构将大型预训练模型视为学习各种条件控制的强大主干网络。可训练的副本和原始锁定的模型通过零卷积层连接,权重初始化为零,以便在训练过程中逐渐增长。这种架构确保在训练开始时不会向大型扩散模型的深层特征添加有害噪声,并保护可训练副本中的大型预训练主干网络免受此类噪声的破坏。
ControlNet 是一种神经网络架构,旨在将空间条件控制添加到大型预训练的文本到图像扩散模型中。 ControlNet 将锁定生产就绪的大型扩散模型,并重用由数十亿图像预先训练的强大主干中的深层和鲁棒编码层,以学习多样化的条件控制集。神经架构通过“零卷积”(零初始化的卷积层)连接,使参数逐渐从零增长,并确保不会有有害噪声影响微调过程。使用Stable Diffusion测试各种条件控制例如边缘、深度、分割、人体姿态等,具有单个或多个条件,带有或不带有提示。 表明 ControlNet 的训练过程对于小型(<50k)和大型(>1m)数据集都具有很强的鲁棒性。大量的实验结果表明,ControlNet 有助于更广泛的应用于控制图像扩散模型。
通过让用户提供额外的图像来直接指定所需图像的组成,实现更精细的空间控制呢。这些额外的图像(例如边缘图、人体姿态骨架、分割图、深度、法线等)通常被视为对图像生成过程的条件约束。特定条件下的训练数据量显著小于可用于一般文本到图像训练的数据量。直接微调或继续训练具有有限数据的大型预训练模型可能会导致过拟合和灾难性遗忘。因此,通过限制可训练参数的数量或等级,可以缓解这种遗忘。
ControlNet 通过锁定大型预训练模型的参数并复制其编码层,保留了该大型模型的质量和能力。这种架构将大型预训练模型视为学习各种条件控制的强大主干网络。可训练的副本和原始锁定的模型通过零卷积层连接,权重初始化为零,以便在训练过程中逐渐增长。这种架构确保在训练开始时不会向大型扩散模型的深层特征添加有害噪声,并保护可训练副本中的大型预训练主干网络免受此类噪声的破坏。
图1 sd结合controlnet进行生成
图2:神经块以特征映射x作为输入,输出另一个特征映射y,如(a)所示。为了将ControlNet添加到block,通过锁定neural network block并创建一个可训练的副本,使用zero convolution将它们连接在一起,如(b)所示。
ControlNet向神经网络块注入了额外的条件(如图2)。假设F(·;Θ)是这样的训练好的神经块,参数为Θ,它将输入特征图x转换为另一个特征图y。为了将ControlNet添加到预训练的神经块中,需锁定原始块的参数Θ,同时将块克隆到可训练的副本中,该副本具有参数Θ_c(如图2b)。可训练的副本接受外部条件向量c作为输入。当将这种结构应用于像Stable Diffusion这样的大型模型时,锁定参数可以保留使用数十亿张图像训练的生产就绪模型,而可训练的副本可以重用这种大规模预训练模型,以建立一个深、稳健且强大的主干网络来处理各种输入条件。
可训练的副本通过零卷积层Z(·;·)连接到锁定模型。具体而言,Z(·;·)是一个初始化为零的权重和偏差的1×1卷积层。为了构建ControlNet,使用两个零卷积的实例,参数分别为Θz1和Θz2。完整的ControlNet计算如下所示:
yc是ControlNet块输出。在第一个训练步骤中,由于零卷积层的权重和偏差参数都初始化为零,方程(2)中的两个Z(·;·)项都计算为零。这样在训练开始时,有害噪声不会影响可训练副本中神经网络层的隐藏状态。此外,由于Z(c;Θz1)=0,并且可训练副本也接收输入图像x,因此可训练副本完全有效,并保留大型预训练模型的功能,使其能够作为强大的主干网络用于进一步学习。零卷积通过消除初始训练步骤中的随机噪声来保护这个主干网络。
Stable Diffusion本质上是一个U-Net,包含编码器、中间块和跳跃连接解码器。编码器和解码器都包含12个块,而整个模型包含25个块,包括中间块。在这25个块中,8个块是下采样或上采样卷积层,而其他17个块是主块,每个主块包含4个ResNet层和2个Vision Transformer(ViT)。每个ViT包含几个交叉注意力和自注意力机制。如图3a中,“SD Encoder Block A”包含4个ResNet层和2个ViT,“×3”表示该块重复三次。文本提示使用CLIP文本编码器进行编码,扩散时间步使用带有位置编码的时间编码器进行编码。
图3 Stable Diffusion的U-net架构连接,在编码器块和中间块上有一个ControlNet。锁定的灰色块显示了Stable Diffusion V1.5的结构。可训练的蓝色块和白色的零卷积层被添加来构建一个ControlNet。
将ControlNet结构应用于U-net的每个编码器级别(图3b)。使用ControlNet创建Stable Diffusion的12个编码块和1个中间块的训练副本。12个编码块分布在4个分辨率(64 × 64,32 × 32,16 × 16,8 × 8)中,每个分辨率复制3次。输出被添加到U-net的12个跳连接和1个中间块中。由于Stable Diffusion是典型的U-net结构,这种ControlNet架构可能适用于其他模型。
连接ControlNet的方式在计算上是高效的-由于锁定副本的参数被冻结,在微调过程中,原始锁定编码器不需要进行梯度计算。这种方法加快了训练速度并节省GPU内存。
图像扩散模型学习逐步去噪图像并从训练域生成样本。去噪过程可以在像素空间或从训练数据编码的潜在空间中进行。Stable Diffusion使用潜在图像作为训练域。Stable Diffusion将512 × 512像素空间的图像转换为较小的64 × 64潜在图像。要将ControlNet添加到Stable Diffusion中,首先将每个输入条件图像(例如边缘、姿势、深度等)从512 × 512的输入大小转换为与Stable Diffusion大小相匹配的64 × 64特征空间向量。
使用一个具有四个卷积层的tiny网络E(·),这些卷积层具有4 × 4内核和2 × 2步长(通过ReLU激活,使用16、32、64、128个通道,分别初始化高斯权重并与其他完整模型联合训练),将图像空间条件-ci编码为特征空间条件向量cf。cf条件向量被传递到ControlNet中。
给定一个输入图像z0,图像扩散算法会逐步向图像添加噪声,并生成一个噪声图像zt,其中t表示添加噪声的次数。给定一组条件,包括时间步t、文本提示ct以及特定于任务的条件cf,图像扩散算法会学习一个网络εθ来预测添加到噪声图像zt上的噪声。
在训练过程中随机用空字符串替换50%的文本提示ct。这种方法提高了ControlNet直接从输入条件图像中识别语义(例如边缘、姿态、深度等)的能力,作为提示的替代。在训练过程中,由于零卷积不会给网络添加噪声,模型应该始终能够预测高质量的图像。模型并没有逐渐学习控制条件,而是在优化步骤少于10K时突然成功地遵循输入条件图像。如图4所示,这种现象被称为“突然收敛现象”。
图4 突然收敛现象:由于零卷积,ControlNet总是可以预测整个训练过程高质量图像。在某一阶段训练过程(例如,用粗体标出的6133个步骤)模型突然学会了跟随输入条件。
可以进一步控制ControlNet的额外条件以多种方式影响去噪扩散过程。
图5 无分类器制导(CFG)的效果提出CFG分辨率加权法(CFG- rw)。
稳定的扩散取决于一种称为无分类器指导(CFG)的技术用于生成高质量图像。CFG表述为 εprd = εuc + βcfg (εc − εuc ),其中 εprd 、εuc 、εc、βcfg 分别是模型的最终输出、无条件输出、条件输出和一个用户指定的权重。当通过ControlNet添加条件图像时,可以将其添加到 εuc 和 εc 中,或者仅添加到 εc 中。在具有挑战性的情况下,例如没有给出提示时,将其同时添加到 εuc 和 εc 中将完全去除CFG指导(图5b);只使用 εc 将使指导变得非常强烈(图5c)。一种解决方案是将条件图像首先添加到 εc 中,然后根据每个块的分辨率,将每个连接在Stable Diffusion和ControlNet之间的权重wi乘以每个连接的权重wi = 64 / hi,其中hi是第i个块的大小,例如h1 = 8, h2 = 16, ..., h13 = 64。通过降低CFG指导强度,我们可以获得图5d所示的结果,其称为CFG分辨率权重。
图6 组合多个ControlNet条件进行生成
为了将多个条件图像(例如Canny边缘和姿态)应用于Stable Diffusion的单个实例,可以将相应ControlNet的输出直接添加到Stable Diffusion模型中(图6)。这种组合不需要额外的加权或线性插值。
使用Stable Diffusion实现ControlNet,以测试各种条件,包括Canny Edge、Depth Map、Normal Map、M-LSD lines、HED soft edge、ADE20K segmentation、Openpose 和用户草图。
显示了几个提示设置中生成的图像。图7显示了在没有提示的情况下,在不同的条件下的各种控制网络对输入条件图像中的内容语义进行鲁棒解释。
通过以下方式研究ControlNets的替代结构:
(1)将零卷积替换为用高斯权重初始化的标准卷积层
(2)将每个块的训练副本替换为一个单一的卷积层,称为ControlNet-lite。
提出了4种提示设置来测试现实世界用户可能的行为:
(1)无提示;
(2)提示不足,即不完整覆盖条件图像中的对象;
(3)冲突提示,即改变条件图像的语义;
(4)完美提示,即描述必要的内容语义,例如“漂亮的房子”。
图8a显示ControlNet在所有4种设置中都取得了成功。轻量级的ControlNet-lite(图8c)不足以解释条件图像,在提示不足和无提示的情况下失败。当零卷积被替换时,ControlNet的性能下降到与ControlNet-lite相同,这表明在微调过程中可训练副本的预训练主干被破坏了(图8b)。
图8 在草图条件和不同提示设置下对不同架构进行消融研究。每个设置显示一个随机批次无筛选的6个样本。图像大小为512 × 512。左边的绿色“conv”块是用高斯权重初始化的标准卷积层。
图9 Comparison to previous methods
图9展示了基线和(Stable Diffusion+ControlNet)之间可视化比较。具体展示了PTIT、Sketch-Guided Diffusion和Taming Transformers的结果。可以看出ControlNet可以稳健地处理各种条件图像,并产生清晰干净的结果。
图10 不同训练数据集大小的影响。
图10中展示了ControlNet训练的鲁棒性。当使用1k张图像进行训练时,模型不会崩溃,并且能够生成可识别的狮子。当提供更多数据时,学习是可以扩展的。
图11 内容解读
图11展示了ControlNet对输入条件图像进行语义捕捉的能力。如果输入有歧义而且用户不会在提示中提及对象内容,结果看起来像是模型试图解释输入的形状。
、
图12 将预先训练的控制网转移到社区无需再次训练神经网络的模型
图12显示了将Control- Net应用于社区模型的能力。由于ControlNets不会改变预训练SD模型的神经网络拓扑结构,因此它可以直接应用于稳定扩散社区中的各种模型,例如Comic Diffusion和Protogen 3.4
ControlNet是一种神经网络结构,它学习大型预训练的文本到图像扩散模型的带条件控制。它重用源模型的的大规模预训练层来构建一个深度且强大的编码器,以学习特定条件。原始模型和可训练的副本通过“零卷积”层连接,这些“零卷积”层可以消除训练期间的噪音。大量实验证明,ControlNet可以有效控制带有单个或多个条件以及带/不带提示的Stable Diffusion。在多样化条件数据集上的结果展示出,ControlNet结构可能适用于更广泛的条件,并促进相关应用。
OK,以上就是《Adding Conditional Control to Text-to-Image Diffusion Models》也就是ControlNet原始论文的解读,ControlNet结合Stable Diffusion可以有效提升SD生图的可控性和可玩性,后续也会和大家分析关于ControlNet的应用部分,欢迎大家一起交流!
上一篇:文心一言4.0、智谱清言、MoonshotAI实测对比(上)
下一篇:2024年Midjourney 付费订阅流程 | Midjourney 各版本介绍,使用虚拟信用卡支付买Midjourney流程指南