プロンプトもモデルもAPIも!Stable Diffusion web UIを使いこなす
AUTOMATIC1111/stable-diffusion-webui
Stable Diffusion web UIは、AUTOMATIC1111氏によって開発された、Stable Diffusionの強力なGUIツールです。コマンドライン操作に不慣れな人でも、直感的に画像を生成・編集できるため、AIアートを手軽に始めたい人にとって非常に便利なツールです。
ソフトウェアエンジニアの視点から見ると、このツールは単なる画像生成アプリではありません。さまざまな機能をGUIで操作できるため、プロトタイピングや実験を素早く行える研究開発ツールとしての側面も持っています。
このツールがエンジニアにとってどのように役立つか、その利点を以下にまとめます。
テキストから画像を生成する際、思い通りの画像を得るためには、プロンプトの調整が非常に重要です。このツールは、プロンプトの調整をGUIで簡単に行えるため、試行錯誤の時間を大幅に短縮できます。
例えば、
ネガティブプロンプト(生成したくない要素)の追加・削除
プロンプトの強調(())や重み付け(:)の調整
プロンプトのブレンド([])
といった操作を、コードを書くことなく直感的に試すことができます。
Stable Diffusionには、さまざまなモデルやLoRA(微調整モデル)が存在します。これらのモデルを切り替えたり、異なるモデルで生成した画像を比較したりする作業も、GUI上で簡単に行うことができます。
これにより、プロジェクトに最適なモデルを効率的に見つけることができます。
このツールの真価は、APIが提供されている点にあります。GUIで操作できる機能を、API経由でプログラムから実行できます。これにより、以下のようなことが可能になります。
バッチ処理
大量の画像を自動で生成する
Webサービスへの組み込み
AI画像生成サービスを開発する
ワークフローの自動化
プロジェクトのパイプラインに画像生成を組み込む
導入は非常に簡単です。基本的な手順は以下の通りです。
Pythonのインストール
Python 3.10.6を推奨します。
Gitのインストール
必須ではありませんが、最新版を簡単に取得するためにGitはインストールしておきましょう。
リポジトリのクローン
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
起動スクリプトの実行
webui-user.bat (Windows) または webui-user.sh (Linux/macOS) を実行
初回起動時に必要なパッケージやモデルが自動的にダウンロードされ、ブラウザでUIが開きます。
ここからは、APIを利用して画像を生成するPythonスクリプトの例を紹介します。これは、webui-user.shに--apiオプションを付けて起動していることが前提です。
import requests
import json
import base64
from PIL import Image
import io
# APIエンドポイント
url = "http://127.0.0.1:7860/sdapi/v1/txt2img"
# パラメータ設定
payload = {
"prompt": "a photo of a cat, cute, detailed, high resolution",
"steps": 25,
"width": 512,
"height": 512
}
# リクエスト送信
response = requests.post(url, data=json.dumps(payload))
response_data = response.json()
# 画像データのデコードと保存
for i, img_data in enumerate(response_data['images']):
# Base64データをデコード
image_bytes = base64.b64decode(img_data)
# PILで画像を開く
image = Image.open(io.BytesIO(image_bytes))
# 画像をファイルに保存
image.save(f"generated_image_{i}.png")
print(f"画像が generated_image_{i}.png として保存されました。")
このコードは、指定したプロンプトとパラメータで画像を生成し、PNGファイルとして保存します。これを発展させれば、より複雑なワークフローを構築できます。
トランクス派エンジニア
「ねえ、最近さ、AIで画像作るツール、いろいろ出てきてるけど、やっぱりコマンドラインでさくっとやりたい派なんだよね。コード書く方が性に合ってるし。」
ブリーフ派エンジニア
「いやいや、ちょっと待ってよ。AIアートの世界も、GUIで直感的にできる方が断然いいって!俺が今ハマってるStable Diffusion web UI、これマジで革命的だから。 」
トランクス派エンジニア
「ふーん。結局GUIでしょ?そういうのって、細かい調整とか面倒じゃない?プロンプトだって、--negative-promptとか--cfg-scaleとか、コマンドで書いた方がスッキリするじゃん。」
ブリーフ派エンジニア
「いやいやいや、それが全然違うんだって!あのツール、スライダーでCFG ScaleとかStepsをサクサク変えられるし、ネガティブプロンプトなんてテキストエリアに書くだけだよ。いちいちコマンドのオプションを覚えておく必要がない。それに、APIがあるから、試行錯誤でGUIで納得のいく設定が見つかったら、それをそのままコードに落とし込める。これが最強のプロトタイピング手法なんだって!ね、俺がブリーフを愛用するのと同じで、実用性を追求したらこうなるんだよ。
」
トランクス派エンジニア
「API…なるほど。たしかに、GUIで手探りでいい感じの設定を見つけて、それをプログラムに組み込むっていうのは効率的かもな。…まあ、でも、俺はコマンドラインのシンプルな感じも捨てがたいけどね。お前がブリーフを履くのと同じで、俺はトランクスの開放感と自由さが好きなんだよ。 」
ブリーフ派エンジニア
「ほらね!どっちも良さがあるってことさ。でも、エンジニアとしての武器を増やすなら、このツールは絶対試した方がいいって!一緒にAIアートの新しい世界を切り開こうぜ!」
トランクス派エンジニア
「…わかったよ。お前がそこまで言うなら、ちょっと触ってみるかな。…ただし、ブリーフは履かないけどな。」