logo
0
0
WeChat Login

批量生图脚本

这个脚本现在会读取五份文档:

  • 基础描述.txt
  • 外饰.txt
  • 服装.txt
  • 动作.txt
  • LoRA集合.txt

然后做五维笛卡尔积:

基础描述 × 外饰 × 服装 × 动作 × LoRA

每组组合都会生成一条提示词,写入当前目录里的 ComfyUI 工作流,并把 155 号 LoRA 节点替换成对应的 LoRA 名称和强度,再批量提交到 ComfyUI 队列。

默认行为

  • 默认读取当前目录下第一个 .json 工作流
  • 默认把组合提示词写到 143 号节点
  • 默认把真正的文生图输入接到 5CLIPTextEncode
  • 默认遍历 155 号 LoRA 节点,也就是你现在的 wjr.safetensors
  • 默认把每组结果保存到 output/doc_batch/时间戳/序号_LoRA名
  • 默认每组生成 1 张图

文档格式

基础描述.txt

单人女生,真人写真,高清细节,影棚打光 法式写真风格,柔光,肤质细腻,时尚杂志感

外饰.txt

珍珠耳环,细项链,蝴蝶结发夹 黑色贝雷帽,金属耳饰

服装.txt

白色衬衫,灰色百褶短裙,黑色中筒袜,玛丽珍皮鞋 浅蓝色牛仔外套,白色短裙,小白鞋

动作.txt

站立,双手自然下垂,正视镜头 侧身回头看镜头,单手扶腰

LoRA集合.txt

wjr.safetensors wjr_v2.safetensors|0.8

说明:

  • 每行一个条目
  • 空行和 # 开头的行会被忽略
  • LoRA 支持 文件名|强度
  • 如果不写强度,就沿用工作流里该节点原本的强度
  • 默认模板里,外饰会紧跟在基础描述后面

先试跑

& "D:\anaconda\python.exe" .\batch_generate_from_docs.py --dry-run --limit 2

这一步不会真正生图,只会生成:

  • batch_runs/run_时间戳/prompts.json
  • batch_runs/run_时间戳/api_prompt_0001.json
  • batch_runs/run_时间戳/manifest.csv

正式批量跑

& "D:\anaconda\python.exe" .\batch_generate_from_docs.py ` --images-per-job 4 ` --prefix "高质量,超清," ` --suffix ",画面干净,构图完整"

如果你想在任务结束后自动把本次结果打包成一个 zip,方便在云端浏览器里直接下载,可以加:

--bundle-outputs

如果你的 ComfyUI 不是默认地址,可以加:

--server "http://127.0.0.1:8188"

常用参数

  • --images-per-job 4:每组组合出 4 张图
  • --batch-size 4:和上面是同一个参数,两个名字都能用
  • --limit 10:只跑前 10 组
  • --seed-base 1000:从固定种子开始递增
  • --workflow "你的工作流.json":指定工作流文件
  • --ornaments "外饰.txt":指定外饰文档
  • --lora-node-id 155:指定要遍历的 LoRA 节点
  • --template "{prefix}{base},{ornament},动作:{action},服装:{clothing}{suffix}":改组合模板
  • --bundle-outputs:跑完后自动打 zip 下载包
  • --bundle-dir "下载包":指定 zip 输出目录
  • --bundle-name "本次生图.zip":指定 zip 文件名

输出说明

  • 本地运行记录在 batch_runs/run_时间戳/
  • 实际图片仍然保存在 ComfyUI 的 output/ 目录
  • manifest.csv 会记录基础描述、外饰、服装、动作、LoRA、强度、提示词、种子、任务 ID 和返回文件名
  • 如果用了 --bundle-outputs,会额外生成一个 zip 下载包

备注

这个脚本已经针对你当前这份工作流做了稳妥处理:

  • 它会直接走“文生图主干”
  • 不会去走那条“参考图反推提示词”的支路

这样批量跑时更稳定,也不会额外卡在参考图或 llama 节点上。