Stable Diffusion — ControlNet 超详细讲解

这篇具有很好参考价值的文章主要介绍了Stable Diffusion — ControlNet 超详细讲解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Stable Diffusion — ControlNet 超详细讲解

ControlNet 最近非常火🔥!ControlNet 和 Stable Diffusion 的结合使 Stable Diffusion 能够接受指导图像生成过程的条件输入,从而增强了 Stable Diffusion 的性能。今天为大家深入剖析 ControlNet 的工作原理。

Stable Diffusion — ControlNet 超详细讲解,stable diffusion,神经网络,深度学习,图像处理,人工智能,机器学习

什么是 ControlNet

ControlNet 是一个控制预训练图像扩散模型(例如 Stable Diffusion)的神经网络。它允许输入调节图像,然后使用该调节图像来操控图像生成。

这里的调节图像类型众多,例如涂鸦、边缘图、姿势关键点、深度图、分割图、法线图等,这些输入都可以作为条件输入来指导生成图像的内容。 下面是一些例子:

Stable Diffusion — ControlNet 超详细讲解,stable diffusion,神经网络,深度学习,图像处理,人工智能,机器学习

图片来源:https://github.com/lllyasviel/ControlNet

内部架构

Stable Diffusion — ControlNet 超详细讲解,stable diffusion,神经网络,深度学习,图像处理,人工智能,机器学习

图1. ControlNet 内部架构

Stable Diffusion (UNet) 中的所有参数都被锁定并克隆到 ControlNet 端的可训练副本中。然后使用外部条件向量训练该副本。

创建原始权重的副本而不是直接训练原始权重是为了防止数据集较小时出现过拟合,并保持已经训练好的大模型的高质量,这些大模型在数十亿图像上训练得到,并可以直接部署到生产环境使用。

前馈

Stable Diffusion — ControlNet 超详细讲解,stable diffusion,神经网络,深度学习,图像处理,人工智能,机器学习

图2. ControlNet 前馈部分

解释一下上图公式和符号:

  • x , y x, y x,y:神经网络中的深层特征
  • c c c:额外条件
  • + + + : 特征相加
  • Z ( ⋅    ;    ⋅ ) \mathcal{Z}(\cdot\;;\;\cdot) Z(;):零卷积运算(权重和偏差都用零初始化的 1 x 1 卷积层)
  • F ( ⋅    ;    ⋅ ) \mathcal{F}(\cdot\;;\;\cdot) F(;):神经网络块操作(例如 “resnet” 块、“conv-bn-relu” 块等)
  • Θ z 1 \Theta_{z1} Θz1:第一个零卷积层的参数
  • Θ z 2 \Theta_{z2} Θz2:第二个零卷积层的参数
  • Θ c \Theta_c Θc:可训练副本的参数

第一步训练

Stable Diffusion — ControlNet 超详细讲解,stable diffusion,神经网络,深度学习,图像处理,人工智能,机器学习

图3. ControlNet 的第一步训练

在第一步训练中,由于零卷积层的权重和偏差被初始化为零,因此前馈过程与没有 ControlNet 的过程相同。

经过反向传播后,ControlNet 中的零卷积层变为非零并影响输出。

换句话说,当 ControlNet 应用于某些神经网络块时,在进行任何优化之前,不会对深度神经特征造成任何影响。

反向传播

Stable Diffusion — ControlNet 超详细讲解,stable diffusion,神经网络,深度学习,图像处理,人工智能,机器学习

图4. ControlNet 反向传播部分

反向传播更新 ControlNet 中的可训练副本和零卷积层,使零卷积权重通过学习过程逐渐过渡到优化值。

为什么梯度不会为零?

我们可以假设如果卷积层的权重为零,则梯度为零。 然而,事实并非如此。

