Stable DiffusionのWildcardsが複数指定で適用されない原因と正しい記述方法

ブラウザ

Stable Diffusionの生成環境でWildcardsを利用すると、プロンプトを自動的に置換できるため、キャラクターや背景、服装などのバリエーション作成に便利です。

しかし、Wildcardsを複数指定した際に一部だけ適用されなかったり、2つ以上の指定をした場合だけ正常に動作しないケースがあります。この記事では、Wildcardsの記述方法や複数指定時に起こりやすい原因、正しく動作させるための確認ポイントを解説します。

Stable DiffusionのWildcardsとは何か

Wildcardsとは、あらかじめ用意したテキストファイルの内容をプロンプト内へランダムに展開する機能です。主にStable Diffusion WebUIの拡張機能であるDynamic Promptsなどで利用されています。

例えば、以下のようなファイルを作成します。

__color.txt__

red
blue
green

プロンプトに「__color__」と記述すると、生成時に「red」「blue」「green」のいずれかへ自動的に置き換えられます。

大量のバリエーションを試したい場合や、同じ構図で違う要素を生成したい場合に便利な機能です。

Wildcardsを2つ以上指定した場合に適用されない原因

Wildcardsを複数利用するときに発生する問題の多くは、記述方法の間違いやDynamic Prompts側の構文解釈が原因です。

例えば、以下のような書き方をしている場合があります。

__character__2__style__

このようにWildcardsの後ろへ数字や記号を直接追加すると、拡張機能によってはファイル名として認識されなくなります。

Wildcardsは基本的に「__ファイル名__」という形式で置換対象を指定するため、複数指定したい場合は、それぞれを独立した形で記述する必要があります。

例。

__character__ __style__

この場合はcharacter.txtとstyle.txtの内容がそれぞれ展開されます。

2$$のような記述が動作しない理由

Wildcardsで「2$$」のような記述を使用して複数展開を試みる場合、利用している拡張機能の構文と合っていない可能性があります。

Dynamic Promptsでは、通常のWildcards指定と、同じWildcardsを複数回展開する構文は別に扱われます。

例えば、同じファイルから複数の候補を取得したい場合は、使用している拡張機能が対応している構文を確認する必要があります。

バージョンや設定によって対応状況が異なるため、「__ファイル名__」では動作するが、「2$$__ファイル名__」のような独自記述では無視されることがあります。

Wildcardsを複数使う正しい記述例

複数のWildcardsを組み合わせる場合は、基本的に半角スペースで区切って指定します。

例。

__hair__ __eyes__ __clothes__

この場合、hair.txt、eyes.txt、clothes.txtの3種類からそれぞれランダムに値が選択されます。

例えば、以下のようなファイルを用意します。

ファイル 内容例
hair.txt long hair、short hair
eyes.txt blue eyes、green eyes
clothes.txt dress、jacket

生成時には「long hair blue eyes dress」のように自動変換され、組み合わせ違いの画像を簡単に作成できます。

Wildcardsが反映されない場合の確認ポイント

記述を修正してもWildcardsが動作しない場合は、以下の点を確認してください。

  • Dynamic Promptsなど必要な拡張機能が有効になっているか
  • Wildcardsファイルの保存場所が正しいか
  • ファイル名とプロンプト内の名前が完全一致しているか
  • 全角スペースや特殊記号が混ざっていないか
  • Stable Diffusion WebUIを再起動したか

特にファイル名の違いはよくある原因です。「character.txt」と「character .txt」のように見た目では分かりにくい違いでも認識されません。

また、Dynamic Promptsのアップデートによって構文仕様が変更される場合もあるため、利用しているバージョンに対応した記述方法を確認することも重要です。

まとめ|Wildcardsは基本構文を守ることで安定して利用できる

Stable DiffusionのWildcardsが複数指定時だけ動作しない場合、多くは独自の記述方法や複数展開用の構文が対応していないことが原因です。

まずは「__ファイル名__」形式で正しく指定し、複数利用する場合はそれぞれを分けて記述することで正常に動作する可能性が高くなります。

Wildcardsは正しく設定すれば大量のバリエーション生成を効率化できる便利な機能です。使用している拡張機能の仕様を確認しながら、環境に合った記述方法を利用しましょう。

コメント

タイトルとURLをコピーしました