【AIGC】Controlnet:基于扩散模型的文生图的可控性

这篇具有很好参考价值的文章主要介绍了【AIGC】Controlnet:基于扩散模型的文生图的可控性。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

controlnet可以让stable diffusion的生图变得可控。

【AIGC】Controlnet:基于扩散模型的文生图的可控性,pytorch,深度学习,AIGC,Controlnet

文章连接:https://arxiv.org/pdf/2302.05543.pdf 

摘要

  • 冻结了stable  diffusion的预训练模型并重用它的预训练编码层
  • 神经网络结构与零初始化卷积层连接,从零开始逐渐增加参数,并确保微调过程中不会有噪声影响
  • Controlnet在小数据集(小于5张万图)和大数据集(大于100万张图)上的训练表现都是稳定的

引言

  • 端到端方式学习大型文本到图像扩散模型的条件控制具有挑战性。
  • 带有条件的数据集难找,相比一般大模型数据集要小上很多倍。
  • 有限的数据如果直接微调预训练模型可能会导致过度拟合和灾难性遗忘。

解决方案:限制可训练参数的数量或等级来缓解。

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

我们的实验表明,ControlNet 可以通过各种条件输入来控制 Stable Diffusion,包括 Canny 边缘、Hough 线、用户涂鸦、人类关键点、分割图、形状法线、深度等(图 1)。我们使用单个条件反射图像(带或不带文本提示)测试我们的方法,并演示了我们的方法如何支持多个条件的组合。此外,我们报告说,ControlNet 的训练在不同大小的数据集上是健壮和可扩展的,并且对于某些任务,如深度到图像调节在单个 NVIDIA RTX 3090Ti GPU 上训练 ControlNet 可以取得与在大型计算集群上训练的工业模型相媲美的结果。最后,我们进行消融研究,以调查模型中每个组成部分的贡献,并将我们的模型与几个强大的条件图像生成基线与用户研究进行比较。

相关工作

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

灾难性遗忘的原因:灾难性遗忘的根源在于神经网络的训练过程。神经网络在学习过程中采用梯度下降法,试图最小化当前任务的损失函数。然而,这种优化行为可能会破坏存储在网络权重中的原有知识。当网络学习新任务时,它需要改变自己的权重来适应新的数据,这可能会导致旧的知识被覆盖。

解决灾难性遗忘的策略

多经验回放(Experience Replay)策略通过保留旧任务的一部分数据,并在训练新任务时一同训种策略来解决灾难性遗忘问题。

弹性权重共享(Elastic Weight Consolidation, EWC),通过对网络权重施加额外的约束,使其在新旧任务之间找到一个平衡点,防止新任务过度改变旧任务的权重。

HyperNetwork旨在训练一个小型递归神经网络来影响一个大型神经网络的权重。已经被广泛用于生成对抗网络1、2。Heathen等[26]和Kurumuz[43]实现了HyperNetworks for Stable Diffusion [72]来改变其输出图像的艺术风格。

 Adapter在计算机视觉中,适配器用于增量学习[74]和领域适应[70]。这种技术通常与CLIP[66]一起使用,用于将预训练的骨干模型转移到不同的任务[23,66,85,94]。最近,适配器在视觉变压器[49,50]和ViT-Adapter[14]中取得了成功。在与我们同时进行的研究中,T2IAdapter [56] 使稳定扩散适应外部条件。

Additive Learning冻结原始模型权重并使用学习到的权重掩码 [51 , 74 ]、修剪 [52] 或硬注意力 [80] 添加少量新参数来规避遗忘。Side-Tuning [92 ] 使用侧分支模型通过线性混合冻结模型和添加网络的输出,以及预定义的混合权重表来学习额外的功能。

LORA通过学习低秩矩阵的参数偏移来防止灾难性的遗忘 [ 31 ],基于对许多过度参数化模型的观察,该模型位于低本征维子空间[2,47]。

