ComfyUI 魔法书 Logo
🏠 首页
👥 加群
😎 大帅比
❤️‍🔥 Monster 社区
登录 →
ComfyUI 魔法书 Logo
🏠 首页 👥 加群 😎 大帅比 ❤️‍🔥 Monster 社区
登录
  1. 首页
  2. 💡 通神心法 (Mind Palace)
  3. 第12章:Stable Diffusion的整体架构

第12章:Stable Diffusion的整体架构

0
  • 💡 通神心法 (Mind Palace)
  • 发布于 2025-07-02
  • 48 次阅读
编程界的小学生
编程界的小学生

12.1 麻猪的大发现:三个魔法师的完美协作

经过前面几章的学习,麻猪已经分别认识了VAE、U-Net和CLIP这三个"魔法师"。今天,当他在ComfyUI中看到一个完整的工作流时,突然恍然大悟。

"Comfy精灵!"麻猪兴奋地喊道,"我发现了一个秘密!这三个魔法师不是各自为战的,它们是一个团队!就像我们学校的接力赛一样,每个人都有自己的任务,但最终目标是一致的!"

Comfy精灵欣慰地笑了:"太棒了,麻猪!你终于发现了Stable Diffusion的核心秘密。没错,VAE、U-Net和CLIP就像三个配合默契的队友:

  • CLIP是'理解者',负责理解你想要什么

  • U-Net是'创作者',负责一步步创造图像

  • VAE是'翻译官',负责在不同的'语言'之间转换"

"那它们是怎么配合的呢?"麻猪迫不及待地问。

"让我们从一个完整的生成过程开始,看看这场精彩的'接力赛'是如何进行的。"

12.2 完整的生成流程:从文字到图像的奇妙旅程

"想象你要生成一张'夕阳下的城堡'的图片。"Comfy精灵开始讲述这个神奇的过程。

![三大组件协作示意图]

🎭 麻猪的发现:三个魔法师的分工
​
   CLIP           U-Net          VAE
  "理解者"       "创作者"      "翻译官"
     🧠             🎨            🔄
     ↓              ↓             ↓
  理解文字        创造内容      转换格式
  
就像学校的接力赛:
🏃•♂️ CLIP跑第一棒 → 🏃•♀️ U-Net跑第二棒 → 🏃•♂️ VAE跑第三棒

"整个过程可以分为8个步骤,就像一场精心编排的舞蹈:

第1步:文本理解

  • 你输入提示词:'夕阳下的城堡'

  • CLIP文本编码器将文字转换为向量

  • 这个向量包含了'夕阳'、'城堡'等概念的语义信息

第2步:噪声准备

  • 系统生成一个纯噪声图像(就像雪花电视屏幕)

  • 这个噪声图像的尺寸通常是64×64×4(潜在空间)

  • 这是我们创作的'画布'

第3步:潜在空间扩散

  • U-Net在潜在空间中开始工作

  • 它不直接处理512×512的大图像

  • 而是在64×64×4的压缩空间中进行扩散

第4步:条件引导

  • CLIP提供的文本向量作为'指南针'

  • 通过交叉注意力机制融入U-Net

  • 告诉U-Net应该朝哪个方向去噪

第5步:逐步去噪

  • U-Net进行多次迭代(比如20-50步)

  • 每一步都预测并去除一部分噪声

  • 逐渐显现出'夕阳下的城堡'的轮廓

第6步:潜在表示完成

  • 经过多步去噪,得到清晰的潜在表示

  • 这个64×64×4的张量包含了完整的图像信息

  • 但还不是我们能看到的图像

第7步:图像解码

  • VAE解码器登场

  • 将64×64×4的潜在表示转换为512×512×3的RGB图像

  • 这就像把'密码'翻译成'图画'

第8步:最终输出

  • 得到完整的512×512像素彩色图像

  • 展现出美丽的'夕阳下的城堡'"

![完整生成流程图]

