0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Stable Diffusionで大量の画像を効率的に生成したいけれど、毎回手動で設定を変更するのは大変ですよね。そんな悩みを解決するのが、今回紹介するStable Diffusion自動化ツールです。このツールを使えば、設定ファイルに書いた通りに自動的に複数の画像を生成し、プログレスバーでリアルタイムに進捗を確認できます。

デモンストレーション

CLI実行の様子

CLI Interface

ターミナルでの実際の実行画面。カラフルなプログレスバーとリアルタイム進捗表示が確認できます。

プロジェクトリポジトリ

完全なソースコード、ドキュメント、設定例、コントリビューションガイドラインが含まれています。

事前準備:環境のセットアップ

Stable Diffusion WebUIの起動

まず最初に、Stable Diffusion WebUIをAPI対応モードで起動する必要があります。通常の起動コマンドに以下のオプションを追加してください。

Windows環境の場合:

.\webui.bat --listen --api

Linux・Mac環境の場合:

./webui.sh --listen --api

ここで重要なのは、--listen--apiの両方のオプションを指定することです。--listenオプションは外部のマシンからの接続を許可し、--apiオプションはREST APIエンドポイントを有効にします。これらがないと、自動化ツールからWebUIにアクセスできません。

プロジェクトのセットアップ

プロジェクトをダウンロードまたはクローンした後、以下のコマンドで依存関係をインストールします。

cd stable-diffusion-api-automate
npm install

次に、環境設定ファイルを作成します。

cp .env.example .env

作成された.envファイルを編集して、WebUIのURLを設定します。

# 必須:WebUI APIのURL
SD_WEBUI_URL=http://192.168.100.105:7860

# オプション:デフォルトのファイルパス
CONFIGS_FILE=prompts/configs.jsonl
OUTPUT_DIR=out

URLは実際のWebUIが動作している環境に合わせて変更してください。ローカル環境ならhttp://localhost:7860、別のマシンで動作している場合はそのIPアドレスを指定します。

基本的な使い方

設定ファイルの作成

画像生成の設定は、JSONL(JSON Lines)形式のファイルに記述します。デフォルトではprompts/configs.jsonlが使用されます。基本的な設定例を見てみましょう。

{"prompt": "1girl, solo, green tracksuit, black hair, brown eyes, mischievous smile", "negative_prompt": "worst quality, bad quality", "width": 720, "height": 1280, "sampler_name": "Euler a", "steps": 28, "cfg_scale": 7, "seed": -1, "batch_size": 1, "n_iter": 2, "hires_fix": false}
{"prompt": "1girl, solo, red dress, blonde hair, blue eyes, gentle smile", "negative_prompt": "worst quality, bad quality", "width": 720, "height": 1280, "sampler_name": "Euler a", "steps": 28, "cfg_scale": 7, "seed": -1, "batch_size": 1, "n_iter": 1, "hires_fix": false}

各行が一つの画像生成設定を表しており、以下のパラメータを指定できます。

  • prompt: ポジティブプロンプト(生成したい要素)
  • negative_prompt: ネガティブプロンプト(避けたい要素)
  • width, height: 画像の解像度
  • sampler_name: サンプリング手法("Euler a", "DPM++ 2M Karras"など)
  • steps: サンプリングステップ数
  • cfg_scale: CFGスケール値
  • seed: ランダムシード(-1で自動生成)
  • batch_size: 一度に生成する画像数
  • n_iter: 繰り返し回数
  • hires_fix: 高解像度修正の有効/無効

実行コマンド

最もシンプルな実行方法は以下のコマンドです。

npm start

このコマンドを実行すると、カラフルなプログレスバーとともに画像生成が開始されます。画面には以下のような表示が現れます。

🚀 Starting Stable Diffusion automation...
📸 [████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░] 30.0% Config 3/10
🔄 Iter 1/2: [████████████████░░░░░░░░░░░░░░] 57.1% Step 16/28 | Overall: [████████░░░░░░░░░░░░░░░░░░░░] 28.6% ETA: 25.1s

詳細な進捗表示

プログレスバーの表示内容を詳しく説明します。

全体の進捗: 📸 [プログレスバー] パーセンテージ Config 現在/総数

  • 設定ファイル全体の処理進捗を表示

現在の生成状況:

  • 単一画像の場合: 🔄 [プログレスバー] パーセンテージ Step ステップ数/総ステップ数 ETA: 予想残り時間
  • 複数反復の場合: 🔄 Iter 現在/総数: [個別プログレス] | Overall: [全体プログレス] ETA: 予想残り時間

安全な終了方法

生成途中で停止したい場合は、キーボードのzキーを押してください。これにより、現在の処理を完了してから安全に終了します。

