ComfyUI 工作流搭建:AIGC 设计的高效引擎
上周在进阶班答疑时,学员小张发来一张图:他用 WebUI 跑了一整天,只为生成一组产品海报的多个变体——换背景、调光影、改构图,每一步都要手动重跑模型。他问:“老师,有没有办法像搭积木一样,把这些操作串起来,一键出图?” 这个问题,正是今天我们要解决的核心——用 ComfyUI 搭建工作流,把 AIGC 设计从“单点操作”升级为“流水线生产”。
ComfyUI 不是替代 WebUI 的“新玩具”,它是针对复杂任务设计的节点式引擎。当你需要控制生成过程的每个环节、复用逻辑、批量处理时,它的优势就显现了。下面,我们通过两个实操案例,从底层逻辑到具体参数,一步步拆解。
核心章节一:基础工作流——从“文生图”到“图生图”的节点化改造
很多设计师第一次打开 ComfyUI 会懵:满屏的节点,没有 WebUI 的“一键出图”按钮。别急,这恰恰是它的核心优势——每个节点对应一个操作,你可以像搭电路一样组合它们。
1.1 最小可用工作流:文生图
我们先搭建一个最基础的文生图工作流,理解节点逻辑。
操作步骤:
1. 加载模型:右键 → `Add Node` → `loaders` → `Load Checkpoint`。这个节点负责加载 Stable Diffusion 的 checkpoint 文件(如 `sd_xl_base_1.0.safetensors`)。参数说明:`ckpt_name` 选择你的模型文件,`config` 通常留空,`vae` 可单独指定(若不指定则使用模型内置 VAE)。
2. 输入提示词:`Add Node` → `conditioning` → `CLIP Text Encode (Prompt)`。这个节点将文本转换为模型能理解的 embedding。参数:`text` 输入你的提示词(如“product photo of a perfume bottle, studio lighting, white background, 8k”),`clip` 连接 Load Checkpoint 的 `CLIP` 输出。
3. 生成潜空间图像:`Add Node` → `sampling` → `KSampler`。这是核心生成节点。参数详解:
– `seed`:随机种子,固定种子可复现结果,设为 `-1` 则随机。
– `steps`:采样步数,XL 模型建议 `20-30`,SD1.5 建议 `20-40`。步数越高细节越丰富,但超过 50 收益递减。
– `cfg`:分类器自由引导尺度,典型值 `7-12`。值越高越贴合提示词,但可能过饱和。
– `sampler_name`:采样器,推荐 `dpmpp_2m`(平衡速度与质量)或 `euler_a`(更快,适合预览)。
– `scheduler`:调度器,`karras` 适合大多数情况。
– `denoise`:去噪强度,文生图时固定为 `1.0`。
4. 解码为图像:`Add Node` → `latent` → `VAE Decode`。将潜空间图像转换为像素图像。连接 Load Checkpoint 的 `VAE` 输出和 KSampler 的 `LATENT` 输出。
5. 预览/保存:`Add Node` → `image` → `Save Image`。设置 `filename_prefix`(如“perfume_v1”),图像将自动保存到 `ComfyUI/output` 目录。
连接逻辑:`Load Checkpoint` → `CLIP Text Encode` → `KSampler` → `VAE Decode` → `Save Image`。这是 ComfyUI 的“Hello World”,跑通它,你就掌握了节点思维。
1.2 升级:图生图与局部重绘
现在,我们把文生图改造为图生图。假设你有一张渲染好的产品图,想改变它的材质或光照。
新增节点:
- `Add Node` → `image` → `Load Image`:加载源图。注意:ComfyUI 默认读取 `input` 文件夹下的图片。
修改 KSampler 参数:
局部重绘(Inpainting):
这个工作流特别适合电商场景:产品主体不变,只重绘背景或替换局部元素。比如,一张白色背景的香水瓶,遮罩扣出背景区域,提示词改为“luxury marble texture, soft shadows”,就能一键换背景。
核心章节二:进阶工作流——ControlNet + LoRA 的精准控制
单一模型生成的图像常常“不可控”:手部崩坏、构图偏移、风格不统一。ControlNet 和 LoRA 正是解决这些问题的利器。在 ComfyUI 中,它们的集成比 WebUI 更灵活——你可以同时加载多个 ControlNet,并精确控制每个节点的权重。
2.1 用 Canny ControlNet 控制构图
假设你有一张手绘草图,想生成精细的室内设计效果图,同时保留原始构图。
所需节点:
1. `Load ControlNet Model`:加载 ControlNet 模型,推荐 `control_v11p_sd15_canny.pth`(SD1.5)或 `diffusers_xl_canny_full.safetensors`(SDXL)。
2. `Canny Preprocessor`:从源图提取边缘。参数 `low_threshold` 和 `high_threshold` 控制边缘检测灵敏度,默认 `100` 和 `200`;`resolution` 建议设为与输出图像一致(如 `1024×1024`)。
3. `ControlNet Apply`:将 ControlNet 注入采样过程。参数 `strength` 控制影响程度,`0.8-1.0` 通常效果最佳;`start_percent` 和 `end_percent` 控制生效阶段(如 `0.0` 到 `1.0` 全程生效,或 `0.0` 到 `0.5` 仅前半段生效,保留后期细节自由度)。
工作流整合:
参数调优: 如果生成结果过于严格遵循边缘(缺乏细节),降低 `strength` 到 `0.7`;如果偏离草图太多,提高 `strength` 或缩小 `start_percent` 到 `0.0-0.3`,让 ControlNet 在前 30% 步数内“强行拉回”构图。
2.2 LoRA 的精确融合:权重与触发词
LoRA 是微调特定风格或人物的利器。在 ComfyUI 中,通过 `Load LoRA` 节点实现。
操作步骤:
1. `Add Node` → `loaders` → `Load LoRA`。参数:`lora_name` 选择 LoRA 文件(如 `moxin_10.safetensors`),`strength_model` 控制对模型权重的影响(典型值 `0.5-1.0`),`strength_clip` 控制对文本编码的影响(通常与 `strength_model` 一致或略低,如 `0.8`)。
2. 将 `Load LoRA` 的 `MODEL` 输出连接到 `ControlNet Apply` 或直接连接 KSampler 的 `model` 输入。注意:`Load LoRA` 需要先接收 `Load Checkpoint` 的 `MODEL`,再输出修改后的模型。
3. 触发词(Trigger Word):在 `CLIP Text Encode` 的提示词中,必须包含 LoRA 训练时使用的触发词(如“moxin”),否则 LoRA 可能不生效。触发词通常写在 LoRA 的文件名或描述中,未知时可尝试 `lora_name` 的前缀(如“moxin”)。
多 LoRA 叠加: 你可以串联多个 `Load LoRA` 节点,实现风格叠加(如“二次元+水彩画”)。注意总权重不宜超过 `1.5`,否则可能过拟合。例如:第一个 LoRA `strength_model=0.6`,第二个 `0.4`,总影响 `1.0`。
总结与进阶建议
通过上述两个案例,你应该能感受到 ComfyUI 的核心优势:可复用的节点逻辑、精细的参数控制、多模型的无缝集成。它尤其适合以下场景:
进阶学习建议:
1. 掌握自定义节点:ComfyUI 的生态依赖于社区节点。推荐安装 `ComfyUI-Manager`(通过 Git 克隆到 `custom_nodes` 目录),然后安装 `WAS Node Suite`(提供图像处理、文本处理等工具)和 `Impact Pack`(提供更高级的遮罩和采样功能)。
2. 学习工作流复用:从社区下载 `.json` 工作流文件(如 CivitAI 上的“ComfyUI Workflow”标签),拖入 ComfyUI 即可加载。研究别人的节点连接逻辑,比自己从头搭建快得多。
3. 性能优化:对于高分辨率(如 1024×1024 以上),使用 `Tiled VAE` 节点分块解码,避免显存溢出。在 KSampler 中使用 `model_patcher` 开启 `–highvram` 可提升速度。
最后提醒:ComfyUI 的学习曲线确实比 WebUI 陡峭,但当你搭建出第一个能自动完成“草图→精修→批量输出”的工作流时,你会觉得这一切都值得。从今天开始,把重复的操作交给节点,把创造力留给自己。
—
常见问题 FAQ
Q1:ComfyUI 和 WebUI 相比,哪个更适合设计师?
A:看场景。WebUI 适合快速出图、新手入门;ComfyUI 适合需要精细控制、批量生产或复杂工作流的用户。如果你的工作涉及“同一模型不同参数反复测试”,ComfyUI 的节点复用会大幅提升效率。
Q2:为什么我的 ControlNet 节点连接后,生成结果没有变化?
A:检查两点:1)ControlNet 的 `strength` 是否太低(建议先设为 `1.0` 测试);2)`Load ControlNet Model` 的模型是否与主模型匹配(SD1.5 的 ControlNet 不能用于 SDXL)。另外,确保 `Canny Preprocessor` 的输出图像清晰,如果原图太模糊,先提高 `resolution` 参数。
Q3:如何解决显存不足(OOM)?
A:在 `ComfyUI/extra_model_paths.yaml` 中设置 `–lowvram` 或 `–medvram` 启动参数。对于大图(如 2048×2048),使用 `Tiled VAE` 节点(需要安装 `ComfyUI-TiledDiffusion` 插件),将解码过程分块处理。同时,减少 KSampler 的 `batch_size` 到 1。
Q4:工作流保存后,换到另一台电脑打开,提示缺失节点怎么办?
A:缺失节点通常来自自定义插件。先确保两台电脑安装的插件一致。推荐使用 `ComfyUI-Manager` 的“Missing Custom Nodes”功能,它会自动检测并给出安装链接。或者,导出工作流时,在 `Save` 对话框勾选“Include workflow metadata”,但对方仍需手动安装缺失插件。
Q5:LoRA 的权重如何精确控制?为什么总感觉风格“过浓”或“无效”?
A:权重 `strength_model` 控制在 0.4-0.8 之间最安全。如果风格过浓(如人物面部变形),降低到 0.4-0.6;如果无效,先确认触发词是否正确(许多 LoRA 需要特定关键词,如“moxin”或“ghibli”)。另一种技巧:在 `CLIP Text Encode` 的提示词中,将触发词放在前面,并加上括号强调,如 `(moxin:1.2)`。






评论(0)