Stable Diffusion Stable Diffusion 是一种基于深度学习的图像生成模型(开源免费),在生成高质量、高分辨率的图像方面显示出了卓越的性能。Stable Diffusion 作为一种新型的图像生成模型,以其稳定性和高质量生成的图像而受到广泛关注。Stable Diffusion 的基本原理 Stable Diffusion 是基于变分自编码器(VAE)和扩散过程的结合。首先,使用 VAE 将图像编码为一个低维度的隐向量,然后,通过扩散过程逐步将隐向量解码为原始图像。扩散过程包括两个部分:正向扩散和反向扩散。正向扩散是将图像逐渐加入噪声,直至完全噪声,反向扩散则是从完全噪声逐步恢复出原始图像。Stable Diffusion 的特点:
Stable Diffusion 可应用于图像生成(自然景观、人物肖像、艺术作品等)、图像编辑(对已有图像进行编辑和修饰,如改变颜色、调整亮度、去除瑕疵等)、图像风格转换(将一张图像的风格转换为另一张图像的风格,实现图像风格的迁移)。Stable Diffusion 作为一种新型的图像生成模型,以其高质量图像生成、稳定性和可控性等特点,在图像生成和编辑领域具有广泛的应用前景。随着研究的深入和技术的不断发展,Stable Diffusion 有望为图像处理领域带来更多的创新和突破。 | |||||||||
WebUI | ComfyUI 很多人刚开始接触 Stable Diffusion 的时候,总是对 WebUI、ComfyUI 与 Stable Diffusion 是什么关系,很容易因为这些概念搞的头昏脑涨。整体来说 Stable Diffusion 是模型,WebUI 与 ComfyUI 是用户界面。不过,也有很多完全没有接触过 SD 的人还是不太明白,因此饼干为大家提供了一个方便理解的思路:
这就导致大家在通过代码进行安装的时候,有可能中途就放弃了!因此,很多开发者就基于 WebUI、ComfrUI 进行了二次开发,直接打包成为了软件安装包的形式,如 Comflowy、Draw Things 等,极大的方便了用户在安装与AI 模型下载与管理的便利性。WebUI、ComfrUI 虽然均为 SD 的用户界面,但操作方面还是存在区别:
| |||||||||
Stable Diffusion 稳定扩散 AI 绘图与传统的绘图工具如 Photoshop 或 Figma 相比,AI 绘图工具具有一些独特的特点。AI 绘图工具的很多配置或操作是不可视化的,结果也具有随机性。这意味着修改了某个配置后,界面上不一定会有明显的反应。这使得学习它变得困难,无法像学习传统绘图工具那样进行自主探索。此外,即使按照别人的教程操作,也不一定能得到相同的结果,这容易让人产生挫败感。那么,如何更好地学习这类工具呢?我认为,第一步不是学习如何使用,而是从 AI 相关的理论学起。了解这些知识后,我们才能真正理解绘图工具上各种配置的作用,甚至能够举一反三,创造出更多的使用方法。基于以上思考,饼干将从 Stable Diffusion 基础知识开始。在了解了 Stable Diffusion 的基本概念后,将进一步介绍如何使用 ComfyUI。通过这样的方式,学习者能够做到“知其然知其所以然”。总之,通过先学习理论知识,我们能够更好地掌握 ComfyUI 这样的 AI 绘图工具,发挥它们的最大潜力。 Stable Diffusion 模型 Stable Diffusion(稳定扩散)是一个由几个组件(模型)构成的系统,而非单独的一个模型。我将为大家解释 Stable Diffusion 的整体架构和工作原理。以上图为例,当我们输入“Girl,wearing glasses,city nightscape,cyberpunk styl” 的 prompt(提示词、咒语)后,Stable Diffusion 会生成「戴眼镜,城市夜景,赛博朋克风格的女孩」图片。这一过程,背后生成的过程经过如下 3 个步骤: | |||||||||
总结一下,简单理解,就是用户输入了一段 Prompt 指令,机器会按照这个指令,在一个潜空间里,将一张随机图降噪为一张符合指令的图片。整个过程,与其说 AI 是在「生成」图片,不如称其为「雕刻」更合适。就像米开朗基罗在完成大卫雕像后,说过的一句话那样:雕像本来就在石头里,我只是把不要的部分去掉。所有图片都存在了一张充满噪点的图片里,AI 只是把不要的部分去掉了。所以如果你用同样是 Diffusion Model 搭建的 Midjourney 话,你会看到如下的过程,首先是一张模糊甚至黑色的图片,然后图片会一步步变得越来越清晰,这就是我前面所说的「降噪」或者「雕刻」的过程: | |||||||||
Stable Diffusion 出图 大家在使用 Stable Diffusion 的时候最后是直接出图,而 Midjourney 是渐进式出图!为什么 Stable Diffusion 与 Midjourney 不一样?Stable Diffusion 在第二步中,机器会分多次对图像进行「Denoise 降噪」,只是没有将每一次计算的结果解码(Image Decoder)成图片,而是将最终的结果解码成了照片。也就是说 Stable Diffusion 缺少了像 Midjourney 一样的可视化过程,因此在使用 Stable Diffusion 的时候看不到图像生成的过程。就目前 Text to Image(文生图)的 AI 工具来说,Midjourney 依然处于领先的地位,但 Stable Diffusion 开源免费。网络上诸多的 AI 绘画网站,大多都是采用了 Stable Diffusion 模型,而且不少还是收费的!从饼干软件入选标准来说,还是首推 Stable Diffusion,如果您对于每月需要花费数十美元无感的话,选择 Midjourney!
| |||||||||
Image Information Creator 图像信息创作 既然说到降噪,我们就来展开讲讲整个「降噪」的过程。首先整个降噪的过程会在一个 Latent Space(潜空间)里进行,然后会进行多 Steps(步阶)的降噪,你可以对这个 Steps 进行调整,一般越多图片质量也会好,但时间也会越久。当然这个也跟模型有关,Stable Diffusion XL Turbo 就能 1 步出图,耗时不到 1 秒,而且生成的图片质量还很不错。如果我们将这一步过程可视化,类似是这样的。具体降噪算法及计算过程如下: Denoise 降噪算法
| |||||||||
| |||||||||
Image Decoder 图像解码 在了解图像解码器之前,我们先需要理解「Latent Space 潜空间」!Latent Space 潜空间是 Stable Diffusion 中最重要的一个概念,不过这也为很多学习者造成了极大的困扰,包括我刚开始接触 Stable Diffusion 也是如此!Latent Space 潜空间是指在机器学习和深度学习中,用于表示数据的低维空间。它是通过对原始数据进行编码和降维得到的一组潜在变量。潜空间的维度通常比原始数据的维度低,因此可以提取出数据中最重要的特征和结构。简单理解就是潜空间会将图片进行编码成数字信息(数据),并对这些数据进行压缩。 Image Encoder 图像编码 上图所示,原图尺寸为 512 X 512 px(像素),压缩到潜空间为 64 X 64 px(像素),数据极大地减少,计算效率提升,最后使用 Image Decoder(图像解码)还原。Encoder 与 Decoder 编解码组件,也被称为 Variational Auto Encoder(变分自编码器)简称 VAE ,Image Decoder 在某些程序中也叫 VAE Decoder。
| |||||||||
Text Encoder 文字编译 Text Encoder(文本编译器)会将输入的 Prompt 提示词编译成独立的词特征向量。此步骤下会输出 77 个等长的向量,每个向量包含 768 个维度。当我们在 Prompt 里只输入 Girl(女孩),并没有在 Prompt 提示词中描述“蓝色头发”,为何最后输出的女孩是蓝色头发呢?要回答这些问题,我们需要先理解 Text Encoder 的实现:
OpenAI 使用了 4 亿组图片文本对,对此模型进行了训练,最后训练出来的 CLIP 模型效果如下图所示。当我们输入图片的描述时,CLIP 能判断出与这个描述最相近的图片是哪张。比如下图中第四行,描述是「一张斑点猫面部照片」,它与纵向第四张图最相关,相似度达到 0.31,与第一张书本的截图相似度只有 0.12。 | |||||||||
在 Stable Diffusion 里,我们只使用了 CLIP 的 Text Encoder 的部分,因为它能将文本转化成对应文本的特征向量,并且这些特征向量与现实存在的图片会有相关性。为何当我们输入 Cat 的时候,生成的图大概率是一只橘猫或者斑点猫?因为 Text Encoder 将 Cat 转化成 77 个等长的向量 Embedding 里会包含与 Cat 相关的一些特征和含义:
注意:因为模型有些地方具有不可解释性,所以实际上这些向量不一定包含这些特征,主要是为了更好地解释,所以我举了几个比较具象的例子。最后,因为在 Stable Diffusion 里,只用到了 CLIP 的 Text Encoder 的部分,所以在一些产品里,这个又称为 CLIP Text Encoder,或者 CLIP Text Encode。 使用 Stable Diffusion 或者 Midjourney 时,输入的 Prompt 不需要在意语法?以及大小写不敏感呢?因为这些 Prompt 都会被 Text Encoder 转成特征向量,语法、大小写被转成特征向量后,都会是一串数字了,在没有对模型进行调整的情况下,这些都不太敏感了。 | |||||||||


©2017-2026 海南饼干教育有限公司 版权所有
