当前位置: 首页 > article >正文

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

前情提要

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

webui实例图

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

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


http://www.kler.cn/a/451392.html

相关文章:

  • postgresql ERROR: cannot drop the currently open database
  • 浅谈TARA在汽车网络安全中的关键角色
  • 机器学习基础 衡量模型性能指标
  • 【C++ 基础】从C到C++有哪些变化
  • asp.net core webapi项目中 在生产环境中 进不去swagger
  • 图书馆预约占座系统:数据驱动的座位分配机制
  • DocFlow票据AI自动化处理工具,提升企业票据数字化管理效能
  • mybatis框架——缓存,分页
  • 【c++高阶DS】图
  • node.js的异步工作之---回调函数与回调地狱
  • 用Python在Excel工作表中创建、修改及删除表格区域
  • C#(事件)2
  • 第79期 | GPTSecurity周报
  • 《智启新材:人工智能重塑分子结构设计蓝图》
  • Krita安装krita-ai-diffusion工具搭建comfyui报错没有ComfyUI_IPAdapter_plus解决办法
  • [Vim][常用操作整理]详细讲解
  • 音视频学习(二十七):SRT协议
  • Excel 列名称转换问题 Swift 解答
  • LeetCode 343.整数拆分
  • #渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍11基于XML的SQL注入(XML-Based SQL Injection)
  • 考前96天 学习巩固 计算机、数学、英语
  • leetcode 3132. 找出与数组相加的整数 II 中等
  • MySQL追梦旅途之慢查询分析工具mysqldumpslow和pt-query-digest
  • Maximum Crossings (Hard Version)最大交叉次数(困难版本)
  • ROS1入门教程5:简单行为处理
  • 【es6复习笔记】生成器(11)