🛑 Graceful exit requested. Will finish current config and exit...

強制終了が必要な場合はCtrl+Cを使用できますが、この場合は現在の生成が途中で中断される可能性があります。

実用的な設定例とユースケース

キャラクターのバリエーション生成

同じキャラクターの異なる表情や衣装を生成したい場合の設定例:

{"prompt": "1girl, solo, school uniform, black hair, brown eyes, happy smile", "negative_prompt": "worst quality, bad quality", "width": 512, "height": 768, "sampler_name": "Euler a", "steps": 20, "cfg_scale": 7, "seed": -1, "batch_size": 1, "n_iter": 3, "hires_fix": false}
{"prompt": "1girl, solo, school uniform, black hair, brown eyes, serious expression", "negative_prompt": "worst quality, bad quality", "width": 512, "height": 768, "sampler_name": "Euler a", "steps": 20, "cfg_scale": 7, "seed": -1, "batch_size": 1, "n_iter": 3, "hires_fix": false}
{"prompt": "1girl, solo, school uniform, black hair, brown eyes, shy smile", "negative_prompt": "worst quality, bad quality", "width": 512, "height": 768, "sampler_name": "Euler a", "steps": 20, "cfg_scale": 7, "seed": -1, "batch_size": 1, "n_iter": 3, "hires_fix": false}

ファッションスタイルの比較

季節ごとのファッションや職業別の衣装を比較生成する場合:

{"prompt": "1girl, solo, spring floral dress, light cardigan, casual sneakers, mischievous smile", "negative_prompt": "worst quality, bad quality", "width": 720, "height": 1280, "sampler_name": "Euler a", "steps": 28, "cfg_scale": 7, "seed": 12345, "batch_size": 1, "n_iter": 2, "hires_fix": false}
{"prompt": "1girl, solo, summer tank top, denim shorts, sun hat, confident pose", "negative_prompt": "worst quality, bad quality", "width": 720, "height": 1280, "sampler_name": "Euler a", "steps": 28, "cfg_scale": 7, "seed": 12345, "batch_size": 1, "n_iter": 2, "hires_fix": false}
{"prompt": "1girl, solo, autumn sweater, plaid skirt, knee-high boots, thoughtful expression", "negative_prompt": "worst quality, bad quality", "width": 720, "height": 1280, "sampler_name": "Euler a", "steps": 28, "cfg_scale": 7, "seed": 12345, "batch_size": 1, "n_iter": 2, "hires_fix": false}

固定シードを使用することで、同じキャラクターの異なる衣装バリエーションを生成できます。

パラメータ比較テスト

異なるサンプリング手法やCFGスケールの効果を比較したい場合:

{"prompt": "masterpiece, 1girl, portrait, detailed face, soft lighting", "negative_prompt": "worst quality, bad quality", "width": 512, "height": 512, "sampler_name": "Euler a", "steps": 20, "cfg_scale": 7, "seed": 999, "batch_size": 1, "n_iter": 1, "hires_fix": false}
{"prompt": "masterpiece, 1girl, portrait, detailed face, soft lighting", "negative_prompt": "worst quality, bad quality", "width": 512, "height": 512, "sampler_name": "DPM++ 2M Karras", "steps": 20, "cfg_scale": 7, "seed": 999, "batch_size": 1, "n_iter": 1, "hires_fix": false}
{"prompt": "masterpiece, 1girl, portrait, detailed face, soft lighting", "negative_prompt": "worst quality, bad quality", "width": 512, "height": 512, "sampler_name": "Euler a", "steps": 20, "cfg_scale": 12, "seed": 999, "batch_size": 1, "n_iter": 1, "hires_fix": false}

高度なオプション設定

コマンドラインオプション

ツールには様々なコマンドラインオプションが用意されています。

# 詳細ログモード
npm start -- --verbose

# メタデータファイルの保存
npm start -- --save-meta

# カスタム設定ファイルの使用
npm start -- --configs-file my-custom-prompts.jsonl

# カスタム出力ディレクトリの指定
npm start -- --output-dir ./my-images

# 設定ファイルの内容ログを無効化
npm start -- --disable-log-config

# 複数オプションの組み合わせ
npm start -- --verbose --save-meta --configs-file fashion-configs.jsonl --output-dir ./fashion-renders

メタデータファイルの活用

--save-metaオプションを使用すると、各画像と一緒に詳細なメタデータファイルが保存されます。

