Stable Diffusion的加噪和去噪详解

本文详细介绍Stable Diffusion的加噪和去噪过程中的调度算法和采样算法,包括部分公式的讲解。

目录

调度和采样

加噪过程

调度算法

采样算法

加噪过程概述

加噪过程的主要组成部分

加噪过程的步骤

去噪过程

调度算法

采样算法

去噪过程概述

去噪过程的主要组成部分

去噪过程的步骤

历史文章


扩散(过程)流程参考:Stable diffusion详细讲解_stable diffusion 矩阵-CSDN博客

论文(公式)解读参考:Diffusion Model原理-CSDN博客

调度和采样

噪声处理过程中的两个关键算法:调度算法、采样算法。

过程调度算法的作用采样算法的作用
加噪控制每个时间步向图像中注入的噪声比例,逐步将图像转化为纯噪声。加噪过程不需要采样算法,因为噪声注入是确定性的,按照调度器规则进行。
去噪控制每个时间步去除的噪声比例,确保噪声逐步减少,图像逐步恢复。采样算法用于推断每一步如何从当前噪声生成下一步图像【逐步去噪且不确定性的 DDPM 和 跳跃去噪且确定性的 DDIM】。
  • 调度算法/策略控制加噪和去噪过程的每一步的噪声强度/速度变化,确保模型平滑、稳定地进行去噪。
  • 采样方法控制如何从当前噪声生成下一步图像,去噪过程的步数和路径,影响生成速度和效果。

总结:

  1. 调度算法:无论是加噪还是去噪过程,调度算法的作用都是控制噪声比例的变化(添加或去除)。调度算法决定了图像中噪声和图像信息的相对比例,影响噪声的变化速率。

  2. 采样算法:采样算法只在去噪过程中发挥作用,因为去噪涉及逐步从噪声生成图像,这是一个不确定性的推断过程【也有确定性的采样:DDIM】。加噪过程是确定性的,因此不需要采样算法。

加噪过程

调度算法

  • 调度算法的作用:加噪过程使用调度算法来控制每个时间步添加噪声噪声的比例,也就是定义每个时间步图像中保留多少原始图像信息,添加多少噪声。这是一个确定性过程,完全由调度器决定。

  • 常见的调度算法

    • 线性调度:每一步噪声添加的比例按照线性规律变化,即噪声比例逐步增加图像信息逐步减少。
    • 余弦调度噪声比例变化按照余弦曲线,使得噪声的添加在初期和末期较为缓和中期快速增加
  • 加噪公式

  • 总结:在加噪过程中,调度算法控制每个时间步噪声的噪声比例,决定了从原始图像 x_0​ 到噪声图像 x_T​ 的转变过程。由于这是一个确定性过程,调度算法完全控制了噪声注入的规则,而不涉及采样或推理操作。

采样算法

  • 采样算法的作用:加噪过程中不需要采样算法,因为加噪是确定性的,每个时间步的噪声注入量完全由调度算法控制,不需要模型进行推断或采样操作。

  • 总结:加噪过程不涉及采样算法,它只是在固定的调度规则下向图像中添加噪声,因此不需要复杂的采样机制。

加噪过程概述

加噪过程是扩散模型的前向扩散过程,它从原始图像 x_0​ 开始,通过一系列预定的噪声注入步骤,将图像逐步转化为纯噪声 x_T 。整个过程通过某种调度策略(如线性或余弦调度)来控制噪声的注入速率

加噪过程的主要组成部分
  1. 调度策略(Scheduler)

  2. 噪声生成与注入

具体参考如上

加噪过程的步骤

1. 初始化原始图像

  • 加噪过程从原始的无噪声图像  开始,图像最初不含任何噪声

2. 逐步加噪(​)

  • 加噪过程是从时间步 t = 0 开始,每个时间步逐步向图像中添加噪声。最终在时间步 t = T 时,图像 x_T 变为纯噪声。

  • 在每一个时间步 t,根据调度策略决定注入的噪声比例

             随着 t 的增加,图像中的噪声逐步增加,而图像的原始信息逐步减少。