🎨 Stable Diffusion 完整生成流程
​
第1步: 文本理解
┌─────────────────────────────────┐
│ "夕阳下的城堡" → CLIP文本编码器  │
│        ↓                       │
│   文本向量 [77×768]             │
└─────────────────────────────────┘
​
第2步: 噪声准备               第3步: 条件融合
┌─────────────────┐           ┌─────────────────┐
│  🌨️ 随机噪声      │    +      │  📝 文本条件     │
│  [64×64×4]      │           │  [77×768]      │
└─────────────────┘           └─────────────────┘
                    ↓
第4-7步: 逐步去噪 (U-Net工作)
┌─────────────────────────────────────────────┐
│  步骤1: ████████ → ░░██░░██  (显现轮廓)      │
│  步骤5: ░░██░░██ → ▓▓██▓▓██  (基本形状)      │
│  步骤10: ▓▓██▓▓██ → ▓███▓███ (主要结构)     │
│  步骤20: ▓███▓███ → 🏰清晰城堡 (完成去噪)    │
└─────────────────────────────────────────────┘
​
第8步: 图像解码
┌─────────────────────────────────┐
│  潜在表示 [64×64×4]              │
│        ↓ VAE解码器               │
│  🖼️ 最终图像 [512×512×3]        │
│     (美丽的夕阳城堡)             │
└─────────────────────────────────┘

12.3 潜在扩散:为什么不直接在图像空间工作?

"等等,"麻猪有些困惑,"为什么不直接在512×512的图像上进行扩散呢?为什么要先压缩到64×64?"

"这是一个非常好的问题!"Comfy精灵赞赏道,"这就是Stable Diffusion的'Stable'(稳定)所在。让我用一个比喻来解释:

想象你要搬家,有两种方法:

  • 方法A:直接搬运所有家具(直接在图像空间扩散)

  • 方法B:先把家具拆解打包,搬到新家再组装(潜在空间扩散)

哪种方法更高效?"

麻猪想了想:"方法B!因为打包后体积更小,搬运更容易!"

"完全正确!"Comfy精灵说道,"潜在扩散的优势:

1. 计算效率大幅提升

  • 原始图像:512×512×3 = 786,432个数值

  • 潜在表示:64×64×4 = 16,384个数值

  • 计算量减少了约48倍!

2. 内存需求显著降低

  • 直接扩散需要大量GPU显存

  • 潜在扩散让普通显卡也能运行

3. 训练更加稳定

  • VAE预训练提供了良好的表示空间

  • 扩散过程更加平滑和可控

4. 生成质量更高

  • 潜在空间的表示更加紧凑和有意义

  • 避免了像素级别的噪声干扰"

![计算效率对比图]

💡 为什么选择潜在空间扩散?
​
方法A: 直接图像扩散 (传统方法)
┌─────────────────────────────────────┐
│  🖼️ 原始图像 512×512×3              │
│  📊 数据量: 786,432 个数值           │
│  💻 计算量: 非常大                   │
│  🐌 速度: 很慢                      │
│  💾 内存: 需要大量显存               │
└─────────────────────────────────────┘
​
方法B: 潜在空间扩散 (Stable Diffusion)
┌─────────────────────────────────────┐
│  🗜️ 压缩表示 64×64×4                │
│  📊 数据量: 16,384 个数值            │
│  💻 计算量: 减少48倍!                │
│  🚀 速度: 快很多                    │
│  💾 内存: 普通显卡也能跑             │
└─────────────────────────────────────┘
​
📈 效率提升对比:
直接扩散: ████████████████████████████████████████████████████████
潜在扩散: █ (快64倍!)

12.4 交叉注意力:文本与图像的深度对话

"现在我们来深入了解文本条件是如何影响图像生成的。"Comfy精灵说道,"这就要说到交叉注意力机制。"

"还记得我们之前学过的注意力机制吗?"Comfy精灵问道。

麻猪点点头:"记得!就像聚光灯一样,决定关注什么地方。"

"没错!交叉注意力就是让图像特征和文本特征进行'对话'。"Comfy精灵解释道:

"在U-Net的每一层中,都有交叉注意力模块:

  • Query(查询):来自图像特征,问'我现在应该画什么?'

  • Key和Value(键和值):来自文本特征,回答'用户想要这些内容'

  • 注意力权重:决定图像的每个位置应该关注文本的哪些部分"

