惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Attack and Defense Labs
Attack and Defense Labs
宝玉的分享
宝玉的分享
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
D
Darknet – Hacking Tools, Hacker News & Cyber Security
V
Vulnerabilities – Threatpost
博客园_首页
Engineering at Meta
Engineering at Meta
F
Fortinet All Blogs
C
Cyber Attacks, Cyber Crime and Cyber Security
罗磊的独立博客
V
Visual Studio Blog
Know Your Adversary
Know Your Adversary
Hacker News - Newest:
Hacker News - Newest: "LLM"
美团技术团队
L
LINUX DO - 最新话题
The Last Watchdog
The Last Watchdog
博客园 - 三生石上(FineUI控件)
T
Tor Project blog
云风的 BLOG
云风的 BLOG
N
Netflix TechBlog - Medium
MyScale Blog
MyScale Blog
The GitHub Blog
The GitHub Blog
有赞技术团队
有赞技术团队
I
InfoQ
Last Week in AI
Last Week in AI
V2EX - 技术
V2EX - 技术
量子位
S
Secure Thoughts
L
LangChain Blog
The Hacker News
The Hacker News
H
Help Net Security
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
小众软件
小众软件
K
Kaspersky official blog
Security Archives - TechRepublic
Security Archives - TechRepublic
Google Online Security Blog
Google Online Security Blog
I
Intezer
Vercel News
Vercel News
Hacker News: Ask HN
Hacker News: Ask HN
Cisco Talos Blog
Cisco Talos Blog
Google DeepMind News
Google DeepMind News
S
Securelist
阮一峰的网络日志
阮一峰的网络日志
G
Google Developers Blog
Help Net Security
Help Net Security
Martin Fowler
Martin Fowler
爱范儿
爱范儿
Y
Y Combinator Blog
C
Check Point Blog

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派 万字剖析:千问App深度体验报告(2026) - 少数派 在2026年,如何真正防止别人抄袭你的作品 - 少数派 怎么用 50 块搭个 AI 语音助手?我踩了 3 天坑 - 少数派 YeeroAI:让 AI 对话真正成为知识管理的一部分 - 少数派 爬泰山 - 少数派 「旅图显影」 App 更新:这次,我们补上了一点「手感」 - 少数派 假期出门太折磨?我的 23 条经验帮你规划惬意旅行 - 少数派 工作流会变吗 - 少数派 Claude Opus 4.6 怎么用最省钱?我测了 5 种方案 - 少数派 GPT Image 2 让图文并茂不再稀罕 - 少数派 用户侧出发——什么是AI,我要不要学习? - 少数派 找片、转存、整理、播放一条龙!让你的付费网盘值回票价 - 少数派 欢迎试用!日课一问2.0插件 - 少数派 自己做的MDeditor,原本想购买 Typora 试了两次支付不成功,干脆自己做一个 - 少数派 vibe coding了一个 3MB 的小工具,让 ~/Downloads 彻底告别混乱 - 少数派 因为受不了 Mac 的风扇策略,我做了一个风扇控制工具 - 少数派 别只怪模型 - 少数派 Warp 终端的 AI 功能怎么用?我测了一周的体验 - 少数派 AI 写代码老是出 bug?这 5 个配置我后悔没早知道 - 少数派 「新玩意」苹果出相机可能就这样:Sigma BF + 45mm F2.8 DG Contemporary - 少数派 一个面向2030年的AI操作系统是什么样子的:浅谈cola这款有灵魂的Agent - 少数派 别只看写代码 - 少数派 每天解决10个问题,还是一口气攻坚解决400个? - 少数派 AI 交易机器人怎么搭?我用 Claude 跑了一周实盘 - 少数派 Maptoposter Online:把你爱的城市画成艺术海报 - 少数派 Function Calling 怎么用?我测了 3 个模型发现差距真大 - 少数派 Legend Talk:我做了个 AI 圆桌,让 160 位思想家围着你的问题转 - 少数派 如何找到自己的蓝方?在小县城寻找压力测试 - 少数派 语音输入与软件接口|2026年聊AI时,我们都聊些什么(上) - 少数派 混动已经卖爆,纯电又来补刀——钛7闪充版简直“不讲武德” - 少数派 本月玩什么|朋友收藏、识质存在、沙罗周期 - 少数派 为什么要每天坚持输出? - 少数派 Claude API 挂了好几个小时,你的项目有备用方案吗? - 少数派 Function Calling 没你想的复杂——我用它做了个有点用的工具 - 少数派 登录系统立即播放视频或者图片音乐的软件 - 少数派 我为什么创建 FlipHTML5 下载工具 - 少数派 残局没电?多品牌外设电量统一管理软件EasyBluetooth已支持RTSS游戏内显示以及AIDA64 - 少数派 前往通义路的路 - 少数派 太好看了,媲美Sun的个人导航页,NAS部署星云门户 - 少数派 乌黑嘴唇“一键检测”上线了 - 少数派 派早报:Claude AI 接入多个创意软件生态、FILCO 生产方接手品牌等 - 少数派 【更新】BearCLI、Claude 连接器与 MCP 服务器 - 少数派 记了上千条流水,还是看不懂财务?我做了一个让 AI 读懂账本的工作台 - 少数派 MINI R56 升级原厂 Sport 模式 - 少数派 新玩意 | 一棵柠檬树(仿真版) - 少数派 Momenta的“物理AI”野望,需迈过“含摩量”这道关 - 少数派 网页直接投屏控制手机!NAS一键部署PandaScrcpy,流畅丝滑可远程。 - 少数派 众测|邀你一同探索随身 AI 硬件入口 YoooClaw C·ONE - 少数派 2050大会:分享时间是真诚 参会记 - 少数派 iPad 赋能电影创作:国内首部宣纸手绘长片《燃比娃》的幕后故事 - 少数派 AI的审美:我用 8 个大模型给 100 张旅行照片打分 - 少数派 普通人如何破圈?去参加一个本地协会 - 少数派 把极空间的图标全换了,主题DIY全攻略打造你的专属NAS桌面 - 少数派 电子便签墙,帮你实现便签自由 - 少数派 我如何用三个 CLI 工具取代文档创建需求 - 少数派 原来真的有人可以玩一辈子 - 少数派 社区速递 139 | 派友热议三月买了啥、复古单反尼康 Df 体验 - 少数派 06 作品的赏析与评价 - 少数派 TDS REVIEW|索尼 WF-1000XM6 降噪真无线耳机体验 - 少数派 35.98万起售的第二代腾势D9,我看重的不是堆料,而是不凑合 - 少数派 鼠须管 Squirrel 皮肤配置指北 - 少数派 从watch ultra2换到redmi watch6 - 少数派 派早报:阿里巴巴发布视频生成模型 HappyHorse 1.0 等 - 少数派 别迷信1M - 少数派 家人们天塌了!网盘“大封杀”,多个渠道多条路,NAS部署PanHub - 少数派 AI与人勾心斗角!NAS一键部署AI狼人杀,假日休闲必备。 - 少数派 电商必备!Comfyui工作流批量生图插件,一次生成12张!支持Nano banana pro模型 - 少数派 Comfyui工作流配置Gpt-image-2模型教程,0.03/张 - 少数派 OpenClaw第三方APi怎么配置?可使用Gpt-image-2模型 - 少数派 会员社区话题精选 Ep. 103 - 少数派
深入浅出理解 AI 生图模型 Stable Diffusion - 少数派
2024-01-10 · via 少数派