Zero-Initialized Layers,Nichol等[59]讨论了如何在扩散模型中缩放卷积层的初始权重以改善训练,他们实现的“零模块”是将权重缩放到零的极端情况。Stability的模型卡[83]也提到了在神经层中使用零权重。ProGAN [36]、StyleGAN [37] 和 Noise2Noise [46] 中也讨论了如何操纵初始卷积权重。

【AIGC】Controlnet:基于扩散模型的文生图的可控性,pytorch,深度学习,AIGC,Controlnet

  1. 原始操作: 神经块将特征图 x 作为输入,并输出另一个特征图 y。
  2. controlnet操作:为了将 ControlNet 添加到这样的块中,我们锁定原始块并创建一个可训练的副本,并使用零卷积层将它们连接在一起,即 1 × 1 卷积,权重和偏差都初始化为零。这里 c 是我们希望添加到网络中的条件向量。

Taming Transformer [19]是一种视觉transformer方法

StyleGANs可以通过额外的编码器控制[71],[3,22,38,39,55,60,65,71]中研究了更多应用。

方法论

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

【AIGC】Controlnet:基于扩散模型的文生图的可控性,pytorch,深度学习,AIGC,Controlnet

Stable Diffusion 的 U-net 架构与编码器模块和中间模块上的 ControlNet 连接。锁定的灰色块显示了 Stable Diffusion V1.5(或 V2.1,因为它们使用相同的 U-net 架构)的结构。添加了可训练的蓝色块和白色零卷积层以构建 ControlNet。 

在我们的设置中,x 和 y 通常是 2D 特征图,即 x ∈ R,其中 {h, w, c} 分别作为图中的高度、宽度和通道数。为了将ControlNet添加到这样一个预先训练的神经块中,我们锁定(冻结)原始块的参数Θ同时将该块克隆到具有参数Θ的可训练副本可训练副本采用外部条件向量 c 作为输入。当这种结构应用于像 Stable Diffusion 这样的大型模型时,锁定的参数会保留使用数十亿张图像训练的生产就绪模型,而可训练的副本会重用这种大规模预训练模型来建立一个深度、鲁棒和强大的骨干,以处理不同的输入条件。

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

Controlnet的计算公式

【AIGC】Controlnet:基于扩散模型的文生图的可控性,pytorch,深度学习,AIGC,Controlnet

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

这样做法的好处

  • 零卷积通过消除初始训练步骤中的随机噪声作为梯度来保护该主干。
  1. 当训练开始时,有害噪声不会影响可训练副本中神经网络层的隐藏状态。
  2. 由于 Z(c; Θ) = 0,并且可训练副本也接收输入图像 x,因此可训练副本功能齐全,并保留了大型预训练模型的功能,使其能够作为进一步学习的强大骨干。

Controlnet结构解析

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

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

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

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

将条件向量传递到 ControlNet 中。

训练

 给定输入图像,图像扩散算法逐渐往图像里添加噪声,并产生一个噪声图像,t表示添加噪声的步数。给定一组条件包括时间步t、文本提示词、还有指定任务条件(就是边缘、深度等条件控制),图像扩散算法通过网络来预测添加到噪声图片中的噪声。

 L是训练完整的扩散模型的目标函数。这个训练目标直接用来微调带有Controlnet的扩散模型。

 训练技巧

 训练过程中,使用空字符串随即替换掉50%的文本提示词。这种方法增强了 ControlNet 直接识别输入条件图像中的语义(例如,边缘、姿势、深度等)的能力,以替代提示词。

训练的现象

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

【AIGC】Controlnet:基于扩散模型的文生图的可控性,pytorch,深度学习,AIGC,Controlnet

 在6133步的时候,突然学习到了这个输入的额外控制条件。

推理 

 CFG-RW

