首页 > 其他分享 >ComfyUI插件:ComfyUI Impact 节点(一)

ComfyUI插件:ComfyUI Impact 节点(一)

时间:2024-07-27 15:27:14浏览次数:15  
标签:Impact 插件 ComfyUI 模型 图像 分割 BBOX 检测 节点

前言:

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

目录

一、安装方式

二、SAMLoader节点

三、UltralyticsDetectorProvider节点

四、BBOX Detector(SEGS) / BBOX Detector(combined)节点

五、SAMDetector(combined) / SAMDetector(segmented)节点

六、Simple Detector(SEGS) / Simple Detector(SEGS/pipe) / Simple Detector for AnimateDiff(SEGS)

七、DetailerDebug(SEGS)节点

八、示例工作流

一、安装方式

方法一:通过ComfyUI Manager安装(推荐)

打开Manager界面

方法二:使用git clone命令安装

在ComfyUI/custom_nodes目录下输入cmd按回车进入电脑终端

在终端输入下面这行代码开始下载

git clone https://github.com/ltdrdata/ComfyUI-Impact-Pack

二、SAMLoader节点

加载和处理SAM(Segment Anything Model)模型文件。该节点的主要功能是将预训练的SAM模型加载到内存中,以便在后续的节点中进行图像分割或其他相关操作。

输入:

SAM模型的路径      **假如配置好了路径文件,模型可自行选择**

device_name    设备模式,可以选择在GPU或CPU上运行,推荐选择自动即可

输出:

SAM_MODEL    根据调用该模型的节点情况对目标进行分割,生成目标的轮廓

注意:该模型不能单独使用,需要其他模型为其指定分割区域,随后该模型可以做到精细的分割。如下图对比:

使用场景

· 加载模型:SAMLoader节点用于从指定路径加载预训练的SAM模型文件。通常,这些模型文件会存储在本地磁盘或其他存储介质上。

· 配置参数:节点会提供一些参数配置选项,让用户可以指定模型文件的路径和其他加载参数。

· 输出模型:一旦模型加载完成,SAMLoader节点会输出一个表示该模型的对象,该对象可以传递给其他节点以执行具体的图像分割任务。

通过SAMLoader节点,可以方便地加载和使用预训练的SAM模型,进行各种图像分割任务,实现更高效的图像处理工作流程。

三、UltralyticsDetectorProvider节点

提供一个基于Ultralytics的目标检测器,用于替换现有基于mmdet的检测器,可加载BBOX_Model和SEGM_Model两种模型之一。

输入:

目标检测模型的路径      **主流的模型有脸部检测、手部检测、身体检测等,假如配置好了路径文件,模型可自行选择**

输出:

BBOX_DETECTOR    使用矩形框进行检测

SEGM_DETECTOR    检测出目标的轮廓

注意:该节点只能加载BBOX和SEGM中的一种模型,并且要根据model_name中所选的模型类型进行连接,例如我的bbox/face_yolov8m.pt是一个BBOX类型的脸部检测模型,所以再连线时我就要选择BBOX_DETECTOR进行连线,这也是SEGM_DETECTOR会显示红叉的原因。

下面两张图片说明BBOX模型和SEGM模型的区别:

节点注意事项:

· 确保选择的模型文件路径正确,或者如果使用预定义模型,确保网络连接稳定以下载模型文件。

· 调整置信度阈值可以控制检测结果的精确度和召回率。较高的阈值会减少误报,但可能漏检,较低的阈值会增加召回率,但可能误报更多。

通过UltralyticsDetectorProvider节点,可以方便地利用Ultralytics提供的高效目标检测模型,进行各种目标检测任务,如物体识别、跟踪等,实现智能图像分析。

四、BBOX Detector(SEGS) / BBOX Detector(combined)节点

这两个节点用于目标检测任务,这些节点会输出检测到的对象的边界框(Bounding Box, BBOX)信息。它们的主要区别在于处理的输入类型和方法。

BBOX Detector(SEGS) 节点通常用于从分割结果中提取边界框。这种方法适用于图像分割模型的输出,其中每个对象的像素已经被分割出来,节点通过分析这些分割结果来确定每个对象的边界框。

