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

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

相关推荐
数智工坊1 天前
深度拆解AnomalyAny:异常检测新工作,利用Stable Diffusion生成真实多样异常样本!
人工智能·pytorch·python·stable diffusion
语戚5 天前
深度解析:Stable Diffusion 底层原理 + U-Net Denoise 去噪机制全拆解
人工智能·ai·stable diffusion·aigc·模型
平安的平安6 天前
用 Python 玩转 AI 绘图:Stable Diffusion 本地部署指南
人工智能·python·stable diffusion
语戚6 天前
Stable Diffusion 核心模块深度拆解:CLIP、U-Net 与 VAE 原理全解析
人工智能·ai·stable diffusion·aigc·模型
yumgpkpm8 天前
华为昇腾910B上用Kubernetes(K8s)部署LLM和用Docker部署LLM的区别
docker·chatgpt·容器·stable diffusion·kubernetes·llama·gpu算力
语戚8 天前
Stable Diffusion 入门:架构、空间与生成流程概览
人工智能·ai·stable diffusion·aigc·模型
yumgpkpm8 天前
华为昇腾910B上用Kubernetes(K8s)部署LLM(Qwen3-32B)的详细步骤,保姆级命令及方法、下载链接等
运维·服务器·华为·stable diffusion·aigc·copilot·llama
平安的平安8 天前
Python 实现 AI 图像生成:调用 Stable Diffusion API 完整教程
人工智能·python·stable diffusion
孤岛站岗13 天前
【AI大模型入门】B02:Stable Diffusion——开源绘图,让AI绘画飞入寻常百姓家
人工智能·stable diffusion·开源
智星云算力13 天前
从创作到训练:Stable Diffusion WebUI全链路实战
人工智能·深度学习·stable diffusion·智星云·gpu算力租用