当前位置: 首页 > news >正文

ComfyUI 节点、插件的基本指南

前言

ComfyUI 是一个多功能的Stable Diffusion图像/视频生成工具,能够让开发者设计并实现自定义节点,扩展功能。如果你有特定的任务想实现并需要创建一个自定义节点,本指南会带你一步步完成 ComfyUI 自定义节点的创建过程。

开始前的准备

在开始创建自定义节点之前,确保你有必要的工具。你需要一个强大的代码编辑器,比如 Visual Studio Code,并安装 Python 和 JavaScript 的开发扩展。另外,具备 Python 和 JavaScript 的基础知识也很重要。

所有的AI设计工具,模型和插件,都已经整理好了,👇获取~在这里插入图片描述

理解 ComfyUI 节点

ComfyUI 采用基于节点的架构,其中 UI 元素被表示为相互连接的节点。每个节点封装了特定的功能或行为,使得 UI 开发模块化且可扩展。开发者可以创建自定义节点,以满足项目需求,扩展 ComfyUI 的功能。

创建自定义节点

让我们来看看如何使用 Python 和 JavaScript 为 ComfyUI 创建自定义节点。

1. 定义节点参数

首先定义你的自定义节点的参数和属性。这些参数决定了节点在UI界面中的用途和外观。以下是一个简单的自定义节点定义案例,输入一个整数,输出另一个整数。创建并编辑一个名为 BasicTutorialTimesTwo.py 的文件:

class TimesTwo:  @classmethod  def INPUT_TYPES(cls):  inputs = {  "required": {  "input1": ("INT", {}),  }  }  return inputs  RETURN_TYPES = ("INT",)  RETURN_NAMES = ("RETURN VALUE",)  FUNCTION = "AnyFunctionNameCanGoHere_SeeStep2"  CATEGORY = "CivitaiTutorials/BasicNodes"  
2. 实现节点逻辑

接下来,实现自定义节点的逻辑和功能。这可能涉及处理用户输入、执行计算或与外部数据源交互。这些处理是在步骤 1 中指定的函数中完成的:

def funcTimesTwo(self, input1):  returnval = 0  returnval = input1 * 2  return (returnval,)  

把这些结合起来,完整的类如下所示:

class TimesTwo:  @classmethod  def INPUT_TYPES(cls):  inputs = {  "required": {  "input1": ("INT", {}),  }  }  return inputs  RETURN_TYPES = ("INT",)  RETURN_NAMES = ("RETURN VALUE",)  FUNCTION = "funcTimesTwo"  CATEGORY = "CivitaiTutorials/BasicNodes"  def funcTimesTwo(self, input1):  returnval = 0  returnval = input1 * 2  return (returnval,)  
3. 与 ComfyUI 集成

最后,将你的自定义节点与 ComfyUI 框架集成,使其在 UI 编辑器中可用。将你的节点注册到 ComfyUI 的节点注册表中,让用户可以轻松地将其添加到项目中。
编辑你的 __init__.py 文件,使其如下所示:

from .BasicTutorialTimesTwo import TimesTwo  
NODE_CLASS_MAPPINGS = {  "btTimesTwo": TimesTwo  
}  
NODE_DISPLAY_NAMES_MAPPINGS = {  "btTimesTwo": "Basic Tutorial - Times Two"  
}  
__all__ = ['NODE_CLASS_MAPPINGS', 'NODE_DISPLAY_NAMES_MAPPINGS']  

此时,你可以测试节点了。加载 ComfyUI 并打开你的网页浏览器进入 ComfyUI 界面。在空白区域右键点击以添加一个节点。如果一切设置正确,你应该会看到一个新的菜单选项 CivitaiTutorials。在这个菜单下应该有一个子菜单 BasicNodes,在那里你会找到我们刚刚创建的节点。

在这里插入图片描述

在这里插入图片描述

测试和改进节点

添加节点后,你可能会发现:

  1. 需要手动输入值。

  2. 没有检查输出的方法。
    为了解决这些问题:

  3. 右键点击新节点并选择“将 input1 转换为输入”。

    在这里插入图片描述

  4. 将输出连接到显示文本的节点。
    为了实现更高级的功能,可以考虑安装额外的节点包,比如 ComfyUI-quadMoons-nodesComfyUI-CustomScripts。这些包提供将整数转换为字符串并显示文本的节点。连接这些节点,你就能看到自定义节点的输出。

结论

