跳至主要内容
返回文章列表
约 18 分钟阅读

图像生成架构演进:从 VAE、GAN 到 DDPM、Stable Diffusion、DiT 与 Flow Matching

分清生成目标、像素与潜空间、U-Net 与 Transformer,系统理解 GAN、扩散模型、LDM、Stable Diffusion、DiT 与流匹配生成架构,并看清流匹配当前在图像、视频、音频、3D 和机器人上的落地位置。

博客目录 →

GAN、DDPM、Latent Diffusion、Stable Diffusion 和 DiT 经常出现在同一条技术时间线上,但它们并不属于同一层概念:GAN 和扩散描述生成与学习方式,Latent Diffusion 描述计算发生在哪里,DiT 描述网络骨干,Stable Diffusion 则是一系列具体系统。

理解这些名字,可以始终问四个问题:图像怎样表示?模型学习什么?使用什么网络?推理如何得到图像?

一、先建立地图:目标、空间与骨干

名称主要解决的问题典型生成过程
VAE学习可采样的潜变量与解码器潜变量 → 解码器 → 图像
GAN通过对抗学习生成逼真的样本随机向量 → 生成器 → 图像
DDPM学习逐步去噪的反向过程噪声 → 多步去噪 → 图像
Score-based 模型学习噪声分布的对数密度梯度用随机或确定性动力学逐步生成
LDM降低高分辨率生成的计算成本潜空间生成 → 图像解码
Stable Diffusion将潜空间条件生成组织成可用系统文本编码 → 潜空间生成 → 解码
DiT用 Transformer 扩展生成骨干对图像或潜变量 token 预测去噪量
Flow Matching / Rectified Flow学习连接噪声与数据的向量场沿学习到的速度场积分

DDIM、DPM-Solver 等主要涉及采样;CFG 是条件引导;LoRA、ControlNet 则分别涉及参数适配与额外控制。它们可以与基础生成架构组合使用。

二、VAE:先学会压缩与重建

VAE(Variational Autoencoder,2013)用 encoder 将图像映射到潜变量分布,再用 decoder 重建图像。训练目标兼顾重建和潜分布正则,常写成负 ELBO:

L=Eqϕ(z∣x)[−log⁡pθ(x∣z)]+DKL(qϕ(z∣x)∥p(z)).\mathcal L=\mathbb E_{q_\phi(z\mid x)}[-\log p_\theta(x\mid z)] +D_{\rm KL}(q_\phi(z\mid x)\Vert p(z)).

潜空间如果组织得足够好,就可以从先验采样 zz,交给 decoder 生成图像。早期 VAE 在常见设置下容易产生平滑结果,但不能把“模糊”视为所有 VAE 的必然特性。

现代潜空间生成模型中的自动编码器也不一定就是原始 VAE:LDM 使用过 KL 正则或向量量化的表示,重建训练还可以加入感知损失和对抗损失。它们的职责主要是压缩和解码,不必独立完成整个复杂数据分布的建模。

三、GAN:生成器与判别器的对抗

Goodfellow 等人在 2014 年提出 GAN。生成器 GG 从噪声生成样本,判别器 DD 判断样本来自真实数据还是生成器。经典目标是:

min⁡Gmax⁡D  Ex∼pdatalog⁡D(x)+Ez∼p(z)log⁡(1−D(G(z))).\min_G\max_D\;\mathbb E_{x\sim p_{data}}\log D(x) +\mathbb E_{z\sim p(z)}\log(1-D(G(z))).

实际训练常使用非饱和生成器损失等变体。生成器与判别器交替更新;部署生成时通常只需要生成器,一次前向就能得到图像,这是其速度优势。

GAN 原论文示意判别器与生成分布在交替优化中接近真实数据分布
论文原图:对抗学习中的分布变化。来源:Generative Adversarial Nets,Figure 1。

