从单张抽卡到批量流水线:基于ComfyUI的本地多角色AI素材生成工作流

📅 发布时间:2026/9/2 20:38:23
从单张抽卡到批量流水线:基于ComfyUI的本地多角色AI素材生成工作流
如果你是被“反西蒙研究所二十四四个Sprunki小鬼睡觉大作战”这个标题吸引进来的先别急着划走。这看起来是一个娱乐向的同人创作标题但本文不打算聊虚构剧情而是把它落到一套可以真正跑起来的技术流程用本地 ComfyUI 工作流做“四角色保持同风格 睡眠场景限定 批量出图 API 调度”的AI素材生成实验。文章的重点是解决几个实际问题角色一致性怎么控制、批量任务怎么组织、显存不够怎么办、怎么把工作流接到自己的脚本里。整套流程不依赖在线绘画服务所有内容都在本地完成。适合的读者是已经在玩 Stable Diffusion 或 ComfyUI想从“单张抽卡”升级到“稳定批量生产角色素材”的人或者对本地部署图像生成服务、接口调用感兴趣的人。1. 核心能力速览能力项说明项目类型本地 AI 角色素材生成 / ComfyUI 工作流主要功能多角色一致性生成、场景限定生成、批量出图、API 调度推荐硬件NVIDIA 显卡优先显存建议 8GB 及以上具体以模型版本为准显存占用不确定视底模、LoRA、分辨率和步数而定需本机测试支持平台Windows / Linux 均可macOS 可尝试 CPU 推理但速度较慢启动方式命令行启动 ComfyUI浏览器打开工作流页面是否支持 API支持ComfyUI 默认提供 /prompt 接口是否支持批量任务支持可通过脚本循环调用接口批量提交适合场景游戏角色概念图、表情包素材、同人创作、风格测试、批量视觉内容生产简单说这是一个“把角色生成从单张抽卡变成流水线”的本地部署方案。材料有限具体显存和速度数据没有统一标准必须以你本机实际运行结果为准。2. 项目定位与使用边界先明确一件事如果“Sprunki 小鬼”是某个作者原创的完整角色 IP那么用 AI 批量生成它的图片只能用于个人学习、技术验证和非商业参考不能直接拿去商用更不能粗暴替换原作美术风格后做衍生产品。反过来如果角色只是你自己的工作流测试代称就没有版权问题。所以这里有两条使用边界角色版权边界AI 生成的素材不能默认“合法”。涉及他人原创角色的生成需要确认授权范围。内容安全边界不要用这套流程生成真实人物肖像、未成年人不当内容也不要用来做误导性信息。技术边界角色一致性无法靠“同一个提示词”绝对保证通常需要 LoRA 或参考图节点配合需要接受一定随机性。这个项目本身的核心价值是“工作流 批量 API 调用”的工程化能力而不是某个具体角色。把注意力放在流程本身比纠结某一张图更像不像更重要。3. 本地部署环境准备部署 ComfyUI 前先把环境清单过一遍。3.1 硬件要求显卡NVIDIA 显卡优先因为 CUDA 生态最成熟。显存大小决定你能跑多大的底模和分辨率8GB 显存是比较舒适的起点4GB 也能跑但分辨率、步数和批量大小都要往下压。CPU 推理可以跑但不推荐。CPU 生成一张图的耗时通常是 GPU 的几倍到几十倍。内存建议 16GB 起步批量任务时多个图片解码会占内存。磁盘ComfyUI 本体不大但模型文件通常几个 GB 起。底模加 VAE 加若干 LoRA预留 30GB 到 50GB 比较稳。3.2 软件环境软件作用建议Python运行 ComfyUI 和相关依赖3.10 或 3.11Git拉取 ComfyUI 仓库最新稳定版CUDA / cuDNNGPU 加速计算根据显卡驱动选择合适的 CUDA 版本模型文件底模、VAE、LoRA 等放在 ComfyUI/models 对应目录下这里不写死 Python 和 CUDA 的具体版本因为不同显卡、不同驱动、不同 PyTorch 版本之间的兼容关系比较复杂。最稳妥的做法是直接用 ComfyUI 官方推荐的安装方式或者用集成包先跑通默认工作流再逐步添加模型。4. 安装部署与启动方式4.1 安装 ComfyUI假设你已经安装好 Git 和 Python打开终端执行git clone https://github.com/comfyanonymous/ComfyUI.git cd ComfyUI python -m venv venv # Windows venv\Scripts\activate # Linux / macOS source venv/bin/activate pip install -r requirements.txt如果你的显卡支持 CUDA建议单独确认 PyTorch 版本pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121这个地址是 PyTorch 官方下载源具体版本号需要根据你本机 CUDA 驱动版本调整。4.2 下载模型文件ComfyUI 的模型路径通常是这样ComfyUI/models/ ├── checkpoints/ # 底模 ├── loras/ # LoRA 模型 └── vae/ # VAE 文件把你要用的底模放到checkpoints目录LoRA 放到loras目录。这里不指定具体模型名称因为可用的模型很多选哪个取决于你需要的画风。4.3 启动服务python main.py默认情况下ComfyUI 会在本地起一个 Web 服务端口是 8188。启动日志里会打印出访问地址打开浏览器进入http://127.0.0.1:8188即可看到工作流编辑界面。如果 8188 端口被占用可以通过--port参数换端口python main.py --port 8288启动后先用默认工作流生成一张图确认环境正常再进入角色工作流设计。5. 角色工作流设计与场景限定回到“四大 Sprunki 小鬼睡觉大作战”这个需求。假设角色分别是 A、B、C、D 四个角色形象目标是让每个角色分别以“睡觉”为主题生成一组图同时保持角色样貌和画风统一。5.1 角色一致性思路在 Stable Diffusion 系模型里控制角色一致性通常有三种方式方式优点缺点固定提示词 固定 seed最省事一致性最弱容易“飘”LoRA 训练一致性最强需要针对每个角色单独准备数据集并训练参考图节点比提示词稳定需要额外节点且不能保证完全一致从“反西蒙研究所”这类娱乐向项目来说先用固定提示词 固定 seed 跑通流程再考虑训练 LoRA。5.2 提示词模板每个角色可以维护一组固定的“角色描述前缀”然后拼上场景描述。例如角色前缀模板sprunki character A, green skin, big eyes, cartoon style, simple background 场景后缀模板sleeping on bed, closed eyes, moonlight, night, cozy atmosphere批量生成时用代码把前缀和后缀拼起来避免手写一堆重复提示词。5.3 工作流节点连线ComfyUI 的基础文生图工作流节点顺序是Load Checkpoint - CLIP Text Encode Prompt - KSampler - VAE Decode - Save Image如果你要加入正向提示词和反向提示词节点会变成Load Checkpoint ├── CLIP Text Encode (Positive Prompt) - KSampler ├── CLIP Text Encode (Negative Prompt) - KSampler └── VAE - VAE Decode - Save Image其中 KSampler 的关键参数包括seed固定后能复现同一张图的构图。steps步数一般 20 到 30 步。cfg提示词引导强度常用 7 左右。sampler_name采样器不同采样器画风差异不小。scheduler调度器和采样器组合使用。这批参数需要实际跑图来调没有统一最优值。6. 批量任务与效果验证单张图不会产生“稳定产出”的效果要验证这套工作流能不能打必须跑一批。6.1 准备批量输入建议用一个 JSON 文件维护任务列表把角色、场景、输出文件名分开管理。{ tasks: [ {character: A, scene: sleeping, seed: 1001}, {character: B, scene: sleeping, seed: 1002}, {character: C, scene: sleeping, seed: 1003}, {character: D, scene: sleeping, seed: 1004} ] }这样每个角色对应一个任务条目后续想增加数量只需要扩展数组。6.2 调用 ComfyUI APIComfyUI 提供了一个/prompt接口用于提交工作流。下面是一个通用的 Python 调用样例import json import urllib.request def queue_prompt(workflow, server127.0.0.1, port8188): url fhttp://{server}:{port}/prompt data json.dumps({prompt: workflow}).encode(utf-8) req urllib.request.Request(url, datadata, headers{Content-Type: application/json}) with urllib.request.urlopen(req, timeout300) as resp: return json.loads(resp.read()) if __name__ __main__: # workflow_json 需要替换成你导出的工作流 JSON workflow { 3: { class_type: KSampler, inputs: { seed: 1001, steps: 20, cfg: 7.0, sampler_name: euler, scheduler: normal, denoise: 1.0 } } } result queue_prompt(workflow) print(result)这个示例只展示了 KSampler 节点的结构实际提交时ComfyUI 的WorkflowJSON 是一个包含所有节点的完整嵌套字典。正确做法是先在 Web 界面里把一个工作流的 API 格式 JSON 导出然后在脚本里按角色和场景替换提示词和 seed。6.3 批量任务时的节奏控制一次提交的任务量建议控制在 4 到 8 个等跑完再提交下一批。如果批量太大显存被占满生成速度会急剧下降甚至报错。给每个任务记录task_id和时间戳方便后面排查是哪一张图出了问题。6.4 效果验证维度验证维度判断标准角色一致性同一角色的多张图是否在五官、发型、服装上保持稳定场景符合度是否都体现了“睡觉”相关的视觉元素画风统一性四个角色放在一起看是否像同一个系列出图稳定性批量过程中有没有报错、有没有大量重复构图从材料看最需要优先验证的是“角色一致性”。如果这一条不过关批量出再多图也没意义。7. 资源占用与性能观察运行 ComfyUI 时资源占用是判断当前配置是否合理的重要指标。7.1 看显存占用Windows 上打开任务管理器切到“性能”页签GPU 一栏会显示显存占用和利用率。Linux 下用nvidia-smi重点关注Memory-Usage和GPU-Util两列。生成过程中显存用量会周期性上涨图像解码阶段达到峰值这属于正常现象。7.2 影响显存和速度的关键因素按影响程度排序分辨率1024 x 1024 比 512 x 512 的显存占用高很多。模型大小SDXL 底模相比 SD 1.5 底模占用更大。步数和 cfg对显存影响较小对耗时影响较大。批量大小一次生成多张图会显著增加峰值显存。如果你的显存只有 8GB建议先从 512 x 512 或 768 x 768 起步步数控制在 20 以内跑通一个角色后再逐步放大。7.3 降低显存占用的通用手段降低分辨率。减小批量大小一次只生成一张。打开--lowvram或--novram启动参数具体参数以当前 ComfyUI 版本的帮助信息为准python main.py --lowvram使用更小的底模或者使用 FP16 版本模型。确认没有残留的 Python 进程继续占用显存批量结束后可以看一下nvidia-smi里是否还有进程。8. 常见问题与排查方法问题现象可能原因排查方式解决方案启动后页面打不开端口被占用或服务未启动查看终端日志、检查端口占用换端口重启或关闭占用程序提示模型加载失败模型文件缺失或路径不对检查 models/checkpoints 目录放置正确模型或修改节点中的模型名生成时报 CUDA out of memory显存不足查看 nvidia-smi 确认显存占用降低分辨率、步数、批量大小使用 --lowvram提示词不生效正向/反向提示词接反检查 CLIP Text Encode 节点连线正反向节点分别连接到 KSampler 的正确输入批量任务跑到一半卡住显存耗尽或接口超时查看 API 调用日志减小批量、增加超时时间、加失败重试多个角色风格不一致缺少角色一致性控制检查提示词前缀和模型选择使用固定 seed、参考图或训练 LoRACPU 模式生成很慢没有 GPU 加速查看启动日志是否加载 CUDA安装对应 CUDA 版 PyTorch 或更换硬件这里要强调一点ComfyUI 的报错信息大多数会直接打印在终端里不要只盯着浏览器页面。报错字符串里通常会写清楚是缺模块、缺模型还是显存不够。9. 最佳实践与合规建议把“四小鬼睡觉大作战”这种娱乐向项目做成能复用的工作流比单次生成几张图更有价值。建议从第一次调试开始就按下面这套方式管理。9.1 目录结构project/ ├── inputs/ # 批量任务清单 JSON ├── outputs/ # 生成结果 │ ├── character_A/ │ ├── character_B/ │ └── logs/ # 每次运行的日志 ├── workflows/ # 导出的工作流 JSON 备份 └── scripts/ # 批量调用脚本角色图和日志分开存出问题时能快速定位是哪一批、哪一张、什么参数。9.2 先小规模跑通第一次不要上来就批量生成 100 张。先每个角色跑一张确认画风正确再每个角色跑 4 张确认角色一致性最后才扩大到批量任务。每前进一步都把生成参数记录下来。9.3 固定 seed 和版本同一套提示词、同一个模型、同一个 seed理论上可以复现同一张构图。把 seed 写进任务清单是为了后续能回溯“这张图当时是用什么参数生成的”。9.4 合规提醒不要生成真实人物肖像。不要生成涉及未成年人、暴力、违法内容的图像。如果“Sprunki”这个 IP 属于某位作者个人测试可用公开发布或商用前必须获得授权。如果整个项目只是你自己的虚构角色测试建议在发布时标注“AI 生成素材仅供学习研究”。10. 总结与下一步这个项目的真正意义不在于“四小鬼睡觉”这个主题而在于用 ComfyUI 跑通了一条“多角色 场景限定 批量出图 API 调度”的流水线。先验证角色一致性再验证批量稳定性最后把接口接入自己的脚本之后任何角色题材都可以按同一套流程扩展。最容易踩的坑是跳过小规模测试直接批量生成结果角色风格全乱浪费时间和显存。建议第一次操作时老老实实从单角色单图开始确认后再扩大规模。下一步可以尝试的方向给每个角色训练一个低参数量 LoRA用参考图节点固定五官特征把批量脚本加进定时任务让生成过程无人值守。跑通之后你会发现本地 AI 素材生产从“看运气抽卡”变成了“按计划交付”。