ComfyUI 工作流搭建:AIGC 设计的高效引擎
上周一位学员找到我,抱怨说他在用 Stable Diffusion WebUI 生成电商海报时,每次都要反复调整提示词、切换模型,一个简单的“产品+背景”组合图要花 40 分钟。他听说 ComfyUI 能“自动化”,但看到节点图就发怵,觉得那是程序员才用的东西。我直接给他搭了一个工作流:输入产品图,自动生成 5 个场景变体,总共不到 3 分钟。他当场感叹:“这效率差距像坐高铁和骑自行车。”
如果你也面临类似困境——重复性调整、流程难以复用、想批量产出却手忙脚乱——那么 ComfyUI 就是你需要的“设计引擎”。它用节点图替代了线性操作,把图像生成变成了可编程的流水线。下面,我们从零开始搭建一个实际工作流。
一、ComfyUI 核心逻辑:节点即模块
ComfyUI 的本质是“有向无环图”(DAG)。每个节点是一个功能模块(如加载模型、输入提示词、生成图像),连线表示数据流动。你不需要写代码,只需拖拽节点、连接端口。
1.1 安装与基础设置
- 工具:ComfyUI(v0.3.2 或更高版本)
– 基础模型:SDXL 1.0(如 `sd_xl_base_1.0.safetensors`)
– 细化模型:`sd_xl_refiner_1.0.safetensors`
– 常用 LoRA:`add_detail.safetensors`(细节增强)
启动后,你会看到一个空白画布。左侧是节点菜单,右侧是工作区。我们先搭建一个最简工作流。
1.2 最简文生图工作流
1. 添加 `CheckpointLoaderSimple` 节点:加载 SDXL 基础模型。
2. 添加 `CLIPTextEncode` 节点:输入正向提示词(如“a photorealistic cat, high detail”)和负向提示词(如“blurry, low quality”)。
3. 添加 `EmptyLatentImage` 节点:设置图像尺寸(如 1024×1024)。
4. 添加 `KSampler` 节点:设置参数:
– `seed`:42(固定种子保证可复现)
– `steps`:20
– `cfg`:7
– `sampler_name`:`euler`
– `scheduler`:`normal`
5. 添加 `VAEDecode` 节点:将潜空间解码为像素图像。
6. 添加 `SaveImage` 节点:输出图像。
连接顺序:`Checkpoint` → `CLIPTextEncode`(正向/负向)→ `EmptyLatentImage` → `KSampler` → `VAEDecode` → `SaveImage`。
点击“Queue Prompt”,几秒后图像生成。这是 ComfyUI 的“Hello World”。但真正强大的是下面这个。
二、实操案例:电商产品场景图批量生成
假设你是一名电商设计师,需要为同一款咖啡杯生成 5 种不同场景(办公室、咖啡馆、户外、极简、复古)。手动调整提示词和种子太慢,我们搭建一个“场景切换器”工作流。
2.1 工作流设计思路
核心思想:将提示词、种子、模型作为输入参数,通过节点组合实现自动化变体。
所需节点(部分为自定义节点,需安装 ComfyUI-Manager):
2.2 详细搭建步骤
第一步:加载产品图作为条件
1. 添加 `LoadImage` 节点,选择咖啡杯产品图(建议白底,PNG 格式)。
2. 添加 `ImageResize` 节点,将图像调整为 1024×1024(SDXL 标准尺寸)。
3. 添加 `ControlNetLoader` 节点,加载 `control_v11f1p_sd15_depth.safetensors`(深度图控制)。这里注意:SDXL 需使用专用 ControlNet(如 `control-lora-xlv2-depth-v2.safetensors`)。
4. 添加 `ControlNetApply` 节点,将产品图作为“深度条件”输入,确保生成图像中咖啡杯形状保持一致。
第二步:构建场景提示词系统
1. 添加三个 `Primitive` 节点,分别命名为“场景1提示词”“场景2提示词”“场景3提示词”。
2. 在每个节点中输入不同提示词:
– 场景1:`a coffee cup on a wooden office desk, natural light, plants in background`
– 场景2:`a coffee cup in a cozy cafe, latte art, warm lighting`
– 场景3:`a coffee cup on a mountain summit, sunrise, misty`
3. 添加 `Text Concatenate` 节点(自定义节点,可从 ComfyUI-Manager 安装),将产品描述与场景提示词合并。例如:`”a ceramic coffee cup with gold rim, ” + 场景提示词`。
第三步:批量控制与输出
1. 添加 `Primitive` 节点,设置种子列表:`42, 123, 456, 789, 101112`(用逗号分隔)。
2. 添加 `Seed` 节点(来自 `ComfyUI-WD14-Tagger` 或手动构建),将种子列表循环输入到 `KSampler`。
3. 添加 `KSampler` 节点,参数:
– `steps`:25
– `cfg`:7.5
– `sampler_name`:`dpmpp_2m`
– `scheduler`:`karras`
4. 连接 `VAEDecode` 和 `SaveImage`,并在 `SaveImage` 中设置文件名前缀为 `scene_variation_`。
第四步:执行与优化
点击“Queue Prompt”,ComfyUI 会自动循环 5 次(对应 5 个种子),每次生成一张场景图。如果某张图效果不好,只需修改对应种子的提示词,重新运行即可。
关键技巧:
三、进阶技巧:动态参数与错误调试
3.1 利用“Primitive”节点实现动态参数
ComfyUI 的 `Primitive` 节点允许你输入任何类型的数据(字符串、数字、布尔值)。你可以创建“参数面板”:
这样,你无需进入节点内部,直接在面板上调整步数和 CFG,就像在 WebUI 里调滑块一样。
3.2 常见错误与排查
调试方法:在节点上右键选择“Mute”,逐一关闭节点,观察哪一步出错。或者用 `Text` 节点输出中间数据(如 `KSampler` 的 `latent` 形状)。
四、总结与进阶建议
通过以上两个案例,你应该已经掌握了 ComfyUI 的工作流搭建方法:从最简文生图,到带条件控制的批量生成。它的核心价值在于可复用性和自动化——一旦搭好一个工作流,下次只需换产品图或提示词,就能秒出结果。
进阶学习路径:
1. 自定义节点开发:学习 Python 基础,用 `ComfyUI-Script` 节点写简单逻辑(如条件分支)。
2. 视频帧处理:使用 `Video Combine` 节点(ComfyUI-VideoHelperSuite)制作 AI 动画。
3. 多模型融合:研究 `ModelMergeSimple` 节点,混合不同底模风格(如写实+动漫)。
4. 工作流模板库:访问 ComfyUI Workflows 或 Civitai,下载他人分享的复杂工作流,拆解学习。
记住,ComfyUI 不是“更难的 WebUI”,而是“更自由的创作工具”。花一周时间熟悉节点逻辑,你就能把重复劳动压缩到极致。下次当你看到同事还在手动调参数时,你只需要点一下“Queue Prompt”。
—
常见问题 FAQ
Q1:ComfyUI 和 WebUI 有什么区别?我该选哪个?
A:WebUI 适合快速出图、新手入门;ComfyUI 适合复杂工作流、批量处理和需要精确控制的场景。如果你经常做重复性设计(如电商图、角色变体),强烈推荐 ComfyUI。
Q2:为什么我的工作流生成图像很慢?
A:检查模型是否加载了非必要组件(如 VAE)。另外,降低图像尺寸(如 768×768)或使用 `scheduler` 为 `normal` 可提速。若显存不足,启用 `–lowvram` 启动参数。
Q3:如何导入别人分享的工作流(.json 文件)?
A:在 ComfyUI 界面中,点击“Load”按钮,选择 .json 文件即可。如果缺少自定义节点,系统会提示,需通过 ComfyUI-Manager 安装。
Q4:ControlNet 在 ComfyUI 中如何使用?
A:需要加载 `ControlNetLoader` 节点,选择对应模型(如深度、边缘、姿态),然后通过 `ControlNetApply` 节点将条件图像连接到采样器。注意 SDXL 和 SD1.5 的 ControlNet 不通用。
Q5:我的工作流每次生成结果不一致,怎么办?
A:确保种子固定(如 `seed` 设为固定值),并且所有随机性相关的节点(如 `KSampler`)都使用相同种子。另外,检查是否有节点引入了随机噪声(如 `RandomNoise`)。

评论(0)