通过隐扩散模型实现高分辨率图像合成.

扩散模型是一类隐变量模型,其隐变量通常具有较高的维度(与原始图像相同的维度),因此扩散模型的计算负担非常大。考虑一张尺寸为$512\times 512$的RGB图像,其具有$786432$维,因此直接在图像空间中训练扩散模型是昂贵的。

观察到图像的大多数像素提供的是感知细节,对图像进行像素压缩后仍然能保持图像的语义和概念细节,因此可以考虑在生成模型建模的过程中引入感知压缩(perceptual compression)语义压缩(semantic compression):首先通过自编码器压缩像素级的冗余,然后通过在隐空间中执行扩散过程学习语义概念。

隐扩散模型(latent diffusion model)没有直接在高维图像空间中操作,而是首先把图像压缩到隐空间,再在隐空间中构造扩散过程;压缩过程是通过VQ-VAE实现的。编码器$\mathcal{E}$把输入图像$x \in \mathbb{R}^{H\times W\times 3}$压缩为隐空间向量$z= \mathcal{E}(x)\in \mathbb{R}^{h\times w\times c}$,其空间尺寸下采样率$f=H/h=W/w=2^m$;解码器$\mathcal{D}$从隐空间向量中恢复原始图像$\tilde{x}=\mathcal{D}(z)$。

Stable Diffusion v1为例,其使用隐扩散模型的隐空间尺寸为$4\times 64\times 64$,比图像空间($512\times 512$)小$48$倍。

隐扩散模型的采样过程如下:

  1. 随机生成一个隐空间矩阵;
  2. 噪声预测器根据输入条件(如文本)估计隐空间矩阵的噪声;
  3. 从隐空间矩阵中减去预测噪声;
  4. 在采样过程中重复步骤2和3;
  5. 使用VQ-VAE的解码器把隐空间矩阵解码为图像。

隐扩散模型的主体结构(噪声预测器)采用条件UNet模型,通过交叉注意力机制(cross-attention mechanism)实现灵活地条件输入,将条件信息$y$通过特定编码器$\tau_\theta$后输入交叉注意力:

⚪ Stable Diffusion v1.5

SDv1.5模型的训练过程包括:

SDv1.5模型使用Open AI的CLIP ViT-L/14模型进行文本嵌入。

⚪ Stable Diffusion v2

SDv2模型的训练过程包括:

SDv2模型使用OpenCLIP模型进行文本嵌入,相比于CLIP模型的优势: