JA EN ZH

扩散模型工作原理 - Stable Diffusion 技术深度解析

· 9 分钟阅读

扩散模型基础 - 通过去噪生成图像

扩散模型通过两个过程生成图像:前向过程逐步向图像添加高斯噪声直到变为纯噪声,反向过程学习逐步去除噪声恢复清晰图像。

前向扩散过程:

  • 从真实图像开始,每一步添加少量高斯噪声
  • 经过 T 步(通常 T=1000)后,图像变为近似标准高斯分布的纯噪声
  • 每步的噪声量由预定义的调度(schedule)控制,通常使用线性或余弦调度

反向去噪过程:

  • 从纯噪声开始,训练神经网络预测每步应去除的噪声
  • 逐步去噪 T 步后得到清晰图像
  • 网络学习的是条件分布 p(x_{t-1}|x_t),即给定当前噪声图像预测上一步的图像

DDPM(Denoising Diffusion Probabilistic Models)是奠基性工作,证明了这种简单的去噪训练目标可以生成高质量图像。训练目标:最小化预测噪声与实际添加噪声之间的 MSE 损失。

U-Net 架构与噪声预测网络

扩散模型的核心是噪声预测网络,通常采用 U-Net 架构。给定噪声图像和时间步,预测其中包含的噪声。

U-Net 结构:

  • 编码器路径:逐步下采样,提取多尺度特征。每层包含残差块和自注意力层
  • 解码器路径:逐步上采样,恢复空间分辨率。通过跳跃连接融合编码器特征
  • 中间瓶颈:最低分辨率处的特征处理,包含自注意力层捕获全局信息

时间步嵌入:

  • 时间步 t 通过正弦位置编码转为向量
  • 经过 MLP 映射后注入到每个残差块中
  • 使网络能根据当前去噪阶段调整行为(早期去噪关注全局结构,后期关注细节)

注意力机制:

  • 自注意力:在特征图内部计算注意力,捕获长距离空间依赖
  • 交叉注意力:将文本条件(CLIP 编码)作为 Key/Value,特征图作为 Query,实现文本引导生成

潜在扩散 - Stable Diffusion 架构

直接在像素空间进行扩散计算量巨大(512x512 图像有 786,432 维)。潜在扩散模型(LDM)先将图像压缩到低维潜在空间,在潜在空间中进行扩散,大幅降低计算成本。

Stable Diffusion 的三大组件:

  • VAE(变分自编码器):编码器将 512x512 图像压缩为 64x64 的潜在表示(压缩 8 倍)。解码器将潜在表示恢复为像素图像。训练后固定不变
  • U-Net:在 64x64 的潜在空间中执行去噪。比像素空间小 64 倍,计算效率大幅提升
  • 文本编码器(CLIP):将文本提示词转为 77x768 的嵌入向量,通过交叉注意力注入 U-Net

生成流程:

  • 采样随机噪声(64x64x4 的潜在向量)
  • 文本编码器处理提示词得到条件嵌入
  • U-Net 在潜在空间中迭代去噪(通常 20-50 步)
  • VAE 解码器将去噪后的潜在向量解码为 512x512 图像

为什么有效:图像的高频细节(纹理、噪声)在压缩时被丢弃,潜在空间保留了语义信息和全局结构。扩散过程在语义层面操作,效率更高。

文本条件与 Classifier-Free Guidance

文本到图像生成的关键是如何将文本信息有效注入生成过程。Classifier-Free Guidance(CFG)是控制文本条件强度的核心技术。

文本条件注入:

  • CLIP 文本编码器将提示词转为嵌入序列
  • 嵌入通过交叉注意力层注入 U-Net 的每个分辨率级别
  • 交叉注意力:Q 来自图像特征,K/V 来自文本嵌入。每个空间位置关注与其相关的文本 token

Classifier-Free Guidance:

  • 训练时随机丢弃文本条件(用空字符串替代),使模型同时学习有条件和无条件生成
  • 推理时同时计算有条件预测和无条件预测
  • 最终预测 = 无条件预测 + guidance_scale * (有条件预测 - 无条件预测)
  • guidance_scale(通常 7-12):值越大,生成结果越忠实于文本但多样性降低

