mthoutai

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

第五章:计算机视觉-项目实战之生成式算法实战:扩散模型

第二部分:CV黑科技——生成式算法理论
第五节:Stable Diffusion模型讲解

一、Stable Diffusion 简介

Stable Diffusion 是一种基于 扩散模型(Diffusion Model) 的生成式人工智能算法,
Stability AIRunwayMLCompVis 等团队于 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 中逐步添加高斯噪声,形成 z_t

z_t = \sqrt{\bar{\alpha}_t} z_0 + \sqrt{1-\bar{\alpha}_t} \epsilon

Step 4:去噪(Reverse Diffusion)

U-Net 模型根据时间步 t 和条件向量 c,预测噪声分布:

\hat{\epsilon}_\theta(z_t, t, c)

然后逐步去噪还原潜变量:

z_{t-1} = \frac{1}{\sqrt{\alpha_t}}(z_t - (1-\alpha_t)\hat{\epsilon}_\theta)

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 作为条件输入,使得生成内容可控。
即:

噪声预测不仅依赖 z_t 和时间步 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.4512x512~890M基础模型,通用性强
v1.5512x512~890M改进训练,画质更清晰
v2.1768x768~1.2B更高分辨率,更清晰的细节
SDXL 1.01024x1024~2.6B双编码结构,画质媲美商业模型

八、Stable Diffusion 的应用场景

  • AI艺术创作:插画、风景、人物造型设计

  • 概念可视化:游戏场景、建筑、工业设计

  • 图像修复/风格迁移:Inpainting、Img2Img

  • AI角色训练:LoRA / DreamBooth 定制模型

  • 视频生成基础:通过逐帧扩散 + 时序建模实现动画


九、技术瓶颈与发展方向

挑战说明当前改进方向
一致性问题同一角色不同角度一致性差ControlNet、ReferenceNet
细节噪点精细结构难以保持高分辨率 VAE 改进
推理耗时扩散步骤多DPM-Solver、SD-Turbo 加速
控制能力不足难以精确指定内容文本嵌入优化 + Prompt Engineering

十、小结

Stable Diffusion 以 开源 + 高质量 + 可扩展 的特性,
成为当前最具代表性的扩散模型之一。
它在艺术创作、设计辅助、图像编辑等领域引发了技术革命。


本节要点回顾:

  1. Stable Diffusion 在潜空间进行扩散与去噪;

  2. 采用 CLIP + U-Net + VAE 三模块协作;

  3. 支持文本到图像、图像编辑、ControlNet 等多任务;

  4. 是当代生成式视觉算法的主流实现框架。

posted on 2025-11-05 10:57  mthoutai  阅读(35)  评论(0)    收藏  举报