BBOX Detector(combined) 节点用于直接处理输入图像,通过目标检测模型同时进行对象识别和边界框提取。这个节点适合使用预训练的目标检测模型,如YOLO等。

输入:

bbox_detector    BBOX类型的检测模型

image    输入加载的图片

detailer_hook    impact库的一个特殊参数,用于在模型的不同阶段或特定事件发生时执行一些额外的操作

参数:

threshold    阈值,仅检测已识别置信度高于此值的对象

dilation    调整最终显示时,检测到的掩码区域的大小

crop_factor    根据检测到的掩码区域,确定应将周围区域包含在细节修复过程中的次数  **如果此值较小,则修复可能无法正常工作,因为无法知道周围的上下文**

drop_size    降低尺寸,用于控制细节增强过程中的图像降低尺寸的大小。

文本框    用于输入文本指定被允许检测的地方

输出:

SEGS    包含每次检测的裁剪图像、掩码图案、裁剪位置和置信度

MASK    所有检测到的矩形框组合而成的单个掩码

使用方法:

①BBOX Detector(SEGS) 节点

· 输入分割结果:节点接受图像分割模型的输出,通常是一个包含分割掩码的图像。

· 提取边界框:通过分析分割掩码,节点确定每个对象的边界框。

· 输出边界框:节点输出一个包含所有检测对象边界框的信息,包括每个边界框的位置和大小。

②BBOX Detector(combined) 节点

· 输入图像:节点接受一个输入图像。

· 目标检测:通过预训练的目标检测模型(如YOLO)在图像中检测对象并提取边界框。

· 输出边界框:节点输出一个包含所有检测对象边界框的信息,包括每个边界框的位置、大小以及对象类别和置信度分数。

合理使用BBOX Detector(SEGS)和BBOX Detector(combined)节点,可以实现复杂的图像分析任务,包括对象检测、定位和分类,从而提升各种应用场景下的智能化水平。

五、SAMDetector(combined) / SAMDetector(segmented)节点

用于目标检测和图像分割任务。这俩节点利用Segment Anything Model (SAM) 来进行高级的图像处理。

输入:

sam_model    接收SAMLoader节点加载的SAM模型

segs    接收UltralyticsDetectorProvider节点加载的目标检测模型

image    接收加载的图片

参数:

detection_hint    用来指定在分割时使用哪种类型的检测结果作为提示来帮助生成掩码

dilation    膨胀分割结果的边界

threshold    阈值,仅检测已识别置信度高于此值的对象

bbox_expansion    控制在生成轮廓时扩展边界的大小,以确保更好地包含目标对象

mask_hint_threshold    与mask_hint_use_nagative参数一起使用,用于指定detection_hint的阈值,将掩码区域中的掩码值等于或高于阈值的情况解释为正提示

注意:大于 0 但小于mask_hint_threshold的值不用作否定提示。

mask_hint_use_nagative    控制是否使用负提示来辅助分割

输出:

combined_mask    分割节点的深度信息,包含整个图像的分割结果

batch_masks    分割节点的深度信息,包含批处理中每个样本的分割结果

MASK    分割节点的深度信息,包含整个图像的分割结果

注意事项

· 模型选择:确保选择合适的SAM模型版本和配置参数,以获得最佳的检测和分割效果。

· 输入数据质量:无论是直接输入图像还是预先分割的结果,输入数据的质量都会影响最终的检测和分割效果。

合理使用SAMDetector(combined)SAMDetector(segmented)节点,可以实现高效的图像检测和分割任务,满足多种应用场景的需求。

六、Simple Detector(SEGS) / Simple Detector(SEGS/pipe) / Simple Detector for AnimateDiff(SEGS)

与前面几个检测器的功能类似,都是接收模型->分割->输出分割结果,旨在处理不同类型的输入和工作流程,以满足特定应用需求。

输入:

bbox_detector    接收BBOX模型

image_frames    动画帧的输入图像序列

image    接收待分割的图片

sam_model_opt    接收SAM模型

segm_detector_opt    接收SEGM模型

