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')

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

相关推荐
RanceGru2 天前
LLM学习笔记5——本地部署ComfyUI和Wan2.1-T2V-1.3B文生视频模型
笔记·学习·stable diffusion·transformer
ding_zhikai3 天前
stable-diffusion试验1-静态人物
stable diffusion
love530love5 天前
【笔记】 Podman Desktop 中部署 Stable Diffusion WebUI (GPU 支持)
人工智能·windows·笔记·python·容器·stable diffusion·podman
迈火6 天前
PuLID_ComfyUI:ComfyUI中的图像生成强化插件
开发语言·人工智能·python·深度学习·计算机视觉·stable diffusion·语音识别
ding_zhikai7 天前
SD:在一个 Ubuntu 系统安装 stable diffusion Web UI
前端·ubuntu·stable diffusion
不当菜鸡的程序媛7 天前
Stable Diffusion里面Cross-Attention设计:为啥Q来自图像/噪声,K和V来自文本
人工智能·计算机视觉·stable diffusion
云澈ovo11 天前
FP16混合精度训练:Stable Diffusion生成速度提升300%的硬件配置方案
人工智能·机器学习·stable diffusion
weiwei228441 个月前
文生图模型Stable Diffusion使用详解
stable diffusion·文生图
Hello123网站1 个月前
DreamStudio-Stable Diffusion官方绘画工具
stable diffusion·ai工具
如若1231 个月前
CompVis Stable Diffusion 正确安装与运行指南
stable diffusion