ComfyUI 工作流搭建:AIGC 设计的高效引擎

上周有位学员在群里发了一张他花了两小时用 Midjourney 生成的电商海报——图像质量很高,但模特衣服上的品牌 Logo 被 AI 画成扭曲的字母乱码,背景的光影也不符合产品主图的要求。他问我:“为什么我花这么多时间,最后还得回 Photoshop 手动修图?”

这个场景太典型了。很多人以为 AIGC 设计就是“输入提示词→生成图片→完事”。但现实是,商业设计需要精确控制,需要迭代,需要局部修改,需要批量输出。而 ComfyUI 正是为解决这些问题而生的——它不是另一个“生图工具”,而是一个可视化工作流引擎,让你像搭建乐高一样组装 AI 生成管线。

今天我们就从两个真实案例出发,拆解 ComfyUI 工作流的核心搭建方法。

一、为什么是 ComfyUI?——从“黑箱”到“透明管道”

先明确一个认知:Stable Diffusion 的 WebUI(如 AUTOMATIC1111)适合快速探索创意,但当你需要精确控制生成流程时,它的单页面“全功能面板”反而成了束缚。比如你想在同一张图里分别控制前景和背景的生成参��,WebUI 需要反复切换选项卡、手动记录种子值;而在 ComfyUI 中,这只是一个节点连接的问题。