3. 完成加噪过程

  • 当时间步 t = T 时,图像 ​x_T 基本变成了完全的随机噪声。此时原始图像的结构几乎完全丧失,图像仅由噪声构成。
  • 这个纯噪声图像将作为去噪过程的起始点,模型将在去噪过程中从这个纯噪声图像逐步恢复出清晰的图像。

去噪过程

调度算法

  • 调度算法的作用:与加噪过程类似,去噪过程中,调度算法同样控制每个时间步中去除噪声的比例。它决定了在每个时间步,如何逐步去除噪声,使得图像能够从纯噪声逐步恢复为原始图像。

  • 常见的调度算法

    • 线性调度噪声去除的比例按线性变化,噪声逐步减少,图像信息逐步恢复。
    • 余弦调度噪声去除比例按余弦曲线变化,初期和末期的去噪较为平滑,中期去噪速度较快
  • 去噪公式

  • 总结:在去噪过程中,调度算法控制每一步去除噪声的比例,确保噪声逐步减少,图像信息逐步恢复。调度算法决定了去噪过程的速率,但并不负责具体的推断过程。【推断过程由采样算法负责】

采样算法

  • 采样算法的作用:在去噪过程中,采样算法负责逐步生成图像【DDPM 是逐步去噪,而 DDIM 则是跳跃去噪决定去噪过程的步数和路径,影响生成速度和图像质量。在每个时间步,模型需要通过采样算法从噪声图像 x_t 中生成下一步的图像

  • 如何生效:采样算法主要作用在上方去噪公式最后的随机噪声项\sigma_t z,这个随机噪声项的处理决定了采样过程的确定性或不确定性

  • 常见的采样算法

    • DDPM(Denoising Diffusion Probabilistic Models)
      • 在 DDPM 中,\sigma_t 是非零的,因此在每一步生成过程中都会加入随机噪声项 \sigma_t z。实现不确定性采样,使生成具有多样性,但通常需要更多步数。
      • 基于马尔可夫链的逐步采样方法,通过每一步从前一步的结果推导出下一步图像。通常需要较多的时间步(如 1000 步)才能生成高质量图像。
      • 公式如上
    • DDIM(Denoising Diffusion Implicit Models)
      • 在 DDIM 中,\sigma_t设置为 0,因此去噪公式中的随机噪声项 \sigma_t z 被完全去掉。实现确定性采样,生成过程更快且一致性更高。
      • 与 DDPM 类似,但它不依赖马尔可夫链,允许在更少的时间步内生成图像(如 50 或 100 步),加速了生成过程。
      • 公式:去掉了随机采样的噪声项,使生成过程变为确定性。 
  • 采样过程的示例

    • DDPM 采样:从 x_t​ 采样到 x_{t-1}逐步减少噪声,每一步的生成依赖于前一步的结果。
    • DDIM 采样跳过一些时间步,直接从 x_t​ 推断出更远的时间步的图像,加速了去噪过程。
  • 总结:采样算法在去噪过程中扮演着核心角色,它决定了模型如何推断从当前噪声图像生成下一步的图像。

    • DDPM 使用基于马尔可夫链的逐步,不确定性采样,引入随机噪声项,适合需要多样性和更具自然随机性的生成任务。
    • DDIM 使用基于非马尔可夫链的逐步,确定性采样,去掉了随机噪声项,使得生成过程更为直接和一致,有助于在更少的时间步数内达到高质量的生成结果。

去噪过程概述

去噪过程是在扩散模型的生成阶段,模型从一个随机噪声图像开始,逐步去除噪声,最终恢复出原始图像。这一过程的目标是通过反向扩散,从纯噪声生成高质量的图像。

去噪过程的主要组成部分
  1. 调度策略(Scheduler)

  2. 噪声预测与去除

  3. 采样方法(Sampling Method)

具体参考如上

去噪过程的步骤