{
  "config": {
    "prompt": "1girl, solo, green tracksuit, black hair, brown eyes",
    "negative_prompt": "worst quality, bad quality",
    "width": 720,
    "height": 1280,
    "sampler_name": "Euler a",
    "steps": 28,
    "cfg_scale": 7,
    "seed": -1,
    "batch_size": 1,
    "n_iter": 2,
    "hires_fix": false
  },
  "response": {
    "info": {
      "seed": 2605429855
    },
    "timestamp": "2025-08-14T12:34:56.789Z",
    "filename": "1723648392847-2605429855.png",
    "seed": 2605429855
  }
}

このメタデータファイルは、後で同じ設定で画像を再生成したり、成功した設定を分析したりする際に非常に有用です。

ファイル管理と出力構造

出力ディレクトリの構造

生成された画像は日付ベースで自動的に整理されます。

out/
└── 2025-08-14/
    ├── 1723648392847-2605429855.png
    ├── 1723648392847-2605429855.meta.json
    ├── 1723648394123-2605429856.png
    └── 1723648394123-2605429856.meta.json

ファイル名の形式は[タイムスタンプ]-[実際のシード値].pngとなっており、生成順序と使用されたシード値が一目で分かります。

設定ファイルの管理

複数の用途に応じて、異なる設定ファイルを作成することを推奨します。

prompts/
├── configs.jsonl              # デフォルト設定
├── fashion-configs.jsonl      # ファッション関連
├── character-configs.jsonl    # キャラクター生成
├── landscape-configs.jsonl    # 風景画
└── test-configs.jsonl         # テスト用設定

使用する際は--configs-fileオプションで指定します。

npm start -- --configs-file prompts/fashion-configs.jsonl

トラブルシューティング

接続エラーの対処法

症状: ❌ Error generating images: fetch failed

原因と対処法:

  1. WebUIが起動していない → WebUIを--apiオプション付きで起動
  2. URLが間違っている → .envファイルのSD_WEBUI_URLを確認
  3. ファイアウォールがブロックしている → ポート7860の通信を許可

プログレスが更新されない場合

症状: プログレスバーが長時間動かない

原因と対処法:

  1. サーバーが重い処理を実行中 → しばらく待機
  2. 複雑なプロンプトや高解像度設定 → パラメータを下げて試行
  3. メモリ不足 → batch_sizen_iterを小さくする

生成が失敗する場合

症状: 特定の設定で生成が失敗する

原因と対処法:

  1. プロンプトに無効な文字が含まれている → 特殊文字を除去
  2. 解像度が高すぎる → より小さな解像度でテスト
  3. モデルが読み込まれていない → WebUIでモデルが正しく選択されているか確認

JSONエラーの対処法

症状: SyntaxError: Unexpected token

原因と対処法:

  1. 設定ファイルのJSON形式が間違っている → オンラインJSONバリデータで確認
  2. 改行コードの問題 → テキストエディタで改行コードを確認
  3. 文字エンコーディングの問題 → UTF-8で保存し直す

メモリ不足エラー

症状: 生成途中でプロセスが停止する

対処法:

  1. batch_sizeを1に設定
  2. n_iterを小さくする
  3. 解像度を下げる
  4. WebUIのVRAM使用量を確認

効率的な作業フロー

段階的なアプローチ

  1. 小規模テスト: まず1〜2個の設定で動作確認
  2. パラメータ調整: 期待する結果が得られるまで設定を微調整
  3. バッチ実行: 最終的な設定でまとめて実行

設定の再利用

成功した設定は別ファイルに保存しておき、後で参照できるようにします。

# 成功した設定をバックアップ
cp prompts/configs.jsonl prompts/successful-configs-2025-08-14.jsonl

時間の有効活用

大量生成の際は、実行時間を予め計算します。例えば、ステップ数28、10個の設定、各設定で2回反復の場合、約30〜60分程度かかることが予想されます。

まとめ

このStable Diffusion自動化ツールを使うことで、手動では非常に時間がかかる大量の画像生成を効率的に行うことができます。設定ファイルの準備からトラブルシューティングまで、この記事で紹介した内容を参考に、ぜひ実際の制作現場で活用してください。

特に重要なポイントは以下の通りです:

  1. WebUIは必ず--listen --apiオプション付きで起動する
  2. 設定ファイルはJSONL形式で作成し、段階的にテストする
  3. プログレスバーでリアルタイムに進捗を確認できる
  4. zキーでいつでも安全に終了できる
  5. メタデータファイルを活用して設定の再現性を確保する

このツールを使いこなせば、創作活動やビジネス用途での画像生成作業が格段に効率化されることでしょう。


プロジェクトリポジトリ

本記事で紹介したツールの完全なソースコード、詳細なドキュメント、実用的な設定例、コントリビューションガイドラインをご確認いただけます。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?