Stable Diffusion依赖CFG技术来生成高质量图像。CFG 的公式为【AIGC】Controlnet:基于扩散模型的文生图的可控性,pytorch,深度学习,AIGC,Controlnet,其中 分别是模型的最终输出无条件输出条件输出用户指定的权重。当通过 ControlNet 添加调节图像时,可以将其添加到 和 ,也可以仅添加到。在具有挑战性的情况下,例如,当没有给出提示时,将其添加到和,将完全删除CFG指导(图b);仅使用将使引导非常强(图c)。我们的解决方案是首先将条件反射图像添加到 ,然后根据每个块的分辨率 w= 64/h 将权重 w乘以 Stable Diffusion 和 ControlNet 之间的每个连接,其中 iblock 的大小,例如 h= 8, h= 16, ..., h= 64。通过降低 CFG 指导强度,我们可以获得图d 所示的结果,我们称之为 CFG 分辨率加权。

【AIGC】Controlnet:基于扩散模型的文生图的可控性,pytorch,深度学习,AIGC,Controlnet

 多个Controlnet组合

将图像(例如,Canny 边缘和姿态)分配到 Stable Diffusion 的单个实例中,我们可以直接将相应 ControlNet 的输出添加到 Stable Diffusion 模型中(图 6)。这种组合不需要额外的加权或线性插值。

【AIGC】Controlnet:基于扩散模型的文生图的可控性,pytorch,深度学习,AIGC,Controlnet

上图通过姿态和深度进行组合条件输入生成图像。

 实验

量化结果

【AIGC】Controlnet:基于扩散模型的文生图的可控性,pytorch,深度学习,AIGC,Controlnet

消融实验 

此处省略,有兴趣自行查阅 

量化评估

与工业SDV2 Depth-to-Image模型对比,使用NVIDIA A100 集群、数千个 GPU 小时和超过 12M 的训练图像。我们使用 SD V2 的深度调节训练 ControlNet,但仅使用 200k 训练样本、一个 NVIDIA RTX 3090Ti 和 5 天的训练。我们使用每个 SDv2-D2I 和 ControlNet 生成的 100 张图像来教 12 个用户区分这两种方法。之后,我们生成 200 张图像,并要求用户说出每个图像是哪个模型生成的。用户的平均精度为0.52±0.17,表明两种方法产生的结果几乎无法区分。

讨论

训练数据集大小的影响

训练数据集即使只有1k,训练也不会坍塌,数据集的大小当然是越大越好,有助于泛化性的学习。

理解内容的能力

【AIGC】Controlnet:基于扩散模型的文生图的可控性,pytorch,深度学习,AIGC,Controlnet

兼容社区模型 

由于Controlnets并没有改变预训练SD模型的拓扑结构,是可以与社区的SD模型兼容的。

【AIGC】Controlnet:基于扩散模型的文生图的可控性,pytorch,深度学习,AIGC,Controlnet

 结论

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

参考链接:

https://arxiv.org/pdf/2302.05543.pdf

GitHub - lllyasviel/ControlNet: Let us control diffusion models! 文章来源地址https://www.toymoban.com/news/detail-811911.html