为了让麻猪更好理解,Comfy精灵展示了一个具体例子:

"假设文本是'一只戴红帽子的黑猫坐在绿草地上':

文本分解:

  • Token 1: '一只'

  • Token 2: '戴'

  • Token 3: '红帽子'

  • Token 4: '黑猫'

  • Token 5: '坐在'

  • Token 6: '绿草地'

  • Token 7: '上'

图像区域关注:

  • 图像上半部分 → 主要关注'红帽子'、'黑猫'

  • 图像下半部分 → 主要关注'绿草地'、'坐在'

  • 中心区域 → 综合关注所有相关token"

![交叉注意力工作原理图]

🔍 交叉注意力:图像与文本的深度对话
​
文本: "一只戴红帽子的黑猫坐在绿草地上"
分解: [一只][戴][红帽子][黑猫][坐在][绿草地][上]
​
图像区域关注示意:
┌─────────────────────────────────────┐
│  🎩 图像上部 → 主要关注"红帽子""黑猫" │
│     ↑ 注意力权重: 0.8, 0.9          │
│                                     │
│  🐱 图像中部 → 主要关注"黑猫""坐在"  │
│     ↑ 注意力权重: 0.9, 0.7          │
│                                     │
│  🌱 图像下部 → 主要关注"绿草地""上"  │
│     ↑ 注意力权重: 0.8, 0.6          │
└─────────────────────────────────────┘
​
计算过程:
图像特征(Q) × 文本特征(K) = 注意力分数
      ↓
   softmax归一化
      ↓  
注意力权重 × 文本特征(V) = 融合特征
​
结果: 图像每个像素都知道该关注文本的哪些词!

12.5 无分类器引导:增强文本控制力

"有时候,我们希望生成的图像更加符合文本描述,这时就需要用到无分类器引导(Classifier-Free Guidance,CFG)。"Comfy精灵继续解释。

"什么是无分类器引导?"麻猪问道。

"想象你在问路,有两种问法:

  • 普通问法:'请问图书馆怎么走?'

  • 强调问法:'请问图书馆怎么走?我真的很急,一定要找到图书馆!'

哪种问法更容易得到准确的指引?"

麻猪立刻回答:"第二种!因为强调了重要性!"

"没错!CFG就是这样的'强调'技术。"Comfy精灵说道,"它的工作原理是:

1. 条件预测:

  • 使用文本条件,预测噪声:ε_cond

  • 这是'有指导'的预测

2. 无条件预测:

  • 不使用文本条件,预测噪声:ε_uncond

  • 这是'无指导'的预测

3. 引导增强:

  • 计算两者差异:εcond - εuncond

  • 这个差异代表'文本的影响力'

  • 放大这个影响力:εuncond + CFG_scale × (εcond - ε_uncond)

4. 最终预测:

  • 使用增强后的预测进行去噪

  • 生成更符合文本描述的图像"

![CFG工作原理图]

🎯 无分类器引导(CFG):让AI更听话的秘密
​
普通问路 vs 强调问路的对比:
┌─────────────────────────────────────┐
│ 普通: "请问图书馆怎么走?"            │
│ 回答: "往前走,可能在左边"           │
│ 准确度: ⭐⭐⭐                      │
└─────────────────────────────────────┘
​
┌─────────────────────────────────────┐
│ 强调: "请问图书馆怎么走?我很急!"     │
│ 回答: "直走200米,左转就是!"         │
│ 准确度: ⭐⭐⭐⭐⭐                  │
└─────────────────────────────────────┘
​
CFG工作流程:
第1步: 无条件预测 (不看文本)
  🤖: "我随便画点什么..." → ε_uncond
​
第2步: 有条件预测 (看文本)
  🤖: "用户要夕阳城堡!" → ε_cond
​
第3步: 计算差异并放大
  差异 = ε_cond - ε_uncond (文本的影响力)
  最终 = ε_uncond + CFG权重 × 差异
​
CFG权重效果:
权重1.0: 🎨 随意创作 (忽略文本)
权重7.5: 🎯 标准遵循 (平衡创意和准确)
权重15.0: 📏 严格遵循 (完全按文本)
权重20+: ⚠️ 过度拘束 (可能出错)