去年,我连载了 Midjourney 的教程,很多朋友都在问我何时更新 Stable Diffusion 的教程。但我一直觉得 SD WebUI 功能繁琐,且拓展性不强,所以一直没下笔。最近尝试了下 ComfyUI ,才惊叹地发现这才是我想要的。市面上系统性的 ComfyUI 教程不多,所以最近跟朋友一起搞了一个新教程:Comflowy。 希望对大家有帮助。

为了降低理解成本,我会尽量减少有关数学的知识点,并尽量用类比的方式,帮助你理解一些概念。所以有可能出现不够严谨的情况,如果你有更好的解释,欢迎留言。

Stable Diffusion(稳定扩散)严格说来它是一个由几个组件(模型)构成的系统,而非单独的一个模型。

我以最常见的文生图为例,解释下 Stable Diffusion 的整体架构,和工作原理。

当我们输入一句 prompt 后,比如“Cat, standing on the castle”,Stable Diffusion 会生成一张猫猫站在城堡的图,看似只有一步:

但实际上,整个生成的过程经过三个大的步骤。我会先概括地介绍这三大步骤分别是什么,先让大家对 Stable Diffusion 有一个整体的理解,然后再细讲里面的细节:

  1. 首先,用户输入的 Prompt 会被一个叫 Text Encoder(文本编译器)的东西编译成一个个的词特征向量。此步骤下会输出 77 个等长的向量,每个向量包含 768 个维度。后续我会展开讲讲这些向量的作用,现在各位可以简单将其理解为「将文本转化为机器能识别的多组数字」。
  2. 接着,这些特征向量会和一张随机图(可以简单理解这是一张布满电子雪花的图,或充满信息噪声的图),一起放到 Image Information Creator 里。在这一步,机器会将这些特征向量和随机图先转化到一个 Latent Space(潜空间)里,然后根据这些特征向量,将随机图「降噪」为一个「中间产物」。你可以简单理解,此时的「中间产物」是人类看不懂的「图」,是一堆数字,但此时这个中间产物所呈现的信息已经是是一只站在城堡上的猫了。
  3. 最后,这个中间产物会被 Image Decoder(图片解码器)解码成一张真正的图片。