ComfyUI 的核心优势在于:

  • 节点式可视化编程:每个节点代表一个处理步骤(加载模型、采样、放大、遮罩处理等),用连线定义数据流向
  • 局部精确控制:可以针对图像的不同区域使用不同的模型、提示词或参数
  • 可复用的工作流模板:一个搭建好的工作流可以保存为 JSON 文件,一键加载复用
  • 资源占用更低:相比 WebUI,ComfyUI 在显存管理上更高效,适合长时间批量任务
  • 下面我们通过两个实操案例,从简单到复杂,逐步搭建一个完整的商业级工作流。

    二、案例一:电商主图生成——精准控制产品与背景

    场景:需要为某品牌保温杯生成 10 张不同场景的主图,要求:杯子本身必须保持品牌设计的颜色和材质细节,背景可以自由变化(户外、室内、极简风格等)。

    步骤 1:安装并启动 ComfyUI

    版本要求:ComfyUI v0.2.5+(2024 年 10 月后版本)。推荐使用整合包(如 Stability Matrix 或官方 Git 仓库克隆),确保已安装以下关键节点:

  • ComfyUI-Manager(插件管理器):通过它安装 `ControlNet`、`IPAdapter` 等扩展
  • ComfyUI-Impact-Pack:提供遮罩处理、区域控制等高级节点
  • 启动后,你会看到一个空白画布,左侧是节点菜单,右侧是工作区。

    步骤 2:搭建基础生成管线

    从节点菜单中拖拽以下节点,并按顺序连接:

    [Checkpoint Loader] → [CLIP Text Encode (Prompt)] → [KSampler] → [VAE Decode] → [Save Image]
    
  • Checkpoint Loader:选择基础模型,这里用 `realisticVisionV5.1`(写实风格),节点参数 `ckpt_name` 设为 `realisticVisionV51_v51VAE.safetensors`
  • CLIP Text Encode:输入正向提示词 `high quality, 4k, stainless steel vacuum flask, blue color, matte finish, product photography, studio lighting, clean background`;负向提示词 `low quality, blurry, distorted logo, text artifacts, extra fingers`
  • KSampler:关键参数设置 `seed: 42`(固定种子便于复现),`steps: 30`,`cfg: 7`,`sampler_name: dpmpp_2m`,`scheduler: karras`
  • VAE Decode:使用模型自带的 VAE(或单独加载 `vae-ft-mse-840000-ema-pruned.safetensors`)
  • Save Image:输出格式设为 `PNG`,保存路径为 `output/ecommerce`
  • 点击“Queue Prompt”测试,你应该能得到一张简单的保温杯图片。但问题来了:背景和杯子是同时生成的,无法单独控制。

    步骤 3:引入 ControlNet 实现区域分离

    这是本案例的核心——我们需要用 Canny 边缘检测遮罩 来分离产品与背景。

    1. 添加 ControlNet 节点:从节点菜单中选择 `ControlNet Loader`,加载 `control_v11p_sd15_canny.pth`(需提前下载到 ComfyUI/models/controlnet 目录)
    2. 准备产品轮廓图:在 Photoshop 中将保温杯的正面视图转为黑白线稿(Canny 风格),保存为 `product_outline.png`,导入 ComfyUI 的 `Load Image` 节点
    3. 连接管线
    – 将 `Load Image` 的输出连接到 `ControlNet Apply` 的 `image` 输入
    – 将 `ControlNet Loader` 的输出连接到 `ControlNet Apply` 的 `control_net` 输入
    – 将 `ControlNet Apply` 的 `positive` 和 `negative` 输入分别连接到两个 `CLIP Text Encode` 节点(一个写产品,一个写背景)

    完整节点结构如下:

    [Load Image (产品轮廓)] → [ControlNet Apply] → [KSampler]
    [Checkpoint Loader] → [CLIP Text Encode (产品提示词)] → [ControlNet Apply positive]
    [CLIP Text Encode (背景提示词)] → [ControlNet Apply negative]
    

    参数说明

  • `ControlNet Apply` 的 `strength` 设为 `0.8`(强度过高会完全复制轮廓,过低则失去控制)
  • 产品提示词:`blue stainless steel flask, exact color, matte texture, no background`
  • 背景提示词:`outdoor park, sunlight, green grass, bokeh, warm atmosphere`
  • 生成结果:杯子轮廓严格遵循线稿,背景则根据提示词自由生成。你可以通过修改背景提示词快速切换 10 种场景,而杯子始终保持一致。

    ControlNet 区域控制工作流

    三、案例二:人物写真精修——局部重绘与面部一致性

    场景:用 AI 生成了一张人物写真,五官精致但手指出现 6 根,衣服纹理有瑕疵。需要在不重绘整张图的前提下,修复局部问题。

    步骤 1:加载图像并生成遮罩

  • 使用 `Load Image` 加载原图(假设名为 `portrait_broken_hand.png`)
  • 拖入 `VAE Encode` 将图像转为潜空间(Latent),连接 `KSampler` 作为重绘的起点
  • 关键节点:`Mask Editor`(来自 Impact Pack 插件)。双击工作区空白处,搜索 `MaskEditor`,拖出后连接到 `Load Image` 的 `image` 输出
  • 在 `MaskEditor` 中,用画笔工具手动涂抹需要修复的区域(手指部分),然后输出遮罩图像。

    步骤 2:搭建局部重绘管线

    ComfyUI 的局部重绘需要 `KSampler` 的 `denoise` 参数配合 `mask` 输入:

    [Load Image] → [VAE Encode] → [KSampler] → [VAE Decode] → [Save Image]
                          ↑                        ↑
                     [Mask Editor]          [CLIP Text Encode]
    
  • `KSampler` 设置:`denoise: 0.4`(数值越低越保留原图,0.4 适合细节修复)
  • 正向提示词:`realistic human hand, 5 fingers, natural pose, skin texture, detailed`
  • 负向提示词:`mutated hand, extra fingers, distorted anatomy`
  • 注意:`KSampler` 的 `mask` 输入必须连接 `Mask Editor` 的 `mask` 输出。同时,`VAE Encode` 需要将原图编码后传入 `KSampler` 的 `latent_image`。

    步骤 3:面部一致性优化

    如果修复手部后,面部表情或特征发生变化(局部重绘有时会轻微影响周围区域),可以引入 IPAdapter 保持面部一致性。

    IPAdapter 是一个轻量级的参考图适配器,能提取参考图(如原始照片的面部)的风格与构图特征,注入到生成过程中。

    1. 安装 IPAdapter 节点:通过 ComfyUI-Manager 搜索 `IPAdapter` 并安装
    2. 加载参考图:`Load Image` 加载原始人像的面部特写(裁剪好的面部区域)
    3. 连接方式:
    – `IPAdapter Loader` 加载模型 `ip-adapter-faceid-plusv2_sd15.bin`
    – `IPAdapter Apply` 连接到 `KSampler` 的 `model` 输入(注意不是 `positive` 输入)

    完整重绘工作流:

    [Load Image (原图)] → [VAE Encode] → [KSampler] → [VAE Decode] → [Save Image]
    [Load Image (面部参考)] → [IPAdapter Apply] → [KSampler model]
    [Mask Editor] → [KSampler mask]
    [CLIP Text Encode] → [KSampler positive]
    

    这样,重绘手部时,面部特征会被 IPAdapter“锁定”,不会出现“修复手部后脸变了”的尴尬。

    局部重绘与面部保持工作流

    四、进阶技巧:工作流复用与批量处理

    搭建一次工作流不是终点,真正的效率来自模板化与批量执行

    保存工作流为模板

    点击 ComfyUI 界面右上角的“Save”按钮,将当前工作流导出为 JSON 文件。命名规则建议:`[用途]_[模型]_[精度].json`,例如 `ecommerce_bg_switch_realisticVision_v1.json`。

    下次使用时,点击“Load”直接加载,只需修改 `Load Image` 中的产品轮廓图和 `CLIP Text Encode` 中的背景提示词即可。

    批量处理:使用 Latent Batch

    如果需要一次性生成 10 张不同背景的保温杯图片,不要手动重复点击。使用 `LatentBatch` 节点:

    1. 将多个背景提示词分别写入多个 `CLIP Text Encode` 节点
    2. 用 `LatentBatch` 将所有潜空间数据合并
    3. `KSampler` 的 `batch_size` 设为 `10`
    4. 输出时使用 `Save Image` 的 `filename_prefix` 添加时间戳或编号

    注意:批量处理时显存占用会线性增加,建议先测试单张,确认显存余量后再批量。

    总结与进阶建议

    ComfyUI 工作流的本质是将“生成”拆解为可控的步骤。今天两个案例展示了它的核心能力:
    1. ControlNet 区域控制:让产品与背景独立生成
    2. 遮罩重绘 + IPAdapter:局部修复而不破坏整体一致性

    但 ComfyUI 的能力远不止于此。如果你希望进一步深入,建议按以下路径学习:

  • 第 1 周:掌握基础节点(Loader、KSampler、VAE)的连接逻辑,复现本文两个案例
  • 第 2 周:学习 LoRA 与模型融合(使用 `LoRALoader` 节点加载风格化模型)
  • 第 3 周:研究视频生成(AnimateDiff 节点)和 3D 渲染(Stable Zero123 节点)
  • 第 4 周:尝试自定义节点开发(Python 脚本编写,实现专有业务逻辑)
  • 最后送大家一句话:ComfyUI 不是工具,而是一种思维方式——把 AI 生成从“黑箱”变成“透明管道”,你才能真正掌控它。

    常见问题 FAQ

    Q1:我的 ComfyUI 启动后界面是英文,如何切换中文?
    A:通过 ComfyUI-Manager 安装 `ComfyUI-Language-ZH` 插件,重启后在 Settings 中选择 Language 为 `Chinese`。注意:部分第三方节点仍显示英文,但核心界面可完全汉化。

    Q2:使用 ControlNet 时,为什么生成图像完全复制了轮廓图?
    A:`ControlNet Apply` 的 `strength` 参数过高(超过 0.9)会导致过度拟合。建议从 0.6 开始调试,同时检查轮廓图是否过于复杂(线条太密或噪点太多),可以先用 `Canny` 节点预处理轮廓图。

    Q3:局部重绘后,修复区域与周围图像颜色不匹配?
    A:这是常见问题。解决方法:在 `KSampler` 中将 `denoise` 设为 0.3-0.5,同时确保 `Mask Editor` 的涂抹区域边缘有 5-10 像素的羽化(在 MaskEditor 中勾选“Feather”并设置半径)。如果问题依旧,尝试在重绘提示词中加入 `matching lighting, consistent color` 等描述。

    Q4:批量处理时显存溢出怎么办?
    A:三种方案:① 降低 `batch_size` 至 2-3,分批次生成;② 使用 `Tiled VAE Decode` 节点(分块解码,减少单次显存占用);③ 升级显卡至 12GB 以上显存(RTX 3060 12GB 或更高)。

    Q5:如何将 ComfyUI 工作流分享给他人?
    A:点击右上角“Save”导出 JSON 文件,同时将用到的模型、ControlNet、LoRA 等文件打包(或提供下载链接)。注意:JSON 文件中不包含模型文件本身,接收方需自行下载相同版本的模型。推荐使用 `ComfyUI-Manager` 的“Share Workflow”功能,它会自动生成依赖列表。

    声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。