Stable Diffusion 超详细讲解

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

Stable Diffusion 超详细讲解

这篇文章是 《Stable Diffusion原理详解》的后续,在《Stable Diffusion原理详解》中我更多的是以全局视角讲解了 Stable Diffusion 的原理和工作流程,并未深入步骤细节。本文将在《Stable Diffusion原理详解》和《Diffusion Model 深入剖析》这两篇文章的基础上,进一步细致地讲解 Stable Diffusion 的算法原理。

Stable Diffusion 超详细讲解

Diffusion Model

Stable Diffusion 脱胎于 Diffusion 模型。因此在搞懂 Stable Diffusion 之前,先搞懂 Diffusion Model 模型非常有必要。这一部分我会带大家大致过一遍 Diffusion Model。如果你想了解 Diffusion Model 的全部细节,可以阅读我之前的文章:《Diffusion Model 深入剖析》。

Diffusion Model 概览

Stable Diffusion 超详细讲解

图1. 扩散模型原理概要

Diffusion Model的训练可以分为两部分:

  1. 正向扩散过程 → 为图像添加噪声。
  2. 反向扩散过程 → 去除图像中的噪声。

正向扩散过程

正向扩散过程将高斯噪声逐步添加到输入图像中。我们使用以下闭合公式(推导过程详见《Diffusion Model 深入剖析》)更快地完成噪声添加,从而直接获得特定时间步长 t t t 的噪声图像:
x t = α t ˉ x 0 + 1 − α ˉ t ε x_t=\sqrt{\bar{\alpha_t}}x_0+\sqrt{1-\bar{\alpha}_t}\varepsilon xt=αtˉ x0+1αˉt ε

逆向扩散过程

由于逆向扩散过程不可直接计算(计算代价太高),我们通过训练神经网络 p θ ( x t − 1 ∣ x t ) p_\theta(x_{t-1}|x_t) pθ(xt1xt) 来近似。

训练目标(损失函数)如下:
L simple = E t , x 0 , ε [ ∣ ∣ ε t − ε θ ( x t , t ) ∣ ∣ 2 ] x t = α t ˉ x 0 + 1 − α ˉ t ε L_{\text{simple}} = \mathbb{E}_{t,x_0,\varepsilon}\Big[||\varepsilon_t-\varepsilon_\theta(x_t,t)||^2\Big]\\ x_t=\sqrt{\bar{\alpha_t}}x_0+\sqrt{1-\bar{\alpha}_t}\varepsilon Lsimple=Et,x0,ε[∣∣εtεθ(xt,t)2]xt=αtˉ x0+1αˉt ε

训练

每一轮训练过程如下:

  • 为每个训练样本(图像)选择一个随机时间步长 t t t
  • 将高斯噪声(对应于 t t t)应用于每个图像。
  • 将时间步长转换为嵌入(向量)。

Stable Diffusion 超详细讲解

图2. 训练数据集

下面详细解释一下训练步骤是如何工作的:

Stable Diffusion 超详细讲解

图3. 训练步骤图解

采样

采样意味着从高斯噪声图中绘制出图像。下图展示了我们如何使用经过训练的 U-Net 生成图像:

Stable Diffusion 超详细讲解

图4. 采样过程图解

扩散速度问题

如你所见,扩散(采样)过程迭代地将全尺寸图像提供给 U-Net 来获得最终结果。当总扩散步数 T T T 和图像很大时,这种纯扩散模型会非常慢。

为了解决这个问题,Stable Diffusion 应运而生。

Stable Diffusion

Stable Diffusion 一开始的名称是“潜在扩散模型”(Latent Diffusion Model)。顾名思义,Stable Diffusion 发生在潜在空间中。这就是它比纯扩散模型更快的原因。

潜在空间

Stable Diffusion 超详细讲解

图5. 潜在空间

