Stable Diffusion 的核心做的是一件听起来非常反直觉的事: 它先把图片揉成噪声,再学着一步一步把噪声"擦"回图。 这个页面用动画和滑块带你看懂这件事--不需要数学。
米开朗琪罗那句被引滥的话的字面翻译--只不过他的"石头"是一片随机噪声。
"雕像本来就在石头里,我只是把多余的部分凿掉。"Stable Diffusion 的工作方式几乎是这句话的字面翻译--只不过它的"石头"是一片彻底随机的噪声。
雕塑家盯着一块毫无意义的大理石,脑子里已经有了那个雕像。他要做的就是不停地凿、不停地磨,把不属于雕像的部分一点点去掉。
"雕像本来就在石头里。"
- 米开朗琪罗(据说)
SD 盯着一片彻底随机的噪声,它的"脑子"里也有一个雕像--那是它在几十亿张图上学会的"图应该长什么样"。它一步步把不属于图的噪声擦掉。
"这片噪声里藏着一只猫。我的工作是擦掉不是猫的部分。"
- SD(如果它会说话)
前向扩散(Forward Diffusion)--把一张干净的图慢慢加噪到完全看不出来。拖动滑块看一只"猫"是怎么消失的。
反向扩散(Reverse Diffusion)--SD 真正在干的事。从纯噪声出发,每步问"此刻该擦掉哪些像素",擦一点,再问,再擦。
完整的 Stable Diffusion 是三个独立训练的神经网络串在一起。点一下任意一个零件,看它在干嘛。
CLIP / T5
把你写的文字变成一串数字(向量),这串数字代表'图里应该有什么'。
Denoiser / DiT
干苦力活的。每一步都看一眼当前带噪图、读一遍文字向量,然后猜出该擦掉哪些噪声。
Decoder
翻译官。SD 不在原图上去噪(太贵),而是在一个'压缩版的图'里干活,最后由 VAE 把它解压回 512×512 像素。
每一个零件都是一篇博士论文。但你只需要知道它们的分工:文字 → 向量 → 在压缩空间里反复去噪 → 解压成图。下面那张是 SD 1.5 一次完整生成的全过程。
Classifier-Free Guidance 是 SD 里最常被调的参数,控制模型对 prompt 的遵从程度。低 -> 跑题;高 -> 严格但过头会崩坏。
按下 GENERATE,看一次完整的 SD 推理:文字进来、变成向量、在潜空间里被反复去噪、最后被 VAE 解压成图。这不是真在跑模型,但每一步的视觉变化都对应真实流程。
一句话总结 + 接着读下去的地方。
Stable Diffusion 是一个学会了"擦噪声"的网络。 它在潜空间里反复擦, 每一步都被你的 prompt 通过 U-Net 引导着擦的方向, 最后让 VAE 把擦出来的东西翻译回像素。
就这么简单--也就这么复杂。每一个零件都还能再展开成一篇博士论文。下面是几个你可以接着读下去的地方。
从 DDPM 到 Score-based,最权威的中文译本来自 Lilian 本人 · OpenAI
lilianweng.github.io → 可视化 · 入门本页的精神先辈。配图比这页还多。
jalammar.github.io → 动手 · 代码三行 Python 跑起 SD:from diffusers import StableDiffusionPipeline
把每个零件画成节点连起来,所见即所得。社区的工作流之王。
github.com/comfyanonymous → 论文 · 原始Stable Diffusion 的亲爹论文,CVPR 2022。22 页,公式不多。
arxiv.org/abs/2112.10752 → 代码注释 · 进阶把 DDPM 论文的每一行公式翻译成 PyTorch 代码--边读公式边读代码的最快方式。
huggingface.co/blog →