12.6 负提示词:告诉模型"不要画什么"

"除了告诉模型要画什么,我们还可以告诉它不要画什么。"Comfy精灵说道,"这就是负提示词的作用。"

"负提示词?"麻猪好奇地问,"就像告诉别人'不要做什么'?"

"完全正确!"Comfy精灵说,"想象你在餐厅点菜:

  • 正面要求:'我要一份不辣的宫保鸡丁'

  • 负面要求:'我不要辣椒、不要花生、不要太咸'

两种表达方式都能帮助厨师做出你满意的菜。"

"在Stable Diffusion中,负提示词的工作原理:

1. 正提示词编码:

  • 将正面描述转换为文本向量

  • 例如:'美丽的风景画'

2. 负提示词编码:

  • 将负面描述转换为文本向量

  • 例如:'模糊,低质量,变形'

3. 方向调整:

  • 计算从负提示词到正提示词的'方向向量'

  • 沿着这个方向进行生成

  • 远离不想要的特征,靠近想要的特征"

![负提示词工作原理图]

❌ 负提示词:告诉AI "不要画什么"
​
餐厅点菜的比喻:
┌─────────────────────────────────────┐
│ 正面要求: "我要宫保鸡丁"             │
│ 负面要求: "不要辣椒,不要花生"       │
│ 结果: 🍽️ 完美符合口味的菜           │
└─────────────────────────────────────┘
​
AI绘画中的应用:
正提示词: "美丽的城堡,高质量,细节丰富"
     ↓
  正向量 V_pos (朝向好特征)
     ↓
负提示词: "模糊,低质量,变形,噪点"
     ↓  
  负向量 V_neg (远离坏特征)
     ↓
引导方向 = V_pos - V_neg
     ↓
🎨 最终生成: 既有好特征,又避开坏特征
​
效果示意:
没有负提示词: 😐 普通质量
有负提示词:   ✨ 高质量,无瑕疵
​
常用负提示词:
❌ "blurry, low quality, distorted"
❌ "bad anatomy, extra limbs"
❌ "watermark, signature"

12.7 采样过程详解:从噪声到艺术的每一步

"现在让我们详细看看采样过程中的每一步都发生了什么。"Comfy精灵说道。

"采样过程就像雕刻家创作雕塑:

  • 开始时有一块粗糙的石头(纯噪声)

  • 每一步都去掉一些不需要的部分(去噪)

  • 最终雕刻出美丽的艺术品(清晰图像)"

![采样过程可视化图]

🎨 采样过程:从噪声到艺术的雕刻之旅
​
雕刻家创作比喻:
🪨 粗糙石头 → 🔨 一刀一刀雕刻 → 🗿 精美雕塑
​
20步采样过程可视化:
​
步骤0:  ████████████████  (100%噪声)
        "完全看不出什么"
        
步骤5:  ░░██░░██░░██░░██  (75%噪声)
        "隐约有些轮廓"
        
步骤10: ░▓██▓░▓██▓░▓██▓  (50%噪声)
        "基本形状出现"
        
步骤15: ▓███▓▓███▓▓███▓  (25%噪声)
        "主要结构清晰"
        
步骤20: 🏰🌅✨完美城堡✨🌅🏰  (0%噪声)
        "细节丰富的最终作品"
​
每一步的工作:
┌─────────────────────────────────────┐
│ 1️⃣ U-Net观察: "现在图像是什么样?"    │
│ 2️⃣ 结合文本: "用户想要什么?"        │
│ 3️⃣ 预测噪声: "哪些是多余的噪声?"    │
│ 4️⃣ 去除噪声: "让图像更清晰一点"     │
│ 5️⃣ 重复循环: "继续下一步优化"       │
└─────────────────────────────────────┘
​
进度条显示:
████████████████████ 100% (步骤20/20)
🎉 "夕阳下的城堡" 创作完成!

"每一步的具体操作:

1. 噪声预测:

  • U-Net接收当前状态的潜在表示

  • 结合文本条件和时间步信息

  • 预测当前步骤应该去除的噪声

2. 噪声去除:

  • 从当前图像中减去预测的噪声

  • 使用调度器控制去除的程度

  • 得到更清晰的中间结果

