深度解析:Stable Diffusion 底层原理 + U-Net Denoise 去噪机制全拆解

一、引言

Stable Diffusion 入门:架构、空间与生成流程概览-CSDN博客

Stable Diffusion 核心模块深度拆解:CLIP、U-Net 与 VAE 原理全解析-CSDN博客

在上一篇博客中,我们已经完成了 Stable Diffusion 核心模块的表层拆解:CLIP 文本编码器负责将用户需求转化为模型可识别的语义信号,U-Net 作为核心生成单元承接生成任务,VAE 负责完成最终的图像渲染。但这只是 "知其然",本节课我们将更进一步,深入 Stable Diffusion 的底层原理,重点解析 U-Net 核心的 Denoise 去噪机制,以及支撑这一机制的数学逻辑与实现细节,让大家不仅知道 "模型能生成图像",更明白 "图像是如何从噪声中被还原出来的"。

二、生成流程

  • 用户输入文字 → CLIP 编码成语义条件
  • 随机噪声初始化 → 进入潜空间
  • 迭代 Denoise 去噪循环(核心步骤)
    • 每一步:U-Net 根据 当前潜变量 + 时间步 + 文本条件 预测噪声
    • 从潜变量中减去预测噪声,逐步逼近清晰图像
  • 去噪完成 → 潜特征送入 VAE 解码器
  • VAE 解码 → 得到像素空间图像
  • 后处理 → 输出最终图片

三、用户输入文字 → CLIP 编码成语义条件

3.1 用户输入提示词 Prompt

用户输入一句自然语言,例如:

A cat sitting on a moon, cyberpunk style

这是人类语言,模型无法直接理解,必须经过 CLIP 文本编码器

由于SD的输入编码器(InputEncoder)中使用的是OpenAI的Clip模型来理解用户输入的文本,而Clip模型的底层是使用英文 进行训练的,所以Clip模型只接收英文文本,即Stable Diffusion只接收英文输入。如果我们想输入中文,那么可以先通过翻译软件进行翻译成英文之后,再输入到SD中。

3.2 CLIP

把文字 → 模型能懂的语义条件

3.2.1 分词 Tokenization

CLIP 先把句子切成子词(Token):A / cat / sitting / on / a / moon / , / cyberpunk / style

并加上起始、结束、填充符。

3.2.2 词嵌入 + 位置编码

每个 Token → 转换成向量并加入位置信息,让模型知道语序。

3.2.3 Transformer 编码

  • 输入编码器(InputEncoder)在接收到用户输入的文本之后,会通过ClipText来理解用户输入的信息,并把理解的信息转换为大小为77 x 768的向量。

    • Clip模型限制了最多可以输入77个token,可以简单理解成77个单词。

    • Clip模型训练时会把大图片切成16x16大小的小图片,然后在提取小图片中的RGB3个颜色通道的数据,并最终把小图片表示成一个16x16x3=768的向量。同时Clip为了让文本Token能更好的与图片信息关联,因此也把token的向量长度设计为768。

  • 综上所述,ClipText会把用户输入的文本为77x768大小的向量。

  • Clip除了文本(Text)编码器,还有图像(Image)编码器,因此Stable Diffusion除了用文本来创建图之外,还可以使用图片生图片。

四、随机噪声初始化 → 进入潜空间

Stable Diffusion 不从空白开始画 ,而是从标准高斯随机噪声开始。

噪声形状由 VAE 压缩比决定:

  • 原图 512×512
  • VAE 下采样 8 倍→ 潜空间大小 = 64×64×4

这就是模型真正操作的 "画布"。

五、Denoise去噪流程

图片生成器(Image Generator)在内部首先会在潜空间中生成一张随机的图片,这个图片用 4×64×64 大小的向量表示。它本质上就是一张完全由噪声组成的潜空间图,没有任何实际内容,只是模型生成的起点。

Stable Diffusion 生成图像,本质就是不断去噪 。模型不是 "画" 图像,而是从纯噪声里,一步步把噪声去掉,露出图像

整个 Denoise 去噪过程,分为两大阶段:

  1. 前向扩散过程(训练时用):给清晰图像不断加噪声,直到变成纯高斯噪声
  2. 反向去噪过程(推理生成时用):从纯噪声开始,一步步预测并移除噪声,恢复图像