如果将以上的三大步骤可视化的话,会是这样:

总结一下,简单理解,就是用户输入了一段 Prompt 指令,机器会按照这个指令,在一个潜空间里,将一张随机图降噪为一张符合指令的图片。

整个过程,与其说 AI 是在「生成」图片,不如称其为「雕刻」更合适。就像米开朗基罗在完成大卫雕像后,说过的一句话那样:雕像本来就在石头里,我只是把不要的部分去掉。

所有图片都存在了一张充满噪点的图片里,AI 只是把不要的部分去掉了。所以如果你用同样是 Diffusion Model 搭建的 Midjourney 话,你会看到如下的过程,首先是一张模糊甚至黑色的图片,然后图片会一步步变得越来越清晰,这就是我前面所说的「降噪」或者「雕刻」的过程。

你可能好奇,为何前面的解释里,Stable Diffusion 最后是直接出图,而不像 Midjourney 那样?实际上,在第二步中,机器会分多次对图进行「降噪」,只是没有将每一次的结果用 Image Decoder 解码成图片,而是只将最后一次结果解码成照片。所以你使用 Stable Diffusion 的时候才不会像 Midjourney 那样看到生成的过程。

Image Information Creator

既然说到降噪,我们就来展开讲讲整个「降噪」的过程。

首先整个降噪的过程会在一个 Latent Space(潜空间)里进行,然后会进行多 Steps(步)的降噪,你可以对这个 Steps 进行调整,一般越多图片质量也会好,但时间也会越久。当然这个也跟模型有关,Stable Diffusion XL Turbo 就能 1 步出图,耗时不到 1 秒,而且生成的图片质量还很不错。如果我们将这一步过程可视化,类似是这样的(为了更好地解释,我将下方黑色的块都描述成图,本质上它不是图,只是一堆与图像相关的数据):

那 Denoise 里又发生了什么呢?下图是第一个 Denoise 过程的可视化:

上图看上去很复杂,但不要恐惧,我们只要懂加减乘除就能理解这张图:
 

  • 首先,在 Denoise 里有一个 Noise Predictor(噪音预测器),顾名思义,它就是能预测出随机图里包含什么噪音的模型。除了输入随机图和 Prompt 的词特征向量外,还需要输入当前的 Step 数。虽然在上面的可视化流程中,你会看到很多个 Denoise,但实际程序运行的是同一个 Denoise,所以需要将 Step 告知 Noise Predictor 让其知道正在进行哪一步的预测。
  • 然后,我们先来看橙色的线,Noise Predictor 会使用随机图(比如一张 4 X 4 的图)和 Prompt 的词特征向量预测出一张噪声图 B。注意,这里不是根据预测输出实际的图,而是一张噪声图。换句话来说,Noise Predictor 是根据词向量预测这张随机图里有哪些不需要的噪声。如果拿前面的雕刻的例子来类比,它输出的是雕刻雕像所不需要的废料。于此同时,Noise Predictor 还会不使用 Prompt 的词特征向量预测出一张噪音图 C(也就是图中的蓝色线)。
  • 接着,Denoise 会拿噪音图 B 和 C 相减得出图 D。我们用简单的数学解释下这张图是啥。首先,图 B 是用 Prompt 加随机图预测的噪声,简单理解,就包含了「根据 Prompt 预测的噪声」+「根据随机图预测的噪声」,而 C 则是「根据随机图预测的噪声」,B 减 C 就等于「根据 Prompt 预测的噪声」。
  • 再之后,Denoise 会将 D 噪声放大,一般就是会乘以一个系数,这个系数在一些 Stable Diffusion 里会以 CFG、CFG Scale 或者 Guidance Scale 表示。接着再拿这张放大后的图与噪声图 C 相加,得到图 E。这样做的原因是为了提高图片生成的准确性,所以通过乘以一个系数,来刻意提高「根据 Prompt 预测的噪声」的权重。如果没有这一步,生成的图片就跟 Prompt 没那么相关了。这个方法也被称为 Classifier Free Guidance(无分类引导法)。
  • 最后,Denoise 会将图 A 减去图 E,得出一张新的图。也就是我前面提到的「雕刻」的过程,去掉不需要的噪声。

如果你有用过 Stable Diffusion 的工具,你会发现 Prompt 的输入框有两个,一个是正向的,一个负向的。那负向的 Prompt 是如何生效的呢?用上述的数学方法,简单理解,当输入负向的 Prompt 的时候,也会生成一张噪声图 B2,但此时我们会用正向的 Prompt 生成的噪声图 B1 减去 B2 再减去 C 得出 D,那就意味着最终生成的图片会更加远离 B2,因为减掉了更多与 B2 相关的噪声。

