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

上周,一位做品牌设计的学员找到我,抱怨说:“老师,我用 SD WebUI 做批量生成,一张图跑完要等 15 分钟,而且每次换风格都得从头调参数,效率太低了。” 他正为一个服装品牌做春夏系列视觉,需要生成 30 多张不同款式、不同背景的模特图,按传统流程至少需要 3 天。

我打开 ComfyUI,花 10 分钟拖拽出一个工作流。从加载模型到最终输出,每张图只用了 2 分钟,而且风格、构图、光影完全一致,只需替换一个“服装描述”节点就能批量生成。他当场愣住了——这就是 ComfyUI 的威力:不是工具,而是一个可复用的自动化引擎

如果你还在用“手工炼丹”的方式跑 AI 图,这篇文章会彻底改变你的工作方式。我们从最底层的逻辑讲起,直接上手搭建三个实战工作流。

第一章:为什么 ComfyUI 是“引擎”而非“画板”?

1.1 节点式思维的降维打击

传统 SD WebUI 是“线性流水线”:你输入提示词、调整参数、点击生成。但 ComfyUI 是模块化电路板——每个节点(Node)只做一件事,然后用“连线”连接起来。这意味着:

  • 可复用性:一个工作流保存为 JSON 文件,下次只需改一个“文本输入”节点,就能生成全新系列。
  • 精确控制:你可以把“图像尺寸”节点单独拿出来,用数学公式计算长宽比;可以把“CLIP 文本编码器”拆开,分别控制正向提示词和反向提示词的权重。
  • 资源优化:ComfyUI 只加载当前工作流涉及的模型,不会像 WebUI 那样预加载全部。实测显存占用降低 30%-50%。
  • 2.2 核心组件速览

    打开 ComfyUI(我当前用 v0.2.5),你会看到一个空白画布。需要记住 5 个基础节点:

  • Checkpoint Loader:加载主模型(如 SDXL、SD 1.5)
  • CLIP Text Encode:输入正向/反向提示词
  • KSampler:核心采样器(控制步数、CFG、采样器类型)
  • VAE Decode:将潜空间图像解码为像素图
  • Save Image:输出文件
  • 操作步骤:右键画布 → “Add Node” → 搜索节点名称。连线规则:从节点的“输出点”(右侧圆点)拖拽到另一个节点的“输入点”(左侧圆点)。

    第二章:实战工作流 1——品牌视觉批量生成

    场景需求

    为一家咖啡品牌生成 20 张“不同口味、统一风格”的产品海报。要求:背景是木纹桌,光影为柔光,杯子位置固定,只替换咖啡种类��美式、拿铁、冷萃等)。

    2.1 搭建基础工作流

    1. 加载模型:添加 `Checkpoint Loader`,选择 SDXL 模型(如 `sd_xl_base_1.0.safetensors`)。
    2. 固定背景:添加 `Load Image` 节点,上传一张木纹背景图。然后添加 `Image Composite Masked` 节点,将背景图作为“底层”。
    3. 分离主体生成:添加 `Empty Latent Image`,设置尺寸为 1024×1024。这里有个技巧:利用“Mask”节点将杯子区域设为白色,背景设为黑色,这样 KSampler 只生成杯子区域,背景保持不变。

    关键参数设置:

  • `KSampler`:steps = 30, CFG = 7, sampler_name = “euler_ancestral”, scheduler = “normal”
  • `CLIP Text Encode`(正向):`a cup of [咖啡种类], on wooden table, soft lighting, cinematic, high quality`
  • `CLIP Text Encode`(反向):`blurry, low quality, watermark, text`
  • 2.2 批量替换提示词

    这里需要 `Text Multiline` 节点(需安装 ComfyUI-Manager 插件)。添加后,输入:

    美式咖啡
    拿铁咖啡
    冷萃咖啡
    摩卡咖啡
    ...
    

    然后连接 `String Replace` 节点,将 `[咖啡种类]` 替换为列表中的每一项。最后将输出连接到 CLIP 的文本输入。

    操作步骤
    1. 右键 → Add Node → `utils` → `Text Multiline`
    2. 添加 `String Replace`(搜索“Replace”)
    3. 在 `String Replace` 中设置:`source = [咖啡种类]`, `replacement = from Text Multiline`
    4. 点击 `Queue Prompt`,ComfyUI 会依次生成 20 张图,每张图自动替换咖啡种类。

    ComfyUI 批量生成工作流节点连线图

    第三章:实战工作流 2——多模型融合与风格迁移

    场景需求

    将一张手机照片转换成“吉卜力风格”插画,同时保留人物面部特征。这需要同时使用两个模型:一个主模型(真实照片),一个 LoRA 风格模型。

    3.1 双模型加载架构

    1. 加载主模型:`Checkpoint Loader` → 选择 `realisticVisionV5.1`
    2. 加载 LoRA:添加 `LoRA Loader` 节点,选择 `Ghibli_style_v2.safetensors`(权重设为 0.8)
    3. 连接方式:将 `Checkpoint Loader` 的 `model` 输出连接到 `LoRA Loader` 的 `model` 输入;将 `LoRA Loader` 的 `model` 输出连接到 `KSampler` 的 `model` 输入。

    3.2 ControlNet 精确控制

    为了保留人物姿势和构图,需要 ControlNet:

    1. 添加 `ControlNet Loader`,选择 `control_v11p_sd15_openpose.pth`
    2. 添加 `Load Image` 上传原图
    3. 添加 `Pose Estimator` ���点(需安装 `ComfyUI-Advanced-ControlNet` 插件),自动提取骨骼图
    4. 连接:原图 → `Pose Estimator` → `ControlNet` → `KSampler` 的 `control` 输入

    3.3 参数调优

  • `KSampler`:steps = 25, CFG = 6, denoise = 0.75(保留原图结构,只改变风格)
  • `ControlNet`:strength = 0.8, start_percent = 0, end_percent = 0.6(前 60% 步数控制姿势,后 40% 自由风格化)
  • 添加 `VAE Decode` 和 `Save Image` 输出
  • 关键技巧:如果人物面部变形,可以在正向提示词中加入 `[person’s name]`,并用 `FaceID` 节点(需 `InstantID` 插件)锁定面部特征。

    多模型融合与 ControlNet 工作流示意图

    第四章:进阶技巧——工作流复用与调试

    4.1 保存与加载工作流

  • 保存:`File` → `Save`,生成 `.json` 文件。建议按“功能_日期”命名,如 `batch_coffee_20250401.json`
  • 加载:`File` → `Load`,或直接拖拽 `.json` 文件到 ComfyUI 画布
  • 分享:将 `.json` 文件连同 `workflow_api.json`(用于 API 调用)打包发送
  • 4.2 调试常见问题

  • 显存溢出:在 `Empty Latent Image` 中降低分辨率,或添加 `VAE Decode` 后接 `Image Resize` 节点
  • 生成空图:检查 `KSampler` 的 `denoise` 参数,如果为 0 则不生成;检查 `CLIP Text Encode` 是否连接正确
  • 模型加载失败:确认模型路径在 `ComfyUI/models/checkpoints` 或 `LoRA` 子文件夹内
  • 4.3 自动化批处理

    利用 `ComfyUI-Manager` 的 `Queue` 功能:点击 `Queue Prompt` 后,ComfyUI 会依次执行工作流。如果使用 `Text Multiline`,它会自动遍历列表。更高级的用法:结合 `Save Image` 的 `filename_prefix` 参数,设置 `batch_[%batch_number%]`,自动生成带编号的文件。

    结尾:从“画图”到“造引擎”

    回想开头那位学员,他现在已经用 ComfyUI 搭建了 5 个核心工作流:品牌视觉、产品渲染、人物写真、风格迁移、视频帧处理。每个工作流都是他个人的“AI 设计引擎”,只需输入参数,就能稳定输出高质量结果。

    学习建议
    1. 从模仿开始:下载社区工作流(Civitai、OpenArt 上有大量免费 JSON),拆解每个节点的作用。
    2. 建立自己的节点库:将常用节点组合(如“背景替换”、“人脸修复”)保存为 `.json` 模板。
    3. 关注插件生态:安装 `ComfyUI-Manager`,定期更新节点,重点关注 `InstantID`、`AnimateDiff`、`IP-Adapter`。
    4. 实践出真知:每周用 ComfyUI 完成一个真实项目,哪怕只是帮朋友做一张海报。只有亲手拖拽过上百次连线,才能真正理解节点式思维

    常见问题 FAQ

    Q1:ComfyUI 和 SD WebUI 哪个更推荐新手?

    A:如果你只想快速出图,WebUI 更友好。但如果你需要批量生成、精确控制、工作流复用,ComfyUI 是唯一选择。建议先学 WebUI 理解基础概念,再转 ComfyUI 提升效率。

    Q2:为什么我搭建的工作流生成速度很慢?

    A:检查两点:1)`KSampler` 的 `steps` 是否过高(一般 20-30 足矣);2)是否加载了不必要的模型(如同时加载多个 LoRA)。另外,使用 `SDXL` 模型时,建议显存 ≥ 8GB。

    Q3:如何将 ComfyUI 工作流集成到其他软件中?

    A:ComfyUI 支持 API 调用。在 `workflow_api.json` 中定义输入节点(如 `Text Multiline`),然后用 Python 脚本调用 `http://127.0.0.1:8188/prompt` 接口。参考官方文档的 `API` 示例。

    Q4:生成的人物面部总是不像怎么办?

    A:使用 `InstantID` 插件:添加 `InstantID Loader` 节点,上传参考人物照片,设置 `weight = 0.8`。同时降低 `KSampler` 的 `CFG` 到 5-6,避免过度风格化导致面部变形。

    Q5:工作流保存后,发给别人打不开怎么办?

    A:确保对方安装了相同版本的 ComfyUI 和所有依赖节点。最稳妥的方式是:使用 `ComfyUI-Manager` 的 `Export workflow with dependencies` 功能,打包所有节点和模型路径信息。

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