【深度学习】ComfyUI(基于节点/流程图的 Stable Diffusion WebUI)_webui 8188
ComfyUI 是一个基于节点/流程图的 Stable Diffusion WebUI,它提供了更灵活、更强大的工作流构建能力,尤其适合高级用户、自动化任务和复杂图像生成流程。与 AUTOMATIC1111 的 WebUI 相比,它更底层、更模块化,学习曲线稍陡峭,但控制力更强且资源效率更高。
运行示例:
一、 安装 ComfyUI
前提条件
- Python (3.10 或 3.11 推荐): 确保已安装。可通过 
python --version或python3 --version在终端/命令提示符检查。 - Git: 用于克隆仓库。
 - NVIDIA GPU (推荐): 虽然 CPU 也能运行,但速度极慢。需要安装匹配的 NVIDIA 显卡驱动。
 - Stable Diffusion 模型文件 (.ckpt 或 .safetensors): 如 
v1-5-pruned-emaonly.safetensors,sd_xl_base_1.0.safetensors等。将其准备好放在一个你知道的位置(稍后需要复制到 ComfyUI 目录)。 
安装方法 (Windows / Linux 类似)
方法 1: 使用独立安装包 (Windows 最简单)
- 访问 ComfyUI GitHub Releases 页面: 
https://github.com/comfyanonymous/ComfyUI/releases - 找到最新的 
ComfyUI_windows_portable_nvidia_cu121_or_cpu.7z或类似名称的包 (注意 CUDA 版本,cu121对应 CUDA 12.1,这是目前主流。如果你的显卡较老驱动不支持 CUDA 12.x,可能需要找旧版本或使用方法 2)。 - 下载该压缩包。
 - 使用 7-Zip 解压到一个没有中文和特殊字符的路径 (例如 
D:\\ComfyUI)。 - 放置模型文件:
- 将你的 Stable Diffusion 基础模型 (如 
sd_xl_base_1.0.safetensors) 复制到ComfyUI\\models\\checkpoints目录下。 - 可选:如果需要使用 VAE,将 VAE 文件 (如 
sdxl_vae.safetensors) 复制到ComfyUI\\models\\vae目录下。 - 可选:下载并放置 LoRA 模型到 
ComfyUI\\models\\loras,嵌入/Textual Inversion 到ComfyUI\\models\\embeddings,ControlNet 模型到ComfyUI\\models\\controlnet。 
 - 将你的 Stable Diffusion 基础模型 (如 
 - 运行:
- 双击 
run_nvidia_gpu.bat(如果你有 NVIDIA GPU)。 - 如果没有 NVIDIA GPU 或想使用 CPU,双击 
run_cpu.bat(非常慢,不推荐)。 
 - 双击 
 
方法 2: 通过 Git Clone (适合开发者或需要最新功能)
- 打开终端 (Windows 用命令提示符或 PowerShell, Linux/macOS 用终端)。
 - 导航到你想要安装 ComfyUI 的目录。
 - 克隆仓库:
git clone https://github.com/comfyanonymous/ComfyUI - 进入克隆的目录:
cd ComfyUI - (强烈推荐) 创建并激活 Python 虚拟环境 (避免依赖冲突):
python -m venv venv # Windows# 或python3 -m venv venv # Linux/macOSvenv\\Scripts\\activate # Windows# 或source venv/bin/activate # Linux/macOS - 安装依赖:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121 # 根据你的 CUDA 版本选择,cu121 是 CUDA 12.1pip install -r requirements.txt - 放置模型文件: 同方法 1 第 5 步,将模型文件复制到 
ComfyUI/models/下对应的子目录 (checkpoints,vae,loras,controlnet,embeddings)。 - 启动 ComfyUI:
python main.py- 可选参数:
--listen: 允许局域网内其他设备访问 (默认只监听127.0.0.1)。--port 8188: 指定端口 (默认是 8188)。- 例如:
python main.py --listen --port 9000 
 
 - 可选参数:
 
成功启动后
- 如果一切顺利,终端会显示类似 
* Running on http://127.0.0.1:8188/的信息。 - 打开你的 Web 浏览器,访问 
http://127.0.0.1:8188(或你指定的地址和端口)。 
二、 使用 ComfyUI (基础入门)
ComfyUI 的核心概念是节点和工作流。每个节点执行一个特定功能 (如加载模型、输入提示、采样、保存图像),节点之间通过连接线传递数据 (如潜在空间图像、条件信息)。
1. 界面概览
- 画布 (Canvas): 主要区域,用于放置和连接节点。
 - 节点菜单: 右键单击画布空白处弹出,包含所有可用节点类别 (Loaders, Conditioning, Latent, Image, etc.)。
 - 节点属性: 点击一个节点,其参数会显示在右侧或下方。
 - 队列提示 (Queue Prompt): 点击此按钮执行当前工作流。
 - 工作流管理: 可以保存 (
Save)、加载 (Load)、清除 (Clear) 整个工作流。 - 历史记录 (View Queue History / Images): 查看之前生成的图片和工作流。
 - 管理器 (Manager): 管理模型、节点等。
 
2. 构建一个基础的文生图 (txt2img) 工作流(也可以从模板创建(工作流>模板))
- 加载检查点模型:
- 右键画布 -> 
Loaders->CheckpointLoaderSimple - 在节点属性中选择你放置在 
models/checkpoints下的模型文件。 
 - 右键画布 -> 
 - 输入提示 (Prompt):
- 右键画布 -> 
Conditioning->CLIPTextEncode - 你需要创建两个 CLIPTextEncode 节点:
- 一个用于正面提示词 (
Positive)。在text输入框中输入你的描述。 - 一个用于负面提示词 (
Negative)。在text输入框中输入你不想要的内容。 
 - 一个用于正面提示词 (
 - 将这两个节点的 
CLIP输出连接到CheckpointLoaderSimple节点的CLIP输出。 
 - 右键画布 -> 
 - 设置采样器 (Sampler):
- 右键画布 -> 
Sampling->KSampler或KSamplerAdvanced(推荐 KSampler)。 - 配置采样器参数:
Model: 连接到CheckpointLoaderSimple的MODEL输出。Positive: 连接到正面CLIPTextEncode节点的CONDITIONING输出。Negative: 连接到负面CLIPTextEncode节点的CONDITIONING输出。Latent Image: 暂时不连 (下一步创建)。Sampler/Scheduler: 选择你喜欢的采样器和调度器 (如dpmpp_2m/karras)。Steps: 采样步数 (如 20-30)。CFG Scale: 提示词相关性 (如 7-8)。Seed: 随机种子 (0 表示随机)。
 
 - 右键画布 -> 
 - 创建初始潜在空间图像 (Latent Image):
- 右键画布 -> 
Latent->Empty Latent Image - 设置你想要的图像 
Width和Height(如 1024x1024 for SDXL)。 - 将其 
LATENT输出连接到KSampler节点的Latent Image输入。 
 - 右键画布 -> 
 - 解码潜在图像为像素图像 (VAE Decode):
- 右键画布 -> 
Latent->VAEDecode - 将 
KSampler节点的LATENT输出连接到VAEDecode的latent_image输入。 - 将 
CheckpointLoaderSimple节点的VAE输出连接到VAEDecode的vae输入。 
 - 右键画布 -> 
 - 保存或预览图像 (Save Image / Preview Image):
- 保存: 右键画布 -> 
Image->Save Image。将VAEDecode节点的IMAGE输出连接到Save Image节点的images输入。可以设置保存文件名前缀 (filename_prefix)。 - 预览: 右键画布 -> 
Image->Preview Image。将VAEDecode节点的IMAGE输出连接到Preview Image节点的images输入。这会在界面上显示生成的图片,但不保存到硬盘。 
 - 保存: 右键画布 -> 
 - 执行工作流:
- 检查所有连接是否正确。
 - 点击 
Queue Prompt按钮。 
 
3. 关键操作
- 添加节点: 右键画布空白处 -> 选择节点类别 -> 选择具体节点。
 - 连接节点: 点击一个节点的输出“点”(小圆圈),拖拽到另一个节点的输入“点”。
 - 断开连接: 点击已连接的线,然后按 
Delete键,或直接将线拖离输入/输出点。 - 移动节点: 点击并拖动节点。
 - 复制/粘贴节点: 
Ctrl+C/Ctrl+V(Windows/Linux),Cmd+C/Cmd+V(Mac)。也可以框选多个节点一起复制。 - 删除节点: 选中节点,按 
Delete键。 - 加载示例工作流: 官方仓库 (
ComfyUI/examples) 或网上社区分享了很多.json或.png工作流文件。通常通过Load按钮加载.json,或者直接将.png图片拖入 ComfyUI 画布(如果图片内嵌了工作流信息)。 - 安装自定义节点: ComfyUI 有丰富的社区扩展。通常通过 ComfyUI Manager(一个流行的管理插件)安装,或者手动将节点代码放到 
ComfyUI/custom_nodes/目录下,然后重启 ComfyUI。 
三、 进阶与技巧
- 图生图 (img2img):
- 使用 
LoadImage节点加载图片。 - 使用 
VAEEncode节点将像素图片编码为潜在空间表示(连接到KSampler的Latent Image输入)。 - 在 
KSampler中设置较低的denoise值 (如 0.4-0.8) 来控制原图保留程度。 
 - 使用 
 - 使用 LoRA:
- 添加 
LoraLoader节点。 - 连接到 
CheckpointLoaderSimple的MODEL和CLIP输出。 - 选择你的 LoRA 文件 (放在 
models/loras) 并设置强度 (strength_model,strength_clip)。 - 将 
LoraLoader输出的MODEL和CLIP连接到后续节点 (如CLIPTextEncode和KSampler)。 
 - 添加 
 - 使用 ControlNet:
- 使用 
ControlNetLoader加载 ControlNet 模型 (放在models/controlnet)。 - 使用预处理节点 (如 
Preprocessor for Canny,Preprocessor for Depth) 或LoadImage获取控制图。 - 使用 
ApplyControlNet节点,将控制条件应用到KSampler的Positive或Negative条件输入上。 
 - 使用 
 - 高清修复 (Hires Fix / Upscale):
- 有多种方法:
- 采样后放大: 在 
VAEDecode后接Upscale Model(如 ESRGAN) 或ImageScale(简单放大)。 - 潜在空间放大: 使用 
LatentUpscale节点在采样后、第二次采样前放大潜在图像,然后接第二个KSampler(通常降低步数和去噪强度)。这是更接近 AUTOMATIC1111 的 Hires.fix 的方法。 - 专用高清修复节点: 一些自定义节点 (如 
UltimateSDUpscale) 提供更复杂的高清修复流程。 
 - 采样后放大: 在 
 
 - 有多种方法:
 - 批处理: 在 
Empty Latent Image节点设置Batch Size> 1,或者在提示词中使用逗号分隔的列表配合特定节点。 - 使用 ComfyUI Manager: 强烈推荐安装!它极大简化了自定义节点、模型的管理和更新。安装方法通常在 Manager 的 GitHub 页面说明。
 
四、 常见问题
- 启动报错 (ModuleNotFoundError): 缺少 Python 依赖。激活虚拟环境后,在 
ComfyUI目录下运行pip install -r requirements.txt。 - 启动报错 (CUDA out of memory): 显存不足。
- 尝试减小 
WidthxHeight。 - 尝试减小 
Batch Size。 - 在 
KSampler中勾选Add noise(对于某些 img2img 工作流可能不需要)。 - 使用 
--lowvram或--medvram启动参数 (在main.py命令后添加,如python main.py --medvram)。 - 关闭其他占用显存的程序。
 - 考虑升级显卡硬件。
 
 - 尝试减小 
 - 模型加载失败/找不到: 确认模型文件 (.ckpt 或 .safetensors) 已正确放置在 
models/checkpoints目录下,并且在CheckpointLoaderSimple节点中选择了正确的文件名。 - 生成的图像全黑/全灰/乱码:
- 检查工作流连接是否正确,特别是 
MODEL,CLIP,VAE,CONDITIONING,LATENT这些关键连接线。 - 确认使用了匹配的模型和 VAE (尤其是 SDXL 模型需要 SDXL VAE)。
 - 尝试不同的 
Sampler/Scheduler组合。 - 检查提示词是否有效。
 - 尝试不同的 
Seed。 
 - 检查工作流连接是否正确,特别是 
 - 如何更新 ComfyUI:
- 安装包用户: 重新下载最新安装包,解压覆盖(注意备份你的 
models文件夹和自定义工作流)。 - Git Clone 用户: 在 
ComfyUI目录下执行:git pullpip install -r requirements.txt --upgrade 
 - 安装包用户: 重新下载最新安装包,解压覆盖(注意备份你的 
 - 界面卡顿/反应慢: 复杂工作流可能导致浏览器负担重。尝试关闭不用的浏览器标签页或使用更轻量的浏览器。
 
五、 学习资源
- 官方 GitHub 仓库 & Wiki: 
https://github.com/comfyanonymous/ComfyUI(必看!有基础示例和讨论) - ComfyUI Reddit: 
https://www.reddit.com/r/comfyui/(社区交流,分享工作流) - Civitai: 
https://civitai.com/(搜索 “ComfyUI”,有很多分享的工作流.json或.png文件以及配套模型)。 - ComfyUI Workflow Examples: 
https://comfyanonymous.github.io/ComfyUI_examples/(官方基础示例) 