GAN 的难点包括训练平衡、模式坍塌与覆盖多样性。DCGAN 推广卷积架构,WGAN 用不同的分布距离与训练约束改善优化,StyleGAN 引入映射网络和分层风格控制;StyleGAN2 改善伪影,StyleGAN3 进一步关注抗混叠和等变性。

这些方法展示了高质量人脸等生成能力,但训练稳定性和开放域文本控制仍是挑战。扩散流行以后,GAN 仍可用于低延迟生成、重建与蒸馏,并没有彻底消失。

四、DDPM:把生成变成去噪学习

扩散生成已有更早工作,Ho 等人的 DDPM(2020)让这一范式广泛传播。前向过程逐渐给真实图像加高斯噪声,反向过程由网络学习恢复结构。

训练可以直接采样任意时刻:

xt=αˉtx0+1−αˉtϵ,ϵ∼N(0,I).x_t=\sqrt{\bar\alpha_t}x_0+\sqrt{1-\bar\alpha_t}\epsilon, \qquad \epsilon\sim\mathcal N(0,I).

典型简化目标要求网络预测噪声:

Lsimple=E∥ϵ−ϵθ(xt,t)∥2.\mathcal L_{simple}=\mathbb E\|\epsilon-\epsilon_\theta(x_t,t)\|^2.
DDPM 原论文展示图像逐步加噪与反向去噪的马尔可夫链
论文原图:前向加噪与反向生成。来源:Denoising Diffusion Probabilistic Models,Figure 2。

典型骨干是带时间嵌入的 U-Net:下采样提取上下文,上采样恢复空间细节,跳跃连接保留局部信息,并可加入注意力。训练一次随机采样一个 tt,不需要为每张图完整执行全部去噪步骤;生成时才需要迭代。

DDPM 的效果来自大量数据上的分布学习,不是把某张训练图的噪声倒放。它也不是必须预测 ϵ\epsilon:模型还可以预测干净样本或 vv 等参数化,采样器必须与训练约定匹配。

五、Score-based、DDIM 与采样器

Score-based 方法学习带噪数据的 ∇xlog⁡pt(x)\nabla_x\log p_t(x)。Song 等人的 SDE 框架把不同噪声过程联系起来:反向 SDE 可以随机采样,对应的 probability flow ODE 可以确定性积分。理想条件下二者具有一致的边缘分布,但离散计算会带来误差。

DDIM 提供与 DDPM 相关的非马尔可夫采样构造,可使用更少步骤,并在特定设置下让给定初始噪声产生确定性结果。它主要改变采样过程,通常不要求从零重新训练一个不同的图像理解网络。

DPM-Solver 等进一步利用数值求解结构提高采样效率。步数减少通常有质量取舍;“训练有 1000 个噪声时刻”不等于“推理必须跑 1000 次网络”。

六、LDM:把扩散搬到潜空间

像素空间高分辨率扩散昂贵。Rombach 等人的 Latent Diffusion Models(CVPR 2022)先学习自动编码器,再在压缩潜变量上训练扩散网络。

训练图像 x → encoder → 潜变量 z
                            ↓ 加噪
                  条件去噪网络学习恢复

生成:潜空间噪声 → 迭代生成 z → decoder → 图像
LDM 官方图展示像素空间自动编码器、潜空间扩散和文本等条件的交叉注意力
官方原图:LDM 框架。来源:CompVis 官方仓库;论文:High-Resolution Image Synthesis with Latent Diffusion Models。

例如 SD 1.x 常用的压缩倍率让 512×512×3512\times512\times3 图像成为 64×64×464\times64\times4 潜张量。空间位置减少 64 倍,考虑通道后元素数减少 48 倍;这不意味着端到端计算或显存固定下降相同倍数。

压缩也有代价:decoder 重建能力限制细节与文字质量。自动编码器通常先训练,扩散阶段固定它;新的方法也可能联合优化或替换表示。

七、Stable Diffusion:具体系统,而非单一公式

早期 Stable Diffusion 将自动编码器、文本编码器、条件 U-Net 与采样器组合起来。文本经编码产生条件向量,U-Net 通过交叉注意力利用条件,在潜空间迭代,最后 decoder 解码。