我们首先训练一个自动编码器来学习如何将图像数据压缩成低维表示。

  • 通过使用经过训练的编码器 E E E,我们可以将全尺寸图像编码为低维潜在数据(压缩数据)。
  • 通过使用经过训练的解码器 D D D,我们可以将潜在数据解码回图像。

Latent Diffusion

将图像编码为潜在数据后,将在潜在空间中进行正向和反向扩散过程。

Stable Diffusion 超详细讲解

图6. Stable Diffusion 模型概述
  1. 正向扩散过程 → 向潜在数据添加噪声。
  2. 逆向扩散过程 → 从潜在数据中去除噪声。

调节机制

Stable Diffusion 超详细讲解

图7. 调节机制概述

Stable Diffusion 真正强大之处在于它可以根据文本提示生成图像。这是通过接受调节输入修改内部扩散模型来实现的。

Stable Diffusion 超详细讲解

图8. 调节机制细节

通过使用交叉注意机制增强其去噪 U-Net,将内部扩散模型转变为条件图像生成器。

上图中的开关用于在不同类型的调节输入之间进行控制:

  • 对于文本输入,首先使用语言模型 τ θ \tau_\theta τθ(例如 BERT、CLIP)将文本转换为嵌入(向量),然后通过(多头)注意力 A t t e n t i o n ( Q , K , V ) Attention(Q, K, V) Attention(Q,K,V) 映射到 U-Net 层。
  • 对于其他空间对齐的输入(例如语义映射、图像、修复),可以使用连接来完成调节。

训练

Stable Diffusion 的训练目标(损失函数)与纯扩散模型中的目标非常相似。 唯一的变化是:

  • 输入潜在数据 z t z_t zt 而不是图像 x t x_t xt
  • 向 U-Net 添加了条件输入 τ θ ( y ) \tau_\theta(y) τθ(y)

所以 Stable Diffusion 的损失函数是这样的:
L L D T = E t , z 0 , ε , y [ ∥ ε − ε θ ( z t , t , τ θ ( y ) ) ∥ 2 ] L_{LDT} = \mathbb{E}_{t,z_0,\varepsilon,y}\Big[\Vert \varepsilon-\varepsilon_\theta\big(z_t,t,\tau_\theta(y)\big)\Vert^2\Big] LLDT=Et,z0,ε,y[εεθ(zt,t,τθ(y))2]
其中 z t = α ˉ t z 0 + 1 − α ˉ t ε z_t = \sqrt{\bar\alpha_t}z_0 + \sqrt{1-\bar\alpha_t}\varepsilon zt=αˉt z0+1αˉt ε z 0 = E ( x 0 ) z_0 = E(x_0) z0=E(x0) τ θ ( y ) \tau_\theta(y) τθ(y) 是输入调节。

采样

Stable Diffusion 超详细讲解

图9. Stable Diffusion 采样过程(去噪)

由于潜在数据的大小比原始图像小得多,因此去噪过程会快得多。

架构对比

最后,让我们比较一下纯扩散模型和 Stable Diffusion(潜在扩散模型)的整体架构。

纯扩散模型

Stable Diffusion 超详细讲解

图10. 纯扩散模型架构

Stable Diffusion (潜在扩散模型)

Stable Diffusion 超详细讲解文章来源地址https://www.toymoban.com/news/detail-485290.html

图11. Stable Diffusion 架构

总结

  • Stable Diffusion(潜在扩散模型)在潜在空间中进行扩散过程,因此它比纯扩散模型快得多。
  • 扩散模型核心被修改为接受条件输入,如文本、图像、语义图等。

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

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

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

