AIGC系列之:ControlNet原理及论文解读
《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.结论
1.配景介绍
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 通过锁定大型预练习模子的参数并复制其编码层,保留了该大型模子的质量和能力。这种架构将大型预练习模子视为学习各种条件控制的强盛主干网络。可练习的副本和原始锁定的模子通过零卷积层连接,权重初始化为零,以便在练习过程中逐渐增长。这种架构确保在练习开始时不会向大型扩散模子的深层特征添加有害噪声,并保护可练习副本中的大型预练习主干网络免受此类噪声的破坏。
https://i-blog.csdnimg.cn/blog_migrate/9473c1606fa2207439765760d04a2a67.png
图1 sd结合controlnet进行生成
2.原理详解
https://i-blog.csdnimg.cn/blog_migrate/9a77fbad176c90b9c51865e530b10bce.png
图2:神经块以特征映射x作为输入,输出另一个特征映射y,如(a)所示。为了将ControlNet添加到block,通过锁定neural network block并创建一个可练习的副本,使用zero convolution将它们连接在一起,如(b)所示。
2.1 Controlnet
ControlNet向神经网络块注入了额外的条件(如图2)。假设F(·;Θ)是这样的练习好的神经块,参数为Θ,它将输入特征图x转换为另一个特征图y。为了将ControlNet添加到预练习的神经块中,需锁定原始块的参数Θ,同时将块克隆到可练习的副本中,该副本具有参数Θ_c(如图2b)。可练习的副本继承外部条件向量c作为输入。当将这种布局应用于像Stable Diffusion这样的大型模子时,锁定参数可以保留使用数十亿张图像练习的生产停当模子,而可练习的副本可以重用这种大规模预练习模子,以创建一个深、妥当且强盛的主干网络来处置惩罚各种输入条件。
可练习的副本通过零卷积层Z(·;·)连接到锁定模子。具体而言,Z(·;·)是一个初始化为零的权重和偏差的1×1卷积层。为了构建ControlNet,使用两个零卷积的实例,参数分别为Θz1和Θz2。完备的ControlNet计算如下所示:
https://i-blog.csdnimg.cn/blog_migrate/272915776405cda88fe581c5640cafb2.png
yc是ControlNet块输出。在第一个练习步骤中,由于零卷积层的权重和偏差参数都初始化为零,方程(2)中的两个Z(·;·)项都计算为零。这样在练习开始时,有害噪声不会影响可练习副本中神经网络层的隐藏状态。此外,由于Z(c;Θz1)=0,并且可练习副本也接收输入图像x,因此可练习副本完全有用,并保留大型预练习模子的功能,使其可以大概作为强盛的主干网络用于进一步学习。零卷积通过消除初始练习步骤中的随机噪声来保护这个主干网络。
2.2 用于Stable Diffusion的ControlNet
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文本编码器进行编码,扩散时间步使用带有位置编码的时间编码器进行编码。
https://i-blog.csdnimg.cn/blog_migrate/2ff5a5054cdb8ee807aff798af032e77.png
图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中。
https://i-blog.csdnimg.cn/blog_migrate/2673c0f9cdc2fcf41dd8925e3720ee10.png
2.3 练习
给定一个输入图像z0,图像扩散算法会逐步向图像添加噪声,并生成一个噪声图像zt,此中t表示添加噪声的次数。给定一组条件,包括时间步t、文本提示ct以及特定于任务的条件cf,图像扩散算法会学习一个网络εθ来预测添加到噪声图像zt上的噪声。
https://i-blog.csdnimg.cn/blog_migrate/f7106ecf3d45e3c197db20bf068c1419.png
在练习过程中随机用空字符串替换50%的文本提示ct。这种方法提高了ControlNet直接从输入条件图像中辨认语义(例如边缘、姿态、深度等)的能力,作为提示的替代。在练习过程中,由于零卷积不会给网络添加噪声,模子应该始终可以大概预测高质量的图像。模子并没有逐渐学习控制条件,而是在优化步骤少于10K时突然成功地遵循输入条件图像。如图4所示,这种征象被称为“突然收敛征象”。
https://i-blog.csdnimg.cn/blog_migrate/229f95c25d6a4c0eab1db8bac6d9112e.png
图4 突然收敛征象:由于零卷积,ControlNet总是可以预测整个练习过程高质量图像。在某一阶段练习过程(例如,用粗体标出的6133个步骤)模子突然学会了跟随输入条件。
2.4 推理
可以进一步控制ControlNet的额外条件以多种方式影响去噪扩散过程。
https://i-blog.csdnimg.cn/blog_migrate/97d89115755e9eb935c5d9ddf14f19fc.png
图5 无分类器制导(CFG)的效果提出CFG分辨率加权法(CFG- rw)。
[*]Classifier-free guidance resolution weighting:无分类器引导分辨率权重。
稳固的扩散取决于一种称为无分类器引导(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分辨率权重。
https://i-blog.csdnimg.cn/blog_migrate/1cbd6864706886651faf62a8c4eaa6a7.png
图6 组合多个ControlNet条件进行生成
[*]组合多个ControlNet。
为了将多个条件图像(例如Canny边缘和姿态)应用于Stable Diffusion的单个实例,可以将相应ControlNet的输出直接添加到Stable Diffusion模子中(图6)。这种组合不需要额外的加权或线性插值。
3.实行效果
使用Stable Diffusion实现ControlNet,以测试各种条件,包括Canny Edge、Depth Map、Normal Map、M-LSD lines、HED soft edge、ADE20K segmentation、Openpose 和用户草图。
3.1 定性效果
体现了几个提示设置中生成的图像。图7体现了在没有提示的情况下,在差异的条件下的各种控制网络对输入条件图像中的内容语义进行鲁棒表明。
https://i-blog.csdnimg.cn/blog_migrate/55a3f9193bcd0faa9f8b5f62ab776256.png
3.2 消融实行
通过以下方式研究ControlNets的替代布局:
(1)将零卷积替换为用高斯权重初始化的标准卷积层
(2)将每个块的练习副本替换为一个单一的卷积层,称为ControlNet-lite。
提出了4种提示设置来测试实际世界用户可能的举动:
(1)无提示;
(2)提示不足,即不完备覆盖条件图像中的对象;
(3)冲突提示,即改变条件图像的语义;
(4)完美提示,即描述须要的内容语义,例如“漂亮的房子”。
图8a体现ControlNet在所有4种设置中都取得了成功。轻量级的ControlNet-lite(图8c)不足以表明条件图像,在提示不足和无提示的情况下失败。当零卷积被替换时,ControlNet的性能降落到与ControlNet-lite雷同,这表明在微调过程中可练习副本的预练习主干被破坏了(图8b)。
https://i-blog.csdnimg.cn/blog_migrate/c33ab90f45c1adc561641468c0be963e.png
图8 在草图条件和差异提示设置下对差异架构进行消融研究。每个设置体现一个随机批次无筛选的6个样本。图像巨细为512 × 512。左边的绿色“conv”块是用高斯权重初始化的标准卷积层。
3.3 和之前效果比力
https://i-blog.csdnimg.cn/blog_migrate/c7f0c9fa6ebdb7d95b857d2f94510d38.png
图9 Comparison to previous methods
图9展示了基线和(Stable Diffusion+ControlNet)之间可视化比力。具体展示了PTIT、Sketch-Guided Diffusion和Taming Transformers的效果。可以看出ControlNet可以妥当地处置惩罚各种条件图像,并产生清晰干净的效果。
3.4 数据集巨细的影响
https://i-blog.csdnimg.cn/blog_migrate/821bb95c4a17b9a7e019cfb3fa597c80.png
图10 差异练习数据集巨细的影响。
图10中展示了ControlNet练习的鲁棒性。当使用1k张图像进行练习时,模子不会崩溃,并且可以大概生成可辨认的狮子。当提供更多数据时,学习是可以扩展的。
https://i-blog.csdnimg.cn/blog_migrate/982be8aaf0f478c04269e4f81b04ca8f.png
图11 内容解读
图11展示了ControlNet对输入条件图像进行语义捕获的能力。如果输入有歧义而且用户不会在提示中提及对象内容,效果看起来像是模子试图表明输入的外形。
、https://i-blog.csdnimg.cn/blog_migrate/e5418ec41ca3748840bcb3acca506fd9.png
图12 将预先练习的控制网转移到社区无需再次练习神经网络的模子
图12体现了将Control- Net应用于社区模子的能力。由于ControlNets不会改变预练习SD模子的神经网络拓扑布局,因此它可以直策应用于稳固扩散社区中的各种模子,例如Comic Diffusion和Protogen 3.4
4.结论
ControlNet是一种神经网络布局,它学习大型预练习的文本到图像扩散模子的带条件控制。它重用源模子的的大规模预练习层来构建一个深度且强盛的编码器,以学习特定条件。原始模子和可练习的副本通过“零卷积”层连接,这些“零卷积”层可以消除练习期间的噪音。大量实行证明,ControlNet可以有用控制带有单个或多个条件以及带/不带提示的Stable Diffusion。在多样化条件数据集上的效果展示出,ControlNet布局可能适用于更广泛的条件,并促进相干应用。
OK,以上就是《Adding Conditional Control to Text-to-Image Diffusion Models》也就是ControlNet原始论文的解读,ControlNet结合Stable Diffusion可以有用提升SD生图的可控性和可玩性,后续也会和大家分析关于ControlNet的应用部分,欢迎大家一起交流!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]