前言:
学习 ComfyUI 是一场持久战,而 ComfyUI Impact 是一个庞大的模块节点库,内置许多非常实用且强大的功能节点 ,例如检测器、细节强化器、预览桥、通配符、Hook、图片发送器、图片接收器等等。通过这些节点的组合运用,我们可以实现的工作有很多,例如自动人脸检测和优化修复、区域增强、局部重绘、控制人群、发型设计、更换模特服饰等。在 ComfyUI 的进阶之路上,ComfyUI Impact 是每个人不可绕过的一条大河,所以本篇文章将带领大家理解并学会使用这些节点。祝大家学习顺利,早日成为 ComfyUI 的高手!
一、安装方式
方法一:通过 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信息