相关文章

  • Stable Diffusion 插件开发基础讲解

    近来Stable diffusion扩散网络大热,跟上时代,简单的文生图,图生图,其实可以满足绝大多数设计师的应用,但是有什么是赛博画手无法做到的呢? 那就是他们使用到的stable diffusion的插件开发,他们并不清楚stable diffusino的代码结构,如果遇到一些代码层面的报错问题,他们将

    2024年02月12日
    浏览(31)
  • Stable diffusion游戏图标生成讲解

    hello大家好,这里是ai绘画刚上路的萌新张怼怼,专注训练游戏图标。今天教大家如何用 stable diffusion中的模型生成游戏图标中技能图标的图片。(新手教程,如有遗漏、不足之处还望大家包涵并指出,共同完善游戏图标生成教程) 先给大家看一下生成的忍者神龟和剑。 以上

    2024年02月09日
    浏览(34)
  • 【讲解下如何Stable Diffusion本地部署】

    🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步! Stable Diffusion 是一种基于深度学习的文本到图像生成模型,由Stabilit

    2024年04月12日
    浏览(35)
  • 【保姆级讲解如何Stable Diffusion本地部署】

    🌈个人主页:程序员不想敲代码啊🌈 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家🏆 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步! 部署一个模型像Stable Diffusion通常涉及几个步骤。Stable Diffusion是一个

    2024年04月10日
    浏览(36)
  • 【stable-diffusion史诗级讲解+使用+插件和模型资源】

    前言 以后所有资源模型,都在这个网址公布:https://tianfeng.space/1240.html 要不然东一个西一个难找麻烦 安装:stable diffusion 小白最全详细使用教程 模型最终版:https://blog.csdn.net/weixin_62403633/article/details/131089616?spm=1001.2014.3001.5501 如果安装或者使用有问题,欢迎评论区留言,CSD

    2024年02月09日
    浏览(62)
  • 深入浅出讲解Stable Diffusion原理,新手也能看明白

    最近一段时间对多模态很感兴趣,尤其是Stable Diffusion,安装了环境,圆了自己艺术家的梦想。看了这方面的一些论文,也给人讲过一些这方面的原理,写了一些文章,具体可以参考我的文章: 北方的郎:图文匹配:Clip模型介绍 北方的郎:VQGAN(Vector Quantized Generative Adversar

    2024年02月08日
    浏览(43)
  • Stable Diffusion 安装教程(详细)_stable diffusion安装

    引言 如果你只想简单尝试一下,仅仅图一乐,可以通过网页在线体验Stable Diffusion,可以今日免费的网站进行使用(https://stablediffusionweb.com/),只是功能不如本地的多。 本地部署安装Stable Diffusion有很多种方式,例如安装启动器,安装传统的Web Ui界面等等,它们的步骤看似繁

    2024年02月19日
    浏览(50)
  • 用通俗易懂的方式讲解:十分钟读懂 Stable Diffusion 运行原理

    AIGC 热潮正猛烈地席卷开来,可以说 Stable Diffusion 开源发布把 AI 图像生成提高了全新高度,特别是 ControlNet 和 T2I-Adapter 控制模块的提出进一步提高生成可控性,也在逐渐改变一部分行业的生产模式。惊艳其出色表现,也不禁好奇其背后技术。 之前写过一篇实战类的文章一文

    2024年01月21日
    浏览(56)
  • Stable diffusion 三大基础脚本 提示词矩阵,载入提示词,XYZ图表讲解

    目录 0.本章讲解  1.提示词矩阵(prompt matrix) 1.2.提示词矩阵功能选项 1.2.1.把可变部分放在提示词文本的开头 1.2.2.为每张图片使用不同随机种子 1.2.3.选择提示词 1.2.4.选择分割符 1.2.5.宫格图边框(像素) 2.从文本框或文件载入提示词(Prompts from file or textbox) 2.1.语法 2.2.常用参数

    2024年02月14日
    浏览(30)
  • 用通俗易懂的方式讲解:Stable Diffusion WebUI 从零基础到入门

    本文主要介绍 Stable Diffusion WebUI 的实际操作方法,涵盖prompt推导、lora模型、vae模型和controlNet应用等内容,并给出了可操作的文生图、图生图实战示例。适合对Stable Diffusion感兴趣,但又对Stable Diffusion WebUI使用感到困惑的同学。 前面分享了两篇文章:十分钟读懂 Stable Diffusio

    2024年01月17日
    浏览(46)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包