Skip to content

扩散模型与图像生成

文生图(Stable Diffusion、DALL·E、Midjourney、Flux)和文生视频(Sora)背后都是扩散模型。它和大语言模型是两条不同的技术路线,理解其原理是多模态面试的高频点。

一、扩散模型的核心思想

扩散模型(Diffusion Model)的灵感来自物理扩散,分两个过程:

  • 前向过程(加噪):对一张真实图片逐步添加高斯噪声,经过很多步后变成纯噪声。这一步是固定的、不学习的。
  • 反向过程(去噪):训练一个神经网络,学会从噪声一步步「去噪」还原出图片
真实图 ──加噪→ ──加噪→ ... ──→ 纯噪声     (前向,固定)
纯噪声 ──去噪→ ──去噪→ ... ──→ 生成图     (反向,模型学习)

生成时:从一团随机噪声出发,让训练好的网络反复去噪 T 步,「雕刻」出一张图。模型实际学的是「预测每一步要去掉的噪声」

二、与 GAN / VAE 的对比

模型原理特点
GAN生成器与判别器对抗快(一步生成),但训练不稳、易模式崩溃
VAE编码到隐空间再解码稳定,但生成偏模糊
Diffusion多步去噪质量高、多样性好、训练稳,但生成慢(多步)

扩散模型以高质量 + 训练稳定胜出,成为图像生成主流,代价是采样需多步、较慢(后续有加速方法)。

三、关键技术

3.1 Latent Diffusion(潜空间扩散)= Stable Diffusion

直接在像素空间做扩散太贵(高分辨率图像素多)。Latent Diffusion 先用 VAE 把图片压缩到低维潜空间,在潜空间做扩散,最后解码回像素。这让消费级显卡也能跑文生图——这就是 Stable Diffusion 的核心。

3.2 文本如何控制生成?

文生图要让文本控制图像内容:

  • 用文本编码器(如 CLIP 的文本塔,见 多模态)把 prompt 编码成向量。
  • 通过**交叉注意力(Cross-Attention)**把文本向量注入去噪网络,引导每一步去噪朝着「符合描述」的方向。

3.3 Classifier-Free Guidance(CFG)

同时算「有文本条件」和「无条件」的去噪预测,按 引导强度 放大二者之差,让生成更贴合 prompt。CFG scale 越大越「听话」但可能失真——这就是文生图里常调的「guidance scale」。

3.4 去噪网络:U-Net → DiT

  • 早期用 U-Net(卷积为主)做去噪骨干。
  • 新一代用 DiT(Diffusion Transformer)——把去噪网络换成 Transformer,可扩展性更好,Sora、Stable Diffusion 3、Flux 都采用,是当前趋势。

3.5 采样加速

原始 DDPM 要上千步,慢。DDIM、DPM-Solver、LCM、一致性模型(Consistency Models) 等把采样压缩到几十步甚至 1~4 步,大幅提速。

四、应用与代表

  • 文生图:Stable Diffusion、DALL·E 3、Midjourney、Flux。
  • 文生视频:Sora、可灵、Runway——在时空上做扩散(DiT + 时序)。
  • 图像编辑/可控生成:ControlNet(用边缘/姿态/深度等控制)、Inpainting(局部重绘)、LoRA(轻量定制画风,原理同 LoRA)。

五、扩散 vs 自回归

图像生成主流是扩散(并行去噪、质量高);语言生成主流是自回归(逐 token)。但二者在融合:也有自回归图像生成(如把图像 token 化后像语言一样生成),以及用扩散做语言生成的探索。

六、高频追问

Q:扩散模型的基本原理? 前向对图片逐步加噪直到变纯噪声(固定);反向训练网络逐步去噪还原(学习)。生成时从随机噪声出发反复去噪「雕刻」出图,模型实际学的是「预测每步要去掉的噪声」。

Q:为什么扩散模型比 GAN 更主流? 扩散训练稳定(不像 GAN 易崩溃/模式崩溃)、生成质量高、多样性好。代价是采样需多步、较慢,但有 DDIM/LCM 等加速方法缓解。

Q:Stable Diffusion 为什么能在消费级显卡跑? 它是 Latent Diffusion——先用 VAE 把图片压到低维潜空间,在潜空间做扩散(数据量小得多),再解码回像素,大幅降低算力需求。

Q:文本怎么控制图像生成? 用文本编码器(如 CLIP)把 prompt 编码成向量,通过交叉注意力注入去噪网络,引导每步去噪朝符合描述的方向;再用 Classifier-Free Guidance 放大文本条件的影响。

Q:U-Net 和 DiT 的区别? U-Net 是卷积为主的去噪骨干(早期 SD);DiT 用 Transformer 替代,可扩展性更好,Sora/SD3/Flux 等新模型采用,是当前趋势。

Q:扩散模型和大语言模型是一回事吗? 不是。LLM 是自回归、逐 token 生成文本;扩散模型是多步去噪、并行生成图像/视频。它们是不同的生成范式,但都可用 Transformer 作骨干,且在多模态系统里常配合使用。

基于 MIT 许可发布