3. 条件引导:

  • 应用CFG增强文本控制

  • 考虑负提示词的影响

  • 确保生成方向正确

4. 迭代优化:

  • 重复上述过程

  • 每一步都比前一步更清晰

  • 直到达到预设的步数"

12.8 三大组件的协作机制

"让我们总结一下VAE、U-Net和CLIP是如何协作的。"Comfy精灵说道。

"这就像一个制作电影的团队:

CLIP - 编剧:

  • 理解导演(用户)的要求

  • 将文字剧本转换为具体的拍摄指导

  • 提供创作的方向和主题

U-Net - 导演:

  • 根据编剧的指导进行创作

  • 控制整个创作过程的节奏

  • 决定每个镜头的具体内容

VAE - 摄影师:

  • 将导演的想法转换为具体的画面

  • 处理技术细节和视觉效果

  • 确保最终画面的质量"

![三大组件协作详细图]

🎬 三大组件协作:像电影制作团队一样默契
​
电影制作团队比喻:
📝 编剧(CLIP): 理解剧本,提供创作方向
🎬 导演(U-Net): 根据剧本指导,控制拍摄过程  
📷 摄影师(VAE): 将想法转换为具体画面
​
实际协作流程:
​
阶段1: 📋 项目准备
┌─────────────────────────────────────┐
│ CLIP编剧工作:                       │
│ "夕阳下的城堡" → 📝 创作指导书      │
│ [包含: 建筑风格、光线效果、色彩方案] │
└─────────────────────────────────────┘
​
阶段2: 🎬 创作过程 (20轮拍摄)
┌─────────────────────────────────────┐
│ U-Net导演工作:                      │
│ 第1轮: 🌨️ 噪声画布 + 📝 指导 → 🎨 初稿 │
│ 第5轮: 🎨 初稿 + 📝 指导 → 🎨 草图   │
│ 第10轮: 🎨 草图 + 📝 指导 → 🎨 半成品 │
│ 第20轮: 🎨 半成品 + 📝 指导 → 🎨 完成品│
└─────────────────────────────────────┘
​
阶段3: 📷 后期制作
┌─────────────────────────────────────┐
│ VAE摄影师工作:                      │
│ 🎨 导演作品(64×64×4)                │
│        ↓ 专业设备处理                │
│ 🖼️ 高清成片(512×512×3)             │
└─────────────────────────────────────┘
​
数据传递路径:
用户输入 → CLIP → 文本向量 ↘
                           ↘
随机噪声 ────────────────→ U-Net → 潜在图像 → VAE → 最终作品
                           ↗
时间信息 ──────────────────↗

12.9 不同版本的架构差异

"Stable Diffusion有多个版本,它们的架构有什么不同呢?"麻猪问道。

"好问题!"Comfy精灵说,"主要版本的差异:

Stable Diffusion 1.x系列:

  • 图像分辨率:512×512

  • U-Net参数:约8.6亿

  • CLIP:OpenAI CLIP ViT-L/14

  • VAE:KL-f8(8倍下采样)

Stable Diffusion 2.x系列:

  • 图像分辨率:512×512 或 768×768

  • U-Net参数:约8.6亿(结构优化)

  • CLIP:OpenCLIP ViT-H/14(更大更强)

  • VAE:改进的KL-f8

Stable Diffusion XL (SDXL):

  • 图像分辨率:1024×1024

  • U-Net参数:约35亿(大幅增加)

  • 双文本编码器:CLIP + OpenCLIP

  • VAE:全新设计,质量更高

  • 两阶段生成:基础模型+精化模型"

![版本演进对比图]

📈 Stable Diffusion版本演进史

🏠 SD 1.5 (入门版)
┌─────────────────────────────────────┐
│ 📐 分辨率: 512×512                  │
│ 🧠 参数量: 0.86B (8.6亿)            │
│ 💻 显存需求: 4-6GB                  │
│ ⭐ 质量: ★★★☆☆                    │
│ 🏃 速度: 快                         │
│ 💡 特点: 轻量级,易上手             │
└─────────────────────────────────────┘