detailer_pipe    输入细节调整的参数,使分割结果更加完美

参数:

bbox_threshold    BBOX模型的检测阈值

bbox_dilation    BBOX模型边界框的膨胀参数,用于扩展边界框的范围

crop_factor    裁剪因子,用于裁剪图像

drop_size    设置一个尺寸阈值,用于过滤较小目标的参数

sub_dilation    子图的膨胀参数

sub_bbox_expansion    子图BBOX模型的边界框扩展参数

sam_mask_hint_threshold    SAM模型的掩码提示阈值

masking_mode    调节掩码模式

segs_pivot    选择动画差异检测的基准点

post_dilation    后期处理膨胀参数

输出:

SEGS    分割结果的深度信息

注意事项

· 输入数据质量:无论是直接输入图像还是预先分割的结果,输入数据的质量都会影响最终的检测和分割效果。

· 工作流程配置:确保在复杂工作流程中,各节点的连接和数据流动顺畅,以获得最佳处理效果。

合理使用这三个节点,可以实现多种图像处理任务,包括目标检测、图像分割和动画处理,满足不同应用场景的需求。

七、DetailerDebug(SEGS)节点

放大图像并在内部利用 KSampler 对图像进行绘制。

输入:

image    需要重绘的原始图像

segs    输入分割模型得到的分割结果

model    checkpoints大模型

clip    提示词编码模型

vae    vae模型

positive    正向提示词

negative    反向提示词

detailer_hook    对模型进行更加精细调整的拓展接口

注意:这里的正向提示词和反向提示词都是针对重绘部分的,用于指导重绘后的图像。

参数:

guide_size    参考尺寸  **小于的目标图像被放大以匹配,而大于的图像将被跳过,因为它们不需要细节处理**

guide_size_for    设置guide_size基于什么  **当设置为bbox时,它使用检测器检测到的bbox作为参考;当设置为crop_region时,它使用基于检测到的bbox所识别的裁剪区域作为参考**

注意:选择BBOX时,基于crop_factor的放大图像的大小可能比guide_size大几倍。

max_size    最大尺寸  **将目标图像的最长边限制为小于max_size的安全措施,它解决了bbox可能变得过大的问题,特别是如果它有细长的形状**

seed    内置KSampler的种子

contorl_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;相反,它们会被修复为原来的大小**

文本框    输入通配符的规范,如果保持为空,此选项将被忽略

cycle    采样的迭代次数  **当与Detailer_hook一起使用时,此选项允许添加间歇性噪声,也可用于逐渐减小去噪大小,最初建立基本结构,然后对其进行细化。

inpaint_model    使用修复模型时,需要启用此选项,以确保在低于1.0的降噪值下进行正确的内补

noise_mask_feather    控制羽化操作是否应用于修复过程的蒙版  

注意:此选项不能保证图像更自然,同时它可能会在边缘产生伪影,大家按需设置!

输出:

image    最终重绘后的图片

cropped    调整图像的大小、去除不必要的部分、集中注意力于特定区域的效果图

cropped_refined    经过剪裁和进一步处理的图像

cropped_refined_alpha    经过裁剪和精细化处理后的alpha通道

cnet_images    蒙版位置图

注意事项

· 输入数据质量:确保输入的分割结果准确无误,因为输入数据的质量会直接影响分析和调试的效果。

· 节点配置:根据具体需求调整DetailerDebug(SEGS)节点的配置参数,以获得最佳的分析和调试效果。

通过使用DetailerDebug(SEGS)节点,可以深入了解和优化图像分割模型的性能,确保分割结果满足实际应用的需求,同时提升模型的开发和调试效率。

八、示例工作流

熟练使用以上节点,你就可以搭建一个简单的“AI换脸”的工作流了

该工作流先是对加载的图片进行脸部的检测和分割,然后将分割的结果、原图、重绘的提示词输入细节修复器中,在细节修复器中,内置的采样器会根据提示词对图片的脸部进行重新扩散,最后输出换脸之后的图。原图和换脸后的图如下所示:

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

标签:Impact,插件,ComfyUI,模型,图像,分割,BBOX,检测,节点
From: https://blog.csdn.net/ai0604_2024/article/details/140735646