在生成阶段,模型会使用 U-Net 来不断提升这张随机噪声图的质量。但这个提升过程不是一步完成的,往往需要数十步迭代 才能把噪声完全去掉,因此就引入了 Scheduler 调度器,来控制和驱动这个循环提高质量的过程,直到设定步数执行完成,最终得到一张按文本描述生成好的清晰潜空间图片。

5.1 角色

在正式讲流程前,先搞清楚 4 个核心东西:

  • 噪声图(A):就是当前这一步 "糊得看不清" 的潜空间图。

    • 初始是纯随机噪声(第 1 步)。
    • 后面每一步是上一轮去噪后的结果,噪声越来越少,图越来越清晰。
    • 大小:64×64×4(潜空间尺寸)
  • 噪声预测器(U-Net):模型的核心大脑。

    • 任务:看图 → 找噪声 → 输出噪声长什么样。
    • 在 Stable Diffusion 里,U-Net 就是噪声预测器
  • 正向词 / 负向词(来自 CLIP)

    • 正向词 :用户想要的内容(比如 "一只猫在沙滩上")。作用:告诉预测器 "像猫的部分不能删,是图像内容"。
    • 负向词 :用户不想要的内容(比如 "模糊、低质量、水印")。作用:告诉预测器 "像这些杂乱东西的部分是噪声,要删掉"。
  • 噪声计划 + Step(步骤)

    • 噪声计划 :提前定好的噪声强度递减表。比如第 1 步噪声超强,第 10 步噪声极弱。
    • Step :当前是第几次去噪(比如 Step 8)。作用:让预测器知道当前噪声有多强,该预测多大比例的噪声。

5.2 流程

Scheduler 调度器每启动一轮循环,就会执行一次完整的 Denoise 去噪。我们以第 t 步为例,完整拆解从「带噪图」到「更清晰图」的 5 步过程:

第①步:预测 "不要的噪声"(基于正向词)

动作 :噪声预测器(U-Net)盯着 噪声图(A)正向词 ,输出 噪声图(B)

通俗解释

噪声图(A)是一张被噪声弄脏的 "脏图",正向词相当于给预测器打了个底:「这张图底下应该是一只猫」。预测器会基于这个语义,精准区分内容和噪声:

  • 符合「猫」的纹理、形状、结构 → 判定为图像内容,保留
  • 杂乱的、不符合「猫」的随机噪点 → 判定为噪声最终输出一张只包含噪声的图(B),也就是这张脏图里「需要被去掉的部分」。

第②步:预测 "不能有的噪声"(基于负向词)

动作 :噪声预测器再次盯着 噪声图(A)负向词 ,输出 噪声图(C)

通俗解释

负向词是给预测器加的「质量约束」,相当于告诉它:「我不要模糊、不要重影、不要水印,这些都属于额外的脏东西」。预测器会基于负向词,专门识别那些影响画质的杂项:

  • 模糊的区域、重影的纹理、多余的水印 → 判定为「负面噪声」最终输出一张代表 "负面噪声" 的图(C),也就是这张图里「绝对不能出现的部分」。

第③步:做减法,得到 "差异噪声"(D = B - C)

动作 :用 第①步的噪声(B) 减去 第②步的负面噪声(C) ,得到 差异噪声图(D)

通俗解释

B 是「整体需要去掉的噪声」,C 是「额外需要去掉的负面噪声」。用 B 减去 C,本质是强化真正需要去除的噪声:把那些既不属于正向内容、又属于负面杂项的部分放大,让模型更坚决地去掉这些 "双重脏点"。

第④步:放大细节 + 融合(D × CFG + 加回 C)

动作

  1. 差异噪声(D) 乘以一个系数 CFG(放大比例)。
  2. 把放大后的 D,和 负面噪声(C) 相加,得到 最终不需要的噪声图(E)

通俗解释

  • CFG(无分类器引导强度) :可以理解为 "固执程度 "。
    • CFG 大:模型更听文字的话,严格去掉噪声,图像更贴合文本,但可能太死板、不自然。
    • CFG 小:模型比较自由,图像更自然、多样,但可能没那么贴合文字。
  • 乘以 CFG 后,差异噪声的细节更明显
  • 再加回 C,就得到了一个精准的 "噪声屏蔽列表"(E)

第⑤步:最终去噪(A - E = F)

动作 :用 原始噪声图(A) 减去 最终不需要的噪声图(E) ,得到 去噪后的高质量噪声图(F)

通俗解释

  • A 是现在的 "脏图",E 是我们算出来的 "脏部分"。
  • 减去 E,就是把脏部分去掉
  • 得到的 F 就是 这一步去噪后的结果

