从单张抽卡到批量流水线:基于ComfyUI的本地多角色AI素材生成工作流
2026/9/2 20:38:11 网站建设 项目流程

如果你是被“反西蒙研究所(二十四)四个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.11
Git拉取 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 API

ComfyUI 提供了一个/prompt接口,用于提交工作流。下面是一个通用的 Python 调用样例:

import json import urllib.request def queue_prompt(workflow, server="127.0.0.1", port=8188): url = f"http://{server}:{port}/prompt" data = json.dumps({"prompt": workflow}).encode("utf-8") req = urllib.request.Request(url, data=data, headers={"Content-Type": "application/json"}) with urllib.request.urlopen(req, timeout=300) 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-UsageGPU-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、参考图或训练 LoRA
CPU 模式生成很慢没有 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 素材生产从“看运气抽卡”变成了“按计划交付”。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询