相关文章

  • ComfyUI进阶:Comfyroll节点 (最终篇)+应用实例
    前言:学习ComfyUI是一场持久战,而Comfyroll是一款功能强大的自定义节点集合,专为ComfyUI用户打造,旨在提供更加丰富和专业的图像生成与编辑工具。借助这些节点,用户可以在静态图像的精细调整和动态动画的复杂构建方面进行深入探索。Comfyroll的节点设计简洁易用,功能强大,是每个希望......
  • Postman自定义插件全攻略:扩展你的API开发工具箱
    Postman自定义插件全攻略:扩展你的API开发工具箱Postman作为API开发的瑞士军刀,其强大的功能集已经为开发者所熟知。但你知道吗?Postman还允许开发者使用自定义插件来进一步扩展其功能。这些插件可以帮助自动化重复性任务、增强测试能力,甚至集成其他服务。本文将详细介绍如何......
  • ComfyUI插件:IPAdapter_plus(新版)节点
    ComfyUI插件:IPAdapter_plus(新版)节点前言:学习ComfyUI是一场持久战,而IPAdapter_plus是常用且便捷有效的风格迁移模型,可以通过提供参考图像去进行图像的生成,比如风格迁移,风格融合,人物脸部模拟等各种工作,请大家重点关注本篇内容,深刻理解节点用法!!祝大家学习顺利,早日成为ComfyUI的高手......
  • pytest-req插件:更简单的做接口测试
    pytest-req插件:更简单的做接口测试背景我们经常会用到pytest和requests进行接口自动化测试。pytest提供了非常方便的插件开发能力,在pytest中使用requests库首先会想到是否有已经封装好的插件,就像pytest-playwright、pytest-selenium一样。可惜找了一下没有。于是,自己动手......
  • 刚刚!Stable diffusion 4.8+ComfyUI升级版终于来了!(一键安装包,感谢大佬)
    如果这个世界有上帝,那么祂一定是程序员。国内SD绘画启动器第一人是我认为是B站的秋葉aaaki因为制作了这款StableDiffusion启动器,降低了国内使用SD的门槛且分文不收,秋叶被粉丝戏称赛博菩萨。1背景信息▍****StableDiffusion是什么?StableDiffusion(简称SD)是一种生......
  • uniapp集成安卓原生录屏插件以及使用
    概述我们知道UniApp的出现简化了开发者的工作流程,并减少了代码的重复编写。开发者可以使用一套代码编译到iOS、Android、以及各种小程序的应用,节省了人力和时间成本,但是涉及到与系统交互的时候,比如录屏、录音、录像、文件操作等就需要借助原生插件来完成。这样的话当需要做一......
  • 无法解析插件 org.apache.maven.plugins:maven-war-plugin:3.2.3(已解决)
    文章目录1、问题出现的背景2、解决方法1、问题出现的背景最开始我想把springboot项目转为javaweb项目,然后我点击下面这个插件就转为javaweb项目了,但是我后悔了,想要还原成springboot项目,点开项目结构关于web的都移除了,还是不行,控制台报下面的错误无法解析插件org.......
  • 分页插件pagehelper使用方法
    使用方法1.引入分页插件 1).使用Maven在pom.xml中添加如下依赖:<dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>最新版本</version></dependency> 2).使用Gr......
  • 用于用 NotRequired 替换自定义 TypeAlias 的 Mypy 插件
    我想编写一个mypy插件,以便为NotRequired[Optional[T]]引入类型别名。(正如我在这个问题中发现的,不可能用普通的python编写这个类型别名,因为NotRequired在TypedDict定义之外不允许使用。)我的想法是定义一个通用Possibly类型,如......
  • UTS插件集成步骤
    如需定制或咨询插件,请联系作者QQ252797991插件网页“试用”按钮点击插件网页右上角“试用”按钮,接着选择要试用插件的项目AppId,接着点击“导入到HBuilderX”,自动打开HBuilderX,选择项目后会自动下载插件到modules文件夹下代码里先引入变量,避免自定义基座时没有把插件打......