Stable-diffusion-WebUI 的API调用(内含文生图和图生图实例)

前情提要

在之前尝试使用Diffusers库来进行stable-diffusion的接口调用以及各种插件功能实现,但发现diffusers库中各复杂功能的添加较为麻烦,而且难以实现对采样器的添加,safetensors格式模型的读取。在官网上找到了webui有专门的api接口,能够极大方便我们进行类似webui界面的api调用。

diffusers文档

webui项目官网

webui API说明

webui项目部署

这种调用webui自带的api的方法需要先将webui运行起来,无论是自己从官网配置的webui,还是各类启动器一键启动的都是可以的。(我使用的为一键启动包,较为简单)

一键启动包教程

如果是自己配置的

使用

bash webui.sh --nowebui

或者

python launch.py --xformers --api

API接口调用

当我们把webui项目启动之后,我们可以看到运行的端口(默认为7860)

可以进行调用

  1. 文生图(python示例):

    import json
    import requests
    import io
    import base64
    from PIL import Image

    url = "http://127.0.0.1:7860"

    prompt = "dog"
    negative_prompt = ""

    payload = {

     # 模型设置
     "override_settings":{
           "sd_model_checkpoint": "v1-5-pruned.ckpt",
           "sd_vae": "animevae.pt",
           "CLIP_stop_at_last_layers": 2,
     },
    
     # 基本参数
     "prompt": prompt,
     "negative_prompt": negative_prompt,
     "steps": 30,
     "sampler_name": "Euler a",
     "width": 512,
     "height": 512,
     "batch_size": 1,
     "n_iter": 1,
     "seed": 1,
     "CLIP_stop_at_last_layers": 2,
    
     # 面部修复 face fix
     "restore_faces": False,
    
     #高清修复 highres fix
     # "enable_hr": True,
     # "denoising_strength": 0.4,
     # "hr_scale": 2,
     # "hr_upscaler": "Latent",
    

    }

    response = requests.post(url=f'{url}/sdapi/v1/txt2img', json=payload)
    r = response.json()
    image = Image.open(io.BytesIO(base64.b64decode(r['images'][0])))

    image.show()
    image.save('output.png')

  2. 图生图(python 示例)

    import json
    import requests
    import io
    import base64
    from PIL import Image
    import cv2

    url = "http://127.0.0.1:7860"

    prompt = "cat"
    negative_prompt = ""

    此处为读取一张图片作为输入图像

    img = cv2.imread('image.jpg')

    编码图像

    retval, bytes = cv2.imencode('.png', img)
    encoded_image = base64.b64encode(bytes).decode('utf-8')

    payload = {

    # 模型设置

    "override_settings":{

    "sd_model_checkpoint": "v1-5-pruned.ckpt",

    "sd_vae": "animevae.pt",

    "CLIP_stop_at_last_layers": 2,

    },

     # 基本参数
     "prompt": prompt,
     "negative_prompt": negative_prompt,
     "steps": 30,
     "sampler_name": "Euler a",
     "width": 512,
     "height": 512,
     "batch_size": 1,
     "n_iter": 1,
     "seed": 1,
     "cfg_scale": 7,
     "CLIP_stop_at_last_layers": 2,
     
     "init_images": [encoded_image],
    
     # 面部修复 face fix
     "restore_faces": False,
    
     #高清修复 highres fix
     # "enable_hr": True,
     # "denoising_strength": 0.4,
     # "hr_scale": 2,
     # "hr_upscaler": "Latent",
    

    }

    response = requests.post(url=f'{url}/sdapi/v1/img2img', json=payload)
    r = response.json()
    image = Image.open(io.BytesIO(base64.b64decode(r['images'][0])))

    image.show()
    image.save('output.png')

如要修改其他参数可参照官网文档进行修改。

相关推荐
俊偉19 小时前
如何训练Stable Diffusion 模型
stable diffusion·扩散模型·训练·ai炼丹
AIGC设计所19 小时前
Stable Diffusion绘画 | 电商设计海报
ai作画·stable diffusion·prompt·aigc·midjourney
神秘的土鸡19 小时前
从论文到实践:Stable Diffusion模型一键生成高质量AI绘画
python·数码相机·ai作画·stable diffusion·图形渲染
johnny_hhh19 小时前
【Stable Diffusion】SD Stable Diffusion 最新版本 4.10 安装包
ai作画·stable diffusion·aigc
浪淘沙jkp19 小时前
(十)Ubuntu 20.04+akiaaa大神 Stable Diffusion整合包 AI绘画教程-外挂VAE模型等快捷设置教程
ai作画·stable diffusion
请站在我身后2 天前
最新的强大的文生视频模型Pyramid Flow 论文阅读及复现
论文阅读·人工智能·神经网络·计算机视觉·stable diffusion·transformer
小军军军军军军2 天前
MLU运行Stable Diffusion WebUI Forge【flux】
人工智能·python·语言模型·stable diffusion
跃跃欲试-迪之2 天前
animatediff 模型网盘分享
人工智能·stable diffusion
web150850966413 天前
Stable Diffusion WebUI Two Shot 项目常见问题解决方案
stable diffusion