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

张开发
2026/4/9 11:12:02 15 分钟阅读

分享文章

Stable Diffusion 核心模块深度拆解:CLIP、U-Net 与 VAE 原理全解析
一、引言Stable Diffusion 入门架构、空间与生成流程概览-CSDN博客在上一篇博客中我们从宏观架构层面完整梳理了 Stable Diffusion 的核心生成逻辑从像素空间与潜在空间的定义到输入编码器、图片生成器、图片解码器三大功能模块的协同工作再到扩散模型扩展模型的生成范式与应用场景搭建起了对 Stable Diffusion 的完整认知框架。但宏观架构只是理解模型的第一步。想要真正吃透 Stable Diffusion 的技术本质就必须深入到三大功能模块对应的底层核心网络负责文本语义编码的CLIP 文本编码器、承担潜空间去噪核心任务的U-Net 去噪网络以及完成特征还原的VAE 变分自编码器。本文将彻底拆解这三大核心模块的技术原理、网络结构与工作机制从算法层面揭开 Stable Diffusion “从文字到图像” 的完整技术链路为想要深入研究扩散模型的读者提供系统的技术参考。二、CLIP我们已经明确了 Stable Diffusion 三大功能模块的核心定位输入编码器Input Encoder作为模型的信息入口承担着将用户输入的自然语言提示词转换为模型可理解的高维语义向量的关键任务。而支撑这一功能的核心技术正是CLIPContrastive Language-Image Pre-training文本编码器。如果说输入编码器是 Stable Diffusion 的 “翻译官”那么 CLIP 就是这个翻译官的 “核心大脑”—— 它通过跨模态预训练搭建起了自然语言与视觉特征之间的语义桥梁让模型真正 “读懂” 人类的文字描述为后续潜空间的生成过程提供精准的方向引导。2.1 定义CLIP 是由 OpenAI 提出的跨模态对比学习预训练模型其核心设计目标是实现「文本」与「图像」两个模态的语义对齐。简单来说CLIP 通过在海量图文配对数据上进行预训练学习到了 “文字描述” 和 “对应图像” 的统一语义表示让文本特征和图像特征能够映射到同一个高维向量空间中。对于 Stable Diffusion 而言CLIP 文本编码器的核心价值就是将用户输入的提示词Prompt编码为与图像潜空间语义对齐的特征向量从而让 U-Net 去噪网络能够遵循文本语义生成符合要求的图像。没有 CLIP 的语义引导Stable Diffusion 就无法实现文生图只能生成无规则的随机图像。2.2 组成CLIP 在整体上由两大独立分支构成二者结构对称、训练时对齐推理时可单独使用文本编码器Text Encoder把文本编码成向量长度不超过77如果超过会自动截断图像编码器Image Encoder把图片编码成向量尽量是正方形2.3 文本编码器CLIP 的文本编码器是一个标准的 Transformer 结构主要由以下几部分组成2.3.1 分词器Tokenizer作用把一句自然语言提示词切成模型能处理的子词Token任务分词、加起止符、填充固定长度意义让文字变成离散序列才能输入神经网络2.3.2 词嵌入层Token Embedding作用将每个 Token 映射为一个低维向量意义把离散编号变成连续特征让语义信息可被学习2.3.3 位置编码Positional Embedding作用给每个 Token 加上位置信息意义让模型知道词语顺序理解语序和语法2.3.4 多层 Transformer 编码器作用对文本序列进行深层语义建模意义捕捉上下文关系生成富含语义的全局文本特征2.3.5 池化与特征输出层作用从序列特征中提取一个整体的句子级特征意义输出最终的文本嵌入向量用于后续跨模态对齐Tokenizer把人类语言切成模型可处理的序列Token Embedding将子词转为向量表示Positional Embedding注入语序信息Transformer 层深度提取语义理解整句含义输出特征生成与图像空间对齐的文本条件向量2.4 训练机制CLIP 的训练基于海量图文配对数据集原始训练集规模超 4 亿对图中 32768 为单批次训练样本数核心分为三步双路编码将同一批次的图像与对应文本描述分别输入图像编码器和文本编码器生成对应的图像特征向量与文本特征向量相似度计算通过余弦相似度计算批次内所有「图像 - 文本」对的匹配程度同时用对称交叉熵损失作为优化目标语义对齐通过反向传播优化两个编码器让「正确配对的图文」特征相似度最大化「错误配对的图文」相似度最小化最终实现文本与图像在同一特征空间的语义对齐。这一对比训练机制让 CLIP 学到了通用的跨模态语义表示无论输入是文本还是图像都能映射到同一个语义空间且语义一致的内容特征高度相似。这也是 CLIP 能成为文生图「翻译官」的根本原因 —— 它天生就懂「文字描述对应什么画面」。2.5 分类器我们先回到 CLIP 的核心目标让模型 “看懂” 图像“读懂” 文字并且知道 “文字和图像是对应的”。对比训练只是让模型学到了图文的语义关联但要让模型能 “识别新图像”就需要一个分类器—— 相当于给模型一个 “标准答案库”让它能把图像和标准答案做匹配。分类器就相当于一本「图文对照词典」词典里的每一页写着一个类别的文字描述比如 “猫”同时存着这个描述对应的向量模型拿到一张新图像就去词典里找 “哪一页的向量和图像最像”就能知道图像是什么2.6 零样本预测零样本就是「模型从来没见过这个东西也能准确识别」。举个例子CLIP 训练的时候只见过 “猫、狗、汽车” 的图像但从来没见过 “熊猫” 的图像。但只要我们在分类器里加上a photo of a panda这个文字描述的向量模型就能准确识别出一张新的熊猫图片哪怕它从来没见过熊猫长什么样。步骤输入新图像一张模型训练时完全没见过的图片比如熊猫图像转向量用 CLIP 的图像编码器把这张熊猫图片转换成「图像特征向量」分类器匹配把这个图像向量和分类器里所有类别的文本向量包括a photo of a panda一一计算相似度输出分类结果相似度最高的那个类别熊猫就是模型的预测结果2.7 与Stable Diffusion零样本能力让 Stable Diffusion 支持任意提示词Stable Diffusion 用的是预训练好的 CLIPCLIP 的零样本能力让它能理解用户输入的任何文字哪怕是训练时没见过的组合比如 “赛博朋克风格的猫在太空”不用重新训练就能把文字转换成对应的语义向量引导 U-Net 生成图像。分类器的语义对齐保证生成的准确性CLIP 的分类器本质是「图文语义的标准答案库」它让 CLIP 的文本编码能精准对应图像的语义不会出现 “文字是猫生成的是狗” 的情况保证 Stable Diffusion 生成的图像和用户的提示词高度一致。2.8Stable Diffusion中的工作流程CLIP 是 Stable Diffusion 的「翻译官 导航员」。翻译官把人类说的自然语言提示词比如 “沙滩上的船”翻译成模型能看懂的「语义向量」一串数字导航员把这个语义向量喂给核心生成器 U-Net给它指明生成方向让它严格按照文字描述去画而不是乱生成。没有 CLIPStable Diffusion 就只是一个能在潜空间生成随机噪声的模型根本做不到「文生图」。第 1 步用户输入提示词Prompt用户在 SD 里输入一段自然语言比如一个沙滩一艘船靠在沙滩边。这是人类能看懂的文字但模型完全无法直接理解。第 2 步CLIP 文本编码器接手完成「文字→向量」的翻译这一步就是 CLIP 核心工作完全对应我们之前讲的结构和训练逻辑分词Tokenizer把整句提示词切成一个个模型能处理的子词Token比如把 “沙滩” 切成对应的子词单元同时加上起止标记词嵌入 位置编码把每个 Token 转换成初始向量再加上位置信息让模型知道词语的先后顺序Transformer 深度编码通过多层 Transformer 提取整句的语义最终输出一个高维文本特征向量Text Embeddings这个向量里完整存了 “沙滩、船、靠岸” 这些语义信息是 CLIP 用对比训练学到的、和图像空间对齐的语义表示。第 3 步把语义向量喂给 U-Net当「生成导航」CLIP 把翻译好的语义向量作为条件引导Condition输入给 SD 的核心生成器 ——U-Net 去噪网络。U-Net 拿到这个向量就知道了「用户要画什么」在潜空间做反向扩散去噪的时候会严格按照这个语义约束一步步把噪声变成符合文字描述的潜空间特征图。第 4 步U-Net 生成完成CLIP 任务结束等 U-Net 在潜空间生成好符合语义的特征图后CLIP 的工作就彻底完成了。后续 VAE 解码器把潜空间特征还原成像素空间的可视化图像整个过程不再需要 CLIP 参与。三、U-Net通过 CLIP 文本编码器我们已经将用户的文字提示转化为了模型能够理解的文本语义特征。但仅仅 “读懂文字” 还远远不够Stable Diffusion 最终要完成的是从噪声生成图像的核心任务。文本特征只负责提供 “方向”真正在潜在空间中执行迭代去噪、逐步构建图像的是整个模型的核心生成网络 ——U-Net 去噪网络。如果说 CLIP 是 Stable Diffusion 的 “眼睛和耳朵”负责理解用户想要什么那么U-Net 就是 Stable Diffusion 的大脑和双手负责真正把图像 “画” 出来。接下来我们就深入解析这一核心模块看看 U-Net 是如何在潜在空间中一步步将随机噪声转化为符合文本描述的清晰图像。3.1 定义U-Net 最初是为医学图像分割任务提出的卷积神经网络因其整体结构呈现字母“U” 形而得名。在 Stable Diffusion 中U-Net 经过改进后成为核心的去噪网络承担整个模型最关键的任务在潜在空间中根据文本条件预测噪声并通过多步迭代逐步去除噪声最终生成符合语义的图像特征。3.2 结构Stable Diffusion 里的 U-Net 结构对称分为三大部分下采样路径编码器 / 收缩路径上采样路径解码器 / 扩展路径跳跃连接Skip Connections整体呈现U 型先不断压缩特征、提取高级语义再逐步恢复分辨率同时保留底层细节。3.2.1 下采样路径这部分的作用是不断压缩特征图尺寸提取图像的高层语义信息。主要由以下层构成卷积层Conv提取局部特征边缘、纹理、结构激活层引入非线性让网络能学习复杂模式池化 / 步长卷积不断缩小特征图尺寸扩大感受野作用总结把输入的潜在空间特征一步步压缩成高度抽象的语义特征让模型理解 “画面里有什么、布局如何”。3.2.2 上采样过程这部分与编码器对称作用是逐步把特征图恢复到原始尺寸重建图像细节。主要包括转置卷积 / 上采样层把小尺寸特征逐步放大卷积层融合信息细化图像结构归一化层稳定训练、提升生成质量作用总结把抽象的高层语义一步步 “还原” 成清晰、高分辨率的潜在空间特征。3.2.3 跳跃连接U-Net 最标志性的设计就是跳跃连接Skip Connection它在 Stable Diffusion 里的核心作用就是保住图像细节让生成的画面不模糊、不丢失纹理。U-Net 的编码器会不断压缩特征图提取高层语义比如 “这是船、这是沙滩”但压缩过程会丢失大量底层细节比如船的木纹、沙滩的沙粒。而跳跃连接直接把编码器每一层的高分辨率原始特征原样复制到解码器的对应层让解码器在还原图像时能直接复用这些细节信息而不是只靠抽象语义去 “猜”。没有跳跃连接U-Net 生成的图像会是模糊、结构松散的有了跳跃连接最终生成的画面能保留清晰的纹理、边缘和细节比如船的轮廓、沙滩的质感让图像更真实、更细腻。3.3 多尺度融合U-Net 的编码器 - 解码器对称结构天然支持多尺度特征融合这是 Stable Diffusion 能生成复杂、符合文本描述图像的核心保障。我们看一张图会同时看全局和局部全局这是「沙滩上的船」船在画面中间沙滩在周围整体是海边场景局部船有木纹、窗户、锚沙滩有沙粒、贝壳、脚印海水有波纹这些不同层级的信息就是不同尺度的特征大尺度全局画面的整体布局、物体的整体形状、整体风格小尺度局部物体的细节纹理、边缘、微小元素多尺度特征融合就是把这些不同层级的信息全部整合到一起让生成的图既全局对、细节也对。U-Net这种结构让模型既能保证全局一致性比如船在沙滩上的整体布局、画面的整体风格又能精确控制局部细节比如船的窗户、沙滩上的脚印完美匹配用户的文本描述不会出现 “整体对了、细节错了” 的情况。3.4 迭代细化Stable Diffusion 生成图像不是一步到位的而是多步迭代去噪的过程U-Net 就是每一步迭代的核心执行单元。SD 会从一张纯随机噪声的潜空间特征图开始重复执行几十次比如 20 步、50 步去噪操作每一步U-Net 都会接收当前带噪的特征图、时间步信息、CLIP 的文本条件预测出当前的噪声然后把噪声从特征图中去除每一步都对图像进行一次优化和细化早期画轮廓、中期补结构、后期加细节这种迭代细化的方式让最终生成的图像不仅细节丰富而且和输入的文本描述高度一致。每一步 U-Net 都在根据文本条件修正生成方向确保图像从 “随机噪声” 一步步变成 “符合需求的清晰画面”。四、VAE通过 U-Net 的迭代去噪与多尺度特征融合我们已经在潜在空间中生成了符合文本语义的高质量特征图。但此时的特征图依然是抽象的、无法直接可视化的数学向量要将其转化为人类肉眼可见的像素图像就需要 Stable Diffusion 的最后一个核心模块 ——VAE 变分自编码器。如果说 CLIP 是 “翻译官”、U-Net 是 “作画的手”那么VAE 就是 “渲染器”它负责把潜在空间的抽象特征最终还原成像素空间的清晰图像完成从 “模型内部” 到 “视觉呈现” 的最后一步。接下来我们就深入解析 VAE 的定义、结构以及它在 Stable Diffusion 中的核心作用与工作流程。4.1 定义VAEVariational Autoencoder变分自编码器是一类基于变分推断的生成式神经网络其核心设计目标是学习高维数据如图像的低维潜在表示Latent Representation并能从该低维表示中高质量地还原出原始高维数据。通俗来说VAE 做了两件事编码压缩把复杂、高维的像素图像压缩成一个紧凑、低维的「潜在特征」也就是我们上篇提到的潜在空间解码还原把这个低维的潜在特征重新还原成一张清晰、逼真的像素图像。在 Stable Diffusion 的架构中VAE 不再是一个独立的生成模型而是承担了 「空间转换桥梁」的核心角色其定义可以精准表述为VAE 是 Stable Diffusion 中负责像素空间与潜在空间双向映射的核心模块。它通过编码器将高分辨率像素图像压缩为低维潜在特征供 U-Net 在潜空间中高效执行扩散去噪再通过解码器将 U-Net 生成的潜在特征无损还原为人类可直接观看的高分辨率像素图像。4.2 作用如果没有 VAEStable Diffusion 就只能在像素空间直接做扩散一张 512×512 的 RGB 图像维度高达 512×512×3 786432 维计算量巨大训练和推理都极慢而 VAE 把它压缩到 64×64×4 16384 维计算量直接降到原来的1/48让潜空间生成成为可能。这也是 Stable Diffusion 能做到「高效、开源、可本地部署」的核心原因之一。五、总结至此我们已经完成了 Stable Diffusion 三大核心模块的完整拆解从输入到生成再到输出理清了模型 “读懂文字、生成图像、呈现画面” 的全链路逻辑CLIP 文本编码器作为 “语义翻译官”将自然语言转化为模型可理解的条件信号U-Net 去噪网络作为 “核心生成器”在潜在空间中通过迭代去噪、多尺度融合将噪声逐步转化为符合语义的特征图VAE 变分自编码器作为 “空间转换桥梁”实现潜在特征与像素图像的双向映射完成最终的视觉呈现。这三大模块相互协同、各司其职构成了 Stable Diffusion 的核心骨架让我们从 “架构层面” 彻底理解了文生图的完整流程。但这仅仅是入门 —— 我们目前所讲的都是模块的 “功能定位” 与 “工作流程”尚未触及模型运行的底层核心CLIP 的对比学习到底如何实现语义对齐U-Net 的噪声预测背后藏着怎样的数学逻辑VAE 的变分推断与重参数化技巧又是如何保证特征压缩与还原的无损性这些关于 Stable Diffusion 的深层原理与底层机制将是我们下一篇博客的核心内容。我们将跳出 “功能描述”深入模型内部拆解每一个核心操作的底层逻辑带你从 “知其然” 走向 “知其所以然”彻底吃透 Stable Diffusion 的技术本质。

更多文章