- DynamicPromptsとは何か
- DynamicPromptsの使い方
こんにちは、「学びが人生を豊かにする」をテーマに本日は「StableDiffusionWebUI拡張機能のDynamicPrompts」についてです。
StableDiffusionWebUIで画像生成をしていると、色々とプロンプトを変えながら画像生成するのって結構面倒くさいですよね。
例えば、ポーズだったり表情だったり色々変えたいと思ったら、都度プロンプトを手修正して一回一回Generateしなくてはなりません。
そんな時におススメなのは「DynamicPrompts」という拡張機能です。
本記事では、DynamicPromptsとは何かとその使い方について詳しく解説します。
非常に便利な拡張機能なので是非本記事を参考に拡張機能を導入してみてください。
また、まだStableDiffusionWebUIをローカル環境にインストールして使ったことがないという場合は、下記記事にて最新(v1.5)の導入方法を解説しています。
簡単に自分のPCにインストールして使えますので、是非参考にしてください。
DynamicPromptsとは何か
DynamicPromptsの概要
DynamicPromtsはAUTOMATIC1111版StableDiffusionWebUIの拡張機能の一つです。
複数のワードをランダムにまたは組み合わせて多様なプロンプトを簡単に生成することができるようになる機能を提供してくれます。
例えば髪型や髪色などを事前に複数定義しておけば、特にプロンプトを直接変更しなくてもそれらをランダムに組み合わせて画像を生成してくれます。
下記は、「カメラアングル、髪色、髪型」をDynamicPromptでランダムに組み合わせて生成した画像の比較例です。
左側は通常の画像生成で「cowboy shot,black hair,long hair」とプロンプト入力しているのですが、生成される画像はほぼ同じようなパターンになります。
それに対して、右側の画像はDynamicPromtpsを使用しており、事前に定義した複数の髪形などのプロンプトを組み合わせて生成しています。
そのため、プロンプトを特に変更しなくても様々なバリエーションで画像生成が可能です。
DynamicPromtpsの機能
DynamicPromtpsが提供する主な機能は以下の通りです。
- ランダム生成プロンプト構文の使用
- ワイルドカードファイルの使用
- 組み合わせ生成モード
- 自動プロンプト追加(Magic Prompts)
ランダム生成プロンプト構文
DynamicPromtpsが提供する最も基本的な機能で、プロンプト入力文法にランダム生成構文を追加します。
使い方の詳細については後述しますが、これによりプロンプトの入力規則として複数のワードからランダムにプロンプトを選ぶことが可能です。
具体的には{word1|word2}とプロンプトに入力することで、ランダムにword1とword2がプロンプトとして採用されるようになります。
例えば、プロンプトに「{red|blue|white} hair」と入力すると3種類の髪色がランダムでプロンプトとして適用されるなどです。
採用されるプロンプトはランダムのため、例えば4枚画像生成すると下記のように赤髪3枚と白髪1枚などになったりもします。
ワイルドカードファイルの使用
先ほどはプロンプトに複数のワードを{}を使用して入力しましたが、ファイルから複数のワードをランダムに読み込むことも可能です。
それがワイルドカードファイルになります。
例えば先ほどの「{red|blue|white} hair」をプロンプトに入力する代わりに、これらをテキストファイルにリストとして書いておきます。
プロンプトにはどのワイルドカードファイルからワードを読み込むかを指定することで、プロンプトにワードを色々と並べなくても良くなります。
ランダム生成したいワードが2,3種類であればプロンプトに直接書いても問題ありませんが、ワードの候補が多くなるとテキストにまとめておくと非常に便利です。
組み合わせ生成モード
DynamicPromptsはランダムにプロンプトのワードを決めてくれますが、全ての組み合わせで画像生成することも可能です。
それが組み合わせ生成モードです。
例えば髪色と髪型でそれぞれ2種類のパターンがある場合、2×2の合計4パターンの組み合わせで画像を生成してくれます。
シード値の固定もできたりするので、各バリエーションを比較したいときなど便利です。
自動プロンプト追加(Magic Prompts)
DynamicPromptsの機能として少し特殊な機能ですが、自分でプロンプトを書く代わりに自動でプロンプトを追加してくれる機能もあります。
これはMagic Promptsと呼ばれる機能ですが、プロンプト生成モデルを使用し画像のスタイルや質感などのプロンプトが自動で追加されます。
これにより、バリエーションの変化や新しいプロンプトの発見などに役立てることが可能です。
上記の例では、プロンプトに「colorful, baroque, beautiful」などのワードが追加されたのですが、全体的に少し高級感が増していることが分かります。
DynamicPromptsの使い方
DynamicPromptsの使い方として、基本的な使い方と少し応用的な使い方の二つについて紹介したいと思います。
インストール方法に関しては他の拡張機能と同じなので、以下GithubのURLから拡張機能をインストールしてください。
拡張機能のインストール方法は下記で解説もしています。
DynamicPrompts基本的な使い方
ランダム生成プロンプト構文の使い方
まずは、最も基本となるランダム生成プロンプト構文の使い方です。
先ほどの機能紹介の章でも少し説明しましたが、ランダム生成プロンプト構文では{}を使用して、ランダム生成を行います。
文法としては下記のように、複数のワードを「|」で区切り、{}で括るというものになります。
{word1|word2|・・・}
各ワードは1単語でも「long hair,black」のようにカンマ区切りされた複数単語でもOKです。
少し特殊な使い方としては、ワードを使うか使わないかをランダムで選択させることもできます。
その場合{word|}と1単語だけ入力しパイプ記号「|」の後ろは何も単語は入力しないという書き方です。
これにより、特定の単語の指定有無のバリエーション画像が簡単に生成できます。
ワードはランダムに選ばれますが、どのワードを多く選んでほしいのかを重みづけで定義することも可能です。
これは下記のように各wordの前に二重コロンで重みを追加してください。
{wights1::word1|wights2::word2|・・・}
例えば{0.8::black|0.2::white}とすることで80%の割合でblackのワードを使用してくれます。
複数のワードを使用させることも可能です。
これは二つのドル記号「$$」と使用するワード数を下記のように定義します。
{Num$$word1|word2|・・・}
例えば、{3$$smile|angry|crying|open mouth|closed eyes}と入力すると、これらのワードから3つを使用するようになります。
基本となる構文はこれら3つになりますが、他にも細かな制御も可能です。
少しマニアックになるので省略しますが、詳細は公式ドキュメントを確認してください。
これらの機能をStableDiffusionWebUI上で実際に使うには拡張機能をインストール後、下記画面のようにDynamicPrompts機能にチェックを入れます。
後は、先ほど説明した通りの構文でプロンプトに入力すればOKです。
DynamicPromtsは特にこれ自体で処理速度が遅くなるようなものではないので、基本的には常に有効化しておいて問題ありません。
ちなみにプロンプトの文法については下記記事でも詳しく解説しているので、基本事項についてもう少し知りたい人は良ければ読んでみてください。
ワイルドカードファイルの使い方
ワイルドカードは専用のテキストファイルを用意し、それらを読み込んで使用します。
例えば髪型に関するワイルドカードを使用したい場合、テキストファイルに髪型のリストを記載してください。
基本的には下記のように1行1単語で記載しておき、ファイル名はプロンプトで指定するので分かりやすい名前にしておくと良いでしょう。
civitaiにWildscardでサンプルが配布されているので、それらも参考にすると良いかと思います。
作成したファイルはDynamicPromptsをインストールしたディレクトリのwildcardsフォルダ配下に格納してください。
stable-diffusion-webui\extensions\sd-dynamic-prompts\wildcards\
ファイルは直接上記ディレクトリ配下でも良いですし、wildcardsの下に自分でさらにディレクトリを作成しフォルダ分けするのでもOKです。
プロンプトで入力するときにはアンダーバー二つでファイル名を括って使用します。
例えばファイル名が「hair.txt」の場合、「__hair__」とプロンプトに入力しましょう。
フォルダ分けしている場合には、「__フォルダ名/hair__」と入力してください。
一応ファイル名が一意であればフォルダ名は省略しても良いですが、フォルダ分けしていると重複するリスクがあるので付けておいた方が無難です。
DynamicPromptsの応用的な使い方
DynamicPromptsは基本的にはプロンプトに直接入力するかワイルドカードを読み込んで使用します。
応用的な使い方として、StableDiffusionWebUIの各種設定内容を使用する方法を解説します。
組み合わせ生成
DynamicPromptsの機能説明でも紹介しましたが、全組み合わせでの画像生成が可能です。
これは非常に簡単で、下記画像のように設定欄で「Combinational generation」にチェックを入れればすべての組み合わせで画像を生成してくれます。
「Conbinational generation」の下には「Max generations」と「Combinational batches」という二種類のバーがあります。
前者の「Max generations」は組み合わせで生成する枚数の最大数を制限する機能で、例えばこの値を4とすると組み合わせがそれ以上でも4枚で画像生成を終了します。
0であればすべての組み合わせを生成するので、基本は0で良いかと思います。
その次の「Combinational batches」は画像生成の繰り返し回数です。
この値を例えば2とすると全組み合わせの画像生成を2回実行してくれます。
こちらは通常は1で運用するのが多いかと思います。
自動プロンプト追加(Magic Prompts)の使い方
Magic Promptsを使用する場合には、DynamicPrompts設定欄の「Magic prompt」にチェックを入れます。
次にその下の「Magic prompt model」からプロンプトモデルを選択してください。
その他はとりあえずはデフォルトのままで大丈夫です。
設定した後に、通常通り画像生成のGenerateを実行すると初回のみプロンプトモデルを自動でDLして適用します。
自動ダウンロードされるモデルは約500MB~とサイズが多いため、少し時間がかかることに注意してください。
正常に動作すれば画像生成後に画像のメタ情報から確かにプロンプトが追加されていることを確認できます。
パラメタの調整や追加したくないパラメタの指定なども可能ですが、こちらも詳細については公式ドキュメントのMagic Promptsの部分を参照してください。
シード値の固定
良く使用されるオプション機能としてシード値の固定があります。
これは、その名の通り組み合わせやランダム生成時にシード値を固定しておくというものです。
有効化したい場合には、下記画像のように「Advanced options」の「Fixed seed」にチェックを入れてください。
通常はこれにチェックを入れない場合、生成される画像は全て異なるシード値のデータとなります。
例えば、下記画像は上段が通常のDynamicPromptsの組み合わせ生成で、下段が「Fixed seed」にチェックを入れたものです。
上段では各画像のシード値が1づつ足されていますが、下段は全て同じシード値での生成になります。
色々なバリエーションを生成したい場合には通常の生成方法で行い、プロンプトの比較などをしたい場合にはシード値を固定するなどといった使い方が可能です。
まとめ
本記事ではAUTOMATIC1111版StableDiffusionWebUIの拡張機能であるDynamicPromptsの使い方などについて詳細を解説しました。
DynamicPromptsは複数のワードをランダムまたは組み合わせで自動的に選んでくれることで、様々な画像を簡単に生成してくれる便利な機能です。
ワイルドカードを使用するには、事前にバリエーションを増やしたい要素のプロンプトを準備する必要がありますが、その効果は非常に大きいです。
導入方法や使い方は非常にシンプルでありながら、生成できる画像のバリエーションを豊かにしてくれることで、お気に入りの画像を増やしてくれるでしょう。
拡張機能としては非常に人気の高い機能でもあるので、是非導入して画像生成をより便利に使いこなしてください。