1. 初始化噪声图像

  • 模型从一个纯随机噪声图像 ​ 开始,假设该图像位于时间步 T,此时图像完全被噪声覆盖。

2. 逐步去噪(

  • 模型从时间步 T 开始,逐步通过多个时间步 t,去除噪声,最终生成清晰图像 

  • 在每一个时间步 t,通过调度策略决定去除噪声的比例

  • 使用采样方法来控制如何生成下一步图像 ​。例如:

    • DDPM:每个时间步依赖于前一个时间步的采样结果,生成下一步的图像。
    • DDIM:通过隐式推断加速采样,在减少时间步的同时仍能生成高质量图像。

3. 完成去噪过程

  • 模型通过多个时间步逐步去噪,直到时间步 t = 0,生成出清晰的图像 
  • 去噪过程中的每一个时间步,都是由调度策略控制噪声去除的强度,而采样方法控制如何具体生成下一步的图像

调度策略和采样方法需要结合使用,共同决定去噪的效果。调度策略负责控制噪声去除的幅度,采样方法负责如何通过这一幅度进行去噪,并生成下一步图像。

历史文章

Stable Diffusion概要讲解-CSDN博客

Stable diffusion详细讲解-CSDN博客

### Stable Diffusion 模型的工作原理详解 #### 1. 基本概念 Stable Diffusion 是一种基于潜在扩散模型 (Latent Diffusion Model, LDM) 的图像生成技术,其核心目标是在保持图像语义结构的同时生成高质量、高分辨率的图像[^1]。该模型通过引入声逐步破坏输入数据,并利用训练好的神经网络逆向恢复原始图像。 #### 2. 主要组成部分 Stable Diffusion 的架构主要由以下几个部分组成: - **潜空间表示** Stable Diffusion 使用自动编码器将高维像素空间映射到低维潜空间,在这个过程中减少计算复杂度并提高效率[^1]。 - **CLIP 文本编码器** CLIP 被用来将自然语言描述转化为嵌入向量,这些向量随后被用于指导图像生成过程中的条件约束[^1]。 - **U-Net 扩散模型** U-Net 结构负责执行实际的任务。它接收带有声的潜变量以及时间步长作为输入,并预测对应的声成分以便于后续除[^3]。 #### 3. 工作流程 以下是 Stable Diffusion 的典型工作流概述: - **前向传播阶段()** 在这一阶段,算法会逐渐向初始干净图片入随机高斯白音直到完全淹没原信号为止。每一步都会记录当前状态下的参数变化情况以供反向重建时参考。 - **后向推理阶段()** 利用预训练完成后的 U-Net 对象估计给定时刻 t 下应该移除多少比例的干扰项 εθ(x_t,t),从而一步步还原接近真实的样本 x_0 。整个迭代周期通常设定为 T 步骤长度固定不变的形式来进行控制精度与速度之间的平衡取舍。 - **交叉注意机制** Cross Attention 层允许模型关注全局特征而非局部区域特性单独处理,这有助于增强最终产物的一致性连贯程度。具体而言就是让 encoder hidden states decoder query keys/values 进行交互作用来捕捉更广泛范围内的关联信息[^3]。 #### 4. 关键优势 相比其他类型的生成对抗网络或者变分自编码方案来说,采用扩散策略构建而成的 SD 方法具备如下几个显著优点: - 更易于优化因为不需要显式定义复杂的先验分布形式; - 可扩展性强支持多种模态转换场景应用比如文字转图画等等; - 输出质量稳定即使面对较为稀疏的数据集也能够维持良好表现水平; ```python import torch from diffusers import StableDiffusionPipeline model_id = "runwayml/stable-diffusion-v1-5" pipe = StableDiffusionPipeline.from_pretrained(model_id) prompt = "A beautiful landscape with mountains and a lake" image = pipe(prompt).images[0] image.save("landscape.png") ``` 以上代码片段展示了如何载预先训练完毕的标准版本管道实例并通过简单的提示词快速渲染一张风景画效果图出来。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值