系列典型架构重点不能混用的地方
SD 1.xCLIP 文本条件、潜空间 U-Netcheckpoint、文本编码与潜空间约定
SD 2.xOpenCLIP 与不同训练/预测配置不能假定与 1.x 完全相同
SDXL更大 U-Net、双文本编码器、尺寸等附加条件refiner 是可选阶段,不是每次必需
SD3 / SD3.5MMDiT、多种文本编码、Rectified Flow 路线不再是旧版 U-Net DDPM 架构

版本之间不仅是参数变多。必须同时确认文本编码器、自动编码器、噪声调度、预测目标和条件接口。

Classifier-free guidance(CFG)利用有条件与无条件预测增强条件影响,概念式为:

ϵ^=ϵuncond+s(ϵcond−ϵuncond).\hat\epsilon=\epsilon_{uncond}+s(\epsilon_{cond}-\epsilon_{uncond}).

不同库对 guidance scale 的定义和应用方式可能不同。更大 guidance 不一定更好,可能降低多样性或产生过饱和与伪影;一些蒸馏模型又有独立约定。

八、DiT:用 Transformer 替换生成骨干

Peebles 与 Xie 的 DiT(ICCV 2023)把潜变量切成 patch tokens,用 Transformer blocks 预测扩散所需的输出,并将时间与类别条件通过 adaLN 等机制注入网络。

DiT 原论文展示潜变量 patch 化、Transformer blocks 与不同条件注入模块
论文原图:DiT 架构与条件模块。来源:Scalable Diffusion Models with Transformers。

原始 DiT 主要验证类别条件 ImageNet 生成,不是完整的开放域文本生图系统。它说明扩散骨干可受益于规模扩展,但 full attention 对 token 数的平方成本仍在;更小 patch 或更高分辨率会增加计算。

PixArt 系列进一步研究文本条件 Transformer 生成。SD3 的 MMDiT 则为文本和图像设置不同参数路径,通过联合注意力交换信息。FLUX 的公开架构也是潜空间 Transformer 与流生成路线的代表。它们都不能简单等同为原始 DiT 的原样放大。

九、Flow Matching 与 Rectified Flow

直觉:让概率密度从噪声流到数据

生成问题里,一张 100×100100\times100 的彩色图片可以唯一对应一个 100×100×3100\times100\times3 的三万维向量。在这个空间里随机采样,几乎总是得到噪声而不是真实图片,因为真实图片的分布极度不均匀,只占据其中很小的一部分。生成任务因此可以概括为:找到这个 pdatap_{data},然后从中采样;每采样一次,就得到一张新图片。

Flow Matching 把这件事理解为概率密度在流动:从已知的简单分布 pinitp_{init}(本教程里取标准正态分布)出发,一步步搬运到 pdatap_{data}。下面用低维图像建立直观,实际处理的维度通常是几万到几十万。

三个基础概念:轨迹、向量场、流

轨迹(trajectory) 记录一个点在不同时刻的位置,xtx_t 表示时刻 tt 的位置。Flow Matching 中时间取 t∈[0,1]t\in[0,1]:t=0t=0 在起点,t=1t=1 在终点,中间连续且每个时刻只有一个确定位置。

向量场(vector field) ut(xt)u_t(x_t) 给出位置 xtx_t 在时刻 tt 的速度。速度就是位置随时间的变化率,于是

dxtdt=ut(xt).\frac{dx_t}{dt}=u_t(x_t).

这是一个常微分方程(ODE)。给定初始位置 x0x_0 和向量场 uu,轨迹就被唯一确定:从 x0x_0 按当前速度走一小步,到新位置后重新查询速度,如此重复到 t=1t=1。向量场描述的是运动规则,而不是某一条具体轨迹。

流(flow) ϕt\phi_t 是一族轨迹的集合,每条轨迹都服从同一个向量场:

xt=ϕt(x0),ddtϕt(x0)=ut(ϕt(x0)).x_t=\phi_t(x_0),\qquad \frac{d}{dt}\phi_t(x_0)=u_t\bigl(\phi_t(x_0)\bigr).

第二条式子把流和向量场直接绑在一起。在我们讨论的范围内二者一一对应:知道流可以求出向量场,知道向量场也可以求出流。

一个可以验证的例子

取向量场 ut(xt)=Axtu_t(x_t)=Ax_t(AA 为常数矩阵),对应的流是 ϕt(x0)=eAtx0\phi_t(x_0)=e^{At}x_0。代入上面的公式验证:

  • 初始条件:t=0t=0 时 eA⋅0x0=x0e^{A\cdot0}x_0=x_0,起点落在 x0x_0。
  • 时间导数:ddteAtx0=AeAtx0=Aϕt(x0)=ut(ϕt(x0))\frac{d}{dt}e^{At}x_0=Ae^{At}x_0=A\phi_t(x_0)=u_t\bigl(\phi_t(x_0)\bigr),满足 ODE。

所以 ut(xt)=Axtu_t(x_t)=Ax_t 与 ϕt(x0)=eAtx0\phi_t(x_0)=e^{At}x_0 是一组配对的向量场与流。

学习目标:直接回归速度

Flow Matching 用神经网络参数化向量场 utθu_t^\theta,训练目标是让它诱导的流起点落在 pinitp_{init}、终点落在 pdatap_{data}。训练时不必真的模拟整条轨迹,而是直接回归某个概率路径上的速度。以噪声到数据的线性路径为例:

xt=(1−t)xnoise+txdata,ut=xdata−xnoise,x_t=(1-t)x_{noise}+t x_{data},\qquad u_t=x_{data}-x_{noise}, L=E∥vθ(xt,t,c)−ut∥2.\mathcal L=\mathbb E\|v_\theta(x_t,t,c)-u_t\|^2.

因为 xnoisex_{noise} 和 xdatax_{data} 都是现成的,训练可以像扩散模型一样,一次随机采样一个 tt 就完成一次更新,不需要展开整个求解过程。回归目标由两个端点直接给出,不必为每个 tt 维护 αˉt\bar\alpha_t 之类的缩放系数,需要调的超参数更少,这也是它在实践中被认为训练更稳的原因之一。

这里使用噪声到数据的时间约定,有些实现方向相反;路径形式和端点耦合也可以改变。

生成:沿学到的向量场积分

训练完成后,从 pinitp_{init} 采样 x0x_0,用数值积分把点推到 t=1t=1:

@torch.no_grad()
def sample(v_theta, x, cond, steps=50):
    """x 从 p_init 采样,例如 torch.randn(1, 3, 1024, 1024)。"""
    h = 1 / steps                              # 时间间隔
    for i in range(steps):
        t = i * h
        x = x + h * v_theta(x, t, cond)        # 沿速度场走一步
    return x                                   # 即 x_1

这是最简单的 Euler 求解器,steps 对应前面的 NN,每步只需一次网络前向。NN 越大越接近真实轨迹,代价也越高;换成高阶求解器可以在相同步数下减小离散误差。

Rectified Flow:让轨迹更直

Rectified Flow 关注把连接端点的流学得更直接,并可通过 reflow 等过程改善轨迹。它与 Flow Matching 联系紧密,但名称、理论构造和具体训练流程不能完全互换。SD3 使用该路线,不意味着所有 DiT 都使用 flow,也不意味着 flow 必须搭 Transformer。

“轨迹更直”有助于少步求解,但复杂分布仍需要学习,几步高质量生成通常还需要合适训练、求解器或蒸馏。相比传统扩散,流匹配直接回归速度场、对路径的约束更强,实践中常能在更少步数内得到可用结果;但具体收益取决于路径设计、求解器与蒸馏方案,不能只看方法名字。

十、Flow Matching 现在被用在哪些地方

流匹配已经不只是论文里的备选方案,而是许多已发布系统的默认生成方式。

