ComfyUI相对算是个特化的AI应用,比较针对文生图、图生图、图生视频领域。内核上来说是一个AI工作流应用,对比其它同内核产品来说,已经达到了我对现阶段AI工作流应用的预期:即简单易学、使用方便、产出有效(还有Dify也挺好)。但还是之前提到的那句话,目前为止都是在用工作流、Agent之类的概念去临时解决AI模型过于通用的问题,个人预测后续此类应用会越来越多,并且逐渐普及并诞生更多特化型的AI应用。我们现在也可以通过这类产品去更容易的理解AI,便于我们以后进入“伴生AI”(个人感觉AI个人应用层面的终点概念,再聊)的时代。

    绝大多数人对ComfyUI的了解可能是图生视频了,就产出的结果上来说,虽然AI还无法做到长时间、复杂运动场景视频的连贯性,但是在短视频领域已经基本上到了一个难辨真假的地步。

    本文中部分翻译与原文有不同,我尽量避免有AI领域的术语,去简单解读解读一下ComfyUI相关的概念,基本上也适用于其它AI工作流应用。

一、基本概念

Workflow工作流

● Workflow是由Node节点和节点间的Link连接组成的、能完整处理输入和输出的数据处理流程;

● 我们可以简单的把工作流理解为一个完整的程序;

● ComfyUI提供了可视化编辑工作流的功能,这也是扣子等其它AI工作流应用类似的地方,但ComfyUI的可视化做的更简洁、有效。你可能也在其它领域中见过此类功能,比如虚幻引擎的蓝图(一个功能强大的可视化开发插件);

● 当然你也可以将一段工作流打包为可复用的节点,供其它工作流调用;

Node节点

概念

● 在ComfyUI中,节点是最基础的执行单元,每个节点可以负责执行不同的数据处理任务。执行的任务是由节点的类型决定的,Comfy内置有大多需要用到的节点类型,同时也支持自定义节点;

● 节点通过Link连接到另一个节点,多个节点连接就组成了工作流;

● 节点一般情况下需要设定输入、输出、属性才能正常运行;

● 节点一般是一段对输入进行数据处理的Python代码;

Input/Output输入输出类型

● Model,即Diffusion Model扩散模型,节点使用的扩散模型:

○ 生成图像时的一种技术方法,简单来说是通过逐步添加随机噪声,然后再逐步根据模型训练结果去除,实现从噪声到高保真数据的生成;

○ 当年最出名的Stable Diffusion、以及后来的DALL-E 3等模型,都属于这一类;

● CLIP,即CLIP Model对比语言-图像预训练模型(Contrastive Language-Image Pre-training Model),节点使用的CLIP模型:

○ 作用是输入图像输出文本解释、或输入文本输出匹配的图像;

○ 通过大规模的图文配对数据训练达成对齐文本与图像特征的结果;

○ 我们的自然语言文字输入、以及Prompt提示词一般会给CLIP Model作为数据使用;

● VAE,即VAE Model变分自编码器(Variational Autoencoder):

○ 作用是编码和解码,提取图片或数据的低维特征、或者根据低维特征生成图片或数据;

○ 一般图像生成的最后一步是通过VAE解码。如果需要ComfyUI生成类似风格的图像,则输入的图像需要先通过VAE编码;

● Latent,即Latent image潜影:

○ 源自摄影领域的说法,在AI领域里,指的是图像经VAE编码后的数据、或者用来输入到VAE进行生成图像的数据;

○ 在生图的工作流中,Latent image就是解码前的最终结果了;

● Image,即Pixel image像素图像:

○ 就是常规上说的图像;

● Mask,即遮罩:

○ 一般是与原图大小、尺寸一致的黑白图像;

○ 通过像素点的黑白灰,定义哪些区域需要被处理;

○ 一般情况下白色标识需要修改、黑色标识完全不修改、灰色标识需要处理边缘的过渡;

○ 作用是在二维层面限制模型的操作范围,避免修改掉不想要模型修改的部分;

● Mesh,即网格:

○ 一般是由Vertice点、Edge边、Face面组成的三维几何结构;

○ 举例说明就是人体的骨架结构,可以通过摆出姿势,使最后图像符合想要的姿势;

○ 作用是定义形状、姿态,使模型生成符合三维空间结构的图像;

● Conditioning,条件型:

○ 一般分为Positive积极、Negative消极;

○ Positive代表的是节点必须处理的内容;

○ Negative代表的是节点必须避免的内容;

○ 通过条件的设定可以规范节点的输出;

● Number,数值:

○ 整数或浮点型的数值;

Status节点状态

● Normal正常:节点正常的状态;

● Running运行中:节点在执行时的状态,节点外框会显示绿色;

● Error异常:节点执行失败的状态,一般情况下是由于输入不正确导致的,节点外框会显示红色,同时不正确的输入会标红;

● Missing缺失:节点不存在,一般只会在导入时,因为没有安装相应的自定义节点而出现;

Mode模式