假设 y = w x + b y = wx + b y=wx+b 是零卷积层,其中 w w w b b b 分别是权重和偏差, x x x 是输入特征图。以下是每一项的梯度。
y = w x + b ∂ y ∂ w = x ∂ y ∂ x = w ∂ y ∂ b = 1 y = wx+b\\ \frac{\partial y}{\partial w} = x \qquad \frac{\partial y}{\partial x} = w \qquad \frac{\partial y}{\partial b} = 1 y=wx+bwy=xxy=wby=1
如果 w = 0 w=0 w=0 x ≠ 0 x \ne 0 x=0,则
∂ y ∂ w = x ≠ 0 ∂ y ∂ x = w = 0 ∂ y ∂ b = 1 ≠ 0 \frac{\partial y}{\partial w} = x \ne 0 \qquad \frac{\partial y}{\partial x} = w = 0 \qquad \frac{\partial y}{\partial b} = 1 \ne 0 wy=x=0xy=w=0by=1=0
回想一下梯度下降和链式法则:
w ← w − α ∂ L ∂ w w ← w − α ∂ L ∂ ⋅ … ∂ L ∂ w ⏟ ≠ 0 w \larr w-\alpha\frac{\partial \mathcal{L}}{\partial w}\\ w \larr w-\alpha\frac{\partial \mathcal{L}}{\partial \cdot}\dots\frac{\partial \mathcal{L}}{\underbrace{\partial w}_{\ne 0}} wwαwLwwαL=0 wL
一步训练之后, ∂ y ∂ x ≠ 0 \frac{\partial y}{\partial x} \ne 0 xy=0

一开始,当权重值 w = 0 w = 0 w=0 时,输入特征 x x x 通常不为0。结果,虽然 x x x 上的梯度由于零卷积而变为0,但权重和偏置的梯度不受影响。尽管如此,在一个梯度下降步骤之后,权重值 w w w 将更新为非零值(因为 y y y w w w 的偏导数非零)。

与 Stable Diffusion 相结合

编码器

由于 Stable Diffusion 的 UNet 接受潜在特征 ( 64 × 64 64 \times 64 64×64) 而不是原始图像,因此我们还必须将基于图像的条件转换为 64 × 64 64 \times 64 64×64 的特征空间以匹配卷积大小。
c f = ε ( c i ) c_f = \varepsilon(c_i) cf=ε(ci)
我们可以使用网络 ε \varepsilon ε 将输入条件 c i c_i ci 编码为特征图 c f c_f cf

Stable Diffusion — ControlNet 超详细讲解,stable diffusion,神经网络,深度学习,图像处理,人工智能,机器学习

图5. ControlNet 编码器

上图中,我们使用 z t z_t zt z t − 1 z_{t-1} zt1 作为锁定网络块的输入和输出,以匹配 Stable Diffusion 上下文中的符号。

整体架构

下图展示了 Stable Diffusion 中 ControlNet 和 UNet 在一个去噪步骤中的输入和输出。

Stable Diffusion — ControlNet 超详细讲解,stable diffusion,神经网络,深度学习,图像处理,人工智能,机器学习

图6. 一步去噪流程

此外,下图从整体上说明了 ControlNet 和 Stable Diffusion 如何在反向扩散过程(采样)中协同工作。

Stable Diffusion — ControlNet 超详细讲解,stable diffusion,神经网络,深度学习,图像处理,人工智能,机器学习

图7. 整体反向扩散的流程

上图是根据我之前关于 Stable Diffusion 的文章修改的。如果您还没有阅读过,建议您阅读 《Stable Diffusion 超详细讲解》 和 《Diffusion Model 深入剖析》。

训练

ControlNet 损失函数与 Stable Diffusion 的损失函数类似,但包含文本条件 c t c_t ct 和潜在条件 c f c_f cf,以提高输出与指定条件的一致性。