🏢 SD 2.1 (进阶版)
┌─────────────────────────────────────┐
│ 📐 分辨率: 768×768                  │
│ 🧠 参数量: 0.86B (优化结构)          │
│ 💻 显存需求: 6-8GB                  │
│ ⭐ 质量: ★★★★☆                    │
│ 🏃 速度: 中等                       │
│ 💡 特点: 更好的文本理解             │
└─────────────────────────────────────┘

🏰 SDXL (专业版)
┌─────────────────────────────────────┐
│ 📐 分辨率: 1024×1024                │
│ 🧠 参数量: 3.5B (35亿!)             │
│ 💻 显存需求: 12-16GB                │
│ ⭐ 质量: ★★★★★                    │
│ 🏃 速度: 较慢                       │
│ 💡 特点: 双编码器,两阶段生成       │
└─────────────────────────────────────┘

发展趋势:
SD 1.5 → SD 2.1 → SDXL → 未来版本
  ↓        ↓        ↓        ↓
 入门     进阶     专业     超级

12.10 实际运行时的内存和计算分析

"让我们看看Stable Diffusion在实际运行时需要多少资源。"Comfy精灵说道。

"以SD 1.5为例,生成一张512×512的图像:

内存占用分析:

  • 模型权重:

    • U-Net:约3.4GB

    • VAE:约0.3GB

    • CLIP:约0.5GB

    • 总计:约4.2GB

  • 运行时内存:

    • 潜在表示:64×64×4×4字节 = 64KB

    • 中间激活:约1-2GB

    • 梯度缓存:约0.5GB

    • 总计:约6-8GB

计算量分析:

  • 每步U-Net前向传播:约100-200 GFLOPS

  • 20步采样总计:约2000-4000 GFLOPS

  • VAE解码:约50 GFLOPS

  • CLIP编码:约10 GFLOPS"

![硬件性能对比图]

💻 不同显卡运行Stable Diffusion性能对比

🎮 入门级显卡 (RTX 3060 12GB)
┌─────────────────────────────────────┐
│ ⏱️ 生成时间: ~15秒 (20步)            │
│ 🖼️ 批量大小: 1张                    │
│ 💾 显存占用: ████████░░ 80%         │
│ 💰 性价比: ⭐⭐⭐⭐⭐              │
│ 🎯 适合: 个人学习,轻度使用         │
└─────────────────────────────────────┘

🚀 中端显卡 (RTX 3080 10GB)
┌─────────────────────────────────────┐
│ ⏱️ 生成时间: ~8秒 (20步)             │
│ 🖼️ 批量大小: 1-2张                  │
│ 💾 显存占用: ██████░░░░ 60%         │
│ 💰 性价比: ⭐⭐⭐⭐☆              │
│ 🎯 适合: 专业创作,中度使用         │
└─────────────────────────────────────┘

👑 旗舰显卡 (RTX 4090 24GB)
┌─────────────────────────────────────┐
│ ⏱️ 生成时间: ~4秒 (20步)             │
│ 🖼️ 批量大小: 4-8张                  │
│ 💾 显存占用: ████░░░░░░ 40%         │
│ 💰 性价比: ⭐⭐⭐☆☆              │
│ 🎯 适合: 商业应用,重度使用         │
└─────────────────────────────────────┘

🔧 优化技巧让低端显卡也能飞:
┌─────────────────────────────────────┐
│ 🎯 半精度(FP16): 内存减半 ████→██   │
│ 🧠 注意力优化: 峰值降低 ████→███    │
│ 📦 模型量化: 进一步压缩 ████→██     │
│ 🔄 批量生成: 效率提升 1张→4张       │
└─────────────────────────────────────┘

性能提升对比:
原始: ████████████████████████ (20秒)
优化: ██████████ (8秒) 🚀 快2.5倍!

12.11 实验:观察完整生成过程

"来,我们做一个实验,观察完整的生成过程!"Comfy精灵兴奋地说。

Comfy精灵创建了一个可视化界面,展示生成过程的每个阶段:

"我们来生成'一朵盛开的红玫瑰',观察每个组件的工作:

