ComfyUI-CustomNode/Readme.md

214 lines
10 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ComfyUI-CustomNode 项目文档
## 一、项目概述
ComfyUI-CustomNode 是一个为 ComfyUI 定制的自定义节点集合项目提供了丰富的功能节点涵盖文本处理、图像和视频处理、LLM 调用、对象存储操作等多个领域,方便用户在 ComfyUI 中进行多样化的任务处理。
**本地使用请下载[config.yaml](https://console.cloud.tencent.com/cos/bucket?type=object&tab=objectDetail&bucket=sucai-1324682537&path=%252Fconfig.yaml&region=ap-shanghai)到custom_nodes/ComfyUI-CustomNode目录**
## 二、项目结构
```
ComfyUI-CustomNode/
├── download/ # 下载文件目录
├── ext/ # 扩展文件目录
│ ├── pyproject.toml # 项目构建和依赖配置
│ ├── comfyui_modal_deploy.py # Comfy GPU服务器部署脚本
│ ├── comfyui_modal_deploy_4ui.py # Comfy批量CPU服务器部署脚本
│ └── nodes_bfl.py # 用于替换comfy内置api节点的代码
├── model/ # 模型目录
├── nodes/ # 节点代码目录
│ ├── image_face_nodes.py # 面部处理节点
│ ├── image_gesture_nodes.py # 姿态处理节点
│ ├── image_modal_nodes.py # Modal在线图像节点
│ ├── image_nodes.py # 图像节点
│ ├── llm_nodes.py # LLM 调用节点
│ ├── object_storage_nodes.py # 对象存储节点
│ ├── text_nodes.py # 文本处理节点
│ ├── util_nodes.py # 工具节点
│ ├── video_lipsync_nodes.py # 视频口型同步节点
│ └── video_nodes.py # 视频处理节点
├── utils/ # 工具函数目录
│ ├── model_module.py # 模型定义
│ ├── model_utils.py # 模型工具
│ ├── face_occu_detect.py # 面部遮挡识别工具
│ └── task_table.py # Task表定义--与DB持久化节点合用
├── __init__.py # 定义节点映射
├── .gitignore # Git 忽略文件配置
├── install.sh # Linux 安装脚本
├── install.bat # Windows 安装脚本
├── embedded_install.bat # 嵌入式 Windows 安装脚本
├── Readme.md # 项目文档
└── requirements.txt # 项目依赖文件
```
## 三、用户手册
### 1. 环境准备
确保你已经安装了 Python 3.10 或更高版本。
```bash
source venv/bin/activate # 对于 Windows 用户使用 `venv\Scripts\activate`
pip install -r requirements.txt
```
### 2. 运行项目
将项目文件夹放置在 ComfyUI 的 `custom_nodes` 目录下,启动 ComfyUI 即可在节点列表中看到自定义节点。
### 3. 节点使用
在 ComfyUI 界面中,根据需要选择相应的节点,配置节点的输入参数,然后连接节点并运行工作流。
## 四、节点介绍
### 常用节点
- **LLMChatMultiModalImageTensor**:多模态 LLM 调用,传入图片张量。
- **输入**LLM 提供商、提示词、图片张量、温度、最大令牌数、超时时间
- **输出**LLM 输出结果
- **用途**:结合图片张量与 LLM 进行交互
- **JMCustom**即梦自定义Prompt生视频
- **输入**参考图、Prompt、视频长度
- **输出**:生成视频路径
- **用途**自定义Prompt视频时长生成视频
- **RandomLineSelector**:从多行文本中随机选择一行。
- **输入**:多行文本、随机种子
- **输出**:随机选择的一行文本
- **用途**:随机选取文本中的一行
- **LoadImg**:从网络/本地加载图片(网络图片优先)。
- **输入**:图片 URL、选择本地图片
- **输出**:图像张量
- **用途**:加载网络图片
- **S3UploadURL**:上传文件到 S3 并返回 URL。
- **输入**待上传文件、S3 存储桶信息
- **输出**:上传后的文件 URL
- **用途**:上传文件到 S3 并获取文件 URL
### 1. 文本处理节点
- **LoadTextCustom**:从本地文件读取文本(文件路径优先)。
- **输入**:文件路径、选择本地文件、编码格式
- **输出**:文本字符串
- **用途**:读取本地文本文件内容
- **StringEmptyJudgement**:判断字符串是否为空。
- **输入**:字符串
- **输出**:布尔值(是否为空)
- **用途**:检查字符串是否为空
- **RandomLineSelector**:从多行文本中随机选择一行。
- **输入**:多行文本、随机种子
- **输出**:随机选择的一行文本
- **用途**:随机选取文本中的一行
### 2. LLM 调用节点
- **LLMChat**:调用 LLM 进行聊天。
- **输入**LLM 提供商、提示词、温度、最大令牌数、超时时间
- **输出**LLM 输出结果
- **用途**:与 LLM 进行文本交互
- **LLMChatMultiModalImageUpload**:多模态 LLM 调用,上传图片。
- **输入**LLM 提供商、提示词、图片文件、温度、最大令牌数、超时时间
- **输出**LLM 输出结果
- **用途**:结合图片与 LLM 进行交互
- **LLMChatMultiModalImageTensor**:多模态 LLM 调用,传入图片张量。
- **输入**LLM 提供商、提示词、图片张量、温度、最大令牌数、超时时间
- **输出**LLM 输出结果
- **用途**:结合图片张量与 LLM 进行交互
- **Jinja2RenderTemplate**:使用 Jinja2 渲染 prompt 模板。
- **输入**:模板、键值映射字典
- **输出**:渲染后的字符串
- **用途**:根据提供的模板和变量,使用 Jinja2 引擎渲染出最终的字符串,常用于生成动态的 prompt
### 3. 图像和视频处理节点
- **JMCustom**即梦自定义Prompt生视频
- **输入**参考图、Prompt、视频长度
- **输出**:生成视频路径
- **用途**自定义Prompt视频时长生成视频
- **LoadImg**:从网络/本地加载图片(网络图片优先)。
- **输入**:图片 URL、选择本地图片
- **输出**:图像张量
- **用途**:加载网络图片
- **FaceDetect**:面部检测。
- **输入**:待检测图像
- **输出**:检测结果
- **用途**:检测图像中的面部
- **FaceExtract**:面部提取。
- **输入**:包含面部的图像
- **输出**:提取的面部图像
- **用途**:从图像中提取面部
- **VideoCut**:视频剪裁。
- **输入**:视频文件、剪裁起始时间、剪裁结束时间
- **输出**:剪裁后的视频文件
- **用途**:对视频进行剪裁
- **VideoCutByFramePoint**:视频按精确帧位剪裁。
- **输入**:视频文件、起始帧、结束帧
- **输出**:剪裁后的视频文件
- **用途**:按精确帧位对视频进行剪裁
- **VideoChangeFPS**:视频转换帧率。
- **输入**:视频文件、目标帧率
- **输出**:转换帧率后的视频文件
- **用途**:改变视频的帧率
- **HeyGemF2F**HeyGem 嘴型同步。
- **输入**视频张量、音频数据、HeyGem 服务 URL、临时文件路径、是否为 Windows 系统
- **输出**:视频存储路径
- **用途**:实现视频的嘴型同步
- **HeyGemF2FFromFile**HeyGem 嘴型同步,直接读取文件。
- **输入**视频文件路径、音频文件路径、HeyGem 服务 URL、临时文件路径、是否为 Windows 系统
- **输出**:视频存储路径
- **用途**:实现视频的嘴型同步
- **ModalEditCustom**: 生修图-Gemini
- **输入**Prompt, temperature, topP, 端点
- **输出**:生/修完的图片
- **用途**使用Gemini2.0模型进行图像生成/修正
- **ModalMidJourneyGenerateImage**: 生修图-Midjourney
- **输入**Prompt, 提供商, 端点, 超时时间
- **输出**:生/修完的图片
- **用途**使用Midjourney模型进行图像生成/修正
- **ModalMidJourneyDescribeImage**: 反推生图关键词-Midjourney
- **输入**:图片, 端点
- **输出**生图Prompt词
- **用途**使用Midjourney模型进行生图Prompt反推
### 4. 对象存储节点
- **COSUpload**:上传文件到 COS。
- **输入**待上传文件、COS 存储桶信息
- **输出**上传文件key
- **用途**:将文件上传到腾讯云 COS
- **COSDownload**:从 COS 下载文件。
- **输入**COS 存储桶文件信息、本地保存路径
- **输出**:下载的文件路径
- **用途**:从腾讯云 COS 下载文件
- **S3Upload**:上传文件到 S3。
- **输入**待上传文件、S3 存储桶信息
- **输出**上传文件key
- **用途**:将文件上传到 S3 存储桶
- **S3Download**:从 S3 下载文件。
- **输入**S3 存储桶文件信息、本地保存路径
- **输出**:下载的文件路径
- **用途**:从 S3 存储桶下载文件
- **S3UploadURL**:上传文件到 S3 并返回 URL。
- **输入**待上传文件、S3 存储桶信息
- **输出**:上传后的文件 URL
- **用途**:上传文件到 S3 并获取文件 URL
### 5. 工具节点
- **LogToDB**:将日志记录到数据库(数据库需要根据utils/task_table.py结构建表)。
- **输入**:作业 ID、日志内容、状态、数据库连接 URL
- **输出**:记录结果
- **用途**:将任务日志保存到数据库
- **VodToLocalNode**:从腾讯云 VOD 下载视频到本地。
- **输入**:文件 ID、子应用 ID
- **输出**:本地文件路径
- **用途**:从腾讯云 VOD 下载视频文件
- **UnloadAllModels**:卸载所有已加载的模型。
- **输入**:任意输入
- **输出**:无
- **用途**:释放模型占用的内存
- **TraverseFolder**:遍历文件夹。
- **输入**:文件夹路径、文件后缀、是否递归、索引
- **输出**:文件路径
- **用途**:遍历文件夹并获取指定后缀的文件
- **PlugAndPlayWebhook**:即插即用 Webhook 节点。
- **输入**Webhook URL、图片 URL、提示 ID
- **输出**:无
- **用途**:将数据转发到指定的 Webhook URL
- **TaskIdGenerate**:生成任务 ID。
- **输入**:无
- **输出**:任务 ID
- **用途**:生成唯一的任务 ID
## 五、注意事项
- 部分节点需要配置相应的 API 密钥或数据库连接信息,**请下载[config.yaml](https://console.cloud.tencent.com/cos/bucket?type=object&tab=objectDetail&bucket=sucai-1324682537&path=%252Fconfig.yaml&region=ap-shanghai)到custom_nodes/ComfyUI-CustomNode目录**。
- 运行项目时,请确保网络连接正常,特别是涉及在线文件读取和 LLM 调用的节点。