Stable Diffusion 模型原理与本地部署实践
论文讲解
论文题目: High-Resolution Image Synthesis with Latent Diffusion Models(基于潜在扩散模型的高分辨率图像合成)
收录会议: CVPR 2022
Stable Diffusion (SD) 是一个基于 Latent Diffusion Models (LDMs) 的文图生成 (text-to-image) 模型。它建立在自注意力机制和扩散过程的基础上,设计灵感来自于在自然图像建模领域取得巨大成功的扩散过程模型。
背景介绍
在生成模型的研究中,扩散过程模型和自注意力机制是两个备受关注的领域。扩散过程模型通过模拟随机过程的演化来生成图像;自注意力机制则能有效捕捉输入序列中不同位置之间的依赖关系。研究人员探索将两者结合以进一步提高生成性能,Stable Diffusion 应运而生。
核心原理
-
训练自编码模型 (AutoEncoder)
- 训练包含编码器和解码器的自编码模型。编码器将输入图像压缩成潜在表示 (latent representation),解码器将潜在表示还原为像素空间图像。
- 目的:将图像压缩到低维潜在表示空间,为后续 diffusion 操作做准备。
-
感知压缩 (Perceptual Compression)
- 利用训练好的自编码模型对图片进行压缩,转换到潜在表示空间。
- 优势:降低模型训练和采样的计算复杂度,使得模型能在较短时间内生成高质量图像。
-
潜在表示空间上的 diffusion 操作
- 在潜在表示空间上进行类似标准扩散模型的流程。
- 具体实现为 time-conditional UNet,结合时间条件信息用于图像生成。
图片感知压缩
感知压缩利用预训练的自编码模型 (如 VAE) 学习图像的潜在表示空间。该空间在感知上等同于图像空间但维度更低,保留了重要特征并忽略高频信息。
训练过程:
- 通常采用两阶段过程。首先训练自编码器学习潜在表示空间,避免高度异化,常采用 KL 正则化 (KL-reg) 和矢量量化正则化 (VQ-reg)。
- Stable Diffusion 主要采用 AutoencoderKL 实现。
潜在扩散模型
扩散模型可理解为时序去噪自编码器,目标是根据输入预测去噪后的变体或噪音。
在潜在扩散模型中,引入预训练的感知压缩模型(编码器 E 和解码器 D)。模型在潜在表示空间中学习,并通过解码器将结果转换回图像空间。
条件机制
通过引入条件变量 c 控制图片合成过程。论文提出拓展的条件时序去噪自编码器,在 UNet 主干网络上增加 cross-attention 机制来实现条件图片生成。
为了处理多模态条件变量,引入领域专用编码器将不同模态映射为统一中间表示,支持文本、类别、布局等多种条件。
实验结果
模型展示了来自不同数据集 (CelebAHQ, FFHQ, LSUN-Churches 等) 生成的样本,分辨率为 256×256 像素。
实验对比了不同下采样因子 f 对类别条件下扩散模型的影响,以及不同压缩程度 LDMs 在推断速度和样本质量之间的权衡。
代码复现
环境配置
基本环境配置要点如下:
- 建议使用配备显卡的电脑,无显卡时生成速度较慢。
- 确保能访问 GitHub 并安装 git 工具。
- 安装 Python 环境,推荐使用 Conda 管理。
- 创建 Conda 环境
conda create -n sd python=3.10.9
conda activate sd


