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

上周,一位学员带着他的“翻车”作品来找我。他用了 Stable Diffusion WebUI,想生成一张“赛博朋克风格的女主角”,结果花了 3 个小时调参,出来的图要么手指畸形,要么背景脏乱,更别提保持角色一致性了。他苦笑着说:“老师,我感觉自己不是在创作,而是在跟随机数搏斗。”

这不是个例。很多设计师在接触 AIGC 时,都经历过这种“抽卡式”生成——每次点击都像赌运气,结果不可控、流程不可复现。而问题的核心,往往在于工具选择和工作流设计。

今天,我要跟你聊的是 ComfyUI。它不是常规的 WebUI 替代品,而是你从“AI 玩家”进阶为“AI 设计师”的关键跳板。它用节点化的方式,把生成过程变成可编辑、可复用、可精确控制的工作流。就像一个乐高积木系统,你不再被预设界面限制,而是能自由搭建属于自己的创作引擎。

下面,我们直接进入实操,从两个最核心的场景入手:精准控制构图批量生成保持一致性

核心章节一:用 ControlNet + 节点流 精准控制构图

很多学员问我:“老师,我怎么让 AI 生成我想要的人物姿势和背景布局?” 答案就是 ControlNet,但在 ComfyUI 中,它的配置方式比 WebUI 更灵活、更透明。

1. 准备工作:安装必要的节点包