阶段1:文本处理

  • 输入:'一朵盛开的红玫瑰'

  • CLIP处理后的关键词权重:

    • '玫瑰':0.8

    • '红色':0.7

    • '盛开':0.6

    • '花朵':0.5

阶段2:噪声初始化

  • 生成64×64×4的随机噪声

  • 噪声强度:标准正态分布

阶段3:逐步去噪(展示关键步骤)

  • 步骤1:纯噪声 → 略有结构

  • 步骤5:基本轮廓 → 花朵形状

  • 步骤10:主要特征 → 红色区域

  • 步骤15:细节丰富 → 花瓣纹理

  • 步骤20:完成去噪 → 清晰潜在表示

阶段4:图像解码

  • VAE将64×64×4转换为512×512×3

  • 最终输出:美丽的红玫瑰图像"

![实验过程可视化图]

🔬 实验观察:"红玫瑰"生成全过程

🌹 目标: 生成"一朵盛开的红玫瑰"

第1阶段: 📝 CLIP文本分析
┌─────────────────────────────────────┐
│ 输入: "一朵盛开的红玫瑰"             │
│ 关键词权重分析:                     │
│ 🌹 "玫瑰" ████████ 0.8             │
│ 🔴 "红色" ███████░ 0.7             │
│ 🌸 "盛开" ██████░░ 0.6             │
│ 🌺 "花朵" █████░░░ 0.5             │
└─────────────────────────────────────┘

第2阶段: 🎨 U-Net逐步创作
步骤0:  ████████████████  "什么都看不出"
        (纯噪声状态)
        
步骤5:  ░░██░░██░░██░░██  "隐约的圆形"
        (开始显现花朵轮廓)
        
步骤10: ░▓██▓░▓██▓░▓██▓  "红色区域出现"
        (颜色开始分化)
        
步骤15: ▓███▓▓███▓▓███▓  "花瓣纹理清晰"
        (细节逐渐丰富)
        
步骤20: 🌹✨完美红玫瑰✨🌹  "作品完成!"
        (最终精美成品)

第3阶段: 🖼️ VAE图像输出
┌─────────────────────────────────────┐
│ 潜在表示 64×64×4                   │
│        ↓ VAE魔法转换                │
│ 🌹 高清红玫瑰 512×512×3             │
│ (花瓣层次分明,色彩鲜艳)            │
└─────────────────────────────────────┘

注意力热力图:
文本词汇 → 图像区域关注度
"红色" → 花瓣中心 🔥🔥🔥🔥🔥
"玫瑰" → 整体形状 🔥🔥🔥🔥░
"盛开" → 花瓣展开 🔥🔥🔥░░
"花朵" → 背景区域 🔥🔥░░░

12.12 总结:Stable Diffusion的完美协作

"现在让我们总结Stable Diffusion的整体架构。"Comfy精灵说道。

麻猪兴奋地抢答:"我来总结!Stable Diffusion就像一个完美的创作团队:

  1. CLIP是理解专家:把文字变成机器能懂的'指令'

  2. U-Net是创作大师:在'想象空间'里一步步画出作品

  3. VAE是转换专家:把'想象'变成我们能看到的图片

它们的配合就像接力赛:

  • CLIP跑第一棒:理解用户需求

  • U-Net跑第二棒:创作核心内容

  • VAE跑第三棒:输出最终结果"

"总结得太棒了!"Comfy精灵赞赏道,"让我们用一张完整的架构图来展示这个过程:"

![Stable Diffusion完整架构总图]

