ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

ComfyUI完全指南:从节点工作流到AI绘画精细控制

ComfyUI完全指南:从节点工作流到AI绘画精细控制 新手学习 AI 绘画最常遇到的困境是听说过 Stable Diffusion WebUI也知道 AI 绘画能生成高质量图片但每次想要精细控制画面构图、人物姿态、光影方向时就发现 WebUI 的操作逻辑不够灵活各种插件之间的参数传递像黑盒一样难以理解。如果你正处于这个阶段那么 ComfyUI 很可能是你最值得学习的工具。本文将从零开始带你把 ComfyUI 的安装、节点概念、核心参数、入门工作流搭建、进阶技巧以及常见报错排查完整过一遍。全文以新手可复现为目标不堆砌术语也不会跳过关键细节。1. 什么是 ComfyUI为什么它值得学习1.1 从 Stable Diffusion 说起AI 绘画的核心引擎之一是 Stable Diffusion它能把“文字描述”转化为“图像结果”。但 Stable Diffusion 本身是一个复杂的深度学习模型系统普通用户需要用图形界面去操作它。目前最流行的两套界面工具Stable Diffusion WebUI集成度高、插件丰富、适合新手快速出图。ComfyUI采用节点式工作流把每一步处理过程可视化适合精细控制、批量生产、复杂工作流复用。ComfyUI 的特点可以概括为三句话所有处理过程都以“节点”呈现从加载模型到输出图片的每一步都看得见。节点和节点之间用连线传递数据你可以理解为“搭乐高”。同一个工作流可以保存为 JSON 文件分享给其他人直接加载使用。1.2 ComfyUI 和 WebUI 的定位差异很多新手会纠结一个问题既然 WebUI 已经很方便了为什么还要学 ComfyUI对比维度WebUIComfyUI上手难度较低界面直观略高需要理解节点逻辑显存占用较高默认加载多套组件相对节省按工作流需要加载控制精度常规参数可调复杂逻辑靠插件每个步骤可拆解控制更细工作流复用保存参数但流程不易迁移工作流即文件分享即复用批量处理支持但复杂逻辑写起来麻烦天然适合批量生产学习成本低前期略高后期收益大实际使用中两者不是二选一的关系。我的建议是新手可以先从 WebUI 熟悉提示词和模型然后尽快进入 ComfyUI 学习节点化思维。因为 ComfyUI 对生成过程的理解更深入遇到报错时你能更快定位是模型问题、采样器问题还是显存不足。1.3 适合学习 ComfyUI 的人群已经用过 WebUI但觉得控制力不够的 AI 绘画爱好者。需要批量生成素材、训练 LoRA、做风格迁移的创作者。想理解 Stable Diffusion 底层流程的开发者。需要在本地部署 AI 绘画服务并希望流程可复现、可自动化的工程人员。2. 环境准备安装 ComfyUI 的两种方式2.1 硬件和系统要求ComfyUI 是一个基于 Python 的应用程序底层调用 PyTorch 和 Stable Diffusion 模型。运行它需要满足一定硬件条件操作系统Windows 10/11 最常用Linux 和 macOS 也可以运行。GPUNVIDIA 显卡优先建议显存 4GB 以上。没有 NVIDIA 显卡也可以用 CPU 跑但出图速度会慢很多。内存建议 16GB 或以上。硬盘空间基础环境加模型至少需要 20GB 以上空闲空间。Python官方推荐使用 3.10/3.11 版本。如果你的显卡显存只有 4GB也可以运行但需要选择较小尺寸的模型例如 SD 1.5 系列的模型出图分辨率控制在 512x512 左右。2.2 方式一使用整合包新手推荐ComfyUI 的安装对新手来说最大的障碍是 Python 环境配置和 PyTorch 安装。为了减少这类问题国内社区出现了不少整合包例如常见的“秋叶整合包”“Aki 轻量版”等。这些整合包会把 Python 环境、ComfyUI 主程序、常用插件、基础模型打包在一起下载解压即可使用。使用整合包的典型流程# 1. 下载整合包并解压 # 2. 双击运行启动脚本例如 run.bat 或 启动ComfyUI.bat # 3. 等待控制台显示地址默认是 http://127.0.0.1:8188 # 4. 在浏览器中打开该地址进入 ComfyUI 界面整合包的优势是开箱即用但劣势也很明显环境是打包好的后续安装插件时如果遇到依赖冲突定位问题会更困难。不过对大多数人来说这仍然是起步效率最高的方式。需要注意整合包版本繁多建议优先选择更新频率高、评论量大、维护活跃的版本。不要随意下载来历不明的整合包防止捆绑恶意脚本。2.3 方式二手动安装开发者推荐如果你本身熟悉 Python 操作或者后续准备做二次开发推荐手动安装。下面是通用步骤。首先确认 Python 已安装python --version然后克隆 ComfyUI 官方仓库git clone https://github.com/comfyanonymous/ComfyUI.git cd ComfyUI创建虚拟环境并激活python -m venv venv # Windows venv\Scripts\activate # Linux/macOS source venv/bin/activate安装 PyTorch。如果你有 NVIDIA 显卡安装 CUDA 版本pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121如果你没有 NVIDIA 显卡安装 CPU 版本pip install torch torchvision torchaudio安装 ComfyUI 依赖pip install -r requirements.txt启动 ComfyUIpython main.py启动成功后会显示类似下方的输出Starting server To see the GUI go to: http://127.0.0.1:8188手动安装最大的好处是你清楚知道每一步做了什么后续升级或调试都更方便。但前提是你具备基本的命令行操作能力。3. 理解 ComfyUI 的核心概念节点、连线与采样器3.1 节点式工作流思维传统软件的操作方式是“菜单 - 面板 - 参数”ComfyUI 的思维方式完全不同。它把整个 AI 绘图流程拆成许多“节点”每个节点负责一个独立功能例如“加载模型”“输入提示词”“执行采样”“保存图片”等。一个简单的工作流可能是这样的加载模型节点 - 提示词节点 - K采样器节点 - 解码图片节点 - 保存图片节点每个节点有输入端口和输出端口连线决定数据流向。这种设计的最大价值是你可以修改任意环节而不影响全局也可以把多个模型和采样器组合在同一个工作流中。3.2 几个必须弄懂的节点3.2.1 Checkpoint 加载器Checkpoint 是 Stable Diffusion 的模型文件通常以.safetensors或.ckpt格式保存。Checkpoint 加载器节点负责从模型目录加载该文件并输出三个数据MODEL实际的图像生成模型。CLIP用来把文本提示词转成模型能理解的向量。VAE负责把图像从潜空间还原成正常图片也负责编码图片进入潜空间。这个节点是所有生成任务的起点。没有它后续的采样器拿不到模型。3.2.2 CLIP Text Encode提示词编码这个节点的作用是把用户输入的文本转换成模型能理解的语义向量。在 ComfyUI 中通常使用两个正面提示词Positive描述你想生成的内容。负面提示词Negative描述你不想看到的内容。注意CLIP Text Encode 节点不是简单地“把文字传给模型”而是通过 CLIP 模型把文字编码成向量这个向量会参与后续的图像生成控制。3.2.3 KSamplerK 采样器KSampler 是 ComfyUI 中最核心的采样节点。它负责根据提示词和模型在多次迭代中去噪逐步生成图像。KSampler 的关键参数seed随机种子相同种子 相同配置可以得到相同图片。steps采样步数越大质量越高但耗时越长。cfg提示词引导强度越大越贴近提示词但过大会导致色彩过饱和。sampler_name采样器名称如 Euler、DPM 2M、UniPC 等。scheduler调度器如 normal、karras影响采样步长的衰减方式。denoise去噪强度。1.0 表示完全从噪声生成0.5 表示在已有图片基础上修改 50%。图生图就是靠调整这个参数实现。新手常问“k 采集器里的 cfg 是什么意思”在 ComfyUI 界面中其实对应 KSampler 节点里的 cfg 参数。它的完整含义为 Classifier-Free Guidance Scale中文常叫“提示词引导系数”。简单理解cfg 越低AI 的自由度越大画面可能偏离提示词。cfg 越高AI 越严格按提示词执行但可能出现细节粗糙、颜色过重的问题。常用范围是 5 到 10默认 7 左右是比较稳妥的选择。3.2.4 VAEDecode 和 Save ImageVAEDecode 节点负责把 KSampler 输出的人像潜空间图像数据解码成正常的 RGB 图像数据。Save Image 节点负责把图像保存到指定目录一般是ComfyUI/output/目录。3.3 模型目录结构手动安装 ComfyUI 后模型目录通常如下ComfyUI/ ├── models/ │ ├── checkpoints/ # 存放主模型 .safetensors │ ├── vae/ # 存放 VAE 模型 │ ├── loras/ # 存放 LoRA 模型 │ ├── controlnet/ # 存放 ControlNet 模型 │ └── upscale_models/ # 存放放大模型 ├── custom_nodes/ # 插件目录 ├── output/ # 生成图片的输出目录 └── input/ # 图生图时导入图片的目录下载的模型文件按类型放入对应目录然后回到 ComfyUI 界面点击刷新按钮就能在节点中看到新模型。4. 入门实战从文字生成第一张图4.1 打开 ComfyUI 默认工作流启动 ComfyUI 后浏览器访问http://127.0.0.1:8188。首次打开时界面默认会加载一个基础文生图工作流。如果界面是空白的可以通过菜单加载默认模板Workflow - Browse Templates - Default4.2 工作流结构讲解默认工作流包含以下节点Checkpoint Loader加载主模型。CLIP Text Encode正面提示词输入想要的内容。CLIP Text Encode负面提示词输入不想出现的内容。Empty Latent Image设置生图尺寸和批次数。KSampler执行采样。VAEDecode把潜空间图像解码。Save Image保存图片。连线逻辑如下CheckpointLoader - MODEL - KSampler CheckpointLoader - CLIP - 正面/负面CLIP编码 - KSampler CheckpointLoader - VAE - VAEDecode EmptyLatentImage - Latent - KSampler KSampler - Latent - VAEDecode VAEDecode - IMAGE - SaveImage4.3 配置模型和提示词点击 Checkpoint Loader 节点在 checkpoint 下拉框中选择一个你已经放入models/checkpoints/目录的模型。如果没有模型需要先下载一个 Stable Diffusion 模型例如 SD 1.5 系列的v1-5-pruned-emaonly.safetensors。双击空白处可以打开节点搜索框。输入“CLIP Text Encode”可以快速添加提示词节点。在正面提示词节点中输入a girl wearing a red dress, walking in a forest, golden hour, soft light, highly detailed, masterpiece, best quality在负面提示词节点中输入lowres, bad anatomy, bad hands, extra fingers, blurry, jpeg artifacts, watermark, worst quality注意负面提示词并不是写“要清晰的图片”而是主动排除不希望出现的元素。这是 Stable Diffusion 系列模型的通用习惯。4.4 设置采样参数在 KSampler 节点中推荐这样设置seed: 随机值即可先跑通 steps: 20 cfg: 7 sampler_name: Euler scheduler: normal denoise: 1.0如果使用 SD 1.5 模型分辨率建议先设置为512x512等流程跑通后再提高分辨率。使用 SDXL 模型时常用基础分辨率是1024x1024。点击界面右侧的“Queue Prompt”按钮就能开始生成。4.5 运行结果说明耐心等待后Save Image 节点中会显示生成的图片同时图片会自动保存到ComfyUI/output/目录文件名类似ComfyUI_00001_.png如果你看到一张有基本画面、但也存在手部畸形的图这很正常。后续可以通过更好的提示词、负面提示词、LoRA 模型或者 ControlNet 来改善。5. 图生图工作流把照片转成插画风格5.1 为什么需要图生图文生图只能靠文字凭空创作很多时候不够可控。图生图可以让 AI 参考一张现有图片在保留大致结构的基础上重新生成新风格的内容。ComfyUI 做图生图的思路非常直接把图片编码成潜空间数据再交给 KSampler 加噪和去噪。5.2 搭建图生图工作流的步骤首先准备一张参考图放入ComfyUI/input/目录例如input/my_photo.png。然后在 ComfyUI 中双击空白处搜索并添加以下节点Load Image加载图片VAE Encode把图片编码进潜空间KSamplerVAEDecodeSave Image核心连线变化在于原本 Empty Latent Image 生成空的潜空间作为起点现在改为由 Load Image 加载图片后经过 VAE Encode 得到 Latent再传给 KSampler。同时KSampler 中的 denoise 参数需要调低比如设置为0.5到0.7。它的含义是“重画的强度”denoise 1.0完全忽略原图等价于文生图。denoise 0.5保留原图约一半的构图只调整风格。denoise 0.3基本保留原图只做细节微调。5.3 实际操作示例假设你有一张普通街景照片想把它转成“赛博朋克夜景插画”可以使用如下工作流Load Image - VAE Encode - KSampler - VAEDecode - Save Image ↑ CLIP Text Encode正面------- CLIP Text Encode负面------- Checkpoint Loader ------- KSampler正面提示词写成cyberpunk city street at night, neon lights, rain, reflections, cinematic lighting, highly detailed, digital art负面提示词继续使用常见排除项。KSampler 中 steps 可以设 25cfg 设置 7denoise 设置 0.6。点击执行后AI 会在原图构图的基础上重新渲染画面风格街景结构大概率保留但色调和材质会明显倾斜到赛博朋克风格。5.4 常见误区提醒图生图不是“把图片糊一层滤镜”。denoise 过高会导致原图结构几乎消失denoise 过低则会出现明显的变化不足。新手做风格迁移时建议从 0.5 开始试每次调整 0.05找到自己满意的平衡点。6. 进阶功能LoRA 模型与 ControlNet 使用6.1 LoRA 模型定制风格与人物的高效方式LoRALow-Rank Adaptation是一种轻量级模型微调技术。训练完成后通常只需要几十到几百 MB 的模型文件就能把特定风格或特定角色注入到生成结果中。在 ComfyUI 中使用 LoRA 的核心节点是 LoraLoader。它的连线方式是在 Checkpoint Loader 和 KSampler 之间插入CheckpointLoader - MODEL - LoraLoader - MODEL - KSampler CheckpointLoader - CLIP - LoraLoader - CLIP - KSamplerLoraLoader 节点需要指定三个参数lora_name选择要加载的 LoRA 文件。strength_model控制模型权重的影响强度常见 0.6 到 1.0。strength_clip控制文本编码器的影响强度通常和 strength_model 相同。假设你下载了一个“水墨风格”的 LoRA 模型放入models/loras/目录。在 LoraLoader 中选择该模型strength_model 设为 0.8。此时正面提示词不需要描述“水墨画”三个字LoRA 本身就会把风格偏向到水墨方向提示词主要描述主体内容即可。新手注意LoRA 对提示词的敏感度比主模型更高。你可以先只填一个主体词比如“a mountain, misty, background”作为测试不要一次性写入大量风格形容词避免风格被稀释。6.2 ControlNet精确控制构图和人物姿态ControlNet 是 AI 绘图中控制构图的重要工具。它可以通过姿势骨架、边缘检测图、深度图、线稿图等辅助信息约束最终画面的空间结构。在 ComfyUI 中使用 ControlNet通常需要安装插件来获取专用节点例如常见的ComfyUI-Advanced-ControlNet或comfyui_controlnet_aux。基本工作流结构为Load Image控制图- 预处理节点 - ControlNet Apply - 送入 KSampler ControlNetLoader加载 controlnet 模型 CheckpointLoader - MODEL - ControlNet Apply - KSampler典型场景之一是“角色姿势控制”准备一张人物骨架图可以直接生成。使用 ControlNet 的姿态预处理节点OpenPose Pose提取骨架。把骨架信息传入 ControlNet Apply 节点。在提示词中描述人物形象和画面风格。生成图片时人物的动作会基本遵循骨架图。ControlNet 的配置重点在于 strength 参数即控制强度。过高会导致画面僵硬过低则参考信息不起作用。一般从 0.7 左右开始微调。6.3 批量生成与工作流复用ComfyUI 一个很强大的功能是支持批量生成。在空 Latent 图像节点中把 batch_size 从 1 调大比如 4就可以一次生成 4 张不同 seed 的图片。配合随机 seed适合快速出多方案供筛选。当你完成一个满意的工作流后点击界面中的“Export”或“Save”按钮可以把整个工作流保存为 JSON 文件。别人拿到这个 JSON 文件只要模型和插件齐全打开后可以直接复用。这也是社区中大量分享“工作流文件”的原因。7. 常见报错与排查思路7.1 节点在执行过程中发生错误这是 ComfyUI 最常见的报错形式。点击出现问题的节点会看到错误弹窗内容类似Error occurred when executing KSampler可能原因按概率排序模型文件损坏或与当前 ComfyUI 版本不兼容。显存不足导致 CUDA 内存溢出。插件冲突多个自定义节点同时引用不同版本的依赖库。输入图片尺寸过大或过小导致某些节点无法处理。Python 环境中缺少必要依赖。排查顺序建议先复制错误详情中的第一行核心错误信息。检查显存占用切换较小模型或降低分辨率。把所有自定义节点注释掉或临时移动出custom_nodes/目录确认是否插件问题。查看控制台输出的完整 Python Traceback。7.2 CUDA Out of Memory 显存不足报错内容一般包含torch.OutOfMemoryError: CUDA out of memory.解决思路降低生成分辨率。减小 batch_size。更换为更小的模型。在启动命令中增加--lowvram参数python main.py --lowvram关闭其他占用显存的程序如浏览器大量标签页、视频播放器。如果使用 Windows可以适当增加虚拟内存但虚拟内存无法完全替代显存。7.3 Python 环境错误或依赖冲突如果刚手动安装完成启动时出现ModuleNotFoundError说明某个依赖没有安装完整。常见做法是重新安装依赖pip install -r requirements.txt如果安装过插件后报错很可能是某个插件要求特定版本的库与主程序产生冲突。此时建议在custom_nodes/中找到对应插件目录逐个排除。如果使用整合包不同整合包之间的插件目录结构可能不同建议不要频繁在不同整合包之间来回拷贝模型和插件以免配置错乱。7.4 图片生成后全黑或全灰可能原因VAE 缺失或加载错误。部分模型需要单独加载 VAE。模型是纯文本模型不支持图像生成。cfg 参数设置过于极端。steps 设置过少例如小于 10导致采样不充分。解决方法单独添加 VAE Loader 节点并选择正确的 VAE 文件查看模型文件的来源说明确认它是图像生成模型不要用文本模型。将 cfg 调回 7 左右steps 调回 20 以上。7.5 端口被占用导致启动失败如果你启动 ComfyUI 时提示Address already in use说明 8188 端口已经被其他程序占用。可以使用下面命令启动python main.py --port 8189然后在浏览器中访问http://127.0.0.1:8189。7.6 常见问题汇总表问题现象常见原因解决思路节点执行报错模型损坏、显存不足、插件冲突按错误信息逐层排查先排除插件因素CUDA out of memory显存不够降低分辨率、减小 batch、使用 --lowvramModuleNotFoundError依赖未装全重新执行 pip install -r requirements.txt出图全黑VAE 缺失单独加载正确 VAE出图风格不贴合cfg 过低或提示词过弱提高 cfg重写提示词检查 LoRA 强度端口占用8188 被占用换端口启动模型加载慢硬盘读取慢、模型过大使用 SSD选择更小的模型8. 最佳实践与工程建议8.1 工作流设计建议新手搭建 ComfyUI 工作流时最重要的一条原则是一次只改一个变量。因为节点化工作流的变量很多如果同时改了提示词、采样器、LoRA 强度和 denoise图片出了问题时你根本不知道是哪一步导致的。正确做法是先固定一套基准参数每次只调整一个节点对比输出结果。建议先保存几套“低配工作流”文生图基础工作流。图生图基础工作流。单 LoRA 测试工作流。ControlNet 姿态控制测试工作流。这些模板可以在换模型、换风格时快速套用避免每次从零搭建。8.2 提示词管理规范不要把你的所有提示词都堆在同一个 CLIP Text Encode 节点里。合理的做法是把质量词统一放在一个“质量前缀”节点中。把主体描述和风格描述分开。保存一套负面提示词模板后续所有项目通用。这样做的好处是当你从社区下载别人的工作流时可以快速区分哪些是质量词、哪些是内容词方便替换。8.3 模型文件管理随着使用时间变长模型文件会越来越多。建议按以下方式管理为每个模型建立一个说明文档记录来源、推荐分辨率、推荐采样器。命名时标注模型类型例如SD15_anything_v5.safetensors。LoRA 文件命名时带上风格关键词方便检索。定期清理无用的.ckpt文件因为.safetensors格式更安全、加载更快。8.4 安全与合规注意事项AI 绘画工具本身是开源和合法的但使用它生成图片时要特别注意以下几点不生成违法、违规、违背公序良俗的内容。不滥用他人肖像不使用未经授权的版权角色生成商业内容。下载模型时确认来源可靠防止模型文件被植入恶意代码。在浏览器和本地部署环境中不要关闭系统的安全提示也不要随意执行来源不明的启动脚本。涉及商业项目时确认模型许可证是否允许商用不能只看“能下载”就默认可以商用。8.5 性能优化建议如果你经常生成图片以下优化方案很实用使用 SSD 存放模型模型加载速度会明显提升。启动时优先让 ControlNet 模型常驻内存减少重复加载。长批量生成时适当降低 steps先跑小图看效果确认后再用高分辨率精细出图。如果显存较小可以考虑使用--fast参数配合低显存模式。安装插件要克制。很多组件会额外占用内存和显存插件并不是越多越好。9. 学习路线与进阶方向9.1 从基础到进阶的路径建议第一阶段掌握文生图工作流。不追求复杂结构先把 KSampler、CLIP 编码、VAE 解码这几个节点玩明白。第二阶段掌握图生图工作流。重点理解 denoise 参数对画面的影响学会在保留构图和重塑风格之间做权衡。第三阶段接入 LoRA 和 ControlNet学习用外部模型控制风格和结构。第四阶段学习脚本化或 API 调用把 ComfyUI 接入自己的自动化流程。9.2 生产环境中的 ComfyUI 使用思路当你在生产环境中使用 ComfyUI 时不会再像新手那样手动拖节点而是通过 ComfyUI 提供的 API 接口提交工作流 JSON批量生成图片。一个简化版的调用思路是# 示例通过 API 提交工作流 # 需要先准备一个 workflow.json 文件 import json import urllib.request def queue_prompt(workflow_json, server_address127.0.0.1:8188): data json.dumps({prompt: workflow_json}).encode(utf-8) req urllib.request.Request( fhttp://{server_address}/prompt, datadata, headers{Content-Type: application/json}, ) with urllib.request.urlopen(req) as resp: return json.loads(resp.read()) # 实际使用时要替换为你的工作流 JSON # workflow json.load(open(workflow.json)) # result queue_prompt(workflow) # print(result)这里只是演示提交思路具体字段需要结合你的工作流 JSON 来定。这种模式下计费、调度、队列、结果回写都可以交给自己的后端服务完成。9.3 社区与资料获取ComfyUI 的教程资料分散在多个平台ComfyUI 官方 GitHub查看源码、最新功能和示例工作流。Civitai下载模型、LoRA、ControlNet 模型并查看别人分享的工作流截图。Hugging Face下载 Stable Diffusion 系列模型和 VAE。国内社区B站、知乎、CSDN 上有很多实战笔记可以按具体关键词搜索。遇到问题时优先用英文关键词检索因为英文资料更新速度快很多。例如搜索 “ComfyUI ControlNet error” 比搜索“ComfyUI 控制网络报错”能找到更多有效结果。9.4 最后建议ComfyUI 上手阶段最需要的是耐心和实验精神。不要怕把参数调乱不要怕报错报错信息本身就是最好的学习材料。当你第一次通过自定义工作流把一张普通照片变成理想中的插画、把一段模糊的想法变成精确的构图时你会真正理解节点式 AI 绘画工具的威力。如果本文从安装、节点概念、工作流搭建到常见排错能帮你跨过入门阶段的分水岭那就达到了它最大的意义。接下来建议你立刻打开 ComfyUI从默认工作流出发换一个模型改一次 denoise亲手感受节点之间的数据流动。实际操作带来的理解深度远超阅读十篇文章。
返回列表