Stable Diffusion AUTO1111にプラグイン付きでAPI Callする方法
Stable Diffusion Web UIのAPI機能を使用して、Latent Couple拡張機能を有効にする方法について解説します。Latent Couple拡張機能は、画像の異なる領域に対して個別のプロンプトを適用できる強力な機能です。
目次
Latent Couple拡張機能とは
Latent Couple拡張機能は、一枚の画像内で複数の異なる要素を精密に制御できる拡張機能です。例えば、複数の人物を含む画像で、それぞれの人物に異なる特徴を指定することが可能になります。
API呼び出しの基本構造
基本的なリクエスト例
import requests
import json
url = "http://localhost:7860/sdapi/v1/txt2img"
payload = {
"prompt": "masterpiece, best quality, 3 beautiful women standing together",
"negative_prompt": "lowres, bad anatomy, bad hands",
"width": 512,
"height": 768,
"steps": 20,
"cfg_scale": 7,
"sampler_name": "DPM++ 2M Karras",
# Latent Couple拡張機能の設定
"alwayson_scripts": {
"Latent Couple extension": {
"args": [
True, # 拡張機能を有効化
"1:1,1:3,1:3,1:3", # 分割設定 - 背景 + 3つのセクション
"0:0,0:0,0:1,0:2", # 位置設定 - 背景は全体、3人の人物
"0.2,0.8,0.8,0.8", # 重み設定 - 背景は低く、人物は高く
150 # 終了ステップ
]
}
}
}
response = requests.post(url, json=payload)
result = response.json()
パラメータの詳細解説
args配列の各要素
- Enable (True/False)
- 拡張機能の有効/無効を制御
Trueで有効化
- Divisions (分割設定)
"1:1,1:3,1:3,1:3"の形式- 各セクションの比率を指定
- この例では背景1つ + 人物3つのセクション
- Positions (位置設定)
"0:0,0:0,0:1,0:2"の形式- 各セクションの位置を指定
0:0は全体、0:1、0:2は特定の位置
- Weights (重み設定)
"0.2,0.8,0.8,0.8"の形式- 各セクションの影響度を制御
- 0.0〜1.0の範囲で指定
- End Step (終了ステップ)
- 拡張機能を適用するステップ数
- 通常は20〜50の範囲で設定
実践的な使用例
3人の異なる髪色の女性を生成
payload = {
"prompt": "masterpiece, best quality, three beautiful women, blonde hair, brown hair, black hair",
"negative_prompt": "lowres, bad anatomy",
"width": 768,
"height": 512,
"steps": 30,
"cfg_scale": 7.5,
"alwayson_scripts": {
"Latent Couple extension": {
"args": [
True,
"1:1,1:1,1:1,1:1", # 4等分
"0:0,0:1,0:2,0:3", # 左から右へ配置
"0.3,0.9,0.9,0.9", # 背景は弱く、人物は強く
150
]
}
}
}
背景と前景を分離した構図
payload = {
"prompt": "beautiful landscape, mountain, lake, girl in foreground",
"negative_prompt": "blurry, low quality",
"width": 512,
"height": 768,
"alwayson_scripts": {
"Latent Couple extension": {
"args": [
True,
"2:1,1:2", # 背景2:前景1の比率
"0:0,0:1", # 背景全体、前景下部
"0.4,0.8", # 背景やや弱く、前景強く
150
]
}
}
}
エラー対処法
よくあるエラーと解決方法
- 拡張機能が認識されない
解決方法: Stable Diffusion Web UIでLatent Couple拡張機能がインストールされているか確認 - パラメータ形式エラー
解決方法: 文字列形式(カンマ区切り)で正しく指定されているか確認 - 位置設定の不整合
解決方法: DivisionsとPositionsの要素数が一致しているか確認
最適化のコツ
パフォーマンス向上
- End Stepを適切に設定(20-30が推奨)
- Weightsのバランスを調整
- CFG Scaleを7-8程度に設定
API呼び出し用の拡張機能名の確認方法
拡張機能名の確認手順
Stable Diffusion Web UIのAPIで拡張機能を呼び出す際、正確な拡張機能名を知る必要があります。以下の方法で確認できます。
Pythonスクリプトファイルでの確認方法
1. スクリプトファイルの場所
拡張機能のPythonスクリプトファイルは通常以下の場所にあります:
extensions/[拡張機能フォルダ名]/scripts/[スクリプト名].py
2. title()メソッドの確認
スクリプトファイル内でtitle()メソッドの戻り値を確認します:
class Script(scripts.Script):
def title(self):
return "Latent Couple extension" # ← この文字列がAPI名
3. 確認例
例えば、Latent Couple拡張機能の場合:
# latent_couple.py ファイル内
def title(self):
return "Latent Couple extension"
この"Latent Couple extension"がAPIで使用する正確な名前になります。
その他の確認方法
Web UIでの確認
- Stable Diffusion Web UIを起動
- txt2imgまたはimg2imgタブを開く
- 画面下部のScriptセクションで拡張機能名を確認
- ドロップダウンに表示される名前がAPI名と同じ
APIレスポンスでの確認
response = requests.get("http://localhost:7860/sdapi/v1/scripts")
scripts = response.json()
print(scripts) # 利用可能な拡張機能名一覧が表示される
注意点
title()メソッドの戻り値が完全に一致する必要があります- 大文字小文字、スペース、記号も正確に入力する必要があります
- 拡張機能のフォルダ名とAPI名は異なる場合があります
この方法で正確な拡張機能名を確認してからAPI呼び出しを行ってください。