Skip to content

Stable Diffusion ​

DDPM 模型 ​

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

普通的生成模型:GAN、VAE

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

加噪声:

xt=αtxt−1+βtεt, εt∼N(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, ε‾t∼N(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=αtxt−1+βtεtxt−1=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}

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

xt−1=1αt(xt−βtϵθ(xt, t))+σtz, z∼N(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)+(1−w)ϵθ(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)