ARTICLE DETAIL

资讯详情

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

ComfyUI 零基础进阶教程:从文生图到 ControlNet 工作流

ComfyUI 零基础进阶教程:从文生图到 ControlNet 工作流 如果你刚开始接触 ComfyUI很可能第一眼看到满屏的节点和连线会产生一种“这比 Stable Diffusion WebUI 复杂太多”的错觉。但真实体验一段时间后你会发现当需要反复切换 ControlNet、LoRA、局部重绘甚至把静态图扩展到视频生成时节点式工作流的可维护性和复用性明显更强。网上关于 ComfyUI 的资料虽然多但碎片化也严重很多人卡在整合包安装、模型放置和“缺节点”这几道门槛上。这篇文章我准备按“背景概念 → 本地环境部署 → 界面认识 → 节点搭建 → 文生图实战 → 进阶节点 → 插件安装 → 出视频思路 → 常见问题 → 工程建议”的顺序整理一份适合从零基础到进阶的 ComfyUI 教程。如果你想快速跑通第一张图可以直接看第 4 节如果你导入别人工作流时被满屏红点卡住建议优先看第 6 节和第 8 节。整体建议按顺序阅读因为后面排错时会反复用到前面的基础概念。1. ComfyUI 与工作流的核心概念1.1 ComfyUI 是什么先回答一个最基础的问题ComfyUI 到底是什么简单理解ComfyUI 是一个基于“节点图”的 AI 绘画工具前端。传统 Stable Diffusion WebUI 把功能封装成一个个表单和按钮而 ComfyUI 把出图流程拆成一个个独立模块每个模块就是一个节点。以文生图为例完整流程通常是这样加载模型文件得到模型参数对正向提示词和反向提示词分别进行文本编码创建一个空的潜空间图像通过采样器迭代去噪将潜空间图像解码成普通图片保存图片到本地。在 ComfyUI 中上面每一步都对应一个或多个节点。节点与节点之间通过连线传递数据最终形成一张可视化的“工作流”。这种设计看起来比传统界面更复杂但它带来的优势也很明显流程可控、中间状态可见、节点可以随意替换、整套流程可以被保存成工作流文件反复复用。1.2 什么是工作流在 ComfyUI 语境里“工作流”指的是某个完整处理流程的节点编排结果包括节点类型、连线关系、参数配置等。ComfyUI 工作流通常有两种保存载体JSON 文件适合备份和二次编辑PNG 图片工作流会被嵌入图片信息中把图片拖回 ComfyUI 画布就能恢复对应工作流。很多教程中提到“ComfyUI 工作流分享”通常就是分享一张 PNG 图。拿到图片后你不需要任何额外操作只要拖进 ComfyUI 窗口节点图就会重新出现。如果图片中记录的节点类型在你本地不够则会出现红点或报错这种情况需要通过后续讲的插件安装来解决。1.3 ComfyUI 与 WebUI 的选择建议下面这个表格可以帮助初学者做判断对比项Stable Diffusion WebUIComfyUI上手难度相对低适合快速体验有一定门槛需要理解节点与连线流程透明度较低很多内部逻辑不可见较高每个环节都独立可观察批量操作与复杂串联相对繁琐工作流复用后非常高效插件生态丰富但不同插件冲突明显同样丰富常用在 custom_nodes 下新人推荐场景玩单图、快速出图、熟悉参数可控生成、多人工作流复用、进阶研究如果只是偶尔生成几张图WebUI 足够但要实现可控的角色一致性、局部重绘、动态视频相关工作流ComfyUI 无疑是更好的选择。这也是本文重点讲 ComfyUI 的原因。2. ComfyUI 本地环境部署2.1 硬件与系统建议ComfyUI 出图时主要依赖 GPU 进行计算。实际体验中NVIDIA 显卡的兼容性最好显存越大越不容易爆显存。下面只是大致参考不是硬性标准显存规模常见任务体验4GB 左右可以跑低分辨率出图需开启显存优化参数6GB ~ 8GB入门较流畅适合 SD1.5 系列模型和轻量 LoRA12GB 及以上SDXL、ControlNet、视频相关工作流更从容如果电脑没有 NVIDIA 显卡ComfyUI 并非完全不能运行CPU 模式下出图速度会慢很多建议先用小分辨率模型测试。整合包内通常已经封装好 Python、PyTorch 等运行环境不需要你单独安装复杂的 Python 环境。2.2 安装方式一使用秋叶整合包对普通用户来说国内最常用的方式是使用“秋叶一键整合包”。这类整合包把 ComfyUI 本体、Python 依赖、常见模型目录、启动器都打包在一起显著降低新手环境配置难度。参考步骤如下搜索并下载合适的 ComfyUI 整合包资源。不同渠道的整合包版本会不断更新比如你在一些资源站看到的“秋叶整合包 v10”“v11”等说法具体以你下载到的整合包发布说明为准。把压缩包解压到一个非中文、不带空格的路径下例如D:\AI\ComfyUI。解压时尽量关闭杀毒软件或把目录加入白名单因为整合包内包含大量启动脚本和 Python 依赖文件有时会被误报。双击启动器一般是一键启动程序常见名称可能是“A 启动器.exe”或类似名称具体看整合包内说明。启动器会检查依赖是否完整。首次启动时如果提示下载模型或更新组件耐心等待完成。启动成功后会看到浏览器自动打开地址http://127.0.0.1:8188这就是 ComfyUI 的 Web 界面。使用整合包时最容易踩的坑是把压缩包解压到“下载文件夹”深层目录、路径含中文或者解压后被安全软件静默删除了 Python 依赖文件。遇到启动报错优先从这两个方向排查。2.3 安装方式二官方源码手动部署如果你希望更深入了解 ComfyUI或者后续需要二次开发建议使用官方源码手动部署。这种方式适合有 Python 基础的读者。大致流程如下# 1. 克隆官方仓库 git clone https://github.com/comfyanonymous/ComfyUI.git # 2. 进入项目目录 cd ComfyUI # 3. 创建虚拟环境Windows 环境示例 python -m venv venv venv\Scripts\activate # 4. 安装依赖 pip install -r requirements.txt # 5. 启动 ComfyUI python main.py如果你在 macOS 或 Linux 环境激活虚拟环境的命令通常是source venv/bin/activate启动后浏览器访问http://127.0.0.1:8188即可。如果需要让局域网内其他设备访问可以尝试增加监听参数python main.py --listen 0.0.0.0 --port 8188需要特别说明的是手动安装时 Python 版本、PyTorch 版本必须与当前 ComfyUI 版本兼容。不建议使用过于新或过于旧的 Python 版本社区主流方案会优先选择兼容性较好的 Python 3.10 或 3.11。如果你的启动阶段报版本不兼容错误请先检查 Python 和依赖版本。2.4 模型存放目录ComfyUI 启动后需要把模型文件放到指定目录。下面是一份常见的目录结构ComfyUI/ ├─ models/ │ ├─ checkpoints/ # 大模型例如 SD1.5、SDXL │ ├─ vae/ # VAE 模型 │ ├─ loras/ # LoRA 模型 │ ├─ controlnet/ # ControlNet 模型 │ ├─ unet/ # 部分新架构的 UNET 模型 │ └─ embeddings/ # Textual Inversion embeddings ├─ custom_nodes/ # 第三方插件目录 ├─ output/ # 默认输出图片目录 ├─ user/ # 用户数据与默认工作流 └─ main.py # 启动入口很多新手刚接触 ComfyUI 时会把模型随意放到models根目录下导致节点下拉列表里找不到模型。记住一个原则不同模型类型必须放入对应子目录。加载 Checkpoint 时ComfyUI 只扫描models/checkpoints等目录。3. ComfyUI 界面与基础节点原理3.1 画布交互ComfyUI 的界面看起来像一张无限画布操作逻辑如下操作功能鼠标左键拖拽拖动画布鼠标滚轮缩放画布双击空白处弹出节点搜索框点击节点并按键 Delete删除节点从节点的输出点拖到另一个节点输入点建立连线如果你第一次打开就看到了默认工作流那通常是一个已经搭好的文生图流程。只要修改左上角的“加载 Checkpoint”节点选择你下载好的模型然后点击界面右侧的“Queue Prompt”按钮就能开始第一次出图。3.2 节点连线规则ComfyUI 节点上的连线端口分为输入和输出。数据从上游节点输出流向下游节点输入。节点端口颜色会提示数据类型例如模型类型通常是橙红色条件类型 conditioning 通常是浅绿色图片类型 image 通常是蓝色潜空间 latent 通常是紫色文本类型通常是粉色或灰色。理解了端口类型之后插线基本不会错。硬把颜色不一致的端口接在一起ComfyUI 通常会拒绝连接或者直接报错。3.3 一个完整出图流程的关键节点下面用一张表格梳理标准的 ComfyUI 文生图流程节点名称核心作用Load Checkpoint加载大模型分别输出模型、CLIP、VAECLIP Text Encode (Prompt)把提示词编码为条件向量Empty Latent Image创建一张空白潜空间图像KSampler根据条件进行迭代采样去噪VAEDecode将潜空间数据解码为图片Save Image把结果保存到 output 目录对新手来说不需要把每个节点的源码读懂但你至少要清楚“模型从哪里来、提示词如何进入、采样发生在哪里、图片如何保存”。后期排查工作流问题时这几个节点就是定位问题的主线。4. 从零搭建第一个文生图工作流4.1 使用默认模板快速出图新安装并启动 ComfyUI 后通常会自动加载一个默认工作流模板。它的结构非常适合新手对照Load Checkpoint正向提示词节点反向提示词节点Empty Latent ImageKSamplerVAEDecodeSave Image。这时你只需要做三件事在 Load Checkpoint 节点里选择你希望使用的大模型分别在正向提示词和反向提示词里填写内容点击“Queue Prompt”。以 SD1.5 系列模型为例正向提示词可以写a beautiful girl, soft light, detailed face, masterpiece, best quality反向提示词可以写lowres, bad anatomy, bad hands, extra fingers, blurry, watermark如果模型已经能正确加载界面会出现进度条。跑完后图片会显示在节点右侧并自动保存到output目录。4.2 手动搭建文生图工作流为了更深入理解 ComfyUI 工作流建议你丢弃默认模板手动从零搭建一次。双击画布空白处依次添加以下节点Load Checkpoint正向 CLIP Text Encode反向 CLIP Text EncodeEmpty Latent ImageKSamplerVAEDecodeSave Image。连接关系可以概括为Load Checkpoint 的 MODEL 输出连接到 KSampler 的 model 输入Load Checkpoint 的 CLIP 输出分别连接到两个文本编码节点的 clip 输入Load Checkpoint 的 VAE 输出连接到 VAEDecode 的 vae 输入正向文本编码节点输出 conditioning连接 KSampler 的 positive反向文本编码节点输出 conditioning连接 KSampler 的 negativeEmpty Latent Image 的 latent 输出连接 KSampler 的 latent_imageKSampler 的 latent 输出连接 VAEDecode 的 samplesVAEDecode 的 image 输出连接 Save Image 的 images。连接完成并选择模型后点击 Queue Prompt 就能生成图片。4.3 采样器关键参数说明KSampler 是决定出图质量的关键节点下面解释几个高频参数。参数作用说明seed随机数种子。相同种子配合相同参数可复现同一张图steps采样步数。步数越多细节越充分但耗时越长cfg提示词引导强度。越高提示词约束越强太高容易过曝失真sampler_name采样器名称不同采样器效果和速度有差异scheduler采样调度器影响每一步的去噪策略denoise去噪强度。1 表示完整重绘低于 1 常用于图生图局部变化这里给一个新手常用的起步值steps20、cfg7、sampler_namedpmpp_2m、schedulerkarras、denoise1。需要注意的是不同模型的最佳参数并不相同某些新模型的建议 cfg 甚至接近 1。最稳妥的方式是参考你使用的模型发布说明。4.4 保存和复用工作流生成成功后可以通过两种方式保存工作流第一种是纯 JSON 方式在画布空白处找到“Save”入口导出.json文件。第二种是将工作流信息写入 PNG。点击节点图的“Export”或使用工作流图片导出功能生成的 PNG 被再次拖入 ComfyUI 画布时会自动还原节点结构。分享给同事或朋友时建议用 PNG 方式。对方如果缺少模型或插件ComfyUI 会给出缺失提示这时候就需要补齐对应资源。5. 进阶节点搭建图生图、局部重绘、LoRA 与 ControlNet5.1 图生图工作流图生图的目标是基于已有图片生成新图。很多 ComfyUI 版本自带图生图模板如果没有可以手动搭建。核心思路是通过 Load Image 节点加载输入图片通过 VAE Encode 节点把图片编码为潜空间数据将潜空间数据接到 KSampler 的 latent_image保留正向反向提示词调整 denoise 参数控制变化幅度。当denoise1时模型会对输入图的位置信息做很强重绘结果与原图差异巨大。当denoise0.4~0.7时更适合保留原图构图的风格迁移、细节增强。实际操作中新人最容易犯的错是忘记把图片节点编码成 latent直接把 Load Image 的 image 接到 KSampler。KSampler 需要的是潜空间数据所以必须经过 VAE Encode。5.2 局部重绘思路ComfyUI 支持局部重绘的有多种实现方式但核心都离不开“遮罩”概念。遮罩 mask 告诉你要重绘图片的哪些区域。使用 Load Image 节点时你可以在上传图片后使用画遮罩功能涂抹需要修改的区域节点会输出对应的 mask。遮罩区域通常需要经过一系列图像处理将原图与 mask 合并成带重绘条件的 latent 输入再送进采样器。由于 ComfyUI 版本不断更新遮罩处理节点的名称在不同默认模板中会有所差异。新手直接使用别人分享好的“局部重绘工作流”会更稳定。导入模板后重点观察两个参数被涂白的路径是否正确denoise 是否设置在合理区间。避免一上来就调denoise1否则容易把不需要重绘的部分连同删除。5.3 在流程中加入 LoRA 节点LoRA 是微调模型风格的轻量化方案优点是模型文件很小通常几十 MB 到几百 MB。使用方式非常简单把.safetensors或.ckpt格式的 LoRA 文件放入models/loras目录在 ComfyUI 界面双击空白处搜索 LoraLoader 节点并添加将原 Load Checkpoint 输出的 model 和 clip 接入 LoraLoader在 LoraLoader 配置里选择 LoRA 文件把 LoraLoader 输出的 model 和 clip 连接到后续的采样或文本编码节点。LoraLoader 常用参数参数作用strength_model控制 LoRA 对模型特征的影响强度默认 1strength_clip控制 LoRA 对文本编码器的影响强度默认 1如果效果不明显可以优先提高strength_model如果画面出现明显风格崩坏可以适当降低两个强度值。5.4 ControlNet 可控生成ControlNet 是 ComfyUI 进阶流程中使用频率极高的技术。它允许你用边缘、线稿、深度图、姿态骨架等额外信息来控制生成结果。ComfyUI 中 ControlNet 的核心节点包括 ControlNetLoader 和 Apply ControlNet。前置步骤包括把 ControlNet 模型放入models/controlnet目录使用 Load Image 加载控制图片根据控制类型可能需要预处理节点生成边缘图或线稿通过 ControlNetLoader 选择 controlnet 模型通过 Apply ControlNet 将 conditioning、model、image 结合。需要留意的是不同大模型使用的 ControlNet 模型不互通。SD1.5 的 ControlNet 不能直接用 SDXL 模型这是最容易踩坑的地方。另外新版 ComfyUI 对部分新架构模型如一些 diffusers 系模型的支持路径不同下载模型和工作流时要注意提示。6. ComfyUI 插件安装与缺失节点解决6.1 把插件放到 custom_nodes 目录ComfyUI 的第三方插件位于custom_nodes目录。安装方式主要有两种方式一手动下载压缩包解压后放入custom_nodes目录重启 ComfyUI。方式二使用 Git 命令安装。以 ComfyUI Manager 为例你可以打开终端进入 ComfyUI 目录后执行cd custom_nodes git clone https://github.com/ltdrdata/ComfyUI-Manager.git安装完成后重启 ComfyUI。如果路径或仓库名称在社区中发生变化请以当前 ComfyUI 社区页面为准。重启后浏览器界面会出现 Manager 相关的按钮这就是 ComfyUI Manager 管理器。相比直接下载压缩包Git 方式后续更新更方便直接在对应插件目录执行git pull就能拉取新版本。6.2 利用 ComfyUI Manager 安装缺失节点当你从网络上下载到某个工作流 PNG但本地打开后出现红点或者直接提示“要安装缺失的包以使用此工作流。要安装缺失的节点请先……”时问题通常不是代码报错而是缺少自定义节点。使用 ComfyUI Manager 后的解决思路如下点击 ComfyUI 界面右侧的 Manager 按钮找到 Custom Nodes Manager 或缺失节点检测入口在列表中检索缺失的节点名称点击 Install 安装安装完成后重启 ComfyUI 或执行前端热加载再看工作流红点是否消失。还要强调的是有些节点不是直接安装自定义节点就能结束的节点内部还会依赖额外的 Python 包。当你看到“No module named xxx”的报错时说明节点的源码已经存在但缺少某个 Python 库。可以在官方安装环境里执行pip install xxx如果你使用的是秋叶整合包请优先通过整合包自带的“环境管理”或启动器中的控制台进入 Python 环境再安装不要随便使用系统全局 Python否则可能导致版本混乱。6.3 插件安装的维护建议社区中很多 ComfyUI 工作流对插件版本有隐式要求。安装插件时建议注意以下几点注意事项说明不要一次装太多插件冲突会增加排错难度建议逐个安装并测试看兼容性说明尽量选择与当前 ComfyUI 版本兼容的插件分支定期更新核心ComfyUI 本体更新后旧插件可能失效避免不明来源插件本质是可执行代码不要随便运行来历不明的脚本安装插件后如果发现某一个节点找不到很可能是因为插件没被正确加载。先重启后端再看日志中的自定义节点导入过程是否出现异常。7. ComfyUI 出视频基础思路与常见坑7.1 为什么 ComfyUI 适合做 AI 视频在 ComfyUI 社区中视频生成并不指像即梦、可灵那样的纯在线工具而是指通过 ComfyUI 工作流调用视频模型或动态模型完成生成、批量扩展、图生视频等功能。常见的方向包括动态化已有静态图让图片产生运动关键帧批量生成形成连续镜头视频逐帧风格转绘保持画面一致性。这些任务通常依赖特定模型和插件。不同视频模型的安装逻辑差异很大不能只用一套工作流通吃。正确做法是下载视频工作流后先阅读资源发布者给出的说明再把对应模型放入指定目录。7.2 显存与批次设置视频生成对显存的压力远高于静态图。很多新人在 ComfyUI 中直接跑到完整视频长度结果出现 OOM显存溢出报错。建议先保持低分辨率把帧数控制在 8~16 帧左右测试通过后再逐步提高帧数和分辨率。如果你使用的是整合包可以留意启动器配置中是否有显存优化选项。ComfyUI 本身也支持一些低显存启动参数例如在命令行中增加--lowvram、--medvram等参数来降低显存占用。不同版本对这些参数的支持程度不完全一致启动前可以用python main.py --help查看当前版本支持的启动参数列表。8. ComfyUI 常见问题与排查思路无论整合包还是手动安装新手都会遇到一些高频问题。这里整理成表格形式便于按症状快速定位。问题现象常见原因解决思路启动后浏览器打不开页面启动器未成功监听端口或 8188 端口被占用查看控制台日志更换端口重启模型下拉列表里没有刚放入的模型模型放错目录或没有刷新模型列表将模型放入对应 models 子目录并刷新/重启导入工作流后出现红点缺少自定义节点安装 ComfyUI Manager 并补装缺失节点报错 No module named xxx节点代码存在但缺少 Python 依赖包在正确 Python 环境中执行 pip install xxx提示 FileNotFoundError 找不到模型文件工作流配置的模型本地不存在下载对应模型并放对目录输出全黑图或颜色异常VAE 缺失、模型不匹配、cfg 过高优先检查 VAE 和 Checkpoint 是否匹配爆显存分辨率、批次或模型过大降低分辨率、减少批次尝试低显存参数图片一直处于排队状态后端卡死或显存未释放重启 ComfyUI观察控制台日志如果遇到“加载大模型失败”这类问题先看模型文件本身是否完整。很多大模型文件超过 2GB下载中断会导致文件损坏ComfyUI 无法读取。此时需要删除损坏文件重新下载并检查磁盘剩余空间是否充足。9. 工作流工程化与最佳实践9.1 目录与命名规范ComfyUI 使用时间长了磁盘里会积累大量模型和插件。为了让工作流可维护建议从一开始就保持规范模型文件命名包含来源和用途例如sd15_realistic_v10.safetensors按项目需求对模型目录做二级分类工作流 JSON 按日期和用途保存到独立目录不要把所有工作流都堆在默认目录否则后期很难找到真正可用的版本。当团队协作时模型文件本身一般不会入库因为体积太大。建议把模型清单、下载地址和校验方式写入项目的说明文件让新同学能快速复现环境。9.2 工作流模板化建议把常用流程做成模板例如文生图模板、图生图模板、Pro 模板、局部重绘模板、ControlNet 通用模板。以后出现新需求时只需要复制模板并修改节点不需要每次都从空白画布开始。对复杂流程花时间在画布上给节点分组并命名也是性价比很高的做法。ComfyUI 支持节点分组把“提示词区”“采样区”“解码区”清晰分好后续阅读和调试的体验会明显提升。9.3 安全与权限边界不要把 ComfyUI 当成一个完全可信的黑盒工具。以下几点在工程化过程中非常重要不要运行来源不明的 Python 脚本或第三方节点下载模型时尽量选择可信渠道避免下载被篡改的文件使用公网访问 ComfyUI 时必须配合身份验证或防火墙不要让服务直接暴露到公网执行任何较大范围的文件修改或模型批量处理前先备份关键工作流涉及生产环境或多人共享服务器时使用独立的操作账号并按最小权限原则配置目录访问权限。很多新手会忽略第四点直到某个工作流被插件更新改坏后才意识到备份的重要性。工作流 JSON 体积不大定期备份并没有负担。9.4 参数调试思路调试出图质量时建议一次只改一个变量。很多初学者同时调整提示词、采样步数、cfg、LoRA 强度结果图片效果变好却不知道是哪个变量的功劳效果变差也不知道如何回退。正确思路是每次只移动一个参数并保存对比结果。例如先在固定提示词下测试不同 sampler 的效果再固定 sampler 测试不同 steps 的效果。ComfyUI 本身支持批量执行可以帮助你一次性生成多组对比图节省等待时间。10. 总结与下一步进阶路线如果花一个下午跟着文章从前到后操作一遍你最终得到的不仅是一张跑通的自定义图片更是对 ComfyUI 工作流结构的基本判断力。以后再拿到别人的工作流时你会自然地拆解出模型加载区、条件编码区、采样去噪区、解码保存区而不是面对一堆节点不知所措。接下来的进阶方向可以有这样几条深入了解 latent、model 与 conditioning 的数据类型区别研究批量生成与队列管理准备批量出图尝试组合 LoRA、ControlNet 和局部重绘完成风格一致性要求更高的控制进入视频工作流理解帧、批次和显存之间的关系阅读官方源码或插件源码自定义自己的节点。最后补一句实用提醒不要迷信某个固定参数组合模型迭代很快出图最佳参数往往来自模型发布说明和你自己的小批量实验。保持节点工作流的整洁你也更容易从实验中快速找到可复用的经验。希望这篇 ComfyUI 教程能帮你少走一些弯路顺利进入 ComfyUI 工作流的世界。
返回列表