みなさんStable Diffusion楽しんでますか?
でも、同じような画像ばかり生成されて・・・いつもとは違った画像も生成したいですよね!
そんなときは拡張機能のひとつ、Dynamic Promptsを使ってみましょう!
- Dynamic Promptsのインストール方法
- Dynamic Promptsを使用して、プロンプトをランダム出力する方法
Dynamic Promptsとは
Dynamic Promptsを導入すると、プロンプトに対してワイルドカード機能が使えます。
ワイルドカードとは
あらかじめ用意した複数のプロンプトからランダムで選択する機能です。
例えば、【赤、黄、青】髪型 のように設定すると、赤、黄、青色の髪型用プロンプトがランダムで生成されるわけです。
ワイルドカードの使用例
人物の画像を生成する場合、体や背景などをプロンプトで記述していきますよね。
通常はプロンプトが固定されているので、バッチ回数を増やしても同じような画像が生成されるだけです。
そこで人物のプロンプトに対して、ワイルドカードを設定してみましょう。
髪型や体形、服装などをワイルドカードで設定すると、画像生成する度にプロンプトがランダムで設定され、思いがけない画像が生成されます。
アイデアが思いつかない場合や、煮詰まったときに使うのも有効だね!
Dynamic Promptsのインストール方法
stable diffusion webUIを起動したら、上部に表示されるタブ一覧から「Extensions」をクリックします。
Extensionsタブ内の「Available」をクリックします。
「Extension index URL」に表示されているテキストを確認してください。
「https://raw.githubusercontent.com/AUTOMATIC1111/stable-diffusion-webui-extensions/master/index.json」が入力されていれば問題ありませんが、空欄であったり別の記載であった場合は以下をコピペしてください。
https://raw.githubusercontent.com/AUTOMATIC1111/stable-diffusion-webui-extensions/master/index.json
localizationのチェックを外したら、「Load from:」ボタンをクリックします。
一覧の中から「Dynamic Prompts」を探し、右に表示される「install」ボタンをクリックします。
Dynamic Promptsはブラウザの検索機能か、Hide extensions with tagsの下にある検索窓に「Dynamic」と入力すればヒットします。
拡張機能をインストールした場合は、リロードする必要があります。
「Extensions」タブ→「Installed」サブタブ内のApply and restart UIをクリックするか、
「Settings」タブの上部に表示されているReload UIをクリックしましょう。
Dynamic Promptsの使い方
Dynamic Promptsでランダム画像を生成する方法はいくつか用意されています。
- ワイルドカードファイルを利用する
- ワイルドカードファイルを自作する
- プロンプトでワイルドカードを設定する
上記の中でも、ワイルドカードファイルを使ったランダム生成が一番簡単なのでおすすめです。
ワイルドカードファイルでランダム生成する
最初は設定済みのワイルドカードを使用してみましょう。
ダウンロードしたファイルは[WebUIフォルダ]→「extensions」→「sd-dynamic-prompts」→「wildcards」フォルダに保存します。
ワイルドカードを使用したい場合は、ワイルドカードの管理タブから使用したいワイルドカードをクリックします。
ワイルドカードファイル欄にキーワードが表示されるので、このキーワードをプロンプト欄にコピペします。
ワイルドカードキーワードは「__ワイルドカードファイル名__」になっています。
(前後のアンダーバーは2個づつ必要)
ワイルドカードの管理タブではワイルドカードを編集することも可能だよ
ワイルドカードを使用する場合、プロンプトによっては工夫が必要になります。
例えば色が設定されているワイルドカードを髪色に反映したい場合は、「ワイルドカードキーワード hair」と入力します。
こうすることで、実際のプロンプトは「blue hair」や「pink hair」のように、ランダムで出力されます。
プロンプトの設定が終わったら画像生成するだけです。
Dynamic Promptsは初期設定で有効化されています。
無効化したい場合には、Dynamic Promptsのメニューを開いて「Dynamic Prompts enabled」のチェックを外すだけです。
ワイルドカードを自作する
ワイルドカードファイルは以下手順で自作することも可能です。
テキストファイルを作成しファイル内にプロンプトを記述します。
ランダムに生成したいプロンプトごとに改行します。
また、ファイル名はプロンプトの入力時に使用するので、分りやすい名前にしましょう。
ワイルドカードファイルの書き方例
「red hair」、「blue hair」をランダムにしたい場合は、間に改行を入れます。
red hair
blue hair
作成したファイルは[WebUI解凍したフォルダ]→「extensions」→「sd-dynamic-prompts」→「wildcards」フォルダに保存します。
プロンプトで直接ワイルドカードの設定をする
ファイルを使用しなくてもワイルドカード機能は使用できます。
簡単なものであれば、この手順がおすすめです。
x個の中から1つを選択する
「red hair」「blue hair」「pink hair」3つの中から1つをランダムで選択してほしい場合は、{}で囲んで|で区切ります。
{red hair|blue hair|pink hair}
x個の中から2つを選択する
設定したプロンプトから、ランダムで2つを選択してほしい場合は2$$を追記します。
{2$$ red hair|blue hair|pink hair}
また選択する数をランダムにすることも可能です。
その場合はx-y$$と記述します。
例として、1~3個ランダムで選択してほしい場合は、1-3$$と記述します。
{1-3$$ red hair|blue hair|pink hair}
他にもいろいろとできますが、これ以上は使用頻度がかなり少ないと思います。
ワイルドカード内の全てのパターンを出力したい場合
ワイルドカード内に記述したプロンプトを、全て出力することも可能です。
例えば作成した髪型が、実際にどのような画像になるのかテストしたい場合に便利です。
ワイルドカードの全パターンを生成したい場合は、Dynamic Promptsの「組み合わせ生成」機能を使用します。
「組み合わせ生成」をチェックするとバッチ数は無視されてワイルドカード内全てのプロンプトが画像生成されます。
この時、出力するワイルドカードの数に注意しましょう。
組み合わせパターン全てを出力するので、複数のワイルドカードを使用する場合は、画像生成枚数が大量になる可能性があります。
使用時は、後述する「Max generations」で生成枚数を調整しましょう。
ワイルドカードはスタイルとして使用することも可能
ここまで紹介したワイルドカード機能ですが、スタイルとして保存することも、もちろん可能です。
お気に入りのワイルドカードのパターンが作成できたらスタイルとして保存しておきましょう。
スタイルについては↓の記事で紹介しているので、ご参考ください。
Dynamic Promptsの設定について
Dynamic Promptsの設定項目の詳細を紹介します。
Dynamic Prompts
Dynamic Promptsの基本設定を行います。
Dynamic Promptsの設定項目の詳細を確認する
- Dynamic Prompts enabled
-
チェックするとDynamic Promptsを有効化します。
デフォルトで有効になっています。Dynamic Promptsはプロンプトにワイルドカードを指定しなければ動作しないのでチェックしたままで問題ありません。
- Combinatorial generation
-
ワイルドカードのパターンを全て生成します。
Max generationsと、Combinatorial batchesを組み合わせて設定します。Fixed seedと併用して、ワイルドカード内のプロンプトが画像にどのように影響するのか確認するときに重宝します。
チェックするとBatch countとBatch sizeの設定は無視されます。
- Max generations
-
Combinatorial generation機能で生成する場合の生成枚数を設定します。
0はワイルドカードの全てを生成します。
1以上の設定で生成枚数を指定します。 - Combinatorial batches
-
Combinatorial generationによる画像生成の回数を設定します。
例としてMax generations = 3、Combinatorial batches = 3の場合、合計9枚の画像が生成されます。
Prompt Magic
プロンプト生成モデルを使用し、プロンプトをランダムに生成し追加する機能です。
Prompt Magicの設定項目の詳細を確認する
- Magic prompt
-
チェックするとPrompt Magicが有効化されます。
- Max magic prompt length
-
生成するランダムプロンプトの最大長を設定します。
- Magic prompt creativity
-
生成するプロンプトの創造性を調整します。
- Magic prompt model
-
プロンプト作成モデルを選択する。
生成モデルによって出力されるプロンプトの傾向が異なるので、使用するチェックポイントモデルとの組み合わせが重要になります。
初回はモデルのダウンロードを実行するので、生成まで時間がかかります。
- Magic prompt blocklist regex
-
除外するプロンプトをこのテキストボックスに記述します。
除外プロンプトは正規表現による記載が可能です。
正規表現については「サルにもわかる正規表現入門」の記事がわかりやすいです。 - I’m feeling lucky
-
lexica.art APIを使用して、ランダムなプロンプトを作成・追加します。
lexicaはStable Diffusionで生成された画像が閲覧できるギャラリーサイトです。
- Attention grabber
-
生成されるランダムプロンプトに対してランダムで強調されます。
Minimum attentionとMaximum attentionを組み合わせて設定します。
- Minimum attention
-
Attention grabberで生成するプロンプト強調の最小値を設定します。
- Maximum attention
-
Attention grabberで生成するプロンプト強調の最大値を設定します。
- Don’t apply to negative prompts
-
Prompt Magicによるランダムプロンプトをネガティブプロンプトに適用するか設定できます。
デフォルトではチェックされているので、プロンプトにのみランダムプロンプトが追加されます。
Need help?
ワイルドカードプロンプトの書式・使い方を閲覧できます。
Jinja2 templates
Jinja2 templatesは「Enable Jinja2 templates」をチェックすることで使用可能です。
この機能は高度なワイルドカードテンプレートが使用できます。
forやifなどの条件分岐文も使用可能になり、通常よりも高度なワイルドカードプロンプトが作成できます。
Advanced options
生成の際に使用するシード値の設定が可能です。
Advanced optionsの設定項目の詳細を確認する
- Unlink seed from prompt
-
ワイルドカードに対してシード値がランダムになります。
画像生成用Seed値を固定するとワイルドカードも固定されますが、チェックするとワイルドカードはランダムに生成されます。
- Fixed seed
-
シード値を固定します。
Combinatorial generationと組み合わせることで、プロンプトが画像に与える影響を確認することが可能です。
- Don’t generate images
-
チェックしても特に動作に変化はありません。
和訳すると「画像を生成しない」ですが、きちんと画像が生成されます。
(公式から説明が無いので、わかり次第追記します)
まとめ
今回は、Stable DiffusionのDynamic Promptsを紹介しました。
ワイルドカードを使用すれば思いもよらない画像が生成できるので、まんねり化してしまった場合はぜひ導入してみましょう。
作業しながら適当な画像を生成してガチャを引くのもおすすめだよ!
コメント