Image Decoder

接着我们再来聊下 Latent Space(潜空间)。我在学习这个概念的时候,最大的疑惑就是为何要在潜空间里进行?而不是直接用图片进行去噪?

要解答这个问题,首先要理解什么是潜空间?

潜在空间是指在机器学习和深度学习中,用于表示数据的低维空间。它是通过对原始数据进行编码和降维得到的一组潜在变量。潜在空间的维度通常比原始数据的维度低,因此可以提取出数据中最重要的特征和结构。

看上去很复杂,简单理解就是潜空间会将图片编码成一堆数字,同时对这些数字进行压缩。让我们通过可视化的方式看看这个过程:

图片会先被一个 Image Encoder 编码成一组数据,并被压缩,如果用像素的角度来衡量这个数据压缩的效果,原图可能是一张 512 X 512 的图,压缩后变成了 64 X 64,数据极大地减少了,最后再使用 Image Decoder 还原即可。而这个 Encoder 加 Decoder 的组件,也被称为 Variational Auto Encoder(变分自编码器)简称 VAE 。所以这个 Image Decoder 在一些产品里,也叫 VAE Decoder。

那使用这个技术有什么好处和坏处呢?

好处:

  • 首先当然是效率提升了非常多。使用 VAE 后,即使民用的 GPU 也能以相对较快的速度,完成降噪运算。同时训练模型的时间也会更短。
  • 另外,潜在空间的维度通常比原始图像的维度低得多,这意味着它可以更有效地表示图像的特征。通过在潜在空间中进行操作和插值,可以对图像进行更精细的控制和编辑。这使得在生成图像时可以更好地控制图像的细节和风格,从而提高生成图像的质量和逼真度。

坏处:

  • 经过编码,然后再将数据还原会导致一些数据丢失。而且加上潜在空间的维度较低,它可能无法完全捕捉原始数据中的所有细节和特征。最终导致还原的图片比较奇怪。

Text Encoder

在最前面的流程中,我提到过,Text Encoder(文本编译器)会将你输入的 Prompt 编译成一个个的词特征向量。此步骤下会输出 77 个等长的向量,每个向量包含 768 个维度。这些向量里到底有什么用呢?

另外,还有一个更有趣的问题,当我们在 Prompt 里只输入 Cat,并没有在 Prompt 里加上 orange,那为何最后输出的猫是橘色的呢?要回答这些问题,我们需要先理解 Text Encoder 的实现。

目前 Stable Diffusion 常用的 Text Encoder 用的是 OpenAI 开源(opens in a new tab)的 CLIP 模型,全称为 Contrastive Language Image Pre-training(对比语言图像预训练)。我们照例先画个图:

首先,这个 CLIP 也有一个 Text Encoder,会将文本转化为一个特征向量,然后它还有一个 Image Encoder 会将图片也转成各种特征向量。如果这两个向量越近,意味着这个描述,越接近图片的内容;反之越远,则越不相关。

OpenAI 使用了 4 亿组图片文本对,对此模型进行了训练,最后训练出来的 CLIP 模型效果如下图所示。当我们输入图片的描述时,CLIP 能判断出与这个描述最相近的图片是哪张。比如下图中第四行,描述是「一张斑点猫面部照片」,它与纵向第四张图最相关,相似度达到 0.31,与第一张书本的截图相似度只有 0.12。

我们回到 Stable Diffusion,在 Stable Diffusion 里,我们只使用了 CLIP 的 Text Encoder 的部分,因为它能将文本转化成对应文本的特征向量,并且这些特征向量与现实存在的图片会有相关性。

回到前面提到的两个问题,其实他们互为对方的答案 😁

为何当我们输入 Cat 的时候,生成的图大概率是一只橘猫或者斑点猫?因为 Text Encoder 将 Cat 转化成 77 个等长的向量 Embedding 里会包含与 Cat 相关的一些特征和含义:

  • 形态特征:向量表示可能会捕捉到 Cat 的形态特征,比如它的体型、头部的形状、四肢的位置等。这些特征可以帮助区分 Cat 与其他动物或物体。
  • 视觉特征:向量表示可能会包含 Cat 的视觉特征,比如它的颜色、斑纹、眼睛的形状等。这些特征可以帮助识别 Cat 的外观特点。
  • 语义含义:向量表示可能会包含与 Cat 相关的语义含义,比如它是一种宠物、一种独立的动物、与人类有亲密关系等。这些含义可以帮助理解 Cat 在人类文化和社会中的角色和意义。

注意:因为模型有些地方具有不可解释性,所以实际上这些向量不一定包含这些特征,主要是为了更好地解释,所以我举了几个比较具象的例子。