在开始之前,确保你已安装以下自定义节点(Custom Nodes):

  • ComfyUI-Manager(版本 ≥ 1.7.0):管理插件的核心工具。
  • ControlNet 支持节点:推荐使用 `kohya-ss/ControlNet-v1-1` 模型,节点通过 `ComfyUI-Manager` 搜索“ControlNet”安装。
  • 模型下载:你需要 `control_v11p_sd15_openpose.pth`(姿势控制)和 `control_v11f1p_sd15_depth.pth`(深度控制)。将它们放入 `ComfyUI/models/controlnet/` 目录。
  • 2. 工作流搭建步骤(以姿势控制为例)

    假设我们要生成一张“舞者跳跃”的图片,并且希望她的手臂角度、腿部位置完全符合我们提供的参考图。

    步骤 1:加载参考姿势

  • 拖入 `Load Image` 节点,选择一张人物姿势参考图(比如从网上找的舞者剪影)。
  • 接着添加 `OpenPose Preprocessor` 节点,将 `Load Image` 的输出连接给它。这个节点会自动提取参考图中人物的骨骼关键点(关节位置、连线)。
  • 步骤 2:构建 ControlNet 分支

  • 添加 `ControlNetLoader` 节点,在 `control_net_name` 下拉菜单中选择 `control_v11p_sd15_openpose.pth`。
  • 将 `OpenPose Preprocessor` 输出的 `POSE_KEYPOINT` 连接到 `ControlNetLoader` 的 `control_net` 输入。
  • 关键参数设置:
  • – `strength`: 0.8(控制强度,数值越高越严格跟随姿势,但可能牺牲自由度)
    – `start_percent`: 0.0(从生成过程开始就生效)
    – `end_percent`: 0.7(在生成到 70% 时停止控制,让 AI 在后期自由细化细节)

    步骤 3:连接主生成流

  • 添加 `CheckpointLoaderSimple` 节点,选择你常用的模型(如 `dreamshaper_8.safetensors`)。
  • 添加 `CLIPTextEncode`(正面提示词),输入:`masterpiece, best quality, dynamic pose, dancer jumping, flowing dress, detailed background, cinematic lighting`。
  • 添加 `CLIPTextEncode`(负面提示词),输入:`bad anatomy, extra fingers, deformed hands, blurry, low quality`。
  • 将以上所有节点连接到 `KSampler` 节点:
  • – `seed`: 固定一个值(如 123456),便于复现
    – `steps`: 25
    – `cfg`: 7.0
    – `sampler_name`: `dpmpp_2m`
    – `scheduler`: `karras`

  • 最后,将 `KSampler` 的输出连接到 `VAEDecode` 节点,再连接到 `Save Image` 节点。
  • 步骤 4:运行与微调
    点击 `Queue Prompt`。你会看到 AI 严格按照参考姿势生成了舞者,但背景和服装细节完全由提示词控制。如果发现脚部位置偏移,可以调整 `strength` 到 0.9,或者换用 `depth` 模型做辅助控制。

    OpenPose节点连接示意图

    这个工作流的好处是:你可以随时修改参考图或提示词,而不会影响其他节点的配置。下次想生成不同姿势的角色,只需替换 `Load Image` 中的图片,其他参数保持不动即可。

    核心章节二:批量生成角色一致性——从单图到系列

    另一个高频需求是:生成同一个角色在不同场景、不同动作下的系列图片。比如,电商主图需要模特穿不同服装、游戏角色需要多角度展示。在 ComfyUI 中,我们可以通过 Latent Consistency Model (LCM) 结合 IP-Adapter 来实现。

    1. 核心工具:IP-Adapter 与 Latent 缓存

  • IP-Adapter:一种轻量级图像提示适配器,它能从一张参考图中提取“风格特征”或“角色特征”,并应用到新生成中。版本推荐 `ip-adapter-plus_sd15.safetensors`。
  • Latent 缓存:在 ComfyUI 中,你可以将 `VAEEncode` 的输出保存为 `Latent` 节点,后续生成直接复用,避免重复编码。
  • 2. 工作流搭建步骤(以生成同一角色不同表情为例)

    步骤 1:提取角色特征

  • 准备一张目标角色的正脸照片(分辨率建议 512×512,背景干净)。
  • 添加 `Load Image`(角色参考图) → `IP-Adapter Preprocessor`(无需额外参数)。
  • 添加 `IPAdapterLoader` 节点,选择 `ip-adapter-plus_sd15.safetensors`。
  • 将 `IP-Adapter Preprocessor` 的输出连接到 `IPAdapterLoader` 的 `image` 输入。
  • 设置 `weight`: 0.6(权重过高会导致角色被强制定格,过低则特征丢失)
  • 步骤 2:构建主生成流

  • 使用与之前相同的 `CheckpointLoaderSimple` 和 `CLIPTextEncode`,但提示词改为:`portrait of a woman, happy expression, smiling, bright eyes, studio lighting, high detail`。
  • 添加 `IPAdapterApply` 节点,将 `IPAdapterLoader` 的输出和 `CLIPTextEncode` 的输出同时连接给它。
  • 将 `IPAdapterApply` 的输出连接到 `KSampler` 的 `positive_prompt` 输入(注意:这里替代了直接文本输入)。
  • 步骤 3:批量生成不同表情

  • 在 `CLIPTextEncode` 中,将提示词设为动态参数。你可以使用 `Primitive` 节点(输入类型为 `STRING`)来定义多个提示词,比如:
  • – `portrait of a woman, angry expression, furrowed brows`
    – `portrait of a woman, sad expression, tears in eyes`
    – `portrait of a woman, surprised expression, open mouth`

  • 使用 `Batch Prompt` 节点(需安装 `ComfyUI-Impact-Pack`)将多个提示词合并为批次。
  • 设置 `KSampler` 的 `batch_size` 为 3(与提示词数量对应)。
  • 步骤 4:运行与检查
    点击运行,ComfyUI 会自动生成 3 张图,角色面部特征一致(参考了 IP-Adapter 提供的特征),但表情各不相同。如果发现角色面部轮廓有轻微变形,可以降低 `weight` 到 0.5,同时增加 `cfg` 到 8.0。

    IP-Adapter角色一致性工作流

    这个工作流还可以扩展:把 `Latent` 节点输出缓存,下次生成时直接加载,省去从图片到 Latent 的转换步骤,大幅提升批量效率。

    总结与进阶建议

    通过以上两个案例,你应该能感受到 ComfyUI 的核心优势:模块化、可复用、精确控制。它不是一个“开箱即用”的工具,而是一个“搭建工具的工具”。刚开始学习时,可能会觉得节点连线复杂,但一旦掌握,你的创作效率和作品质量都会有质的飞跃。

    进阶建议
    1. 学习节点逻辑:花一周时间,逐个研究 ComfyUI 内置节点的功能(如 `LatentUpscale`、`MaskComposite`),理解数据流的方向。
    2. ���建模板库:将常用工作流保存为 `.json` 文件,比如“角色生成模板”、“产品图模板”,下次直接导入使用。
    3. 尝试混合控制:将 ControlNet(姿势)+ IP-Adapter(角色)+ LoRA(风格)组合在一个工作流中,生成高度定制化的图像。
    4. 关注社区:GitHub 上的 `ComfyUI-Examples` 仓库有大量高质量工作流,可以下载学习。

    常见问题 FAQ

    Q1:ComfyUI 和 WebUI 相比,哪个更适合新手?
    A:如果你完全零基础,WebUI 的图形界面更友好。但如果你想深入控制生成过程、搭建复杂工作流,ComfyUI 是必然选择。建议先学 WebUI 了解基础概念,再转 ComfyUI。

    Q2:我的工作流运行后报错“Out of Memory”,怎么办?
    A:这是显存不足的问题。可以尝试:降低 `batch_size`(设为 1);使用 `–lowvram` 启动参数;或者用 `Tiled VAE` 节点代替标准 `VAEDecode`,分块处理大图。

    Q3:ControlNet 节点不生效,生成结果跟参考姿势完全无关?
    A:检查两点:一是 `ControlNetLoader` 中是否选了正确的模型(`openpose` vs `depth` 不能混用);二是 `strength` 是否设置过低(至少 0.6)。另外,确保 Preprocessor 输出的结果正确(可以双击节点预览)。

    Q4:IP-Adapter 生成的角色像被“贴”上去的,不自然?
    A:降低 `weight` 到 0.4-0.5,同时增加提示词中关于动作和环境的描述。比如,不要只写“woman”,而是写“woman running in a forest, wind blowing hair”,让 AI 有更多自由���挥空间。

    Q5:如何把 WebUI 中用的 LoRA 模型引入 ComfyUI?
    A:LoRA 模型放在 `ComfyUI/models/loras/` 目录。在工作流中添加 `LoRALoader` 节点,连接在 `CheckpointLoaderSimple` 之后,`CLIPTextEncode` 之前。注意 LoRA 的触发词需要写在提示词中。

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