SD.Next API 批量出图:3 条命令跑完 100 张
【免费下载链接】automaticSD.Next: All-in-one WebUI for AI generative image and video creation, captioning and processing项目地址: https://gitcode.com/GitHub_Trending/au/automatic
板块一 · 定位与场景
SD.Next 是 AI 图像视频生成的 WebUI,API 与 CLI 工具让出图可以做成批量任务。
上次想批量验证同一提示词配 30 个艺术家、6 种风格的效果时,在界面里一张张点不现实。把任务交给它的 /sdapi/v1/txt2img 接口后,全程没离开终端:改配置、跑脚本、收图。
板块二 · 最小可行路径
三步跑通一次。先启动 WebUI,等 7860 端口就绪(Linux/Mac 用 bash webui.sh)。
再跑一张图验证 API 可用,终端出现 image received 即正常,这条命令的作用是把请求发出去并把返回的 base64 解码落盘:
python cli/api-txt2img.py \ --prompt "a small robot on a spaceship" \ --width 512 --height 512 --steps 20 \ --output robot.jpg # 返回的 base64 自动保存为本地文件打开 robot.jpg 确认效果即可。这张只用来验证链路,批量参数下一节再谈。
板块三 · 能力拆解
填充动态提示词模板
不想手写每条提示词时,cli/generate.py 的--prompt dynamic模式会按图取随机组合:<style><artist><place><suffix>等占位符从 generate-random.json 的列表里填充,每张图一套组合。模板就是 prompts 数组里的一行字符串,占位符可任意增减。
用 Python 调接口
sdapi.py 是带连接池的异步 HTTP 封装,提供 get/post(及对应同步版),SDAPI_URL、SDAPI_USR、SDAPI_PWD 三个环境变量控制地址与认证。自己的脚本要复用这套请求逻辑时:
import asyncio, sdapi async def main(): data = await sdapi.post('/sdapi/v1/txt2img', {"prompt": "a small robot", "steps": 20}) print(data['info']) asyncio.run(main())在 cli/ 目录下运行,即可直接导入 sdapi。
串联放大与排版
两个常用的后处理入口:api-upscale.py 调 /sdapi/v1/extra-single-image 做单图放大,image-grid.py 把文件夹里的图排成网格图。两者都是单命令工具,第四节的工作流会直接用到。
板块四 · 一条完整工作流
步骤 1,改配置。只动 generate.json,必要字段如下,其中两处容易卡住:
{ "paths": { "root": "./output", "generate": "image", "grid": "grid" }, "generate": { "prompt": "dynamic", "steps": 30, "batch_size": 2, "seed": -1 }, "upscale": { "upscaler_1": "SwinIR_4x", "upscaling_resize": 2 }, "options": { "sd_model_checkpoint": "your-model-name" }, // …其余字段省略 }⚠️ paths.root 在仓库里默认是 Windows 路径,必须改成你自己的输出目录;options 里的 sd_model_checkpoint 要和 WebUI 注册的模型名一致,不匹配脚本会直接退出。模型拿不准时,可先看 models/Reference/ 下的参考缩略图:
generate-random.json 可以不动,用仓库自带的随机词表。
步骤 2,跑批。一条命令,--max 100表示攒够 100 张自动停,跑之前把上面的配置指给它:
python cli/generate.py --config cli/generate.json --max 100每轮内部:拼动态提示词 → 调 txt2img → 存原图并生成网格图 → 放大,每张图把提示词、种子、模型写进 EXIF 方便回查。Ctrl+C 随时停,退出时打印每张图的平均耗时。生成期间在浏览器打开 WebUI,可看队列与实时输出:
步骤 3,收图。输出目录下三个子目录:image/ 原图、upscale/ 放大图、grid/ 网格图。要把现有的一批图重新排成一张拼版,直接跑这条:
python cli/image-grid.py --square portfolio.jpg output/image第一个位置参数是输出文件名,后面是图片目录,默认带文件名标签。
板块五 · 收尾
接下来可以试试:
- 把 generate.json 的 batch_size 从 2 改成 4,观察单图耗时和显存变化
- 对不满意的单图单独跑
python cli/api-upscale.py --input <文件> --scale 2,或在 generate.py 后加--detailer - 打开 modules/api/endpoints.py,看 /sdapi/v1/caption、/sdapi/v1/img2img 等其他端点能接到什么流程里
跑完上面流程后,先把 batch_size 改成 4 再跑一次,对比单图耗时。
【免费下载链接】automaticSD.Next: All-in-one WebUI for AI generative image and video creation, captioning and processing项目地址: https://gitcode.com/GitHub_Trending/au/automatic
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考