EN

扩散模型详解:从DDPM到Stable Diffusion与FLUX

去噪扩散、潜空间与条件机制的技术解析

返回教程列表🌐 Read in English
高级12 分钟

扩散模型详解:从DDPM到Stable Diffusion与FLUX

去噪扩散、潜空间与条件机制的技术解析

一份关于扩散模型(2026年)的详细技术解析:涵盖DDPM前向/反向过程的数学原理、UNet噪声预测、潜扩散(Stable Diffusion的64倍效率技巧)、CFG引导公式,以及基于DiT和整流流的SD3/FLUX。包含理论到工具的对比表格。

扩散模型详解:从DDPM到Stable Diffusion与FLUX

扩散模型通过学习逆转一个逐渐加噪的过程来生成图像:对真实图像逐步添加高斯噪声直至完全破坏,然后训练一个网络来逆转每一步。采样时从纯噪声开始,迭代去噪得到图像。本指南将梳理完整的技术链条——DDPM数学、潜扩散(Stable Diffusion)、无分类器引导以及流匹配生成(SD3、FLUX)——提供足够的数学形式以便阅读论文。

前向过程:受控破坏

前向过程是一个固定的马尔可夫链,在T步(通常T=1000)中逐步添加高斯噪声:

text
q(x_t | x_{t-1}) = N(x_t; sqrt(1 - β_t) · x_{t-1}, β_t · I)

其中β_t是噪声调度(t=0时小,之后变大)。重参数化技巧使训练变得实用——令α_t = 1 − β_t,ᾱ_t = ∏ α_s,可以直接跳到任意时间步:

text
x_t = sqrt(ᾱ_t) · x_0 + sqrt(1 − ᾱ_t) · ε,   ε ~ N(0, I)

无需模拟t步——只需采样一个随机t,将干净图像与噪声一次性混合。到t=T时,x_T与纯高斯噪声无法区分。

反向过程:学习去噪

生成模型学习p_θ(x_{t-1} | x_t)。DDPM的关键简化(Ho等人,2020):不直接预测去噪后的图像,而是训练一个网络ε_θ(x_t, t)来预测添加的噪声,使用简单的MSE损失:

text
L = E_{x_0, ε, t} [ ‖ε − ε_θ(x_t, t)‖² ]

根据预测的噪声,可以恢复x_0的估计并执行一步去噪。该网络经典地采用UNet结构——带有跳跃连接的下采样和上采样路径,以及注意力层——时间步t通过正弦嵌入注入,使一个网络能处理所有噪声级别。(较新的模型用Transformer取代UNet——见下文DiT。)

为什么预测ε比直接预测x_0更好:目标在每个时间步具有单位方差,这使得优化在整个调度中保持稳定。

采样:从1000步到20步

朴素的DDPM采样需要运行所有T步——速度慢。实用的采样器大幅减少了步数:

  • DDIM(Song等人)——使反向过程确定性,允许跳过步骤;50步≈DDPM-1000质量。
  • 高阶ODE求解器(DPM-Solver++、UniPC)——将去噪视为求解ODE;15–25步是现代UI中的实际默认值。
  • 蒸馏(LCM、SDXL-Turbo、FLUX schnell)——训练学生模型在1–8步内匹配教师模型的完整轨迹。这就是“实时”生成的工作原理;代价是部分质量和多样性。
  • ComfyUI/A1111中的采样器下拉菜单正是这个选择:求解器 + 步数 + 噪声调度。

    潜扩散:Stable Diffusion的技巧

    在1024×1024×3像素上运行扩散计算量巨大。潜扩散(Rombach等人,2022)首先训练一个VAE,将图像每边压缩约8倍到潜空间(例如,1024²图像对应128×128×4),然后在潜空间中运行整个扩散过程——空间元素减少约64倍——最后用VAE解码器将最终潜变量解码为图像。这种效率使得图像生成在消费级硬件上成为可能,而“Stable Diffusion”正是这种架构:VAE + 潜空间中的UNet + 文本条件。

    当你在SD工具中看到可下载的“VAE”文件时,它就是这个解码器——不匹配的VAE会导致输出颜色发白或过饱和。

    文本条件与无分类器引导

    文本通过交叉注意力进入:一个冻结的文本编码器(SD1.5/SDXL中使用CLIP;SD3和FLUX额外使用T5以更好地理解提示)嵌入提示,每个UNet/Transformer块关注这些嵌入。

    无分类器引导(CFG)是使提示真正生效的调节旋钮。训练时,文本条件大约10%的时间被随机丢弃,因此同一网络同时学习条件去噪和无条件去噪。采样时,在两者之间外推:

    text
    ε̂ = ε_uncond + s · (ε_cond − ε_uncond)
    

    引导尺度s(即“CFG”滑块,通常为5–8)放大了“朝向提示”的方向。太低→忽略提示;太高→过饱和、过曝的图像。这个公式解释了每个生成UI中最重要的滑块。

    当前一代:DiT与流匹配

    2023年后的架构有两个转变:

  • 扩散Transformer(DiT)——用基于潜块(patch)的Transformer取代UNet;随计算量增加扩展性更好。SD3、FLUX以及大多数前沿图像/视频模型(包括Sora类视频)都属于DiT家族。
  • 整流流/流匹配——不采用DDPM的弯曲去噪轨迹,而是训练模型遵循从噪声到数据的(近乎)直线路径,预测速度场而非噪声。更直的路径→相同质量下采样步数更少。SD3和FLUX都采用这种方式训练——这就是为什么FLUX在步数行为上感觉与SD1.5时代的模型不同。
  • 实际模型选择及用途:请参考Stable Diffusion vs FLUXMidjourney vs DALL-E vs SD;本地运行指南:SD 3.5本地部署指南

    生态系统与理论的对应

    工具/术语理论含义

    LoRA注意力权重的低秩微调——低成本风格/主体特化 ControlNet向去噪器注入空间条件(姿态、深度、边缘)的并行网络 Inpainting已知像素每步重新加噪并钳制,仅生成遮罩区域的扩散 img2img / “去噪强度”从输入的部分加噪版本而非纯噪声开始采样——强度=在噪声调度上回溯的距离 负面提示CFG的无条件分支被替换为“要远离的内容”

    常见问题

    为什么扩散模型优于GAN? 训练稳定(无对抗博弈)、更好的模式覆盖(多样性),以及在推理时可通过更多步数用计算换质量的可行方式。GAN在单步速度上仍占优势——这就是为什么蒸馏扩散正趋近于GAN的步数。

    视频模型是同样的思路吗? 基本是的——基于DiT的扩散/流模型在时空潜变量上运行,使用相同的条件和引导机制。参见Runway vs Kling vs Hailuo

    我应该先读什么? Ho等人2020(DDPM)→ Rombach等人2022(潜扩散)→ SD3论文(整流流+DiT,2024)。上述数学是理解这三篇论文的基础词汇。


    *最后更新:2026年6月。*