Comfyui工作流配置分析--借助流程处理图片的想法

Comfyui工作流配置分析--借助流程处理图片的想法

搞了相机之后,某日兴冲冲到冒着大雾跑到街上,一个江苏小镇上的复古老街,有个很才学的名字“秀才巷”。40mm的镜头有点社恐,忽忽忙按完快门之后,发现画面里面的元素有点多,然后想着怎么剪裁会有更好的意境,想着想着,冒出了一个想法,AI帮我出点剪裁的意见呗。

裁剪建议:

  1. 左侧植物遮挡部分:裁剪掉左边的植物(大约从左侧占照片宽度的15%-20%位置开始)。
    • 目的:去除前景干扰,使观者的注意力更加集中在巷子和远处的人物上。
  2. 保留右侧传统建筑和红灯笼:右侧的红灯笼是一个重要的文化符号,裁剪时应确保保留整个灯笼部分,但可以稍微裁剪掉一些右侧的空白墙面(大约占照片宽度的5%-10%)。
    • 目的:突出传统建筑的细节,增加文化气息和故事感。
  3. 上方的电线与天空:电线在照片顶部占据了一部分空间,可以裁剪掉上方天空的一部分(大约从上方占照片高度的10%-15%位置开始)。
    • 目的:减少空白区域,让视线更集中在地面巷道和人物上,增强纵深感。
  4. 下方不需要的地面:可以稍微裁剪掉下方的石板路,保留大约75%的地面。
    • 目的:减少过多的前景,同时依然保持人物小径的引导效果

给我回馈的建议倒是不错,只是让我从PS里面去拉15%-20%,想要精确的话,好象还需要我在PS里面细致的干活,本着能少干一点就少干一点的想法,想到了ComfyUI的工作流。之前stable diffusion webUI倒是用得熟练的,ComfyUI的git拉下来之后还没有怎么跑过,那开始熟悉吧!

ComfyUI就不详细介绍了,基于Stable Diffusion开源项目开发的一个图像生成界面工具。和Automatic1111师出同宗。

复杂的工作流看起来很头大啊,然后详细了解之后,其实也就是一个一个简单的堆叠起来的。

image

图片生成中的基本概念

文本输入节点(CLIP Text Encoder)

将文本提示词转换成CLIP嵌入向量,用于指导图像生成。通俗点就是你需要生成的图片的描述文字。

当然这个有正向和反向的区分,正向就是最终生成的图片需要出现的词,反正就是最终生成的图片不要出现的词。

正向:1 girl.就会生成一个女孩

反向:black hair.就不会生成黑色头发

大模型加载器(Checkpoint Loader)

用于加载Stable Diffusion模型文件,训练的不同的模型可以生成不同类型的图片。

采样器(Sampler)

图片生成的核心,你把它想象成图片生成的反应堆好了。根据模型、提示词和其他设置参数生成图像。

空Latent节点

提供一个初始的潜在空间数据。图片的宽、高,一次生成多少张啊,这些设置。

VAE解码器节点

将采样器生成的潜在空间数据解码成可见的图像。

预览图像

生成出来的图片你得看吧,这时候就需要一个展示图片的节点。

到这里,生成一张最简单的图片的工作流所需的节点就凑齐了,那要怎么关联呢。

节点关联

我们把上面的所提到的节点围绕着采样器建立关联就行了。

每个节点的一个属性只有一个入口,每个节点的一个属性可以连接多个。

按这图我们正常理解一下:

  • 采样器生成图片需要大模型提供数据风格。
  • 需要正向提示词告诉我需要生成什么
  • 需要负面提示词告诉我不要生成什么
  • 需要给我设置宽高和张数

生成完了之后,再解码去显示。

image

基于上面的原理,我们拉一个最简单的工作流试一下。

image

当然前提工作,你的ComfyUI里面大模型下载好了,然后服务也跑起来了。

每个节点都有输入输出属性名字,和对应的颜色,把上一个节点的输出属性,连接到另一个同名字或同颜色的输入属性就行。

按这种方法正经跑一个!

image

在图片之后的处理

ComfyUI对比Automatic1111的优势之一就是可以用工作流处理,比如我在图片生成之后,想做一些处理或者N个处理都可以。

VAE解码之后的图像输出,我们可以把这个图像连接到预览,连接到保存,连接到图像的二次处理,比如模糊图像。

操作方法:

添加相应的节点,然后把VAE解码的图片分别连接到对就的处理节点上,这样我们的图片生成完之后,就会相应的保存到磁盘,和模糊图片处理。

image

在图片处理之前(controlNet)

同刚刚图片生成之后的处理,我们一样可以在图片生成之前,做很多流程上相应的处理,比如我们用得比较多的controlNet,根据一张图片的线条、人物动作等等,然后基于这个处理过的图片进行指定内容的生成。

我们可以把这个想象成,在图片生成之前做了一步预处理。

controlNet需要正面和负面的条件,那我们就把正面和负面的条件从controlNet里面,穿过一下再出去。

VAE也是一样,我们把VAE再拉一个到ControlNet节点。

还有一个ControlNet和图像两个,ControlNet没有,那我们就添加一个ControlNet控制器加载的节点,(确保你对应的文件下载了)。这里用canny线条举例。

图片就是controlNet对应的canny处理后的图片,那我们就需要添加一个图片加载器,对加载后的图片进行 canny预算理,把处理后的图片预览一下,以确保处理得是不是对的,然后再把预处理过的canny图片连接到ControlNet节点的图像上。这样就流程就又闭合了。

image

image

最后

这里面如果需要对节点再增加调整,我们只要把对应的节点进行调整就行了,比如把条件合并,把图片无损放大,不生成图片直接进行图片剪裁处理,都是只要对对应的节点进行配置就行了。

所以看起来很复杂的流程,都是在最简单的流程上面,对单个或多个节点一点一点的扩展。

image