Stable Diffusion 模型原理与本地部署实战
Stable Diffusion(简称 SD)是一个基于潜在扩散模型(Latent Diffusion Models, LDMs)的文图生成模型。它建立在自注意力机制和扩散过程的基础上,设计灵感源自在自然图像建模领域取得巨大成功的扩散模型。
论文核心解析
本文主要参考 CVPR 2022 收录的论文《High-Resolution Image Synthesis with Latent Diffusion Models》。SD 通过一系列扩散步骤生成图像:从含较少信息的噪声开始,逐步预测条件分布并生成包含更多细节的图像。
背景与架构
在生成模型研究中,扩散过程模型和自注意力机制是两个关键领域。扩散模型模拟随机过程演化来生成图像,而自注意力机制则能捕捉序列中不同位置的依赖关系。Stable Diffusion 将两者结合,采用了一系列扩散步骤来逐渐生成图像,每个步骤中模型需预测图像的条件分布。
Stable Diffusion 的核心流程:
-
训练自编码模型(AutoEncoder)
- 编码器负责将输入图像压缩成潜在表示(latent representation),解码器负责将其还原为原始像素空间图像。
- 这一步骤将图像压缩到低维潜在表示空间,为后续扩散操作做准备。
-
感知压缩(Perceptual Compression)
- 利用训练好的自编码模型对图片进行压缩,转换到潜在表示空间。
- 该过程保留了重要的图像特征,同时忽略了一些不太重要的高频信息,大幅降低了计算复杂度。
-
潜在表示空间上的 Diffusion 操作
- 在潜在表示空间上进行类似标准扩散模型的操作。
- 具体实现为 time-conditional UNet,结合了时间条件信息,用于在潜在表示空间上进行图像生成。
技术细节
图片感知压缩
感知压缩利用预训练的自编码模型(如变分自编码器 VAE)学习图像的潜在表示空间。这个空间在感知上等同于图像空间,但维度更低。基于此的扩散模型训练通常是两阶段过程:首先训练自编码器学习潜在空间,避免高度异化;其次在潜在空间训练扩散模型。Stable Diffusion 主要采用 AutoencoderKL 实现,结合了 KL 正则化方法。
潜在扩散模型
扩散模型可理解为一种时序去噪自编码器,目标是根据输入图像预测对应的去噪后变体或噪音。其目标函数表述如下:

其中 $x_t$ 是模型预测的下一个时间步的图像,$x_{t-1}$ 是当前时间步的输入图像,$ε_t$ 是从均匀分布中采样得到的噪音。
在潜在扩散模型中,引入了预训练的感知压缩模型(编码器 E 和解码器 D)。相应的目标函数调整为:

在这里,$z_t$ 是模型预测的下一个时间步的潜在表示,$E_φ$ 是编码器,$D_φ$ 是解码器。这种结构使得模型能够在潜在表示空间中操作,同时通过解码器将结果转换回图像空间。
条件机制
为了控制图片合成过程,论文提出了拓展的条件时序去噪自编码器。通过在 UNet 主干网络上增加 cross-attention 机制来实现条件图片生成。模型会重点关注与条件变量相关的信息,从而在生成过程中加入条件的影响。为了处理来自多个不同模态的条件变量,引入了一个领域专用编码器,将不同模态的条件变量映射为一个统一的中间表示。