关键逻辑

  • 这一步之后,图就从 A 变成了 F。
  • F 比 A 噪声更少、更清晰。
  • 然后 F 会作为下一轮的输入(A),继续循环几十次。

把整个流程比作擦玻璃

  • 噪声图(A):被厚灰尘完全盖住的玻璃。
  • 正向词 :告诉你 "玻璃底下画的是一只猫"。
    • (擦的时候要保留猫的形状)
  • 负向词 :告诉你 "不要有灰尘印、不要有划痕"。
    • (擦的时候要重点去掉这些)
  • 噪声预测器 :你的眼睛。
    • 先看哪里是灰尘(B)。
    • 再看哪里是讨厌的脏(C)。
  • Denoise 计算
    • 用眼睛找出差异(D)。
    • 加大力度擦(CFG)。
    • 得到最终要擦的范围(E)。
  • 最终结果(F)
    • 把灰尘擦掉,玻璃就清晰一点了。

六、去噪完成 → 潜特征送入 VAE 解

经过前面几十轮 Denoise 去噪后,我们已经得到了一张几乎无噪声的潜空间特征图(也就是你图里的「潜特征」):

  • 尺寸:64×64×4(Stable Diffusion 1.5 标准潜空间大小)
  • 本质:一串抽象的数学向量,人类肉眼完全看不见
  • 状态:已经完全符合用户的正向词 / 负向词要求,只等「渲染成图」

现在要把去噪完成的潜空间特征图 ,完整输入到 VAE 解码器(Decoder) 中。

  • 潜空间:是模型内部运算的「低维压缩空间」,计算量小、效率高,但不可视化
  • 像素空间:是人类能看到的「高维真实图像空间」,有 RGB 三通道、可直接观看

VAE 就是连接这两个空间的唯一桥梁,它的解码器专门负责「把潜空间的抽象特征,还原成像素空间的真实图像」。

七、VAE 解码 → 得到像素空间图像

VAE 解码器的核心任务:把 64×64×4 的低维潜特征,上采样 8 倍 ,还原成 512×512×3 的高维 RGB 像素图像。

7.1 流程

7.1.1 输入:潜特征 z_0(64×64×4)

这是去噪完成的最终潜空间特征,包含了图像的所有语义、结构、细节信息。

7.1.2 多层上采样 + 卷积还原

VAE 解码器通过转置卷积(反卷积)+ 普通卷积的组合,逐步放大特征图:

  • 第 1 层:64×64 → 128×128,补全中尺度结构
  • 第 2 层:128×128 → 256×256,细化物体形状
  • 第 3 层:256×256 → 512×512,还原细节纹理

每一层卷积都会做两件事:

  • 把低维特征「放大」到更高分辨率
  • 融合细节信息,让图像更清晰、更真实,避免模糊和失真

7.1.3 输出:RGB 像素图像 512×512×3

最终输出一张人类肉眼可直接观看的彩色图像

  • 3 个通道分别对应红(R)、绿(G)、蓝(B)三原色
  • 每个像素点都有 0~255 的亮度值,构成完整的画面

7.2 为什么可以精准还原?

因为 VAE 是和 Stable Diffusion 一起训练的:

  • 训练时,VAE 编码器把真实像素图压缩成潜特征,给 U-Net 训练用
  • 训练完成后,VAE 解码器就学会了「潜特征 → 像素图」的精准映射关系
  • 相当于提前练好了「图纸→房子」的施工能力,推理时直接用就行

VAE 解码就像「把压缩文件解压」:

  • 潜特征 = 压缩包(体积小、看不见内容)
  • VAE 解码器 = 解压工具
  • 解压后 = 完整的、可直接打开的图片文件

八、后处理 → 输出最终图片

这一步是「收尾工作」,把解码后的原始像素图,处理成可使用、可保存的最终图片,核心包含这些操作:

1. 像素值归一化与格式转换

  • VAE 输出的像素值是浮点型(-1~1 或 0~1) ,需要转换成整数型(0~255),符合图片存储标准
  • 把浮点张量转换成 PIL Image / OpenCV 可处理的图像格式

2. 尺寸调整与裁剪(可选)

  • 如果生成的是 512×512,直接输出;如果需要其他尺寸(如 768×512、1024×1024),做对应缩放或裁剪
  • 部分场景会做超分辨率放大,提升图像清晰度(如 Real-ESRGAN)

