ComfyUI插件:ComfyUI Impact 节点(二)
前言:
学习ComfyUI是一场持久战,而 ComfyUI Impact 是一个庞大的模块节点库,内置许多非常实用且强大的功能节点 ,例如检测器、细节强化器、预览桥、通配符、Hook、图片发送器、图片接收器等等。通过这些节点的组合运用,我们可以实现的工作有很多,例如自动人脸检测和优化修复、区域增强、局部重绘、控制人群、发型设计、更换模特服饰等。在ComfyUI的进阶之路上,ComfyUI Impact是每个人不可绕过的一条大河,所以本篇文章将带领大家理解并学会使用这些节点。祝大家学习顺利,早日成为ComfyUI的高手!
目录
一、安装方式
二、ToBasicPipe / FromBasicPipe / FromBasicPipe_V2节点
三、ToDetailerPipe / ToDetailerPipeSDXL / FromDetailerPipe / FromDetailerPipe_V2 / FromDetailer(SDXL/pipe)节点
四、Edit BasicPipe / Edit DetailerPipe / Edit DetailerPipe(SDXL) 节点
五、BasicPipe->DetailerPipe / BasicPipe->DetailerPipe(SDXL) / DetailerPipe->BasicPipe节点
六、Image Sender / Image Receiver节点
七、FaceDetailer / FaceDetailer(Pipe)节点
八、示例工作流
一、安装方式
方法一:通过ComfyUI Manager安装(推荐)
打开Manager界面
方法二:使用git clone命令安装
在ComfyUI/custom_nodes目录下输入cmd按回车进入电脑终端
在终端输入下面这行代码开始下载
git clone https://github.com/ltdrdata/ComfyUI-Impact-Pack
先行提示:Pipe节点是Impact为我们提供的一种非常方便的节点类型。当我们需要多次使用模型、clip、vae、提示词等元素时,UI端会出现大量的线条,显得十分混乱。而Pipe节点解决了这个问题。我们只需在开始时使用To节点整合这些信息,然后通过一根线连接到需要使用这些信息的地方,再用From节点解析出来。在整个过程中,仅需一根线连接,大大提高了工作流的效率。这篇文章将主要讲解Pipe节点的使用,帮助大家掌握所有这类节点的操作,提高工作效率。
二、ToBasicPipe / FromBasicPipe / FromBasicPipe_V2节点
ToBasicPipe节点将构建工作流最基本的节点信息整合在一条管道(Pipe)中,FromBasicPipe节点和ToBasicPipe节点是配套使用的,它可以将ToBasicPipe节点整合的信息解析成原来的样子,FromBasicPipe_V2节点则是可以将灵活性再一次提升。举个通俗一点的例子:ToBasicPipe节点和FromBasicPipe节点类似于高铁的起始站和终点站,整合信息会从起始站走到终点站,而FromBasicPipe_V2节点是中间站,有了它整合信息就可以有不同的走向了,就形成了路网。
输入:
basic_pipe → 包含了model、clip、vae、positive、negative这些基本信息的管道
model → 要整合进管道的模型,可以是checkpoints模型、Lora模型、controlnet模型等等
clip → 要整合进管道的clip模型
vae → 要整合进管道的vae模型
positive → 要整合进管道的正向提示词
negative → 要整合进管道的反向提示词
输出:
basic_pipe → 包含了model、clip、vae、positive、negative这些基本信息的管道
model → 根据管道解析出来的模型,可以是checkpoints模型、Lora模型、controlnet模型等等
clip → 根据管道解析出来的clip模型
vae → 根据管道解析出来的vae模型
positive → 根据管道解析出来的正向提示词
negative → 根据管道解析出来的反向提示词
示例:
使用场景:
· 数据标准化:在复杂工作流程中,确保数据格式统一,以便后续节点可以正确处理。
· 跨阶段数据传递:在多个处理阶段之间传递数据,确保各阶段的处理结果可以无缝衔接。
· 数据重新格式化:在数据处理流程中,将标准化的数据重新格式化为特定处理节点所需的格式。
· 后续处理:在后续处理阶段中,使用提取的数据进行进一步的分析和处理。
· 复杂数据处理:在复杂数据处理流程中,处理更多的数据类型和格式,提供更高的灵活性和控制。
· 高级数据转换:提供更高级的数据转换功能,满足更复杂的应用需求。
通过使用ToBasicPipe、FromBasicPipe和FromBasicPipe_V2节点,可以在复杂的工作流程中实现数据的标准化、传递和重新格式化,确保各处理阶段之间的数据流动顺畅,提高工作流程的灵活性和效率。
三、ToDetailerPipe / ToDetailerPipeSDXL / FromDetailerPipe / FromDetailerPipe_V2 / FromDetailer(SDXL/pipe)节点
用于处理图像分割和细化处理工作流中的数据传递和格式转换,帮助在复杂的图像处理管道中管理和传递数据。简单的讲,这些节点也是让线路更加整洁美观,但是整合的信息更多。
输入:
model → 要整合进管道的模型,可以是checkpoints模型、Lora模型、controlnet模型等等
clip → 要整合进管道的clip模型
vae → 要整合进管道的vae模型
positive → 要整合进管道的正向提示词
negative → 要整合进管道的反向提示词
bbox_detector → 要整合进管道的BBOX模型
sam_model_opt → 要整合进管道的SAM模型
segm_detector_opt → 要整合进管道的SEGM模型
detailer_hook → 要整合进管道的定制的细节处理信息
文本框 → 通配符规范,如果保持为空,此选项将被忽略
Select to add LoRA → 选择要加载的LoRA模型
Selert to add Wildcard → 选择要添加的通配符
refiner_model → 要整合进管道的refiner大模型
refiner_clip → 要整合进管道的refiner模型的clip模型
refiner_positive → 要整合进管道的refiner模型连接的正向提升词
refiner_negative → 要整合进管道的refiner模型连接的反向提升词
detailer_pipe → 整合上面所有参数信息后的管道
输出:
model → 从管道分离出的base模型,可以是checkpoints模型、Lora模型、controlnet模型等等
clip → 从管道分离出的clip模型
vae → 从管道分离出的vae模型
positive → 从管道分离出的base模型的正向提示词
negative → 从管道分离出的base模型的反向提示词
bbox_detector → 从管道分离出的BBOX模型
sam_model_opt → 从管道分离出的SAM模型
segm_detector_opt → 从管道分离出的SEGM模型
detailer_hook → 从管道分离出的定制的细节处理信息
refiner_model → 从管道分离出的refiner模型,可以是checkpoints模型、Lora模型、controlnet模型等等
refiner_clip → 从管道分离出的refiner模型中的clip模型
refiner_positive → 从管道分离出的refiner模型的正向提示词
refiner_negative → 从管道分离出的refiner模型的反向提示词
detailer_pipe → 整合了所有参数信息的管道
注意:refiner_model, refiner_clip, refiner_positive, refiner_negative这些节点都是refiner模型对应的参数,ToDetailerPipeSDXL节点的一个优势就是可以将base模型和refiner模型结合起来。如下图所示:
Detailer类型的节点整合的管道可以分离出来连接Basic类型的节点。如下图所示:将FromDetailer(SDXL/pipe)节点中的base模型和refiner模型的model、clip、positive、nagetive等信息分别连接到两个ToBasicPipe节点中,可以单独使用某个模型的信息,后面也可以使用BasicPipe->DetailerPipe(SDXL)节点合并起来。
使用场景:
· 数据标准化:在复杂工作流程中,确保数据格式统一,以便后续节点可以正确处理。
· 跨阶段数据传递:在多个处理阶段之间传递数据,确保各阶段的处理结果可以无缝衔接。
· 高分辨率图像处理:适用于高分辨率图像的细化处理,确保数据格式适合后续处理步骤。
· 数据重新格式化:在数据处理流程中,将标准化的数据重新格式化为特定处理节点所需的格式。
· 后续处理:在后续处理阶段中,使用提取的数据进行进一步的分析和处理。
· 复杂数据处理:在复杂数据处理流程中,处理更多的数据类型和格式,提供更高的灵活性和控制。
· 高级数据转换:提供更高级的数据转换功能,满足更复杂的应用需求。
· 细化处理后的数据提取:从细化处理结果中提取高分辨率数据,以便进一步处理或分析。
通过使用这些节点,可以在复杂的图像处理工作流程中实现数据的标准化、传递和重新格式化,确保各处理阶段之间的数据流动顺畅,提高工作流程的灵活性和效率。
四、Edit BasicPipe / Edit DetailerPipe / Edit DetailerPipe(SDXL) 节点
这些节点用于在处理管道中对数据进行编辑和调整,允许在数据传递过程中对数据进行必要的修改,以满足特定的处理需求。
由于关于Pipe类型节点的所有参数在前面都全部讲过了,这里就不浪费篇幅继续说参数了,如果有不懂的参数往上翻翻都能找到。下面附一张使用图帮助理解:
注意事项
· 数据一致性:确保输入数据格式与期望的一致,以便各节点可以正确处理和传递数据。
· 节点配置:根据具体需求调整节点的配置参数,以获得最佳的数据处理效果。
· 编辑谨慎:在编辑过程中,注意保存原始数据副本,以防止误操作导致的数据丢失或错误。
五、BasicPipe->DetailerPipe / BasicPipe->DetailerPipe(SDXL) / DetailerPipe->BasicPipe节点
这些节点用于在不同数据管道格式之间进行转换,以便在复杂的图像处理工作流程中实现数据的无缝传递和处理。
关于Pipe类型节点的所有参数在前面都全部讲过了,这里也是不凑字数继续说参数了,如果有不懂的参数往上翻翻都能找到。下面附上每个节点的使用图帮助理解:
注意事项
· 数据一致性:确保输入数据格式与期望的一致,以便各节点可以正确处理和传递数据。
· 节点配置:根据具体需求调整节点的配置参数,以获得最佳的数据处理效果。
· 转换精度:在转换过程中,确保数据的完整性和精度不受影响,以便后续处理步骤能够正确使用转换后的数据。
通过使用这些转换节点,可以在复杂的图像处理工作流程中实现数据格式的无缝转换和传递,确保各处理阶段之间的数据流动顺畅,提高工作流程的灵活性和效率。
六、Image Sender / Image Receiver节点
图片发送器和图片接收器,这两者组合使用可以实现不用连线将图片传送到工作流的任意位置。
输入:
image → 需要传输的图像
参数:
filename_prefix → 设置图片名的前缀 在传输过程中节点都会为所传图片起个图片名
link_id → 设置发送器或接收器的id只要id一样,一个发送器可以同时发送给多个接收器
image → 图片名
save_to_workflow → 选择是否将图片保存到工作流中
image_data → 当选择将图片保存到工作流中时,把图片转成文本信息储存在这(该信息会随着工作流一起保存)
trigger_always → 控制接收器是否一直触发
注意:通常我们使用LoadImage加载的图像无法在另外一台电脑中使用,因为这张图片是本地的,而save_to_workflow就是解决了这个问题。它将图片转成文本信息保存到工作流中,其他人下载该工作流时,其中的图片也随工作流一起被下载并可以使用。但是由于将图像转换成文本的效率很低,所以对于高分辨率的复杂图像应谨慎使用!同时上述过程会显著增加工作流的大小,建议对MASK图像等简单图像使用这个功能。
输出:
IMAGE → 接收到的图像
MASK → 接收到的图像MASK数据输出口
示例:
注意事项
· 数据一致性:确保发送和接收的图像数据格式一致,以便各节点可以正确处理和传递数据。
· 节点配置:根据具体需求配置节点的发送目标和接收源,以实现正确的数据传输。
· 网络连接:如果涉及远程处理,确保网络连接稳定,以便数据能够顺利传输。
七、FaceDetailer / FaceDetailer(Pipe)节点
专门针对脸部进行细节优化,内置一个独立的采样器,用于对脸部进行重新扩散。pipe版的FaceDetailer可以将base模型和refiner模型结合使用,做到更细节的修复。
输入:
image → 需要重绘的原始图像
model → 加载大模型
clip → 加载clip模型
vae → 加载vae模型
positive → 导入正向提示词
negative → 导入反向提示词
bbox_detector → 加载BBOX模型
sam_model_opt → 加载SAM模型
segm_detector_opt → 加载SEGM模型
detailer_hook → 对模型进行更加精细调整的拓展接口
detailer_pipe → Detailer管道,在Basic管道的基础上加入了检测功能
参数:
guide_size → 参考尺寸 小于的目标图像被放大以匹配,而大于的图像将被跳过,因为它们不需要细节处理
guide_size_for → 设置guide_size基于什么 当设置为bbox时,它使用检测器检测到的bbox作为参考;当设置为crop_region时,它使用基于检测到的bbox所识别的裁剪区域作为参考
注意:选择BBOX时,基于crop_factor的放大图像的大小可能比guide_size大几倍。
max_size → 最大尺寸 将目标图像的最长边限制为小于max_size的安全措施,它解决了bbox可能变得过大的问题,特别是如果它有细长的形状
seed → 内置KSampler的种子
control_after_generate → 控制种子的变更方式 fixed为固定种子,increment为每次增加1,decrement为每次减少1,randomize为种子随机
steps → 去噪步数(也可以理解成生成图片的步数)
cfg → 提示词引导系数,即提示词对结果产生影响的大小 过高会产生负面影响
sampler_name → 选择采样器
scheduler → 选择调度器
denoise → 去噪幅度 值越大对图片产生的影响和变化越大
feather → 羽化的大小
noise_mask → 控制在修复过程中是否使用噪声掩码 虽然在不用噪声掩码的情况下,较低的去噪值有时会产生更自然的结果,但通常建议将该参数设置为enabled
force_inpaint → 防止跳过基于guide_size的所有过程 当目标是修复而不是细化时,这很有用。小于guide_size的SEGS不会通过减小去匹配guide_size;相反,它们会被修复为原来的大小
bbox_threshold → BBOX模型的检测阈值
bbox_dilation → BBOX模型边界框的膨胀参数,用于扩展边界框的范围
bbox_crop_factor → BBOX模型根据检测到的掩码区域,确定应将周围区域包含在细节修复过程中的次数 如果此值较小,则修复可能无法正常工作,因为无法知道周围的上下文
sam_detection_hint → SAM模型中用来指定在分割时使用哪种类型的检测结果作为提示来帮助生成掩码
sam_dilation → SAM模型边界框的膨胀参数,用于扩展边界框的范围
sam_threshold → SAM模型的检测阈值
sam_bbox_expansion → SAM模型在生成轮廓时扩展边界的大小,以确保更好地包含目标对象
sam_mask_hint_threshold → SAM模型中,与sam_mask_hint_use_nagative参数一起使用,用于指定detection_hint的阈值,将掩码区域中的掩码值等于或高于阈值的情况解释为正提示
sam_mask_hint_use_negative → 用于控制SAM模型是否使用负提示来辅助分割 设置为True时,非常小的点被解释为掩码点中的负面提示,而掩码值为0的一些区域被解释为掩码区域中的负面提示
drop_size → 设置一个尺寸阈值,用于过滤较小目标的参数 去除噪声或不相关的小目标,使得检测结果更加可靠和准确
文本框 → 输入通配符,如果为空,该选项会被忽略
refiner_ratio → 使用SDXL时,设置要refiner模型的功能在总进程中所占的比例。
cycle → 采样的迭代次数 **当与Detailer_hook一起使用时,此选项允许添加间歇性噪声,也可用于逐渐减小去噪大小,最初建立基本结构,然后对其进行细化。
inpaint_model → 使用修复模型时,需要启用此选项,以确保在低于1.0的降噪值下进行正确的内补
noise_mask_feather → 控制羽化操作是否应用于修复过程的蒙版、
注意:noise_mask_feather不能保证图像更自然,同时它可能会在边缘产生伪影,大家按需设置!
输出:
image → 最终重绘后的图片
cropped_refined → 经过剪裁和进一步处理的图像
cropped_enhanced_alpha → 经过裁剪和精细化处理后的alpha通道
mask → 重绘后图片的mask信息
detailer_pipe → Detailer管道,在Basic管道的基础上加入了检测功能
cent_images → 蒙版位置图
注意:在ComfyUI Impact 节点(一)中讲过cent_images这个参数,请大家谨慎吸收!!
主要功能和使用方法:
· 输入人脸图像:节点接受包含人脸的图像数据,通常是从前置的检测或分割节点获取的。
· 细化处理:对输入的人脸图像进行细化处理,如增强细节、去除噪声、调整光照等。
· 管道集成:支持与其他节点的无缝集成,适合用于复杂的图像处理管道。
· 输出优化图像:输出经过细化处理后的高质量人脸图像。
注意事项
· 输入数据质量:确保输入的图像数据包含清晰的人脸信息,以获得最佳的细化处理效果。
· 节点配置:根据具体需求调整细化处理参数,以实现最佳的图像质量提升效果。
· 处理性能:细化处理可能需要较高的计算资源,确保系统性能足够支持处理需求。
八、示例工作流
熟练使用以上节点,你就可以搭建一个简单的“脸部修复”的工作流了。
该工作流囊括了这篇文章学习的所有节点,将该工作流学习一遍,会对上面所学的节点有一个更深层次的理解。主要思路就是使用了三个FaceDetailer,然后通过添加、修改、拆分管道的信息生成每个FaceDetailer所需的输入信息,随后FaceDetailer内部的采样器根据检测模型检测的脸部蒙板以及提示词对脸部进行细节修复。上图正下方的四张图分别是原图、只使用Base模型的FaceDetailer结果图、结合使用Base模型和Refiner模型的FaceDetailer结果图、结合使用Base模型和Refiner模型并引入SEGS的FaceDetailer结果图,分别如下所示:
孜孜以求,方能超越自我。坚持不懈,乃是成功关键。
ComfyUI插件:ComfyUI Impact 节点(二)的更多相关文章
- MS CRM 2011的自定义和开发(11)——插件(plugin)开发(二)
http://www.cnblogs.com/StoneGarden/archive/2012/02/06/2339490.html MS CRM 2011的自定义和开发(11)——插件(plugin ...
- 日历插件FullCalendar应用:(二)数据增删改
接上一篇 日历插件FullCalendar应用:(一)数据展现. 这一篇主要讲使用fullcalendar插件如何做数据的增删改,用到了art.dialog web对话框组件,上一篇用到的webFor ...
- Ztree插件,定位节点时(focus)不能进入可视区域BUG解决方案
相关插件版本: jquery.ztree.exedit-3.4.js jquery.ztree.all-3.4.js jquery-1.8.0.js function onAsyncSuccess(e ...
- jQuery插件手把手教会(二)
上次我们将到了简单的jQuery插件,这次我们继续: 面向对象的插件开发 为什么要有面向对象的思维,因为如果不这样,你可能需要一个方法的时候就去定义一个function,当需要另外一个方法的时候,再去 ...
- Unity给力插件之ShaderForge(二)
直接上实例: 一.自定义光照: 效果图(白色点光源照射时) 图片及参数 节点编辑 备注: 1.append为追加:两个一维数值合并为一个二维数值,一个二维数值与一个一维数值合并为一个三维数值,以此类推 ...
- jQuery插件ImgAreaSelect 实例讲解二
在上一篇随笔http://www.cnblogs.com/chenguanai/p/6883401.html中,已经了解了头像的上传预览和裁剪功能:那么这次就再看一下imgareaselect的裁剪功 ...
- Jstree 使用CheckBox插件 选中父节点时被禁用的子节点也会选中问题
问题描述: 最近用jstree遇到一个问题,使用CheckBox插件时,当父节点选中时,被禁用的子节点也会选中如下 解决方案: 1. 将jstree升级到最新的版本,v3.3.4及以上就可以 2. ...
- Mybatis插件原理分析(二)
在上一篇中Mybatis插件原理分析(一)中我们主要介绍了一下Mybatis插件相关的几个类的源码,并对源码进行了一些解释,接下来我们通过一个简单的插件实现来对Mybatis插件的运行流程进行分析. ...
- Unity Rain Ai 插件基本使用(二)
前言 在前面的教程中我们已经基本实现了路径导航和障碍物规避. 但是这样我们并没有让我们的角色学会思考,他只是机械的去完成一些步骤,这并不能体现Rain插件的智能. 一个角色他应该有多个不同的状态,待机 ...
- js学习总结:DOM节点二(dom基本操作)
一.DOM继承树 DOM——Document Object Model DOM定义了表示修改文档所需要的方法.DOM对象即为宿主对象,由浏览器厂商定义,用来操作html和xml的一类厂商定义,也有人称 ...
随机推荐
- SpringBoot自定义拦截器(多个拦截器)
在 Spring Boot 中要实现自定义拦截器需要实现 HandlerInterceptor 接口,并重写 preHandle.postHandle 和 afterCompletion 方法: im ...
- 批量处理图片(resize;grayscale)以及重命名
批量处理图片(resize:grayscale)以及重命名 做深度学习,有大量图片需要做为训练集,为方便批量resize,rename,灰度化,制作python脚本. 先纪录一些函数: resize ...
- (JAVA)设计模式-适配器模式
模式的定义和特点: 适配器模式(Adapter)是一种将一个类的接口转换成客户希望的另外一个接口的设计模式,可以提高代码的复用性和灵活性. 结构与实现: 定义一个适配器类来实现业务接口,再继承现有组件 ...
- numpy基础--用于数组的文件输入输出
以下代码的前提:import numpy as np numpy能够读写磁盘上的文本数据或二进制数据. 1 将数组以二进制格式保存到磁盘 np.save和np.load是读写磁盘数组数据的两个主要函数 ...
- Java中Calendar类与SimpleDateFormat类的介绍
目录 Calendar类(关于日期的一些方法) get(Calendar.XXX); get(Calendar.Year) get(Calendar.MONTH) get(Calendar.DAY_O ...
- JavaSE 数据类型以及基本转化与包装
目录 数据类型. 1.基本类型(八个) 数值型 整型类型 byte型:1字节 8bit位 第一位是符号位 null short型:2字节 int 型:4字节 long型:8字节 浮点类型 float ...
- cors解决跨域 服务器代理方式
// cors 方法 // 后端程序员通过定义后端程序,让跨域访问,可以正常执行,可以获取响应体内容 // 前端程序员不需要做任何的调整 // 后端程序 ...
- winform遍历控件的Controls.OfType<>方法
页面TextBox控件较多时,可以使用类似的名字,方便遍历时整体的修改,可以使用Controls.OfType<TextBox>()获取所有文本框: 需要引用命名空间System.Linq ...
- 记一次 .NET某游戏币自助机后端 内存暴涨分析
一:背景 1. 讲故事 前些天有位朋友找到我,说他们的程序内存会偶发性暴涨,自己分析了下是非托管内存问题,让我帮忙看下怎么回事?哈哈,看到这个dump我还是非常有兴趣的,居然还有这种游戏币自助机类型的 ...
- BigDecimal的小数位
在使用BigDecimal的divide方法进行除法运算时,需要传入两个参数:被除数和除数.如果要对除法结果进行保留小数位数的处理,可以使用该方法的重载形式,传入一个指定小数位数和舍入规则的MathC ...