Stable-diffusion WebUI API调用方法

这篇具有很好参考价值的文章主要介绍了Stable-diffusion WebUI API调用方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

写这篇文章的主要原因是工作中需要写一个用训练好的模型批量生图的脚本,开始是想用python直接加载模型,但后来发现webui的界面中有很多用起来比较方便的插件和参数,最终改成调用WebUI接口的方式来批量生图。

Stable-diffusion的webui界面使用比较方便,但是它的api文档比较简陋,很多功能需要去看源码,所以在这里记录下主要的调用方法

相关文档

官方文档:https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/API

运行方式

# 1. 首先需要在webui-user.bat中给COMMANDLINE_ARGS添加--api参数
# 2. 启动命令中需要添加nowebui
python launch.py --nowebui

然后使用http://ip:port/docs即可查看官方文档,需要替换ip:port为自己的地址才能看到,官方文档中有执行按钮可以执行example,能简单的看下返回效果

## -- api调用示例代码 -- ##
import json
import base64
import requests

# 发送请求
def submit_post(url: str, data: dict):
    return requests.post(url, data=json.dumps(data))

# 解码并保存图片
def save_encoded_image(b64_image: str, output_path: str):
    with open(output_path, 'wb') as image_file:
        image_file.write(base64.b64decode(b64_image))


if __name__ == '__main__':
    txt2img_url = r'http://127.0.0.1:8085/sdapi/v1/txt2img'

    data = {'prompt': 'a dog wearing a hat',
    'negative_prompt': '',
    'sampler_index': 'DPM++ SDE',
    'seed': 1234,
    'steps': 20,
    'width': 512,
    'height': 512,
    'cfg_scale': 8}

    response = submit_post(txt2img_url, data)
    save_image_path = r'./result/tmp.png'
    save_encoded_image(response.json()['images'][0], save_image_path)

/sdapi/v1/txt2img接口scripts参数列表,以xyz plot为例,可以直接复制到官方文档的测试窗口中查看一下效果

{
  "enable_hr": false,
  "denoising_strength": 0,
  "firstphase_width": 0,
  "firstphase_height": 0,
  "hr_scale": 2,
  "hr_upscaler": "",
  "hr_second_pass_steps": 0,
  "hr_resize_x": 0,
  "hr_resize_y": 0,
  "hr_sampler_name": "",
  "hr_prompt": "",
  "hr_negative_prompt": "",
  "prompt": "cute girl with short brown hair in black t-shirt in animation style",
  "styles": [
    ""
  ],
  "seed": -1,
  "subseed": -1,
  "subseed_strength": 0,
  "seed_resize_from_h": -1,
  "seed_resize_from_w": -1,
  "sampler_name": "Euler a",
  "batch_size": 1,
  "n_iter": 1,
  "steps": 50,
  "cfg_scale": 7,
  "width": 512,
  "height": 512,
  "restore_faces": false,
  "tiling": false,
  "do_not_save_samples": false,
  "do_not_save_grid": false,
  "negative_prompt": "",
  "eta": 0,
  "s_min_uncond": 0,
  "s_churn": 0,
  "s_tmax": 0,
  "s_tmin": 0,
  "s_noise": 1,
  "override_settings": {},
  "override_settings_restore_afterwards": true,
  "script_args": [4,"20,30",[],9,"Euler a, LMS",[],0,"",[],"True","False","False","False",0], # xyz plot参数
  "sampler_index": "Euler",
  "script_name": "X/Y/Z Plot",
  "send_images": true,
  "save_images": false,
  "alwayson_scripts": {}
}

第三方开源库(推荐)

https://github.com/mix1009/sdwebuiapi

这个开源库是webui官方推荐的,就是简单的给官方的api套了个壳,而且还提供了scripts参数的使用方式。虽然这个库已经很久没有更新了,很多issue也没有解决,但不妨碍我们参考它的函数使用方式。我们在使用的时候可以直接import webuiapi,也可以参照他们的实现方式来直接调用官方接口。文章来源地址https://www.toymoban.com/news/detail-711532.html

import webuiapi
from PIL import Image

# create API client with custom host, port
api = webuiapi.WebUIApi(host='127.0.0.1', port=8085)

XYZPlotAvailableTxt2ImgScripts = [...] # 根据脚本参数自行增加调整xyz轴可选择的参数内容

# 省略部分参数定义
... 

# 参数与官方文档的txt2img完全一致,参照上文参数文档
result = api.txt2img(
    prompt="cute girl with short brown hair in black t-shirt in animation style",
    seed=1003,
    script_name="X/Y/Z Plot",
    script_args=[
        # index,对应xyz轴每个变量在滚动条中的索引数
        XYZPlotAvailableTxt2ImgScripts.index(XAxisType), 
        # 选择的对应坐标轴的变量值
        XAxisValues,
        # 变量值下拉列表,webui库更新的1.16之后,新增的参数,必填,不然无法执行生图操作																		 
        [], 																						 
        XYZPlotAvailableTxt2ImgScripts.index(YAxisType),
        YAxisValues,
        ["model_6.safetensors","model_16.safetensors"],
        XYZPlotAvailableTxt2ImgScripts.index(ZAxisType),
        ZAxisValues,
        [],
        drawLegend,
        includeLoneImages,
        includeSubGrids,
        noFixedSeeds,
        marginSize,
        ]
)


