Skip to content

Stable Diffusion

DDPM 模型

基础模型:DDPM(Denoising Diffusion Probabilistic Model)

普通的生成模型:GAN、VAE

  • DDPM 分解,加噪声
  • DDPM 重构,去噪声

加噪声:

xt=αtxt1+βtεt,εtN(0,I)\boldsymbol{x}_t = \alpha_t\boldsymbol{x}_{t-1} + \beta_t\boldsymbol{\varepsilon}_t,\, \boldsymbol{\varepsilon}_t \sim \mathcal{N}(0,\,\boldsymbol{I})

αt2+βt2=1\alpha_t^2 + \beta_t^2 = 1

tt 增大的时候,βt\beta_t 不断变大。

xt=(αtα1)记为αtx0+1(αtα1)2记为βtεt,εtN(0,I)\boldsymbol{x}_t = \overbrace{(\alpha_t\cdots\alpha_1)}^{\text{记为}\,\overline{\alpha}_t}\boldsymbol{x}_0 + \underbrace{\sqrt{1 - \left(\alpha_t\cdots\alpha_1\right)^2} } _{\text{记为}\,\overline{\beta}_t} \overline{\boldsymbol{\varepsilon} }_t,\, \overline{\boldsymbol{\varepsilon} }_t \sim \mathcal{N}(0,\,\boldsymbol{I})

训练神经网络损失函数:

βt2αt2εtϵθ(xt,t)2\frac{\beta^2_t}{\alpha_t^2}\left\| \varepsilon_t - \boldsymbol{\epsilon_\theta}(\boldsymbol{x}_t,\,t) \right\|^2

其中 ϵθ\boldsymbol{\epsilon_\theta} 为 U-net 神经网络,tt 为噪声强度,其中 βt2αt2\dfrac{\beta^2_t}{\alpha_t^2} 为损失权重。

重构过程:

xt=αtxt1+βtεtxt1=1αt(xtβtϵθ(xt,t))\begin{aligned} \boldsymbol{x}_t &= \alpha_t \boldsymbol{x}_{t-1} + \beta_t\boldsymbol{\varepsilon}_t \\ \boldsymbol{x}_{t-1} &= \frac{1}{\alpha_t}\left( \boldsymbol{x}_t - \beta_t\boldsymbol{\epsilon_\theta} \left(\boldsymbol{x}_t,\,t\right) \right) \end{aligned}

而实际应用中需要加入随机性,所以其表达式如下:

xt1=1αt(xtβtϵθ(xt,t))+σtz,zN(0,I)\boldsymbol{x}_{t-1} = \frac{1}{\alpha_t}\left( \boldsymbol{x}_t - \beta_t\boldsymbol{\epsilon_\theta} \left(\boldsymbol{x}_t,\,t\right) \right) + \sigma_t\boldsymbol{z},\, \boldsymbol{z} \sim \mathcal{N}(0,\,\boldsymbol{I})

将模型视为概率模型,那么前一个部分的表达式可以看做均值,而随机噪声部分可以看做方差。

Text2Img 模式

  1. 引入 Encoder 和 Decoder,对输入的图像进行降维,在潜空间(latents)上进行 DDPM
  2. 在噪声估计时引入了文本作为条件 cc

噪声估计:

ϵ~θ(zt,c)=wϵθ(zt,c)+(1w)ϵθ(zt)\tilde{\boldsymbol{\epsilon} }_\theta(\bold{z}_t,\,\bold{c}) = w\boldsymbol{\epsilon}_\theta(\bold{z}_t,\,\bold{c}) + (1 - w)\boldsymbol{\epsilon}_\theta(\bold{z}_t)

Img2Img 模式

Img2Img-Mask 模式

私炉模式

文本反演(Textual Inversion)