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

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

相关推荐
老刘说AI20 天前
类Sora模型:解锁动态视觉艺术的密码
人工智能·stable diffusion·架构·embedding
python-码博士20 天前
Stable Diffusion 3 / FLUX 类模型中的 Flow Matching:怎么用、怎么调、怎么避坑
stable diffusion
Rocky Ding*22 天前
Latent Consistency Models:一篇读懂扩散模型的少步生成核心基础知识
人工智能·深度学习·机器学习·ai作画·stable diffusion·aigc·ai-native
Asimov_Liu24 天前
Diffusion 与 Flow Matching 数学原理及其在 VLA Action 生成中的应用
stable diffusion·自动驾驶·具身智能·vla·flow matching
Rocky Ding*24 天前
Token Merging for Fast Stable Diffusion:一篇读懂 Stable Diffusion 的免训练加速机制
论文阅读·人工智能·深度学习·机器学习·stable diffusion·aigc·ai-native
yuguo.im25 天前
Mac M4 安装 sd-webui 踩坑全记录
macos·stable diffusion
hugo_im1 个月前
Mac M4 安装 sd-webui 踩坑全记录
stable diffusion
一叶知秋dong1 个月前
Stable diffusion 工作原理
人工智能·深度学习·stable diffusion
仰望尾迹云1 个月前
灵感画廊入门:AI绘画零基础到精通
stable diffusion·ai绘画·图像生成
AI极客菌1 个月前
AI绘画工具中,为什么专业玩家爱用Stable Diffusion,普通玩家却喜欢Midjourney?
大数据·人工智能·ai·ai作画·stable diffusion·aigc·midjourney