Stable Diffusion 学习条记

打印 上一主题 下一主题

主题 1802|帖子 1802|积分 5406

前篇回首:
  DDPM学习条记-CSDN博客
  DDIM学习条记_ddim网络参数有哪些-CSDN博客
          Stable Diffusion 是 一种基于潜空间扩散(Latent Diffusion)的深度学习模型,用于天生高质量图像。它由 CompVis于 2022 年发布,随后由 Stability AI 进行优化和推广。
        Stable Diffusion 属于扩散模型(Diffusion Models)的范畴,其基本原理是:①训练阶段:给真实图像不断添加噪声,让模型学习怎样徐徐去噪恢复原图。②天生阶段:从纯噪声开始,徐徐去噪天生符合文本描述的图像。与早期扩散模型(如 DDPM, DDIM)相比,Stable Diffusion 进行了多项优化,使其计算量大幅低沉,能在消耗级显卡上运行。
1.stable diffusion 发展及版本

Stable Diffusion (SD)是基于扩散模型的文生图模型


  • 2021.12 早期由StabilityAI资助,CompVis与Runway ML联合研究,发布paperLDM
  • 2022.08 CompVis发布SD1.1~SD1.4
  • 2022.10 Runway ML发布SD1.5
  • ·2022.11 StabilityAl发布SD2.0
  • 至今此后发布便不停以Stability Al名义发布模型
2.整体架构


Stable Diffusion由三部分组成:


  • VAE(变分自编码器):①编码器:将原始图像(Pixel Space)压缩到低维潜伏空间(Latent Space),显著低沉计算量(如512x512图像→64x64潜伏表示)。②解码器:将去噪后的潜伏变量还原为像素空间图像。
  • 扩散模型:在潜伏空间中实行正向(加噪)和反向(去噪)过程。
  • 条件化U-Net:联合交织注意力机制,通过文本、图像等条件引导天生过程。
   简而言之,LDM与DDPM的关系:
  

  • LDM=VAE + DDPM
  • LDM在语义空间做difusion
  • LDM有更多模态的融入:      ①类别融入      ②文本融入
  ①VAE

VAE的具体过程可以参考这篇文章:VAE学习条记-CSDN博客


  •  编码阶段:原始图像 x 经VAE编码器压缩为潜伏变量 Z0​,作为扩散过程的出发点。



  •  扩散过程:在潜伏空间中对 Z0​ 徐徐加噪,天生 Z1,Z2,…,ZT



  • 天生阶段:去噪后的潜伏变量 Z0​ 经VAE解码器还原为最终图像:

   为什么要加VAE?
  

  • 低沉计算复杂度:直接在像素空间(如512×512图像)实行扩散过程须要处理百万级维度(3×512×512=786,432),计算量和内存消耗巨大。VAE将图像压缩到低维潜伏空间(如64×64×4=16,384维)。
  • 潜伏空间的连续性与稳定性:问题:像素空间中高频噪声会导致扩散过程不稳定,天生图像细节含糊。VAE的潜伏空间是连续且平滑的,更适合扩散模型徐徐去噪。
  • 数据分布建模的简化:直接建模高维像素空间的复杂分布极其困难。
  • 高质量重修能力:普通自编码器(AE)的潜伏空间缺乏概率约束,重修质量不稳定。VAE通过KL散度约束潜伏空间分布。
  ②扩散过程

         Stable Diffusion支持多种采样方法,包罗DDPM和DDIM,默认常用DDIM以实现快速天生。扩散过程的具体内容可见之前的条记,再次不做赘述
        噪声预测目的:
        无论使用DDPM或DDIM,U-Net的目的均为预测噪声


其中
为噪声调度系数,xxx为条件。
③U-Net


(1) U-Net的输入与输出


  • 输入:带噪潜伏变量 Zt​、时间步 t、条件嵌入(如文本向量)。
  • 输出:预测的噪声 ϵθ​。
(2) 核心组件


  • 编码器(下采样):

    • 由多个残差块(ResNet Block)组成,每块包含:

      • 卷积层 + 组归一化(GroupNorm) + SiLU激活。
      • 时间嵌入 t 通过MLP映射为向量,与特征相加。

    • 时间嵌入公式:

      (ω 为频率参数,用于编码时间步的周期性信息)

  • 中间层(Bottleneck):

    • 自注意力层:捕捉潜伏变量内部的全局依赖(如物体间位置关系)。
    • 交织注意力层:条件信息(文本)与图像特征的交互。

      • 公式:


        • Q:U-Net的中间特征(Query)。
        • K,V:条件嵌入(如CLIP文本编码的投影)。



  • 解码器(上采样):

    • 使用转置卷积或插值法徐徐恢复分辨率。
    • 跳跃连接:将编码器每层的特征与解码器对应层拼接,保存细节。

(3) 条件注入机制


  • 文本条件:CLIP文本编码器天生的向量 
    ,通过交织注意力与U-Net特征交互。
  • 其他条件:语义图、参考图像等可通过类似方式注入。

stable diffusion的大致训练和采样过程可以归纳为如下的图:

3.复现

末了尝试复现步调,这篇文章给了我很大的帮助
Stable-diffusion复现条记_stable diffusion 复现-CSDN博客
stablediffusion$ python txt2img.py   --ckpt "sd-v1-4.ckpt"   --prompt "a photograph of lolita girl in black"   --plms   --H 512   --W 512

这个stable diffusion也是被我给玩上了(笑)

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

大连密封材料

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表