🏗️ Stable Diffusion 完整架构总览

                    🎯 用户输入
                "一朵红玫瑰"
                      ↓
    ┌─────────────────────────────────────┐
    │        🧠 CLIP理解阶段               │
    │  ┌─────────────────────────────────┐ │
    │  │   📝 文本编码器                 │ │
    │  │   "红玫瑰" → [语义向量]         │ │
    │  │   包含: 颜色、形状、纹理信息    │ │
    │  └─────────────────────────────────┘ │
    └─────────────────────────────────────┘
                      ↓ 文本条件
    ┌─────────────────────────────────────┐
    │        🎨 U-Net创作阶段             │
    │                                     │
    │  🌨️ 随机噪声    ⏰ 时间调度器       │
    │  [64×64×4] ──→  控制去噪节奏        │
    │       ↓              ↓             │
    │  ┌─────────────────────────────────┐ │
    │  │        U-Net扩散网络            │ │
    │  │  ┌─────┐  ┌─────┐  ┌─────┐     │ │
    │  │  │编码器│→│瓶颈层│→│解码器│     │ │
    │  │  │下采样│  │注意力│  │上采样│     │ │
    │  │  └─────┘  └─────┘  └─────┘     │ │
    │  │         ↑ 交叉注意力 ↑          │ │
    │  │    文本条件融合到每一层          │ │
    │  └─────────────────────────────────┘ │
    │       ↓ (重复20步去噪)              │
    └─────────────────────────────────────┘
                      ↓ 潜在表示
    ┌─────────────────────────────────────┐
    │        🖼️ VAE转换阶段               │
    │  ┌─────────────────────────────────┐ │
    │  │      VAE解码器                  │ │
    │  │  潜在空间 → RGB图像空间         │ │
    │  │  [64×64×4] → [512×512×3]       │ │
    │  └─────────────────────────────────┘ │
    └─────────────────────────────────────┘
                      ↓
              🌹 最终作品输出
            "美丽的红玫瑰图像"

🔄 数据流向总结:
用户文本 → CLIP编码 → 文本向量 ↘
                              ↘
随机噪声 → U-Net处理 → 潜在图像 → VAE解码 → 最终图像
           ↑                              
        时间+文本条件                      

⚡ 三大组件分工:
🧠 CLIP: "我来理解用户想要什么"
🎨 U-Net: "我来创作核心内容"
🖼️ VAE: "我来输出最终图像"

"Stable Diffusion的成功在于:

  • 效率:潜在空间扩散大幅降低计算成本

  • 质量:三大组件的完美配合保证生成质量

  • 可控:文本条件和各种引导技术提供精确控制

  • 灵活:模块化设计便于改进和扩展"

"下一章,我们将深入学习采样器和调度器,了解如何控制'去噪'的不同策略,让你能够根据需要选择最合适的生成方法!"

麻猪点点头,眼中充满了对下一个知识点的期待:"我已经完全理解了这三个魔法师是如何协作的!现在我想知道如何让它们工作得更好!"


本章要点回顾:

🏗️ 整体架构:VAE、U-Net、CLIP三大组件的完美协作

🔄 生成流程:从文本输入到图像输出的8步完整过程

💾 潜在扩散:在压缩空间工作,大幅提升计算效率

🎯 交叉注意力:文本与图像特征的深度融合机制

🚀 CFG引导:无分类器引导增强文本控制力

❌ 负提示词:通过排除不需要的特征提升生成质量

⚙️ 采样过程:逐步去噪的详细机制

📊 资源分析:内存占用和计算量的实际需求

通过理解Stable Diffusion的整体架构,我们掌握了AI绘画系统的核心工作原理,为进一步学习高级技术奠定了坚实基础。

标签: #底层 32
相关文章

🎨 《麻猪的AI绘画奇遇记》零基础也能听懂的 SD 底层原理 2025-07-03 12:49

🤔 你是否也有这些困惑? 看到别人用AI画出惊艳作品,自己却只会复制粘贴提示词? 想深入理解AI绘画原理,但被复杂的技术术语劝退?

(图版)第8章:扩散过程:从“混沌”到“艺术” 2025-07-22 11:50

(图版)第7章:Transformer“注意力”革命 2025-07-22 10:39

(图版)第6章:注意力机制“专注力”的艺术 2025-07-21 20:09

(图版)第5章:卷积神经网络“图像识别专家” 2025-07-21 12:56

(图版)第4章:模仿大脑的“神经元网络” 2025-07-21 11:38

目录

从节点基础到高阶工作流,我们为你绘制最清晰的 ComfyUI 学习路径。告别困惑,让每一次连接都充满创造的魔力,轻松驾驭 AI 艺术的无限可能。

  • 微信
  • B站
  • GitHub
Copyright © 2025 AIX All Rights Reserved. Powered by AIX.
隐私政策
津ICP备2024019312号