负面提示词:

  • 用负面提示词替代空字符串作为无条件输入
  • 引导生成远离负面描述的内容(如 "blurry, low quality")
  • 有效提升生成质量和可控性

加速技术 - SDXL、LCM、Turbo

标准扩散模型需要 20-50 步去噪,推理速度慢。多种加速技术将步数降低到 1-8 步,实现近实时生成。

采样器优化:

  • DDIM:确定性采样,可跳过步骤。50 步 DDPM 的质量用 20 步 DDIM 即可达到
  • DPM-Solver:高阶 ODE 求解器,10-20 步即可获得高质量结果
  • Euler/Euler Ancestral:简单高效的采样器,20 步通常足够

模型蒸馏:

  • LCM(Latent Consistency Models):将多步扩散蒸馏为 2-4 步的一致性模型。通过一致性损失训练学生模型直接预测最终结果
  • SDXL Turbo:对抗蒸馏,1-4 步生成。使用判别器确保单步输出的质量
  • Lightning:渐进蒸馏,逐步减半步数。4 步即可达到接近原始 50 步的质量

SDXL 架构改进:

  • 更大的 U-Net(2.6B 参数 vs SD 1.5 的 860M)
  • 双文本编码器(CLIP ViT-L + OpenCLIP ViT-bigG)
  • 原生 1024x1024 分辨率
  • Refiner 模型:第二阶段细化,提升细节质量

实用应用 - ControlNet 与自定义模型

ControlNet 和各种微调技术使扩散模型从随机生成变为精确可控的创作工具。

ControlNet:

  • 在冻结的 SD 模型上添加可训练的控制分支
  • 接受额外的条件输入:边缘图(Canny)、深度图、姿态骨架、语义分割图等
  • 生成结果严格遵循条件输入的结构,同时保持文本引导的风格和内容
  • 应用:从草图生成照片、保持构图换风格、精确控制人物姿态

LoRA(Low-Rank Adaptation):

  • 在注意力层添加低秩矩阵进行微调,参数量仅为全模型的 0.1-1%
  • 训练特定风格、角色、概念仅需 10-50 张图像和几小时训练
  • 多个 LoRA 可叠加使用,组合不同的风格和概念
  • 文件大小通常 10-200MB,易于分享和切换

实用工作流:

  • 图生图(img2img):以现有图像为起点,添加部分噪声后去噪。控制噪声强度(denoising strength)决定与原图的相似度
  • 局部重绘(Inpainting):仅对图像的遮罩区域进行重新生成,保持其余部分不变
  • 超分辨率(Upscale):将低分辨率生成结果放大到高分辨率,同时添加细节

Related Articles

GAN 图像生成的应用 - 从超分辨率到风格迁移

系统讲解 GAN 在图像处理中的实际应用。涵盖超分辨率、风格迁移、图像修复、人脸生成和实用部署方案。

神经风格迁移工作原理 - 艺术风格转换的原理与实现

详解神经风格迁移的原理,从内容损失和风格损失的数学定义到快速风格迁移和 AdaIN,涵盖 PyTorch 实现指南。

深度学习超分辨率 - 从 SRCNN 到 Real-ESRGAN 的演进与实践

全面解析深度学习图像超分辨率技术,从 SRCNN 开创性工作到 Real-ESRGAN 的真实世界退化处理,涵盖实际部署指南。

理解 CLIP 模型与图像搜索应用

深入了解 OpenAI CLIP 模型的工作原理,以及如何利用它构建文本到图像搜索、零样本分类等应用。

基于有限数据的图像分类迁移学习 - 微调实战指南

使用预训练模型仅凭 100 张图像构建高精度图像分类器。包含 PyTorch 代码示例和最佳实践的迁移学习实用指南。

图像自动标注技术 - 目标检测、场景识别与字幕生成

详解图像自动标注技术,包括目标检测、场景识别和图像字幕生成的原理与实现方法。

Related Terms