善悪の彼岸

社会人5年目、ものづくりと哲学と研究が好き

pythonの自作プログラムからStableDiffusionWebUIをWebAPI経由で叩く【StableDiffusionWebUI】

  • ローカルで実行しているStableDiffusionWebUIをWebAPIを通して自作のPythonプログラムから叩いてみた

Stable Diffusion WebUIのセットアップ

  • 任意のフォルダで下記コマンドを実行し,StableDiffusionWebUIをDLしてくる
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
  • 下記コマンドでwebuiを起動するbatファイルを実行す
cd stable-diffusion-webui
.\webui-user.bat
  • コマンドプロンプトにしたのような表記が出たら問題なくWebUIの立ち上げが完了
    StableDiffusionWebUIが起動成功した場合の表示
  • ブラウザからhttp://127.0.0.1:7860にアクセス
    StableDiffusionWebUI

WebAPI機能を有効化する

  • WebAPI機能を有効にするとPython等のプログラムからStableDiffusionを実行できる -WebAPI機能を有効にするにはwebui-user.batをメモ帳等で開き,6行目に--apiを追加する
@echo off

set PYTHON=
set GIT=
set VENV_DIR=
set COMMANDLINE_ARGS=--api

call webui.bat
  • 上記の変更が完了したらStaebleDiffusionWebUIを再起動する

sdwebuiapiをインストールする

  • Stable Diffusion WebAPIのAPI呼び出しを簡単にするラッパーライブラリのsdwebuiapiを使うと簡単にPythonからSDを呼び出せる
  • 下記コマンドをコマンドプロンプトで実行する
pip install webuiapi

画像生成を行うpythonの自作プログラムを書く

  • 次にStableDiffusionをPythonで実行するプログラムを書く
import webuiapi
# APIのインスタンスを作成 ############################
api = webuiapi.WebUIApi()
# プロンプトを宣言 ##################################
PROMPT= "masterpiece, best quality, shinkai makoto, boy"
# 画像を生成する
result1 = api.txt2img(prompt=PROMPT)
# 画像を保存する
result1.image.save("testsd.png")
  • 上記のプログラムをVSCode上で作成し,実行するとカレントディレクトリにtestsd.pngというファイルで生成されたイラストが確認できる