Stable Diffusion 损失函数:
L = E z 0 , t , ϵ [ ∥ ϵ − ϵ θ ( z t , t ) ∥ 2 ] \mathcal{L} = \mathbb{E}_{z_0,t,\epsilon}\big[\Vert \epsilon - \epsilon_\theta(z_t,t)\Vert^2\big] L=Ez0,t,ϵ[ϵϵθ(zt,t)2]
Stable Diffusion + ControlNet 损失函数:
L = E z 0 , t , ϵ , c t , c f [ ∥ ϵ − ϵ θ ( z t , t , c t , c f ) ∥ 2 ] \mathcal{L} = \mathbb{E}_{z_0,t,\epsilon,\boxed{c_t,c_f}}\big[\Vert \epsilon - \epsilon_\theta(z_t,t,\boxed{c_t,c_f})\Vert^2\big] L=Ez0,t,ϵ,ct,cf[ϵϵθ(zt,t,ct,cf)2]
作为训练过程的一部分,我们随机用空字符串替换 50% 的文本提示 c t c_t ct。这有助于 ControlNet 更好地理解输入条件图的含义,例如 Canny 边缘图或人类涂鸦。

Stable Diffusion — ControlNet 超详细讲解,stable diffusion,神经网络,深度学习,图像处理,人工智能,机器学习

图8. 训练 ControlNet

通过删除提示,编码器被迫更多地依赖控制图中的信息,这提高了其理解其语义内容的能力。

输入条件

ControlNet 是一种灵活的工具,允许您使用不同类型的条件输入来加强 Stable Diffusion。以下是可在 ControlNet 中使用的输入类型。

Canny 边缘图

线条图

Stable Diffusion — ControlNet 超详细讲解,stable diffusion,神经网络,深度学习,图像处理,人工智能,机器学习

涂鸦

Stable Diffusion — ControlNet 超详细讲解,stable diffusion,神经网络,深度学习,图像处理,人工智能,机器学习

霍夫线

Stable Diffusion — ControlNet 超详细讲解,stable diffusion,神经网络,深度学习,图像处理,人工智能,机器学习

语义分割

Stable Diffusion — ControlNet 超详细讲解,stable diffusion,神经网络,深度学习,图像处理,人工智能,机器学习

深度图

Stable Diffusion — ControlNet 超详细讲解,stable diffusion,神经网络,深度学习,图像处理,人工智能,机器学习

法线图

Stable Diffusion — ControlNet 超详细讲解,stable diffusion,神经网络,深度学习,图像处理,人工智能,机器学习

姿势

Stable Diffusion — ControlNet 超详细讲解,stable diffusion,神经网络,深度学习,图像处理,人工智能,机器学习

总结

ControlNet 是一种神经网络,可以与预训练的扩散模型结合使用,特别是 Stable Diffusion 模型。

ControlNet 允许将条件输入(例如边缘图、分割图和关键点)包含到 Stable Diffusion 等大型扩散模型中。

结合 ControlNet 可以更好地控制图像生成过程,从而能够生成更具体、更符合要求的图像。文章来源地址https://www.toymoban.com/news/detail-699413.html

