API 的背景與優勢

Stable Diffusion API 是基于深度學習技術的文本到圖像生成工具。它利用擴散模型,通過逐步添加噪聲和去噪聲的過程生成圖像。與傳統的生成對抗網絡(GANs)相比,擴散模型在生成細節和處理復雜場景時表現更佳。Stable Diffusion API 的開放性使得用戶可以輕松地在不同的開發環境中集成和使用。

與 Diffusers 的比較

在早期的圖像生成嘗試中,Diffusers 是一個常用的庫。然而,Diffusers 在處理復雜功能時可能顯得有些繁瑣,特別是在采樣器的添加和safetensors格式模型的讀取方面。相比之下,Stable Diffusion 提供的API接口則顯得更加簡潔和直接,極大地提高了開發效率。

安裝與部署Stable Diffusion WebUI

為了使用Stable Diffusion API,我們首先需要部署WebUI。WebUI提供了一種圖形化的方式來管理和調用API接口,無論是自己從源碼配置還是使用一鍵啟動包,過程都相對簡單且高效。

WebUI 部署

使用一鍵啟動包

對于初學者來說,使用一鍵啟動包是最簡單的選擇。通過訪問一鍵啟動包教程,用戶可以快速安裝并運行WebUI。

手動配置WebUI

如果希望對WebUI有更多的控制,可以選擇手動配置。以下是啟動WebUI的基本命令:

bash webui.sh --nowebui

或者使用Python腳本啟動:

python launch.py --xformers --api

調用Stable Diffusion API進行文生圖

一旦WebUI成功啟動,用戶可以通過API接口進行文生圖的生成。以下是一個簡單的Python示例,展示了如何調用API生成圖像。

生成圖像示例

文生圖示例

通過以下代碼,我們可以實現從文本到圖像的轉換:

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,
    "restore_faces": False,
}

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

圖生圖示例

除了文生圖,Stable Diffusion API 還支持圖生圖功能,以下是相關示例代碼:

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 = {
    "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],
    "restore_faces": False,
}

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

帶參數啟動WebUI

在使用Stable Diffusion API時,可以通過帶參數的方式啟動WebUI,以便于調用不同的API接口。以下是相關操作步驟:

設置啟動參數

在WebUI啟動腳本中添加API啟動參數:

set COMMANDLINE_ARGS=--api

啟動并使用API

完成設置后,運行webui-user.bat,然后訪問http://127.0.0.1:7860/docs/以查看API列表。

使用第三方庫調用API

除了直接調用官方API,用戶還可以使用第三方庫如sdwebuiapi來簡化調用過程。這些庫對API進行了封裝,使得調用變得更為簡單。

安裝與使用sdwebuiapi

可以通過以下命令安裝sdwebuiapi

pip install sdwebuiapi

以下代碼展示了如何使用sdwebuiapi進行圖像生成:

import webuiapi

def draw_expression(charactor_expression):
    api = webuiapi.WebUIApi(host='127.0.0.1', port=7860, sampler='Euler a', steps=20)
    prompt = "(masterpiece, best quality:1), 1girl, solo, arisu, halo,"
    for e in charactor_expression:
        prompt += e + ','
    prompt += "white background , "
    result1 = api.txt2img(prompt=prompt,
                          negative_prompt="noisy, blurry, grainy,text, graphite, abstract, glitch, deformed, mutated, ugly, disfigured, (realistic, lip, nose, tooth, rouge, lipstick, eyeshadow:1.0), low contrast",
                          seed=-1,
                          styles=["animate"],
                          cfg_scale=8)
    save_file_name = './outputs/output'
    for i in charactor_expression:
        save_file_name += '_' + i.replace(" ", "_")
    save_file_name += '.png'
    result1.image.save(save_file_name)
    return save_file_name

test_expression = ['Greet happily', 'Rub your hands']
img_file_Location = draw_expression(charactor_expression=test_expression)
print('output image saved to ' + img_file_Location)

常見問題解答(FAQ)

FAQ

  1. 問:如何安裝Stable Diffusion WebUI?

  2. 問:Stable Diffusion API 支持哪些功能?

  3. 問:如何提高生成圖像的質量?

  4. 問:如何使用第三方庫調用Stable Diffusion API?

  5. 問:API調用時遇到錯誤如何解決?

通過以上指導,用戶可以更好地利用Stable Diffusion API進行圖像生成,滿足多樣化的創作需求。

上一篇:

響應式編程Flux 在Java中的應用示例

下一篇:

FLUX.1-dev 常用提示詞和圖片鏈接指南
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費