问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Stable diffusion文生图大模型——隐扩散模型原理解析

创作时间:
作者:
@小白创作中心

Stable diffusion文生图大模型——隐扩散模型原理解析

引用
CSDN
1.
https://blog.csdn.net/sdksdf/article/details/139417214

1、前言

本文将介绍近年来非常流行的文生图大模型——Stable Diffusion。该模型并不复杂,其原理建立在之前介绍过的扩散模型和变分自编码器(VAE)的基础上。通过学习本文,读者可以更好地理解Stable Diffusion的工作原理。

演示:

2、Stable Diffusion

2.1、隐空间扩散

在传统的扩散模型中,通常直接对图像进行加噪和去噪处理。然而,这种做法存在一些不可避免的问题,主要是效率问题。一方面,高分辨率图像的计算量巨大;另一方面,图像中存在大量冗余信息,直接对图像进行扩散计算会浪费资源。

为了解决这些问题,Stable Diffusion采用了一种创新的方法:先将图像编码成一个维度相对较小的编码向量或特征图,然后再训练扩散模型。

具体来说,有两种主要的编码方法:

  1. 使用VAE(变分自编码器)将图像编码成维度相对较小的向量或特征图。
  2. 使用离散化的编码器VQGAN进行图像压缩。

这两种方法都可以有效地压缩图像信息,然后再进行扩散过程。

上图中,编码器对应E,解码器对应D。首先将图像x通过编码器E进行编码,然后再进行扩散过程。

2.2、条件生成

Stable Diffusion的一个重要特性是支持条件生成。那么,如何将条件引入扩散模型中呢?其实方法很简单,就是在损失函数中加入条件变量y。

传统的DDPM损失函数为:

L = ∣ ∣ ϵ − ϵ θ ( x t , t ) ∣ ∣ 2 (2) L=||\epsilon-\epsilon_\theta(x_t,t)||^2\tag{2}L=∣∣ϵ−ϵθ (xt ,t)∣∣2(2)

而条件生成的损失函数为:

L = ∣ ∣ ϵ − ϵ θ ( x t , t , y ) ∣ ∣ 2 (1) L=||\epsilon-\epsilon_\theta(x_t,t,y)||^2\tag{1}L=∣∣ϵ−ϵθ (xt ,t,y)∣∣2(1)

加入条件y后,神经网络在预测时会考虑额外的信息,比如图像的类别标签,这有助于提高预测的准确性。

2.3、损失函数和网络结构

在Stable Diffusion中,采用U-Net结构的神经网络来预测噪声。为了更好地处理条件信息,需要对条件进行编码表征后再送入网络。具体来说,损失函数可以表示为:

L L D M = E E ( x ) , ϵ ∼ N ( 0 , 1 ) , t [ ∣ ∣ ϵ − ϵ θ ( z t , t , T θ ( y ) ∣ ∣ 2 ] L_{LDM}=\mathbb{E}{{\mathcal{E}(x)},\epsilon\sim \mathcal{N}(0,1),t}\left[||\epsilon-\epsilon\theta(z_t,t,\mathcal{T}_\theta(y)||^2\right]LLDM =EE(x),ϵ∼N(0,1),t [∣∣ϵ−ϵθ (zt ,t,Tθ (y)∣∣2]

其中,zt是编码器E编码得到的图像加噪结果,t代表时间步。

此外,模型中还使用了Transformer中的自注意力机制,具体计算如下:

Q = W Q ( i ) ⋅ ϕ i ( z t ) , K = W k ( i ) ⋅ T θ ( y ) , V = W V ( i ) ⋅ T θ ( y ) Q=W^{(i)}Q\cdot\phi_i(z_t),K=W_k^{(i)}\cdot \mathcal{T}\theta(y),V=W_V^{(i)}\cdot\mathcal{T_{\theta}}(y)Q=WQ(i) ⋅ϕi (zt ),K=Wk(i) ⋅Tθ (y),V=WV(i) ⋅Tθ (y)

其中,ϕi(zt)是U-Net的中间表征。Tθ的具体实现取决于应用场景,例如当条件是文本时,可以使用Transformer或CLIP等模型。

2.4、训练

Stable Diffusion的训练过程分为几个阶段:

  1. 首先训练编码器和解码器。
  2. 然后训练扩散模型。
  3. 条件编码器通常也需要预先训练,而不是与扩散模型一起训练。

2.5、采样

采样过程相对简单:

  1. 从高斯分布中采样一个初始噪声zt。
  2. 设置所需的条件。
  3. 逐步去噪,直到得到最终的zt。
  4. 使用解码器将zt转换回图像。

3、结束

本文详细介绍了Stable Diffusion的工作原理,包括隐空间扩散、条件生成、损失函数和网络结构、训练和采样等方面。希望本文能帮助读者更好地理解这一流行的大模型。如果读者有任何问题或建议,欢迎随时指出。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号