一、介绍
因为comfyUI是基于workflow工作流的,就是将要完成的任务进行分解,然后一个个节点配置起来,如果你不懂的工作原理,别人分享的工作流你也只仅仅只能使用,想自己微调的话难度就大了。
二、原理拆解
这次先从最简单的文生图来拆解分析。
当你输入一个文字,比如 1girl,我们称之为 text prompt,系统会返回给你一张符合你输入文本的描述图片。
在整个过程中,在底层实现这个工作有三个关键点。
-
1、大模型
-
2、CLIP和VAE
-
3、采样器
下面分别来介绍。
2.1 大模型
第一个关键是大模型,模型是拿非常多的图片样本进行计算,这些图片上有大量的文本标记Tag,比如说蒙娜丽莎的图,就会打上达芬奇、写实派、女性、微笑、油画等一系列的属性,我们称之为Tag。
计算的过程中 ComfyUI做了以下三个事情
1:创建了一个叫做潜在空间的地方 Latent space。
2:用算法把这些图片进行压缩,并高度总结图片的特征,图片保留特征并且压缩成了特征的马赛克,这个过程我们称之为加噪音,特征马赛克也称之为噪音。
3:同时stable diffusion对文本的Tag也进行了总结和压缩,这个过程,称之为Token化。所谓的Token化,就是把文字拆解成小的单位,然后形成各种方便计算机可以理解但是人无法理解的字符字母和符号,用于方便计算机用非常神奇的算法进行各种的匹配,再把图片特征进行总结和压缩,并且把文本tag也进行token化的同时,stable diffusion还依然让图片和Tag保持起对应的关系,但此时就不是图片对应Tag了,而是潜在空间中Latent Space中的特征马赛克和他Token对应的这种关系,这时候我们就得到了一个懂得非常多的文本和图片的特征的对应关系的大模型。通过大模型可以创建潜在空间latent space。 潜在空间里面存放的都是马赛克和文本token的对应关系,这个计算的过程一般称之为训练大模型。
更简单的解释大模型:Stable Diffusion通过大量的图片和文本数据训练,将图片压缩成关键特征的表示,并将文本标签转化为计算机能理解的形式。在这个过程中,它建立了一个内部的、用于存储和处理这些数据的空间(潜在空间)。在这个空间里,图片的特征和文本标签以一种压缩和转化后的形式相互对应,使得模型能够基于文本描述生成或理解图像内容。
2.2 CLIP和VAE
为了让用户输入的内容可以进入latent space进行匹配,就需要工具把人类可以理解的文字和图片进行编码,转换为可以在Latent Space中工作的标识符,这样才能在潜在空间Latent Space中进行匹配,文字Prompt在转换的时候需要用到CLIP编码器把Prompt变成Token,图片会通过VAE编码器转化成特征马赛克(也就是噪音),最后再经过计算,Stable diffusion 会按照我们想要的意图生成一个新的特征马赛克,这个时候我们需要用VAE解码器,把这个特征马赛克转换为图片,这个图片就是我们最终需要的1 girl 的图片了。
2.3 采样器
上一步 我们已经把输入的text prompt的 1 girl转化成为了token,同时我们还需要输入一个基础的特征马赛克0,文生图的时候,我们系统就随机生成了一个基础的特征马赛克0,这时候采样器就把Token和基础特征马赛克0通过模型计算出来一个你想要的新的特征马赛克1,其中Token +基础马赛克0,还有一些其他的内容,我们通称为生成的约束条件 conditioning,这个特征马赛克1会和你输入的token继续计算,这个计算会持续很多次,每次就会越来越趋近于计算机认为你需要的token结果到底是什么样的图形,这个过程叫称之为采样,由于经过多次计算之后,特征马赛克1会越来越趋近于真实的图片,所以称之为Denose(去噪音),采样器使用一个算法和一些设置,运行N次计算,最后在Latent Space中得到了一个趋近于你想要的内容的特征马赛克N,这个马赛克N再通过VAE解码器还原成真实的图片,整个文生图的过程就完成了。
在这三个步骤完成之后,我们还需要对生成的图片进行一些后期的处理,在文生图的过程中,最初输入的第一个特征马赛克0一般是一个空的随机图片,图片的尺寸决定了你最后输出的图片的尺寸,这个尺寸一般也就是大模型进行训练时候的尺寸,这个尺寸也很影响你最后生成图片的质量,最开始 stable diffusion从1.5之前都是512512像素的图片,到了stable duffusion XL才变成了10241024的尺寸,由于最开始的512*512的尺寸不够大,所以在一般生成的图片之后还要进行后期的工作,比如说放大upscale或者是调色等等,这时候一般不会对图片的内容进行什么样的修改。
那么从 Text Prompt转化为Token,再加上一个空的随机的图片生成的特征马赛克,把这两个通过采样器跟模型的算法计算出来一个他推测的你需要的特征马赛克N,最后再把特征马赛克换为真实的图片,这就是最最基本的核心流程。
在此基础上会组合出非常多的玩法,比如图生图,就是你在最初输入的第一个特征马赛克0的时候是一个由你输入的图片而计算生成的,比如说controlnet就是在采样器的条件 conditioning中增加了更多的约束。
这个是最简化的模型是为了让初学者可以方便的记忆进行了大量的简化。
三、总结
一遍没看懂的,没关系,你只要记住大概的流程,后续结合案例讲解的时候,你回过来看看这里的三部分的原理拆解,你就会有更进一步的理解了。
-
1、大模型
-
2、CLIP和VAE
-
3、采样器
等理解了ComfyUI的工作原理,后续再组装任何工作流,就会显得游刃有余。
2.