# save image with jpg format
img = result.image
img.save("./result/output2.jpg", quality=90)  

到了这里,关于Stable-diffusion WebUI API调用方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • NovelAi + Webui + Stable-diffusion本地配置

    推荐 dev-sidecar  系统版本 windows10,windows11 显卡(越强越好,显存越大越好,本人是RTX 3060)用AMD显卡的参考:Install and Run on AMD GPUs · AUTOMATIC1111/stable-diffusion-webui Wiki (github.com)进行配置 内存(16G可以正常运行,8G没有测试) CUDA( 下载低于现显卡版本的 ) Anaconda 或者 Git (此

    2024年02月01日
    浏览(59)
  • stable-diffusion、stable-diffusion-webui、novelai、naifu区别介绍

    Stable Diffusion 是一个基于 Latent Diffusion Models (潜在扩散模型,LDMs)的文图生成(text-to-image)模型。它由 CompVis 、 Stability AI 和 LAION 共同开发,通过 LAION-5B 子集大量的 512x512 图文模型进行训练。我们只要简单的输入一段文本, Stable Diffusion 就可以迅速将其转换为图像,同样我

    2024年02月09日
    浏览(49)
  • 探索【Stable-Diffusion WEBUI】的插件:批量替换人脸

    本篇主要提到WEBUI似乎和主线剧情无关的插件,可以批量改变多张图片的面部为AI生成的内容。 更多不断丰富的内容参考:🔗 《继续Stable-Diffusion WEBUI方方面面研究(内容索引)》 参考:🔗插件官网 可以从WEB UI中直接安装。 安装后在图生图最下面的 脚本 下拉列表中, 它需要

    2024年02月09日
    浏览(90)
  • 探索【Stable-Diffusion WEBUI】的插件:骨骼姿态(OpenPose)

    本篇主要提到OpenPose和相关的插件,配合ControlNet使用,可以指定人物的动作。 更多不断丰富的内容参考:🔗 《继续Stable-Diffusion WEBUI方方面面研究(内容索引)》 骨骼姿态很有用,可以控制生成人物的动作。 我们可以用ControlNet或各种插件,从图片中提取人物的骨骼姿态。 也可

    2024年02月04日
    浏览(128)
  • 闲谈【Stable-Diffusion WEBUI】的插件:绘图过程动画输出

    本篇主要提到WEBUI的过程动画输出插件,把AI绘图的过程,从完全噪点到成品的过程做成动画视频。 更多不断丰富的内容参考:🔗 《继续Stable-Diffusion WEBUI方方面面研究(内容索引)》 参考:https://github.com/vladmandic/sd-extension-steps-animation 可以从WEB UI中直接安装。 安装后出现在和

    2024年02月16日
    浏览(61)
  • 探索【Stable-Diffusion WEBUI】的附加功能:图片缩放&抠图

    本篇单独讲解了WEBUI内置的附加功能:图片缩放——主要是默认4x的放大图片;还有同一页的抠图插件。 更多不断丰富的内容参考:🔗 《继续Stable-Diffusion WEBUI方方面面研究(内容索引)》 附加功能就是在文生图,图生图以外,对图片的其它处理。 在没有安装更多插件的时候,

    2023年04月24日
    浏览(83)
  • 探索【Stable-Diffusion WEBUI】的插件:ControlNet 1.1

    本篇主要提到ControlNet新版本的使用,和旧版本的变化,并偷懒参考了别人很不错的文章。 更多不断丰富的内容参考:🔗 《继续Stable-Diffusion WEBUI方方面面研究(内容索引)》 WEBUI的插件里, ControlNet 是少数几个不需要翻译的插件,因为翻译了也没意思: 控制网络 ? 它的作用是

    2024年02月09日
    浏览(60)
  • stable-diffusion的webui和comfyuig共享模型路径

     1.修改上图extra_model_paths.yaml.example为extra_model_paths.yaml 2.将base_path: path/to/stable-diffusion-webui/修改成你的/stable-diffusion-webui安装路径(例如:base_p: D:/stable-diffusion-webui) 做个记录

    2024年02月04日
    浏览(60)
  • 关于【Stable-Diffusion WEBUI】方方面面研究(内容索引)

    关于Stable-Diffusion WEBUI,我发现网上各种教程真的很多。 写得很好很详细的也不少,读了感觉比我写的好多了,无论是原理和相关论文还是操作和细节。 所以准备记录下Stable-Diffusion WEB UI的方方面面,以及哪里去看相关的资料。 同时自己写的东西也有点乱,得整理一下。呃在

    2024年02月05日
    浏览(60)
  • 关于【Stable-Diffusion WEBUI】基础模型对应VAE的问题

    本篇主要提及模型的VAE,通常情况下我们不用考虑它,但是有些特别是早期模型并没有整合VAE…… 更多不断丰富的内容参考:🔗 《继续Stable-Diffusion WEBUI方方面面研究(内容索引)》 VAE (Variational Auto-Encoder 变分自动编码器) 虽然简称是编码器,实际上是编码解码器(我们用到

    2024年02月09日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包