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

上周在火星人教育的一次线下工作坊中,一位学员带着他的作品来找我。他花了整整两天时间,用 Midjourney 生成了近千张图,只为找到一张“模特手拿产品且背景符合品牌调性”的图。结果呢?手不是畸形就是背景穿帮,最后不得不花半天在 Photoshop 里修补。他问我:“有没有办法让 AI 一次性就生成我要的精确构图?”

答案是:有。而且你不需要依赖任何黑箱工具。这就是 ComfyUI 的价值——它把 AIGC 的生成过程变成可控制、可复用的工作流。今天,我们就从零搭建一个能解决上述问题的核心工作流。

为什么是 ComfyUI?

Stable Diffusion 生态中,WebUI 是大众化的选择,但 ComfyUI 是专业设计师的“瑞士军刀”。它的核心优势在于:

  • 节点化逻辑:每个步骤(文生图、图生图、ControlNet、LoRA、放大)都是一个独立节点,你可以像搭积木一样组合它们。
  • 低显存占用:相比 WebUI,ComfyUI 在相同显存下能跑更大的模型,比如 8GB 显存就能流畅运行 SDXL。
  • 精确控制:你可以指定每一步的输入输出,比如让 ControlNet 只在特定区域生效,或者让多个 LoRA 以不同权重叠加。
  • 下面,我们直接进入实操。

    核心工作流一:从文字到精准构图的“可控生成”

    场景:你需要生成一张“一位穿白色衬衫的女性,坐在咖啡馆窗边,手拿一杯带有品牌 Logo 的咖啡,背景是雨天的街道”。

    传统做法:反复抽卡,然后手动修图。
    ComfyUI 做法:用 ControlNet + LoRA + 区域控制,一次生成符合要求的图。

    步骤 1:搭建基础文生图节点

    启动 ComfyUI(当前推荐版本:v0.2.7+),你会看到一个空白画布。右键点击空白处,搜索并添加以下节点:

    1. Load Checkpoint:选择基础模型,比如 `SDXL 1.0` 或 `Realistic Vision v6.0`。参数:`ckpt_name` 选择你的模型文件路径。
    2. CLIP Text Encode (Prompt):输入正向提示词。例如:`(masterpiece, best quality), 1girl, white shirt, sitting at cafe window, holding coffee cup with logo, rainy street background, cinematic lighting`
    3. CLIP Text Encode (Prompt):输入反向提示词。例如:`(worst quality, low quality:1.4), deformed hands, extra fingers, blurry, watermark`
    4. KSampler:关键参数设置:
    – `seed`:固定为某个值(如 12345),方便复现
    – `steps`:建议 25-30(SDXL 用 20-25)
    – `cfg`:7-9(推荐 7.5)
    – `sampler_name`:`Euler a` 或 `DPM++ 2M Karras`
    – `scheduler`:`normal` 或 `karras`
    5. VAE Decode:连接 KSampler 的输出,将潜空间图像解码为像素图。
    6. Save Image:输出最终结果。

    连接方式:从 Load Checkpoint 的 `model` 输出连接到 KSampler 的 `model`,从 CLIP 节点的 `conditioning` 连接到 KSampler 的 `positive` 和 `negative`。

    步骤 2:加入 ControlNet 进行姿态控制

    为了让模特的手部姿势和咖啡杯位置精确,我们需要 ControlNet。

    1. 添加 Load ControlNet Model:选择 `control_v11p_sd15_openpose`(适用于 SD 1.5)或 `controlnet-sdxl-1.0-openpose`(适用于 SDXL)。参数:`control_net_name` 选择对应模型。
    2. 添加 ControlNet Apply:将 Load Checkpoint 的 `model` 连接到这里,再连接回 KSampler。同时把 ControlNet 模型的输出连接到 `control_net` 输入。
    3. 准备一张参考图:在 Photoshop 中简单画一个“人坐姿、手举杯”的骨架图,或者用 OpenPose 编辑器生成。保存为 PNG。
    4. 添加 Load Image:加载这张骨架图。
    5. 添加 Preprocess Image (OpenPose):将 Load Image 的输出��接到这里,参数 `preprocessor` 选择 `openpose`,`resolution` 设为 512(与模型匹配)。

    现在,你的 ControlNet 会强制模型按照骨架图生成人物姿态。运行工作流,你会发现手部畸形问题大幅减少。

    步骤 3:用 LoRA 控制品牌元素

    假设咖啡杯上的 Logo 是某个特定图案,我们可以训练一个 LoRA 来植入。

    1. 添加 Load LoRA:选择训练好的 LoRA 文件(比如 `brand_logo_v1.safetensors`)。参数:`strength_model` 设为 0.6-0.8(太高会覆盖原图风格)。
    2. 将 Load Checkpoint 的 `model` 先连接到 Load LoRA,再连接到 KSampler。
    3. 在正向提示词中加入触发词,比如 `brand_logo_on_cup`。

    这样,生成图里的咖啡杯上就会出现 Logo。如果位置不对,可以调整 ControlNet 的权重(`strength` 参数,建议 0.5-0.7)或修改提示词。

    配图 1:展示上述节点连接图,标注 ControlNet 和 LoRA 的位置。

    ComfyUI节点连接示例

    核心工作流二:从粗糙草图到高清成品的“放大与修复”

    场景:你用手绘板画了一张粗糙的草图,想用 AI 生成细节丰富的高清图,同时保留原始构图。

    步骤 1:图生图基础

    1. 添加 Load Image:加载你的草图。
    2. 添加 VAE Encode:将图像编码为潜空间。参数:`VAE` 选择与模型匹配的 VAE(如 `sdxl_vae.safetensors`)。
    3. 添加 KSampler:设置 `denoise` 参数为 0.6-0.8(值越大越偏离原图,0.6 通常能保留构图但增加细节)。
    4. 连接方式:Load Image → VAE Encode → KSampler(`latent_image` 输入)。

    步骤 2:使用 Tile ControlNet 进行细节增强

    直接图生图容易产生模糊或伪影,用 Tile ControlNet 可以局部修复。

    1. 添加 Load ControlNet Model:选择 `control_v11f1e_sd15_tile`。
    2. 添加 ControlNet Apply:连接方式同上,但这次将 Load Image 直接连接到 ControlNet 的 `image` 输入(不需要预处理)。
    3. 在 KSampler 中设置 `steps` 为 30-40,`denoise` 为 0.5-0.6,`cfg` 为 6。
    4. 运行后,你会看到草图被填充了纹理、光影和细节,但整体构图不变。

    步骤 3:用 Ultimate SD Upscale 进行高清放大

    生成的图通常是 512×512 或 1024×1024,我们需要放大到 4K。

    1. 添加 Ultimate SD Upscale 节点(需要安装 `ComfyUI-UltimateSDUpscale` 插件)。
    2. 参数设置:
    – `target_size`:选择 `4x` 或手动输入宽度(如 4096)
    – `upscale_model`:选择 `4x-UltraSharp` 或 `4x_NMKD-Superscale-SP_178000_G`
    – `seamless`:开启(避免分块接缝)
    – `overlap`:64(分块重叠像素)
    3. 输入:将 KSampler 的输出连接到 `image`。
    4. 输出:直接获得高清大图。如果显存不足(比如 8GB),可以分两次放大:先 2x,再 2x。

    配图 2:展示草图与最终高清图的对比,标注细节修复区域。

    草图到高清图对比

    进阶技巧:将工作流打包成“一键生成”模板

    当你完成了上述工作流后,可以将其保存为 `.json` 文件。下次只需要替换输入图或修改提示词,就能批量生成。

    操作
    1. 点击 ComfyUI 界面右上角的“Save”按钮,选择“Save as Template”。
    2. 为模板命名,比如“品牌产品图生成_标准版”。
    3. 下次打开时,点击“Load”,选择模板,然后替换 Load Image 或 CLIP Text 节点中的内容即可。

    批量处理:在 Load Image 节点中,可以加载一个文件夹,ComfyUI 会自动遍历所有图片。配合 KSampler 的 `batch_size` 参数(建议 1-2,取决于显存),可以实现批量生成。

    总结与进阶建议

    通过上述两个工作流,你已经掌握了 ComfyUI 的核心用法:可控生成 + 高清修复。这不仅是技术技巧,更是设计流程的优化——从“碰运气��到“确定性”。

    进阶学习建议
    1. 学习节点开发:ComfyUI 支持自定义节点,你可以用 Python 编写自己的功能节点。先学 `ComfyUI-Manager` 插件,它能一键安装社区节点。
    2. 掌握区域控制:研究 `Attention Couple` 或 `Regional Prompting` 节点,实现“画面左侧是森林,右侧是海洋”这样的分区控制。
    3. 视频生成:ComfyUI 支持 AnimateDiff 插件,可以生成可控动画。从单帧工作流扩展到多帧,是下一个突破口。
    4. 模型微调:用 LoRA 或 DreamBooth 训练自己的风格模型,与 ComfyUI 工作流结合,形成专属设计引擎。

    最后,记住:AIGC 工具是杠杆,但设计思维才是支点。花时间理解每个参数的意义,比盲目追求“一键生成”更重要。

    常见问题 FAQ

    Q1:ComfyUI 对硬件要求高吗?
    A:最低 4GB 显存可运行 SD 1.5 模型,8GB 显存可流畅运行 SDXL。推荐使用 NVIDIA RTX 3060 12GB 或更高。CPU 内存建议 16GB+,固态硬盘必备。

    Q2:为什么我的 ControlNet 不起作用?
    A:常见原因:1)模型版本不匹配(SD 1.5 的 ControlNet 不能用于 SDXL);2)预处理参数错误,比如 OpenPose 需要 `resolution` 匹配生成图尺寸;3)ControlNet 权重太低,建议从 0.7 开始调整。

    Q3:如何解决生成图的手部畸形?
    A:1)使用 OpenPose ControlNet 强制姿态;2)在反向提示词中加入 `bad hands, extra fingers`;3)降低 CFG 值到 6-7;4)尝试 `DPM++ 2M Karras` 采样器,它对细节更友好。

    Q4:工作流保存后无法加载怎么办?
    A:检查节点是否依赖特定插件。保存前,确保所有节点都是 ComfyUI 原生或已安装的插件。建议在保存时勾选“Include missing node types”选项。

    Q5:如何提升生成速度?
    A:1)降低 steps 到 20-25;2)使用 `LCM LoRA` 或 `Turbo` 模型(如 SDXL Turbo),steps 可降至 4-8;3)开启 `–highvram` 启动参数(显存足够时);4)使用 `TensorRT` 加速(需安装对应插件)。

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