如果一切顺利,你已经成功创建并集成了一个自定义节点到 ComfyUI 中。由于 ComfyUI 是用 Python 编写的,你可以通过查看其源代码来发现更多节点开发的可能性。祝你在开发过程中好运,编码愉快!

为了帮助大家更好地掌握 ComfyUI,我在去年花了几个月的时间,撰写并录制了一套ComfyUI的基础教程,共六篇。这套教程详细介绍了选择ComfyUI的理由、其优缺点、下载安装方法、模型与插件的安装、工作流节点和底层逻辑详解、遮罩修改重绘/Inpenting模块以及SDXL工作流手把手搭建。

由于篇幅原因,本文精选几个章节,详细版点击下方卡片免费领取

在这里插入图片描述

一、ComfyUI配置指南

  • 报错指南
  • 环境配置
  • 脚本更新
  • 后记

img

二、ComfyUI基础入门

  • 软件安装篇
  • 插件安装篇

img

三、 ComfyUI工作流节点/底层逻辑详解

  • ComfyUI 基础概念理解
  • Stable diffusion 工作原理
  • 工作流底层逻辑
  • 必备插件补全

img

四、ComfyUI节点技巧进阶/多模型串联

  • 节点进阶详解
  • 提词技巧精通
  • 多模型节点串联

img

五、ComfyUI遮罩修改重绘/Inpenting模块详解

  • 图像分辨率
  • 姿势

img

六、ComfyUI超实用SDXL工作流手把手搭建

  • Refined模型
  • SDXL风格化提示词
  • SDXL工作流搭建

img

由于篇幅原因,本文精选几个章节,详细版点击下方卡片免费领取

在这里插入图片描述

img

相关文章:

  • PHP程序如何实现限制一台电脑登录?
  • 024.PL-SQL进阶—游标
  • 吐血整理 ChatGPT 3.5/4.0 新手使用手册~ 【亲测好用】
  • ES6的简单介绍(第三部分)
  • 基于Java语言的充电桩平台+充电桩系统+充电桩管理系统+充电桩系统源码+充电桩管理后台+充电桩小程序
  • Service和Endpoints
  • python学习记录3
  • ansible部署二进制mysql 8
  • 文献阅读——基于拉格朗日乘子的电力系统安全域边界通用搜索方法
  • 【RDMA】mlxconfig修改和查询网卡(固件)配置--驱动工具
  • 到时间没回家又不接电话?如何迅速确定孩子的位置?
  • spark读取数据性能提升
  • 【YashanDB知识库】客户端字符集与数据库字符集兼容问题
  • node的控制流,异步,以及异常处理
  • 【机器学习】---神经架构搜索(NAS)
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • 【个人向】《HTTP图解》阅后小结
  • Centos6.8 使用rpm安装mysql5.7
  • ERLANG 网工修炼笔记 ---- UDP
  • Java 网络编程(2):UDP 的使用
  • mockjs让前端开发独立于后端
  • ng6--错误信息小结(持续更新)
  • vue-router的history模式发布配置
  • Zepto.js源码学习之二
  • 大快搜索数据爬虫技术实例安装教学篇
  • 第十八天-企业应用架构模式-基本模式
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 构建工具 - 收藏集 - 掘金
  • 官方解决所有 npm 全局安装权限问题
  • 基于游标的分页接口实现
  • 力扣(LeetCode)22
  • 前端面试题总结
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 详解NodeJs流之一
  • 一起来学SpringBoot | 第十篇:使用Spring Cache集成Redis
  • 源码安装memcached和php memcache扩展
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • Spring Batch JSON 支持
  • 树莓派用上kodexplorer也能玩成私有网盘
  • ​Python 3 新特性:类型注解
  • ​插件化DPI在商用WIFI中的价值
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • #pragam once 和 #ifndef 预编译头
  • $Django python中使用redis, django中使用(封装了),redis开启事务(管道)
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (6)添加vue-cookie
  • (done) NLP “bag-of-words“ 方法 (带有二元分类和多元分类两个例子)词袋模型、BoW
  • (javascript)再说document.body.scrollTop的使用问题
  • (六)激光线扫描-三维重建
  • (十三)Java springcloud B2B2C o2o多用户商城 springcloud架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)...
  • (数位dp) 算法竞赛入门到进阶 书本题集
  • (四)stm32之通信协议
  • (算法)区间调度问题
  • (限时免费)震惊!流落人间的haproxy宝典被找到了!一切玄妙尽在此处!