前言:
学习ComfyUI是一场持久战,而 ComfyUI Impact 是一个庞大的模块节点库,内置许多非常实用且强大的功能节点 ,例如检测器、细节强化器、预览桥、通配符、Hook、图片发送器、图片接收器等等。通过这些节点的组合运用,我们可以实现的工作有很多,例如自动人脸检测和优化修复、区域增强、局部重绘、控制人群、发型设计、更换模特服饰等。在ComfyUI的进阶之路上,ComfyUI Impact是每个人不可绕过的一条大河,所以本篇文章将带领大家理解并学会使用这些节点。祝大家学习顺利,早日成为ComfyUI的高手!
目录
一、安装方式
二、NoiselnjectionDetailerHookProvider节点
三、DenoiseSchedulerDetailerHookProvider节点
四、UnsamplerDetailerHookProvider节点
五、Switch (Any) / Inversed Switch(Any)节点
六、DetailerHookCombine节点
七、MaskDetailer (pipe)节点
八、示例工作流
一、安装方式
方法一:通过ComfyUI Manager安装(推荐)
打开Manager界面
方法二:使用git clone命令安装
在ComfyUI/custom_nodes目录下输入cmd按回车进入电脑终端
在终端输入下面这行代码开始下载
git clone https://github.com/ltdrdata/ComfyUI-Impact-Pack
二、NoiselnjectionDetailerHookProvider节点
该节点专注于在图像处理过程中注入噪声,以帮助改善细节处理效果。这种方法可以在某些情况下提高图像的质量和真实感,特别是在处理低质量图像或需要增强细节的应用中。
参数:
schedule_for_cycle → 控制注入开始的时机,from_start表示从第一个循环开始注入噪声,skip_start表示跳过第一个循环的噪声注入
source → 噪声的来源,可选GPU和CPU
seed → 生成噪声的随机数种子
control_after_generate → 控制随机数种子的变更方式
start_strength → 初始的噪声注入量
end_strength → 结束时的噪声注入量
注意:随着噪声注入的进行,噪声的强度从start_strength逐渐增加或减小到end_strength。这样可以实现噪声强度随时间或步骤的平滑过渡。
输出:
DETAILER_HOOK → 经过噪声注入处理后的样本数据
注意:NoiselnjectionDetailerHookProvider节点使用时需要安装ComfyUI_Noise,因为该节点内部使用了BNK_InjectionBoise。当系统提示以下类似的界面时(可能根据浏览器的不同而不一样),点击确定自动安装并重启ComfyUI即可。
示例:
注意事项
· 噪声类型和强度:根据具体需求选择适当的噪声类型和强度,避免过度注入噪声导致图像质量下降。
· 处理性能:噪声注入和细化处理可能需要较高的计算资源,确保系统性能足够支持处理需求。
· 图像质量:监控处理后的图像质量,确保噪声注入带来的细节增强效果符合预期。
通过使用NoiselnjectionDetailerHookProvider节点,可以在图像处理工作流程中实现有效的噪声注入和细化处理,提升图像的细节表现和整体质量。
三、DenoiseSchedulerDetailerHookProvider节点
该节点专注于在图像处理过程中调度噪声去除操作,以帮助改善图像的细节处理效果。这种方法可以有效地减少图像中的噪声,同时保留和增强图像的细节。
参数:
schedule_for_cycle → 控制注入开始的时机
target_denoise → 目标去噪值,即希望模型在扩散过程中逐渐达到的去噪值
输出:
DETAILER_HOOK → 经过处理后的样本数据
注意:当循环次数等于1时,该节点将不起作用!
示例:
注意事项
· 去噪强度和策略:根据具体需求选择适当的去噪强度和调度策略,避免过度去噪导致细节丢失。
· 处理性能:去噪和细化处理可能需要较高的计算资源,确保系统性能足够支持处理需求。
· 图像质量监控:监控处理后的图像质量,确保去噪带来的细节增强效果符合预期。
通过使用DenoiseSchedulerDetailerHookProvider节点,可以在图像处理工作流程中实现有效的噪声去除和细化处理,提升图像的细节表现和整体质量。
四、UnsamplerDetailerHookProvider节点
该节点专注于在图像处理过程中进行反采样操作,以恢复图像细节并进行优化处理。这种方法可以在图像放大、超分辨率、去模糊等应用中提升图像质量。
输入:
model → 输入大模型
positive → 正向提示词
negative → 反向提示词
注意:这里的正反向提示词是输入需要移除的元素,比如我想要突出“干净”这个元素,那我就应该在正向提示词里输入“脏”这类的提示词,反向提示词原理类似。
参数:
steps → 总步数
start_end_at_step → 开始的步数即从总步数的第几步开始采样还原
end_end_at_step → 结束的步数即从总步数的第几步结束采用还原
cfg → 提示词引导系数,即提示词对结果产生影响的大小 过高会产生负面影响
sampler_name → 选择采样器(推荐使用节点默认的采样器)
scheduler → 选择调度器
normalize → 是否进行标准化处理 schedule_for_cycle → 控制采样还原操作的开始时机
输出:
DETAILER_HOOK → 经过处理后的样本数据
示例:
注意事项
· 反采样倍率:根据具体需求选择适当的反采样倍率,以获得最佳的细节恢复效果。
· 细化强度:调整细化处理的强度,避免过度细化导致的图像伪影或失真。
· 处理性能:反采样和细化处理可能需要较高的计算资源,确保系统性能足够支持处理需求。
· 图像质量监控:监控处理后的图像质量,确保反采样和细化处理带来的效果符合预期。
通过使用UnsamplerDetailerHookProvider节点,用户可以在图像处理工作流程中实现有效的反采样和细化处理,提升图像的细节表现和整体质量。
五、Switch (Any) / Inversed Switch(Any)节点
这俩节点用于在工作流中控制数据流的路由。它们允许用户根据条件动态地切换数据路径,适用于需要灵活控制数据流向的场景。
输入:
input1 → 输入数据
注意:这个两个节点可以转换任意类型的数据,数据类型通过连接输入的第一根线确定。
参数:
select → 可选择的输入参数 最小值为1,最大值为999999
sel_mode → 确定select参数的时刻,select_on_prompt表示在队列提示时确定,select_on_execution表示在工作流执行时确定
注意:在使用select_on_prompt时,select只能与队列提示中确定的部件或原始节点一起使用。
输出:
selected_value → 根据选定的输入参数确定的输入参数值
selected_label → 根据选定的输入参数确定的标签 如果找不到标签,则使用参数名作为标签
selected_index → 选择的索引,即传入的 select 参数的值
output1 → 根据选择的输入参数输出转换后的值
示例:
注意事项
· 条件配置:确保条件配置正确,以便Switch (Any)和Inversed Switch (Any)节点能够根据预期逻辑选择和分配数据路径。
· 数据一致性:确保输入和输出数据格式一致,以便各节点可以正确处理和传递数据。
· 处理性能:根据具体需求调整处理节点的配置,确保系统性能足够支持动态数据选择和分配需求。
通过使用Switch (Any)和Inversed Switch (Any)节点,可以在图像处理工作流程中实现灵活的动态数据流控制,提升工作流程的灵活性和效率。
六、DetailerHookCombine节点
该节点专注于将来自多个细化处理节点的结果进行合并。通过合并不同的细化处理结果,可以在一个节点中整合多种细化效果,提升图像的整体质量。
输入:
hook1 → 需要整合的第一个Detailer_Hook数据
hook2 → 需要整合的第二个Detailer_Hook数据
输出:
DETAILER_HOOK → 整合后的Detailer_Hook数据
注意:这里整合是将这两个Detailer_Hook数据各自实现的功能合并起来一起实现,而不是生成一个具有新功能的Detailer_Hook数据。
注意事项
· 输入数据质量:确保输入的细化处理结果质量良好,以获得最佳的合并效果。
· 合并参数配置:根据具体需求配置合并参数,以实现最佳的综合细化效果。
· 处理性能:合并多个细化处理结果可能需要较高的计算资源,确保系统性能足够支持处理需求。
通过使用DetailerHookCombine节点,可以在图像处理工作流程中实现多个细化处理结果的有效整合,提升图像的整体质量和细节表现。
七、MaskDetailer (pipe)节点
该节点专注于对基于掩码的图像部分进行细化处理。通过使用掩码,可以精准地选择图像中的特定区域进行优化,而不影响其他部分。
输入:
image → 输入图像
mask → 蒙板区域
basic_pipe → basic管道,包含了model、clip、vae、positive、negative等信息
refiner_basic_pipe_opt → refiner模型的basic管道,包含了refiner的model、clip、vae、positive、negative等信息
detailer_hook → 细节调整参数
参数:
guide_size → 参考尺寸 小于的目标图像被放大以匹配,而大于的图像将被跳过,因为它们不需要细节处理
guide_size_for → 设置guide_size基于什么 当设置为bbox时,它使用检测器检测到的bbox的边界框作为参考;当设置为crop_region时,它使用基于检测到的bbox所识别的裁剪区域作为参考
max_size → 最大尺寸 将目标图像的最长边限制为小于max_size的安全措施,它解决了bbox可能变得过大的问题,特别是如果它有细长的形状
mask_mode → 掩码在细化处理中的应用方式
seed → 内置KSampler的种子
control_after_generate → 蒙板模式,用于指示在细节增强过程中是仅对掩膜内部进行处理还是对整个图像进行处理。
steps → 去噪步数(也可以理解成生成图片的步数)
cfg → 提示词引导系数,即提示词对结果产生影响的大小 过高会产生负面影响
sampler_name → 选择采样器
scheduler → 选择调度器
denoise → 去噪幅度 值越大对图片产生的影响和变化越大
feather → 羽化的大小
crop_factor → 裁剪因子,用于裁剪图像
drop_size → 降低尺寸,用于控制细节增强过程中的图像降低尺寸的大小
refiner_ratio → 使用SDXL时,设置要refiner模型的功能在总进程中所占的比例。
batch_size → 设置潜空间数量
cycle → 采样的迭代次数 **当与Detailer_hook一起使用时,此选项允许添加间歇性噪声,也可用于逐渐减小去噪大小,最初建立基本结构,然后对其进行细化。
inpaint_model → 修补模型,用于控制是否启用图像修补模型
noise_mask_feather → 噪声蒙板羽化,用于控制噪声蒙板的羽化程度
注意:noise_mask_feather不能保证图像更自然,同时它可能会在边缘产生伪影,大家按需设置!
输出:
image → 重绘后的图像
cropped_refined → 使用refiner模型后的裁剪后的图像
ropped_enhanced_alpha → 经过裁剪处理后重绘图像的Alpha通道
basic_pipe → basic管道,包含了model、clip、vae、positive、negative等信息 当多个MaskDetailer (pipe)节点连续使用时方便节点的连接
refiner_basic_pipe_opt → refiner模型的basic管道,包含了refiner的model、clip、vae、positive、negative等信息 当多个MaskDetailer (pipe)节点连续使用时方便节点的连接
注意事项
· 掩码质量:确保输入的掩码数据准确,以获得最佳的细化处理效果。
· 细化参数配置:根据具体需求配置细化处理的参数,以实现最佳的图像优化效果。
· 处理性能:细化处理可能需要较高的计算资源,确保系统性能足够支持处理需求。
· 输入数据格式:确保图像和掩码的数据格式一致,以便MaskDetailer (pipe)节点能够正确处理和传递数据。
通过使用MaskDetailer (pipe)节点,可以在图像处理工作流程中实现对特定区域的有效细化处理,提升图像的整体质量和细节表现。
八、示例工作流
熟练使用以上节点,你就可以搭建一个简单的“脸部修复”的工作流了。
该工作流囊括了这篇文章学习的所有节点,将该工作流学习一遍,会对上面所学的节点有一个更深层次的理解。该工作流实现了钢铁侠胸甲的细节增强。主要思路就是加载图片,并在图片中画上胸甲的蒙板,将图片和蒙板一并输入到MaskDetailer (pipe)节点中进行胸甲的重绘,同时加入了一系列控制噪声的Detailer Hook节点来进行重绘时噪声的精细把控,实现更好的出图效果。图中三张结果图,第一张为加载的原图,第二张为仅使用MaskDetailer (pipe)节点的图,第三张为加入控制噪声的Detailer Hook节点的图,可以看到,从左到右图片的质量是递增的,所以在我们进行局部修复是,加入控制噪声的Detailer Hook节点可以增强出图质量。上述的三张图的原图如下(从左到右):
孜孜以求,方能超越自我。坚持不懈,乃是成功关键。