扩散模型工作原理 - Stable Diffusion 技术深度解析
扩散模型基础 - 通过去噪生成图像
扩散模型通过两个过程生成图像:前向过程逐步向图像添加高斯噪声直到变为纯噪声,反向过程学习逐步去除噪声恢复清晰图像。
前向扩散过程:
- 从真实图像开始,每一步添加少量高斯噪声
- 经过 T 步(通常 T=1000)后,图像变为近似标准高斯分布的纯噪声
- 每步的噪声量由预定义的调度(schedule)控制,通常使用线性或余弦调度
反向去噪过程:
- 从纯噪声开始,训练神经网络预测每步应去除的噪声
- 逐步去噪 T 步后得到清晰图像
- 网络学习的是条件分布 p(x_{t-1}|x_t),即给定当前噪声图像预测上一步的图像
DDPM(Denoising Diffusion Probabilistic Models)是奠基性工作,证明了这种简单的去噪训练目标可以生成高质量图像。训练目标:最小化预测噪声与实际添加噪声之间的 MSE 损失。
把基础再落到具体表述上:扩散模型(Diffusion Model)学习的是向图像逐步加噪的过程(前向扩散)与从噪声还原图像的过程(逆向扩散)。它在 2020 年以 DDPM(Denoising Diffusion Probabilistic Models)的形式提出,实现了超越 GAN 的画质与稳定的训练过程,也是 Stable Diffusion、DALL-E、Midjourney 等图像生成 AI 的核心技术。前向扩散过程是对原图 x0 分 T 步逐步加入微小的高斯噪声,每一步按 q(xt|xt-1) = N(xt; sqrt(1-βt)*xt-1, βt*I) 添加,T 足够大时(一般取 T=1000)最终收敛到纯高斯噪声 N(0,I)。与 GAN 的比较有三点:训练稳定性上,GAN 存在模式崩塌与训练不稳定的问题,扩散模型则可以稳定训练;多样性上,扩散模型覆盖整个数据分布,能生成多样的样本;速度上,GAN 一次前向传播即可生成,扩散模型则需要数十到数百步。
U-Net 架构与噪声预测网络
扩散模型的核心是噪声预测网络,通常采用 U-Net 架构。给定噪声图像和时间步,预测其中包含的噪声。
U-Net 结构:
- 编码器路径:逐步下采样,提取多尺度特征。每层包含残差块和自注意力层
- 解码器路径:逐步上采样,恢复空间分辨率。通过跳跃连接融合编码器特征
- 中间瓶颈:最低分辨率处的特征处理,包含自注意力层捕获全局信息
时间步嵌入:
- 时间步 t 通过正弦位置编码转为向量
- 经过 MLP 映射后注入到每个残差块中
- 使网络能根据当前去噪阶段调整行为(早期去噪关注全局结构,后期关注细节)
注意力机制:
- 自注意力:在特征图内部计算注意力,捕获长距离空间依赖
- 交叉注意力:将文本条件(CLIP 编码)作为 Key/Value,特征图作为 Query,实现文本引导生成
网络规模与结构可以说得更具体:Stable Diffusion v1.5 的 U-Net 约 860M 参数,输入为 64x64x4 的潜在表示与时间步信息。分辨率按 64→32→16→8 四个阶段下降,通道数则按 320→640→1280→1280 递增,每个阶段由 ResNet 块与 Transformer 块组合而成。时间步 t 通过正弦位置编码(Sinusoidal Positional Encoding)向量化,再经 MLP 注入到各个 ResNet 块。自注意力(Self-Attention)层被加入 U-Net 的中间层以捕捉全局依赖关系,通常作用于 16x16 与 32x32 的特征图,从而让生成结果保持整幅图像的一致性。
潜在扩散 - 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 图像
为什么有效:图像的高频细节(纹理、噪声)在压缩时被丢弃,潜在空间保留了语义信息和全局结构。扩散过程在语义层面操作,效率更高。
架构名称与组件也需要对齐:Stable Diffusion 采用潜在扩散模型(Latent Diffusion Model,LDM),在潜在空间而非像素空间执行扩散过程,由此大幅削减计算成本,使消费级 GPU 也能进行高质量图像生成。CLIP 文本编码器把提示词向量化后注入 U-Net 的 Cross-Attention 层,具体是把提示词转换为 77 个 token x 768 维的向量,在 U-Net 的各层通过 Cross-Attention 对生成过程施加条件。调度器方面存在 Euler、LMS、DPM++ 2M Karras 等多种选择,它们在速度与质量之间的取舍各不相同。
文本条件与 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")
- 有效提升生成质量和可控性
条件注入的机制可以写得更明确:在 U-Net 的每一层加入 Cross-Attention,以文本嵌入作为 Key/Value、图像特征作为 Query 来计算注意力。例如提示词 a cat sitting on a red chair 中,cat、sitting、red、chair 各个 token 会反映到空间上合适的位置。推理时把有条件预测与无条件预测之差放大后相加,即 ε_guided = ε_uncond + w * (ε_cond - ε_uncond),其中 w=7.5 是标准取值。负面提示词(Negative Prompt)用于指定不希望出现的要素,其实现方式是用负面提示词的预测替代无条件预测。
加速技术 - 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 模型:第二阶段细化,提升细节质量
加速路线可以逐个对应:SDXL(Stable Diffusion XL)是 Stability AI 于 2023 年发布的高质量模型,用两阶段流水线(Base 加 Refiner)生成 1,024 × 1,024 的高分辨率图像。LCM(Latent Consistency Models)通过一致性蒸馏(Consistency Distillation)以更少的步数实现高质量生成。SDXL Turbo 与 SD Turbo 则通过对抗扩散蒸馏(Adversarial Diffusion Distillation,ADD)实现一步生成的实时性,做法是把 GAN 的判别器纳入蒸馏损失,即使步数很少也能生成锐利的图像,在 RTX 3090 上可以用约 200ms 生成 512 × 512 的图像。Flash Diffusion 结合知识蒸馏与渐进式学习,用 4 步实现高质量生成。
实用应用 - ControlNet 与自定义模型
ControlNet 和各种微调技术使扩散模型从随机生成变为精确可控的创作工具。
ControlNet:
- 在冻结的 SD 模型上添加可训练的控制分支
- 接受额外的条件输入:边缘图(Canny)、深度图、姿态骨架、语义分割图等
- 生成结果严格遵循条件输入的结构,同时保持文本引导的风格和内容
- 应用:从草图生成照片、保持构图换风格、精确控制人物姿态
LoRA(Low-Rank Adaptation):
- 在注意力层添加低秩矩阵进行微调,参数量仅为全模型的 0.1-1%
- 训练特定风格、角色、概念仅需 10-50 张图像和几小时训练
- 多个 LoRA 可叠加使用,组合不同的风格和概念
- 文件大小通常 10-200MB,易于分享和切换
实用工作流:
- 图生图(img2img):以现有图像为起点,添加部分噪声后去噪。控制噪声强度(denoising strength)决定与原图的相似度
- 局部重绘(Inpainting):仅对图像的遮罩区域进行重新生成,保持其余部分不变
- 超分辨率(Upscale):将低分辨率生成结果放大到高分辨率,同时添加细节
落地环节的细节同样重要:LoRA 不更新全部参数,只训练少量追加参数(rank=4-128)。IP-Adapter 是把参考图像的风格与构图迁移到新图像的技术,它把 CLIP 图像编码器的输出注入 Cross-Attention,从而同时用文本与图像两者施加条件。运行环境方面,Stable Diffusion 可以用 diffusers 库(Hugging Face)轻松运行,推荐 VRAM 8GB 以上的 GPU,并可通过 xformers 或者 torch.compile 加速;ComfyUI、AUTOMATIC1111 等 GUI 工具也相当完善。