到了这里,关于Stable Diffusion — ControlNet 超详细讲解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【AI绘画】万字长文——(超详细)ControlNet的详细介绍&使用Stable Diffusion的艺术二维码完全生成攻略

    详细介绍ControlNet的各个部分,相关案例,以及使用二维码作为ControlNet模型的输入的Stable Diffusion生成的图像,使二维码转变为艺术图像 Stable Diffusion :是StabilityAI于2022年8月22日发布的文本到图像模型。它类似于OpenAI的DALL·E 2和Midjourney等其他图像生成模型,但有一个很大的不同

    2024年02月05日
    浏览(49)
  • Stable Diffusion stable-diffusion-webui ControlNet Lora

    Stable Diffusion用来文字生成图片,ControlNet就是用来控制构图的,LoRA就是用来控制风格的 。 国内加速官网: mirrors / AUTOMATIC1111 / stable-diffusion-webui · GitCode 安装参考: Stable Diffusion安装与常见错误(+Lora使用)2023年最新安装教程_cycyc123的博客-CSDN博客 保姆级教程:从0到1搭建St

    2024年02月09日
    浏览(78)
  • Stable Diffusion中的ControlNet插件

    ControlNet 的中文就是控制网,本质上是Stable Diffusion的一个扩展插件,在2023年2月份由斯坦福大学的研究人员开发出来的,能够使创作者轻松地控制AI图像和视频中的对象。它将根据边缘检测、草图处理或人体姿势等各种条件来控制图像生成。ControlNet可以概括为一种简单的稳定

    2024年02月09日
    浏览(51)
  • Stable Diffusion使用controlnet报错

    1、问题描述,使用controlnet时报错如下 error running process: G:\\0111stable-diffusion-webuiextensionssd-webui-controlnetscriptscontrolnet.py Traceback (most recent call last):   File \\\"G:\\0111stable-diffusion-webuimodulesscripts.py\\\", line 418, in process     script.process(p, *script_args)   File \\\"G:\\0111stable-diffusion-webuiextensi

    2024年02月09日
    浏览(51)
  • Stable Diffusion系列课程二:ControlNet

    AUTOMATIC1111/stable-diffusion-webui 参考B站Nenly视频《零基础学会Stable Diffusion》、视频课件 推荐网站:stable-diffusion-art、Civitai(魔法) 、libilibi、AI艺术天堂 推荐Stable Diffusion整合资料: NovelAI资源整合、《AI绘图指南wiki》、AiDraw绘画手册 重 绘学派法术绪论1.2、 Stable Diffusion 潜工具

    2024年02月14日
    浏览(68)
  • 【Stable Diffusion】ControlNet基本教程(三)

    接上篇【Stable Diffusion】ControlNet基本教程(二),本篇再介绍两个ControlNet常见的基本用法,更多用法欢迎关注博主,博主还会更新更多有趣的内容。 3.3更换物体皮肤 有时,我们不想改变物体的轮廓,只想改变物体表面的皮肤,例如,同一种鞋型,我们让它生成不同的鞋子表

    2024年02月09日
    浏览(37)
  • 【Stable Diffusion】ControlNet基本教程(四)

    接上篇【Stable Diffusion】ControlNet基本教程(三),本篇再介绍两个ControlNet常见的基本用法:控制人物动作和建筑/室内生成。让人物摆出特定的动作,这是ControlNet最神级的操作!这意味着可以自定义姿势,这意味着AI绘图正式进入自主可控的世代!而建筑/室内设计生成则给做

    2024年02月11日
    浏览(45)
  • 【Stable Diffusion】ControlNet基本教程(二)

    接上篇【Stable Diffusion】ControlNet基本教程(一),本篇介绍两个ControlNet常见的基本用法,更多用法欢迎关注博主,博主还会更新更多有趣的内容。 3.ControlNet基本用法 3.1漫画线稿上色 (1)上传需要处理的图像(Drop Image Here or Click to Upload) (2)启用ControlNet,在“预处理(P

    2024年02月10日
    浏览(46)
  • 【Stable Diffusion】ControlNet基本教程(一)

    1.ControlNet是什么 ControlNet是Stable Diffusion用于图像风格迁移和控制的一款插件,作者是2021年才本科毕业,现在在斯坦福大学读博士一年级的中国学生 张吕敏 。ControlNet的出现代表着 AI 生成开始进入 真正可控 的时期,而 AIGC 的可控性 是它进入 实际生产 最关键的一环。在此之前

    2024年02月09日
    浏览(44)
  • 精讲stable diffusion的controlNet插件

    controlNet插件是stable diffusion的一个重要插件,甚至可以说正是因为有了controlNet插件,stable diffusion才会具有midjourney所不具备的独特魅力! 我们今天就一起来学习下controlNet插件的安装和每个模型的用法 插件主页 独立的controlNet程序(可独立运行,不依赖于stable diffusion)主页:

    2024年02月06日
    浏览(36)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包