领域代表系统流匹配承担的角色
文本生图SD3 / SD3.5、FLUX.1Rectified Flow 配合 MMDiT,替换旧版 DDPM 调度与 U-Net
视频生成Wan 2.1/2.2、HunyuanVideo、Mochi 13D 因果 VAE 压缩时空潜变量,流匹配 DiT 负责生成
语音与音频Matcha-TTS、VoiceBox、F5-TTS、CosyVoice 2生成声学特征或音频潜变量,换取更低的步数与延迟
3D 生成TRELLIS、Hunyuan3D 2.0在稀疏结构与结构化潜变量上做 rectified flow
机器人动作π0 等 VLA 的 action expert把连续动作块当作生成目标,替代单点回归
科学计算分子与蛋白质设计、气象与时空插补作为通用的“分布到分布”传输工具

视频生成是当前最集中的战场。 开源视频模型普遍采用“3D 因果 VAE + 潜空间 DiT + flow matching”的组合:先把视频压缩到时空潜变量,再让流匹配骨干生成。潜变量压低了单帧的计算成本,流匹配则让时序上相邻的预测更连贯、采样步数更少。相比在像素空间逐帧做扩散,这套组合在时序一致性和推理成本上都更划算,因此成为近两年开源视频模型的主流配方。

语音和音频对步数最敏感。 实时 TTS、语音克隆和音效生成都希望在少数几步内出结果。流匹配的少步特性与这些需求吻合,所以从 Matcha-TTS 到后来的 F5-TTS、CosyVoice 2,都把 conditional flow matching 当作声学建模的主要方案。

机器人是较新的落地方向。 π0 一类 VLA 模型把动作生成交给用 conditional flow matching 训练的 action expert:模型一次输出一段连续动作,而不是离散动作 token 或单一回归值。之所以用生成式目标,是因为同一个任务往往有多种合理做法——人类演示下的动作分布常常是多峰的,用 L2 回归容易落到这些模式之间的“平均动作”上,而生成式建模可以保留多个可行解。

3D 生成把它用在潜变量上。 TRELLIS 先在稀疏结构上做一次 rectified flow,再在结构化潜变量上生成特征;Hunyuan3D 2.0 则先做几何、再单独做纹理。它们延续了 LDM 的思路:把昂贵的高维生成搬到压缩后的表示上。

它也在图像和视频之外出现。 只要问题可以描述成“把一个分布搬到另一个分布”,流匹配就能用:分子与蛋白质构象生成、气象场与时空数据插补等都在使用。在这些场景里,它更像一种通用建模工具,而不是图像生成的附属技术。

需要注意的是,采用同一种训练范式不等于系统可以互换。时间方向、路径形式、噪声调度、求解器与蒸馏方式各有约定,把不同仓库的组件拼在一起通常要先对齐这些接口。反过来,flow matching 也不必然与 Transformer、潜空间或文本条件绑定——它可以只是“用什么目标学习”这一层的一个选择。

十一、还有哪些方法值得放进地图

自回归模型逐步预测像素或离散视觉 token,代表包括 PixelCNN 和基于 VQ-VAE/VQGAN token 的 Transformer。MaskGIT 则通过迭代预测被遮盖的 token 并行生成,不能直接归为普通逐 token 自回归。

Consistency Models、LCM、对抗蒸馏等路线追求少步推理,有些从扩散教师蒸馏,有些支持独立训练。少步模型可能改变 guidance、步数与分辨率约定,不能只给原始采样器把步数调小来获得同样效果。

LoRA 用少量参数适配骨干,DreamBooth 面向个性化,ControlNet 引入边缘、姿态、深度等条件,IP-Adapter 利用图像条件。这些通常是控制与适配方法,不是新的完整概率生成范式。

十二、训练和生成时,谁在工作