到了这里,关于【AIGC】Controlnet:基于扩散模型的文生图的可控性的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [论文精读] 使用扩散模型生成真实感视频 - 【李飞飞团队新作,文生视频 新基准】

    论文导读: 论文背景:2023年12月11日,AI科学家李飞飞团队与谷歌合作,推出了视频生成模型W.A.L.T(Window Attention Latent Transformer)——一个在共享潜在空间中训练图像和视频生成的、基于Transformer架构的扩散模型。李飞飞是华裔女科学家、世界顶尖的AI专家,现为美国国家工程院

    2024年02月03日
    浏览(42)
  • 【AIGC】2、扩散模型 | 到底什么是扩散模型?

    参考论文:A Survey on Generative Diffusion Model github:https://github.com/chq1155/A-Survey-on-Generative-Diffusion-Model 1.1 现有生成模型简介 已经有大量的方法证明深度生成模型能够模拟人类的想象思维,生成人类难以分辨真伪的内容,主要方法如下: 1、GAN:用神经网络训练生成器和判别器 G

    2024年02月10日
    浏览(97)
  • AIGC:文生图模型Stable Diffusion

    Stable Diffusion 是由CompVis、Stability AI和LAION共同开发的一个文本转图像模型,它通过LAION-5B子集大量的 512x512 图文模型进行训练,我们只要简单的输入一段文本,Stable Diffusion 就可以迅速将其转换为图像,同样我们也可以置入图片或视频,配合文本对其进行处理。 Stable Diffusion的

    2024年02月15日
    浏览(35)
  • AIGC原理:扩散模型diffusion综述一:面向视觉计算的扩散模型研究进展

    论文地址:State of the Art on Diffusion Models for Visual Computing 👉 贴一幅SGM(Score-based Generative Model)的原因是宋飏博士将他2019年提出的SMLD模型和2020年Jonathan Ho提出的DDPM采用SDE进行一统这两大极为相似的生成式模型。殊途同归,基于概率的扩散模型DDPM和基于分数的扩散模型SMLD都是

    2024年02月05日
    浏览(43)
  • Diffusion扩散模型学习2——Stable Diffusion结构解析-以文本生成图像(文生图,txt2img)为例

    用了很久的Stable Diffusion,但从来没有好好解析过它内部的结构,写个博客记录一下,嘿嘿。 https://github.com/bubbliiiing/stable-diffusion 喜欢的可以点个star噢。 Stable Diffusion是比较新的一个扩散模型,翻译过来是稳定扩散,虽然名字叫稳定扩散,但实际上换个seed生成的结果就完全不

    2024年02月15日
    浏览(57)
  • 【扩散模型】【AIGC】DDPM Note

    Abstract 我们使用扩散概率模型给出了高质量的图像合成结果,扩散概率模型是一类受非平衡热力学启发的潜变量模型。我们的最佳结果是根据扩散概率模型和去噪分数匹配与朗之万动力学之间的新联系而设计的加权变分界上的训练,并且我们的模型自然地允许渐进有损解压缩

    2024年02月10日
    浏览(37)
  • AIGC专栏10——EasyAnimate 一个新的类SORA文生视频模型 轻松文生视频

    在过年期间,OpenAI放出了SORA文生视频的预览效果,一瞬间各大媒体争相报道,又引爆了一次科技圈,可惜的是,SORA依然没选择开源。 在这个契机下,本来我也对文生视频的工作非常感兴趣,所以也研究了一些与SORA相关的技术,虽然我们没有像OpenAI那么大的算力,但做一些基

    2024年04月17日
    浏览(33)
  • AIGC入门系列1:感性的认识扩散模型

    大家好,欢迎来到AI手工星的频道,我是专注AI领域的手工星。AIGC已经成为AI又一个非常爆火的领域,并且与之前的AI模型不同,AIGC更适合普通人使用,我们不仅可以与chatgpt对话,也能通过绘画模型生成想要的图片。很多朋友都想去深入的了解和掌握AIGC的原理,但是AIGC需要一

    2024年02月03日
    浏览(48)
  • 【AIGC】手把手使用扩散模型从文本生成图像

    在这篇文章中,我们将手把手展示如何使用Hugging Face的diffusers包通过文本生成图像。 DALLE2是收费的,用户只有一些免费的额度,如果免费额度使用完毕就需要付费了,所以必须寻找替代方案,并发现了Hugging Face,他们发布了一个扩散模型的包diffusers ,可以让我们直接使用。

    2024年02月09日
    浏览(49)
  • 【AIGC】DreamBooth:微调文本到图像扩散模型用于主题驱动的生成

    DreamBooth可以让我们使用一个很小的数据集微调文生图模型,然后基于文本提示词为我们训练的的主体替换不同的场景。  大型文本转图像模型在人工智能的发展中实现了显著的飞跃,能够从给定的文本提示中高质量和多样化地合成图像。然而,这些模型缺乏模仿给定参考集中

    2024年01月18日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包