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 结果图,分别如下所示:



孜孜以求,方能超越自我。坚持不懈,乃是成功关键。