● 执行模式,决定了节点的执行方式:

○ Always:正常执行;

○ Never:不执行,节点不会执行,也不会进行任何输出;

○ Bypass:绕过执行,节点不会执行,会将输入原样不动的输出;

○ OnEvent:目前没有开放,按经验来看,后续会增加Event事件通知执行;

○ OnTrigger:目前没有开放,按经验来看,后续会增加满足条件后Trigger触发执行;

Property属性

● Property可以简单理解为节点的参数,使用来调节、或配置节点对输入数据的处理方式;

● 属性是类型敏感的,这意味着不同数据类型间必须经过转换才能使用;

● 属性可以有不同的输入模式:

○ Widget Mode组件模式:此模式下,属性值手动输入;

○ InputMode输入模式:此模式下,属性值会作为节点的一个输入项处理,此时需要用Link连接一个输出。一般情况下为保证前后属性一致,会用输入模式处理公共属性;

Custom Node自定义节点

● 除了ComfyUI自带的内置节点外,也可以通过ComfyUIManager、Git、手动安装等方式引入外部自定义节点;

● 正常推荐通过内置的ComfyUIManager安装,便于使用;

Link连接

● 节点之间通过Link连接;

● Link代表了数据的传输,所以一个连接的起点和终点是同一种类型,即一个节点的一个输出,连接到另一个节点的一个相同类型的输入;

● 如果工作流体量较大,导致连接间交叉、重叠,也可以使用Reroute创建小的连接的断点,方便组织工作流的可视化;

Model模型

● Comfy中,可以通过ComfyUIManager安装多种多样的模型,这也是最容易理解和操作的方式;

● Comfy中也支持安装自己的模型,这个就多种多样了,这里不赘述;

● 一般情况下可以在工作流中,通过创建LoadCheckpoint、LoadLoRA、LoadVAE等节点加载指定文件夹下的模型;

二、简单例子——文生图

一个简单的文生图工作流,实现根据提示词生成指定大小的图片。

它会包括如下节点:

● LoadCheckpoint:

○ 此节点是一般情况下用来加载模型的节点;

○ 他可以根据选择的模型,解析出Model、Clip、Vae三个类型的输出;

● EmptyLatentImage:

○ 此节点用来创建一个空白的潜影图像,后续会以此为基础进行图像的生成绘制;

○ 此节点也可以换为LoadImage和VAEEncode的组合,生成一个已知图像的潜影,实现图生图;

○ 此节点可以填写width、height指定生图的尺寸大小,填写batch_size指定生图数量;

○ 此节点没有输入,输出为Latent;

● CLIPTextEncoder:

○ 此节点用来确定提示词,会输出Conditioning类型,连接到后续节点的条件输入上;

○ 后续节点的条件输入一般分为Positive、Negative。在连接到Positive的此类型节点中输入想要的结果,在连接到Negative的此类型节点中输入不想要的结果,即可实现对生图的提示词限制;

○ 此节点输入为CLIP类型,输出为Conditioning;

● KSampler:

○ KSampler节点是此工作流的核心,通过将DiffusionModel扩散模型、潜影图像、提示词进行处理后,生成新的潜影图像;

○ 此节点可以设置多个属性,包括seed(随机种子)、control_after_generate(同批次多张图片时,随机种子的生成方式)、steps(降噪次数)、cfg(提示词的控制强度,数值越高时生成的图片越会严格遵循提示词)、sampler_name(采样算法)、scheduler(控制每步执行的强度)、denoise(降噪的强度);

○ 此节点的输入为LoadCheckpoint的Model输出、CLIPTextEncoder输出的Positive和Negative提示词、EmptyLatentImage输出的潜影图像,输出为Latent潜影图像;

● VAEDecode:

○ 此节点会将Latent潜影图像通过指定的VAE模型解码为像素图像;

○ 此节点的输入为KSampler输出的潜影图像、LoadCheckpoint输出的VAE,输出为Image像素图像;

● SaveImage:

○ 此节点会将输出的像素图像储存在ComfyUI/output文件夹下,你可以设置文件名的前缀;

○ 此节点的输入为VAEDecode输出的Image像素图像;

        

三、总结

    AI毫无疑问是接下来的技术重点了,虽然现在有很多通用型的AI模型,但处理实际问题时,特化型的AI在现在更有优势。一方面因为背景信息的数据量实在太过庞大,在实现AI伴生之前,我们很难让AI去理解问题背景以及过往经验,或者帮助其理解的成本远高于产出的收益;另一方面我们的问题处理的内容已经过于工作化,偏向于只处理片面信息以达成工作的流程化。尽管现在的AI还存在这样那样的问题,但可预见的未来里我们都会开始接触特化型的AI去协助解决局部的问题,不管是编程、招聘、医疗、客服、科研论文、绘图等等,这已经是现状了。现在在生活工作中实际应用AI的门槛确实还是很高,但不妨碍我们通过类似ComfyUI这类优秀的产品去理解概念。

Logo

更多推荐