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

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

相关推荐
ai_xiaogui2 天前
一键部署AI工具!用AIStarter快速安装ComfyUI与Stable Diffusion
人工智能·stable diffusion·部署ai工具·ai应用市场教程·sd快速部署·comfyui一键安装
sigmoidAndRELU3 天前
读Vista
笔记·stable diffusion·世界模型
修炼室18 天前
Stable Diffusion WebUI 本地部署完整教程
stable diffusion
NetX行者18 天前
Stable Diffusion:开启AI图像生成新纪元
人工智能·stable diffusion
这是一个懒人23 天前
SD和comfyui常用模型介绍和下载
stable diffusion·comfyui·模型下载
有点小帅得平哥哥24 天前
Stable Diffusion WebUI 本地部署指南(Windows 11 + RTX 4060 Ti)
stable diffusion
CoovallyAIHub1 个月前
突破异常数据瓶颈!AnomalyAny:一句话+一张图,零样本生成任意异常图像
计算机视觉·stable diffusion
写代码的小阿帆1 个月前
Fractal Generative Models论文阅读笔记与代码分析
论文阅读·stable diffusion·transformer
春末的南方城市1 个月前
港科大&快手提出统一上下文视频编辑 UNIC,各种视频编辑任务一网打尽,还可进行多项任务组合!
人工智能·计算机视觉·stable diffusion·aigc·transformer
多恩Stone1 个月前
【Stable Diffusion 1.5 】在 Unet 中每个 Cross Attention 块中的张量变化过程
stable diffusion