ToB企服应用市场:ToB评测及商务社交产业平台

标题: ComfyUI基础篇:Stable Diffusion 基础原理详述 [打印本页]

作者: tsx81429    时间: 2024-8-13 03:16
标题: ComfyUI基础篇:Stable Diffusion 基础原理详述
媒介
个人认为学习 ComfyUI 应该先从理论学起。
与传统绘图工具(如 Photoshop 或 Figma)相比,AI 绘图工具有着显著差别。起首,很多设置和操作在 AI 绘图工具中好坏可视化的,这意味着即使你更改了某个配置,界面上也未必会有任何变化,这使得自学变得更加困难,难以像学习 Figma 那样通过自主探索来掌握。其次,AI 绘图工具的效果具有随机性,即使完全按照别人的教程操作,你也可能无法得到类似的效果,这更轻易让人产生挫败感。
那有没有什么办理方案呢?
在我看来,学习这种工具的第一步并不是直接学习怎样操作,而是应该先掌握与 AI 相干的理论知识。一旦你明白了这些基础知识,就可以或许明确这些绘图工具上的各种设置及用途,还能举一反三,开发出更多的使用方法。
因此, 

目录
1.Stable Diffusion 原理概述
2.Image Information Creator(图像信息天生器)
3.Image Decoder(图片解码器)
4.Text Encoder(文本编码器)
5.总结

Stable Diffusion 原理概述
为了便于明白,我将只管淘汰涉及数学和公式的部分,并接纳类比的方式来帮助你掌握一些概念。因此,可能会出现一些不够严谨的地方。如果你有更好的解释,欢迎在批评区留言,我们一起讨论。
Stable Diffusion并非是一个单独的模型,而是由多个模型组合起来的一个体系。我将用最基本的文生图工作流来解释Stable Diffusion的基本结构和原理。
当我们输入一句提示词(1gril,sea,sky,sun,clothes)之后,Stable Dissusion将天生一张一个女孩在海边享受阳光的图。


实际上,整个天生过程包罗三个重要步骤。我会先概述这三个步骤,让各人对 Stable Diffusion 有一个团体的熟悉,然后再详细讲授此中的细节:


总体流程可以简单明白为:用户输入了一段 Prompt 指令,计算机会根据这个指令,在潜空间里将一张随机图降噪成符合指令要求的图片。
整个过程,与其说是 AI 在「天生」图片,不如说是「镌刻」更贴切。就像米开朗基罗在完成大卫雕像后所说的那样:雕像原本就存在于石头中,我只是将多余的部分去掉。


通过上图可以清晰的看出ComfyUI的生图过程。如图所示,ComfyUI生图时会分多次对图片进行「降噪」,这个过程发生在潜空间里,ComfyUI只是将末了一次降噪的效果解码成照片。

Image Information Creator(图像信息天生器)
接着上面所说,我们来详细分析一下降噪这个过程。
起首,整个降噪过程会在一个潜空间(Latent Space)中进行,并颠末多步降噪。这些步骤(Steps)可以自己设置,通常步骤越多,图片质量越高,同时生图所需的时间也会更长。当然,这也取决于模型的性能。例如,Stable Diffusion XL Turbo 能在1步内天生图像,耗时不到1秒,并且天生的图片质量相当不错。那这个过程到底是怎么样的呢?如果我们将整个Denoise过程可视化,如下所示:


上图看起来很复杂,但不消畏惧,只要懂得基本的加减乘除,我们就能明白每个降噪步骤:


留意:如果你想要改变终极天生图像的巨细,例如将512*512改为1024*1024,不是通过提示词下达指令修改,而是通过修改随机图的比例或巨细。就好比前面举得“镌刻”的例子,用 1 立方米的石头进行镌刻,不管镌刻师武艺有多好,都没法镌刻出一个高 10 米的雕像。它最多只能镌刻一个高 1 米的雕像。
如果你使用过 Stable Diffusion 工具,你会留意到 Prompt 输入框有两个,一个是正向的,一个是负向的。那么负向的 Prompt 怎样起作用呢?用上面的数学方法来简单解释,当输入负向 Prompt 时,会天生一张噪声图 B2。此时,我们会用正向 Prompt 天生的噪声图 B1 减去 B2,然后再减去 C 得出 D。这意味着终极天生的图片会更加远离 B2,因为去除了更多与 B2 相干的噪声。

Image Decoder(图片解码器)
接下来,我们来讨论一下潜空间(Latent Space)。在学习这个概念时,我最大的疑惑是,为什么要在潜空间中进行处理,而不是直接对图像进行降噪?
要回答这个问题,起首需要明白什么是潜空间。
潜空间是呆板学习和深度学习中用于表示数据的低维空间。它通过对原始数据进行编码和降维而天生的一组潜在变量。潜空间的维度通常比原始数据低,因此可以提取出数据中最关键的特征和结构。
固然看起来很复杂,但简单来说,潜空间将图片编码成一组数字,同时对这些数字进行压缩。让我们通过可视化的方式来看看这个过程:


图片会起首通过一个图像编码器(Image Encoder)被编码成一组数据,并进行压缩。如果从像素的角度来衡量这种数据压缩效果,原始图像可能是 512x512 像素,而压缩后变为 64x64 像素,数据量大幅淘汰。然后再使用图像解码器(Image Decoder)进行还原。这个编码器和解码器组合的组件被称为变分自编码器(Variational Auto Encoder),简称 VAE。因此,图像解码器在一些产品中也称为 VAE 解码器。
那使用这个技术有什么益处和弊处呢?
益处:
弊处:
为什么 Stable Diffusion 天生的图片中的笔墨通常看起来很希奇呢?缘故原由有两方面。一方面,笔墨的一些 细节特征在这个过程中丢失了。另一方面,在预测噪声时,笔墨的预测相比图像的预测不那么连贯。例如, 预测猫的特征相对简单,因为猫通常有两个眼睛,眼睛下是鼻子,这些特征是连贯的。而英文单词“Cat”和中笔墨符“猫”差异很大,且很难预测。例如,中文的笔画大多由横、竖、勾、撇、捺构成,但很难预测撇之后是什么。

Text Encoder(文本编码器)
在最前面的流程中,我提到过,Text Encoder(文本编码器)会将你输入的 Prompt 编译成词特征向量。这一步会天生77个等长的向量,每个向量包含768个维度。那么这些向量详细有什么作用呢?
还有一个更有趣的问题是,当我们在 Prompt 中只输入“Cat”,并没有加入“stripe”这个词,为什么末了天生的猫是有斑点条纹的呢?要回答这个问题,我们需要先明白 Text Encoder 的实现原理。
目前,Stable Diffusion 常用的 Text Encoder 是 OpenAI 开源的 CLIP 模型,全称为对比语言图像预训练(Contrastive Language Image Pre-training)。我们先画个图来解释一下:


起首,CLIP 模型包含一个 Text Encoder,用于将文本转换为特征向量。同时,它还有一个 Image 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 转换成特征向量。语法和巨细写在转换成特征向量后,都会酿成 一串数字,这些细节在没有对模型进行特殊调整的环境下,影响不大。

总结
感谢你阅读完这篇关于 Stable Diffusion 的基础详细解释。相信我,掌握了这些基础概念后,你会发现学习 ComfyUI 变得更加轻松。

                               孜孜以求,方能超越自我。结实不拔,乃是成功关键。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4