【第五章:计算机视觉-项目实战之生成式算法实战:扩散模型】2.CV黑科技:生成式算法理论-(5)Stable Diffusion模型讲解
第五章:计算机视觉-项目实战之生成式算法实战:扩散模型
第二部分:CV黑科技——生成式算法理论
第五节:Stable Diffusion模型讲解
一、Stable Diffusion 简介
Stable Diffusion 是一种基于 扩散模型(Diffusion Model) 的生成式人工智能算法,
由 Stability AI、RunwayML、CompVis 等团队于 2022 年共同推出。
它的发布标志着 AI 图像生成 的一个里程碑:
在消费级 GPU 上即可实现高质量、可控的文本到图像(Text-to-Image)生成。
Stable Diffusion 的核心思想是:
在潜空间(Latent Space)中进行扩散与反扩散,
将随机噪声逐步“去噪”成符合文本描述的图像。
二、模型整体架构概览
Stable Diffusion 模型主要由三大核心部分组成:
模块名称 | 功能 | 代表模型 |
---|---|---|
文本编码器(Text Encoder) | 将输入的文字描述转化为语义向量表示 | CLIP Text Encoder |
U-Net(扩散网络) | 在潜空间中执行噪声预测和去噪过程 | U-Net Backbone |
VAE(变分自编码器) | 实现图像与潜空间之间的相互映射 | Autoencoder KL |
简而言之:
VAE 负责“压缩”图像 → U-Net 在潜空间中“生成” → VAE 再“解码”成图像。
三、Stable Diffusion 的核心流程
Stable Diffusion 将传统扩散模型的操作从像素空间转移到了潜空间(Latent Space)。
其整体流程如下:
Step 1:文本编码
输入的 Prompt(提示词)经由 CLIP Text Encoder 处理,生成语义嵌入向量 c
。
c = TextEncoder(prompt)
Step 2:潜空间初始化
通过 VAE Encoder 将图像压缩成潜变量 z
(通常为 64x64x4)。
z = VAE.encode(image)
Step 3:加噪(Forward Diffusion)
在训练阶段,模型会向 z
中逐步添加高斯噪声,形成 :
Step 4:去噪(Reverse Diffusion)
U-Net 模型根据时间步 t
和条件向量 c
,预测噪声分布:
然后逐步去噪还原潜变量:
Step 5:图像重建
去噪完成后,通过 VAE Decoder 将潜变量还原为可视图像:
x = VAE.decode(z_0)
最终输出即为根据 Prompt 生成的图像。
四、Stable Diffusion 的创新点
1.潜空间扩散(Latent Diffusion)
传统 DDPM 在像素级别进行扩散,运算成本高。
Stable Diffusion 首次提出在潜空间中进行扩散,大幅降低计算负担。
图像从 512×512 压缩为 64×64×4 的 latent 表示;
生成速度提升约 10~20 倍;
显存需求显著下降(8GB GPU 可运行)。
2.条件控制(Conditional Diffusion)
Stable Diffusion 使用文本编码 c
作为条件输入,使得生成内容可控。
即:
噪声预测不仅依赖
和时间步
t
,还依赖c
(文本语义)。
这就是 “文本驱动的图像生成” 核心原理。
3.可扩展性强
由于模型模块化设计,Stable Diffusion 可以被轻松扩展出多种变体:
Inpainting(图像修补)
Img2Img(图像到图像)
ControlNet(结构约束)
LoRA / DreamBooth(个性化训练)
五、Stable Diffusion 模型结构图(示意)
[Prompt]↓┌──────────────┐│ Text Encoder │──→ [Text Embedding c]└──────────────┘↓┌──────────────┐│ U-Net │←──────Noise z_t└──────────────┘↓┌──────────────┐│ VAE Decode │──→ 生成图像 x└──────────────┘
六、Stable Diffusion 的推理流程(简化版)
from diffusers import StableDiffusionPipeline
import torch# 1. 加载模型
pipe = StableDiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5",torch_dtype=torch.float16
).to("cuda")# 2. 输入提示词
prompt = "a futuristic city at night, neon lights, cinematic lighting"# 3. 生成图像
image = pipe(prompt, num_inference_steps=30, guidance_scale=7.5).images[0]# 4. 保存结果
image.save("city_night.png")
参数说明:
num_inference_steps
: 采样步数(越多越精细)guidance_scale
: 文本引导强度(6~8 通常最佳)
七、模型性能与效果展示
模型版本 | 分辨率 | 参数量 | 主要特点 |
---|---|---|---|
v1.4 | 512x512 | ~890M | 基础模型,通用性强 |
v1.5 | 512x512 | ~890M | 改进训练,画质更清晰 |
v2.1 | 768x768 | ~1.2B | 更高分辨率,更清晰的细节 |
SDXL 1.0 | 1024x1024 | ~2.6B | 双编码结构,画质媲美商业模型 |
八、Stable Diffusion 的应用场景
AI艺术创作:插画、风景、人物造型设计
概念可视化:游戏场景、建筑、工业设计
图像修复/风格迁移:Inpainting、Img2Img
AI角色训练:LoRA / DreamBooth 定制模型
视频生成基础:通过逐帧扩散 + 时序建模实现动画
九、技术瓶颈与发展方向
挑战 | 说明 | 当前改进方向 |
---|---|---|
一致性问题 | 同一角色不同角度一致性差 | ControlNet、ReferenceNet |
细节噪点 | 精细结构难以保持 | 高分辨率 VAE 改进 |
推理耗时 | 扩散步骤多 | DPM-Solver、SD-Turbo 加速 |
控制能力不足 | 难以精确指定内容 | 文本嵌入优化 + Prompt Engineering |
十、小结
Stable Diffusion 以 开源 + 高质量 + 可扩展 的特性,
成为当前最具代表性的扩散模型之一。
它在艺术创作、设计辅助、图像编辑等领域引发了技术革命。
本节要点回顾:
Stable Diffusion 在潜空间进行扩散与去噪;
采用 CLIP + U-Net + VAE 三模块协作;
支持文本到图像、图像编辑、ControlNet 等多任务;
是当代生成式视觉算法的主流实现框架。