4 Stable Diffusion

Stable Diffusion 是由 Stability AI 开发的开源分散模型。Stable Diffusion 能够完成多模态任务,包括:文字生成图画(text2img)、图画生成图画(img2img)等。

4.1 Stable Diffusion 的组成部分

扩散模型 - Stable Diffusion

​ Stable Diffusion 由两部分组成

  • 文本编码器:提取文本 prompt 的信息

  • 图画生成器:依据文本 embedding 生成图画

    • 图画信息创立器:多步分散进程。步长是其中一个超参数
    • 图画解码器:只在最终生成图画时运转一次
  • **文本编码器:**由一种特别的 Transformer 编码器组成,例如:OpenAI 的 Clip。

  • 图画信息创立器:自编码器(通常是 U-Net)和噪音机制组成。

  • 图画解码器:由自编码器的解码器组成。

​ Stable Diffusion Pipeline

  • Clip:文本信息编码
    • 输入:文本
    • 输出:77 token 的 embedding 向量,每个包括 768 维
  • U-Net + Noise Scheduler:逐步把信息分散至潜空间中
    • 输入:文本 embedding 和由噪音组成的多维 tensor
    • 输出:处理后的 tensor
  • **自编码器的解码器:**运用分散/处理后的信息生成图画
    • 输入:经过处理的 tensor(shape: (4, 64, 64))
    • 输出:生成图画(shape:(3, 512, 512))

4.2 分散进程(图画信息创立器)

​ 分散进程产生在图画信息创立器中。该进程**一步步(step by step)**进行。初始的输入为文本 embedding 和一个随机的图画信息数组(也称为潜变量 latents)。每一步分散的输入是潜变量,输出是信息进一步丰富的潜变量。最终的输出是一张图画。如图:

扩散模型 - Stable Diffusion

4.2.1 分散进程的作业原理

​ 分散进程的原理其实是练习了一个根据 U-Net 和噪音等级机制(schedule)的噪音等级预测器。

分散进程包括如下阶段:

  • 数据集准备阶段:生成练习数据
    • 输入:包括明晰图画的数据集、不同级别的噪音等级机制
    • 流程:从数据集中抽样得到明晰图画,从噪音等级机制中抽样得到某种级别的噪音样本,把该噪音和图画融合
    • 输出:带有某种等级的噪音图画
  • 练习阶段:练习噪音等级预测器
    • 输入:把上一阶段中的噪音图画明晰图画作为输入数据,对应的噪音样本作为标签。
    • 练习:选用 U-Net 作为神经网络,选用监督 loss 对输入进行学习
    • 输出:某种等级的噪音样本
  • 推断阶段:去噪并生成图画
    • 输入:练习完成的 U-Net、某个噪音图画
    • 推断:U-Net 输出该噪音图画的噪音等级(噪音样本)
    • 输出:把噪音图画减去噪音样本,得到去噪图画。不断重复该进程,最终得到类似明晰图画的图画(并不一定完全相同)

​ 生成图画的结果依赖于练习数据集。例如:Stable Diffusion 选用了带有艺术作用的 LAION Aesthetics 数据集,因而生成图画也具有艺术作用。

4.3 提速:在潜空间分散

​ Stable Diffusion 的分散进程是在潜空间中开展的,而不是整个图画像素,这样的紧缩进程加快了图画生成的速度。

​ 该紧缩进程经过**自编码器(autoencoder)**完成。自编码器的编码器把图画紧缩至潜空间,并用解码器依据紧缩信息重建图画。因而,在前向分散进程中,等级噪音应用于潜变量,而不是图画像素。所以 U-Net(噪音预测器)预测的噪音也是以潜变量的形式表明的。

扩散模型 - Stable Diffusion

前向分散进程就是给明晰图画不断增加噪音的进程,也是生成数据集练习噪音预测器的进程,当噪音预测器练习完毕后,就能够运转反向抽样进程来去噪并重建图画

​ 在 Stable Diffusion、LDM(潜变量分散模型) 的论文中,该流程如下:

扩散模型 - Stable Diffusion

4.4 Transformer(文本编码器)

Transformer 模型依据文本输入生成 token embedding。

​ Stable Diffusion 的开源模型中运用的是 OpenAI 的 CLIP(根据 GPT),而其论文中运用的是 Google 的 BERT。两者都是 Transformer 的编码器(encoder)。

​ 有作业指出:文本编码器的挑选关于分散模型的表现比图画生成器的挑选更重要。

4.4.1 CLIP 的练习进程

​ CLIP 的练习流程为:

  • 输入:练习数据为网页爬取的图画和其对应 HTML 标签特点 alt,也就是图画 + 注释(caption)
  • 练习:CLIP 分别运用图画编码器和文本编码器把两种输入数据转化为图画 embedding 和文本 embedding,运用余弦相似度作为 loss 和标签 embeddings 进行比较并更新参数
  • 输出:练习完毕的 CLIP 接收图画和文本描述并生成对应的 embeddings

扩散模型 - Stable Diffusion

4.5 参加文本数据

​ 有了文本编码器后就要给分散模型参加文本数据。

​ 下面是有、无文本的分散进程比照:

扩散模型 - Stable Diffusion

​ 参加文本数据后,噪音预测器(U-Net)也要产生相应变化,主要是在每个 ResNet 块后增加注意力运算:

扩散模型 - Stable Diffusion

参考

  • Ling Yang et al. “Diffusion Models: A Comprehensive Survey of Methods and Applications .” arXiv 2023.
  • Jonathan Ho et al. “Denoising Diffusion Probabilistic Models”. NeurIPS 2020.
  • Jiaming Song et al. “Denoising Diffusion Implicit Models”. ICLR 2021.
  • Alex Nichol et al. “Improved Denoising Diffusion Probabilistic Models”. ICML 2021.
  • Robin Rombach et al. “High-Resolution Image Synthesis with Latent Diffusion Models”. arXiv 2022.
  • Prafulla Dhariwal et al. Diffusion “Models Beat GANs on Image Synthesis”. NeurIPS 2021.
  • Jonathan Ho et al. “Classifier-Free Diffusion Guidance”. NeurIPS Workshop 2021.
  • Tim Salimans et al. “Progressive Distillation for Fast Sampling of Diffusion Models”. ICLR 2022.
  • Chenlin Meng et al. On Distillation of Guided Diffusion Models”. CVPR 2023.