系统训练对象的典型配置生成时需要
GAN生成器与判别器生成器
像素 DDPM去噪网络去噪网络与采样器
文本 LDM已训练自动编码器,训练条件去噪网络;文本编码器常冻结文本编码器、去噪网络、decoder
图生图/修复条件生成骨干,依方案增加输入与掩码还需要 encoder 处理输入图像
Flow + Transformer条件速度场网络网络与 ODE 求解过程、必要的解码器

具体配方可能微调文本编码器或自动编码器,不能把“冻结”当作绝对要求。文生图从随机潜变量起步时不需要编码一张输入照片,但图生图需要。

十三、横向对比:把所有方法放进一张表

方法学什么生成方式代表系统主要代价
VAE重建图像,并约束潜变量分布潜变量一次解码早期 VAE;LDM 中的自动编码器重建偏平滑,潜空间容量有限
GAN生成器与判别器的对抗目标生成器一次前向DCGAN、StyleGAN 系列训练不易平衡,易模式坍塌
DDPM预测噪声 ϵ\epsilon(也可以是 x0x_0 或 vv)像素空间多步迭代去噪DDPM 及后续像素空间扩散迭代次数多,高分辨率昂贵
Score-based / SDE带噪数据的 ∇xlog⁡pt\nabla_x\log p_t反向 SDE 随机采样,或 probability flow ODE 确定性积分Song 等人的 SDE 框架离散化误差明显,依赖求解器设置
DDIM / DPM-Solver不改变已训练的网络,只重新设计采样少步确定性或半确定性迭代DDIM、DPM-Solver压缩步数伴随质量取舍
LDM在压缩潜空间里学条件去噪潜空间迭代后由 decoder 解码SD 1.x / 2.x、SDXL细节与文字受自动编码器重建能力限制
DiT扩散目标不变,骨干换成 Transformer对潜变量 patch 序列迭代去噪DiT、PixArt、MMDiT注意力随 token 数呈平方成本
Flow Matching / Rectified Flow概率路径上的速度场沿速度场积分 ODE,常可少步SD3 / 3.5、FLUX、Wan、HunyuanVideo、π0复杂分布仍需充分训练,少步多依赖求解器或蒸馏
自回归 / 掩码生成下一个视觉 token,或被遮盖的 token逐 token 解码,或迭代并行填补PixelCNN、VQGAN + Transformer、MaskGIT序列长,误差逐步累积
一致性模型 / 蒸馏从教师蒸馏,或自洽约束一到数步直接出结果Consistency Models、LCM采样约定不同,不能只把步数调小

读这张表时可以回到开头的四个问题:图像怎样表示、模型学什么、用什么网络、推理如何得到图像。 “学什么”是目标层,“生成方式”同时暴露了生成发生在哪个空间、大致需要多少步,“代表系统”则提醒同一个名字底下往往是一组配方而不是单一公式。

也正因为空间、目标和骨干可以自由组合,才会出现“潜空间 + Transformer + 流匹配”这样的新系统,而不是某个方法整体取代另一个。

十四、如何选择和实际入门

建立现代文本生成基线可从成熟潜空间模型开始;研究规模扩展和文本交互关注 DiT、MMDiT;低延迟应用同时评估少步蒸馏与实际硬件,特定封闭域可考虑 GAN。不要仅凭方法年代判断适合程度。

用 Diffusers 加载模型时,以对应 model card 和库版本为准。先固定提示词、种子、分辨率、步数和 guidance,理解 pipeline 中 text encoder、autoencoder、生成骨干与 scheduler 的作用,再尝试 LoRA 或额外控制。

评估除了样本好看,还应看提示遵循、对象关系、文字、细节、多样性、失败样例和延迟。FID 依赖数据与特征提取设置,不能独自代表文本对齐;不同基准上的指标也不宜直接排名。

这条路线最终可以理解为三个可以组合的选择:在什么空间生成,用什么目标学习,用什么骨干预测。 GAN 与扩散体现不同学习方式;LDM降低空间成本;Transformer 扩展关系建模;流匹配与蒸馏进一步探索生成路径和推理效率。

参考资料

打开原图