3. 色彩校正与优化(可选)

  • 修正 VAE 解码可能出现的色偏、过曝、欠曝问题
  • 调整对比度、饱和度,让画面更符合视觉观感

4. 保存与输出

  • 把处理好的图像,保存为 PNG(无损)、JPG(有损)等常用格式
  • 展示在 WebUI 界面、导出到本地,完成整个文生图流程

5. 通俗理解

后处理就像「照片冲印」:

  • 解码后的像素图 = 刚洗出来的底片
  • 后处理 = 裁剪、调色、装裱
  • 最终输出 = 你能拿到手、能分享的成品照片

九、总结

table Diffusion 从文字输入到最终出图,是一套环环相扣的完整链路,核心分为 6 大环节:

  • 用户输入文字 → CLIP 编码成语义条件:用户输入的正向 / 负向提示词,经 CLIP 文本编码器处理,转化为 U-Net 可识别的文本特征,为后续去噪生成提供语义引导,明确 "要生成什么、不要生成什么"。
  • 随机噪声初始化 → 进入潜空间 :图片生成器在潜空间中生成一张4×64×64大小的纯随机噪声图,作为整个生成过程的起点,这张图仅为抽象向量,无实际图像内容,是后续去噪的初始输入。
  • 迭代 Denoise 去噪循环(核心步骤) :这是整个生成流程的核心心脏,由 Scheduler 调度器驱动数十步迭代循环:
    • 每一步中,U-Net 作为噪声预测器,结合当前带噪潜变量、时间步(Step)、CLIP 输出的文本条件,精准预测当前图中的噪声;
    • 再通过 "预测噪声→计算差异噪声→CFG 放大→移除噪声" 的完整单步去噪流程,从潜变量中减去预测噪声,让图像逐步逼近清晰状态;
    • 每一轮循环都由 Scheduler 控制噪声强度与迭代节奏,重复数十次后,完成从纯噪声到清晰潜特征的质量提升。
  • 去噪完成 → 潜特征送入 VAE 解码器:迭代去噪完成后,得到符合文本描述的清晰潜空间特征图,将其送入 VAE 解码器,完成从模型内部运算到视觉呈现的过渡。
  • VAE 解码 → 得到像素空间图像 :VAE 解码器将4×64×64的低维潜特征,通过上采样与卷积还原为512×512×3的高维 RGB 像素图像,让抽象特征转化为人类肉眼可直接观看的画面。
  • 后处理 → 输出最终图片:对解码后的原始像素图进行格式转换、色彩校正、尺寸调整等优化,最终保存为 PNG/JPG 格式的成品图片,完成从文字到图像的全链路闭环。

Stable Diffusion 的生成本质,是 **"从噪声中还原图像"**:CLIP 负责 "定方向",为去噪提供语义约束;U-Net 负责 "找噪声",通过多步迭代移除噪声、提升图像质量;Scheduler 负责 "控节奏",驱动去噪循环稳定执行;VAE 负责 "做渲染",将抽象潜特征转化为可视化图像。四大核心组件协同配合,最终实现从一句文字到高质量图像的生成,这也是 Stable Diffusion 文生图技术的核心底层逻辑。

相关推荐
舒一笑2 小时前
AI 时代最火的新岗位,不是提示词工程师,而是 Harness 工程师
人工智能·程序员·设计
明月醉窗台2 小时前
[jetson] AGX Xavier 安装Ubuntu18.04及jetpack4.5
人工智能·算法·nvidia·cuda·jetson
青稞社区.2 小时前
从最基础的模型出发,深度剖析高性能 VLA 的设计空间
人工智能·agi
夜猫逐梦2 小时前
【AI】 Claude Code 源码泄露:一场关于安全与学习的风波
人工智能·安全·claude code·源码泄漏
浔川python社2 小时前
更多人工智能出现,会带来哪些利与弊
人工智能
stereohomology2 小时前
大语言模型的认知边界 & 在认知边界处的系统性崩溃
人工智能·语言模型·自然语言处理
羊羊小栈2 小时前
基于「YOLO目标检测 + 多模态AI分析」的智慧农业茶叶病害检测预警系统
人工智能·yolo·目标检测·计算机视觉·毕业设计·大作业
搜狐技术产品小编20232 小时前
智能代码审查基于大语言模型的自动化代码质量保障平台设计与实践
运维·人工智能·语言模型·自然语言处理·自动化
云烟成雨TD2 小时前
Spring AI 1.x 系列【26】结构化输出执行流程
java·人工智能·spring