当ブログにはプロモーション、アフィリエイト広告が含まれます。

【Stable DiffusionWeb UI】「Dynamic Prompts」の使い方!プロンプトのランダム入力が可能に

髪型や服装、髪色などをランダム入力したいと思ったことはないでしょうか?

特定の要素についてこだわりがない、またはあえて異なる要素にしたいときは、ランダム入力した方が生成効率は上がります。

Stable Diffusion Web UIでランダム入力するには「Dynamic Prompts」が非常に便利です。

基本のランダム入力の他、特定のプロンプトから自動でプロンプトを生成してくれる機能などもあります。

今回はこの「Dynamic Prompts」の使い方について、詳しく解説しています。

こんな人におすすめ
  • とりあえずランダム入力したい
  • 有志が作ったランダム構文を使って画像を生成したい
  • ランダム構文を自動で生成したい

Stable Diffusion Web UIのインストールはこちら。

Dynamic Promptsって何ができるの?

https://www.pexels.com/ja-jp/photo/5428836/

Dynamic Promptsはプロンプトのランダム入力ができる拡張機能です。

例えば{cat|dog|bird}とプロンプトを書くと、この中の1つを採用して画像が生成できます。

またワイルドカード機能も付いており、あらかじめ対応するテキストファイルにプロンプト入力しておけば、その中からランダム入力も可能です。

これらのファイルは自分でも作れますし、ネット上ではいろいろな方が提供しています。

Dynamic Promptsを使うと、さまざまなプロンプトの組み合わせを簡単に試すことが可能です。

Dynamic Promptsのインストール

https://www.pexels.com/ja-jp/photo/735911/

Dynamic Promptsは。Stable Diffusion Web UIの「Extensions」タブからインストールできます。

まず「Extensions」→「Available」タブを開き、「Load from」をクリックします。

そうするとインストール可能な拡張機能一覧が表示されるので、「Search」に「Dynamic Prompts」と入力して絞り込みます。

「Dynamic Prompts」が表示されるので、右側にある「Install」をクリックしてください。

「Installed」タブにいき、「sd-dynamic-prompts」があれば正しくインストールされています。

「Apply and restart UI」をクリックして、Web UIをリロードしてください。

なお、URLから直接インストールすることも可能です。

「Extensions」→「Install from URL」タブを開き、下記URLを入力して「Install」をクリックします。

https://github.com/adieyal/sd-dynamic-prompts.git

あとは上記と同じく「Apply and restart UI」をクリックして、Stable Diffusion Web UIをリロードしてください。

Dynamic Promptsの使い方

https://www.pexels.com/ja-jp/photo/3615716/

デフォルトで有効になっていると思いますが、一応有効化のチェックをします。

txt2imgタブの左下に「Dynamic Prompts」という項目が追加されるのでクリックして開いてください。

中にある「Dynamic Prompts enabled」にチェックが入っていれば問題ありません。

手動でランダム構文を入力する方法

プロンプトに直接ランダム構文を入力する場合は、波括弧を使いプロンプトをパイプで区切ります。

{プロンプト1|プロンプト2|プロンプト3}

例えば{cat|dog|bird}で9枚画像生成してみると、3つの要素からランダムで1つ選ばれているのが分かると思います。

プロンプトに重みをつける

ランダム構文内のプロンプトにそれぞれ重みをつけることができます。

重みをつけると、それぞれのプロンプトが採用される確率を変化させられます。

重みは{値::要素}という形で指定が可能です。

{0.1::cat|0.9::dog|0.2::bird}

上記は猫が10%、犬が90%、鳥が20%で採用されるように指定しています。

相対的なものなので合計値を1にする必要はありません。

実際に生成してみると犬が6枚、鳥が3枚、猫は採用されず、設定した確率が反映されているのがわかるかと思います。

複数の要素を採用する

上記の書き方の場合、波括弧内から1つの要素しか採用されません。

これを犬と猫、鳥と犬のように2つの要素を採用するよう書くことができます。

最初に「値$$」と入力すれば、値の数だけ波括弧内の要素を採用します。

{2$$cat|dog|bird}

一部融合してしまっている画像もありますが、波括弧内から2つの要素をランダムで採用することができました。

なお、値は1-2のように範囲指定することもできます。

最小で1つ、最大で2つが選ばれるように指定するにはハイフンを使います。

{1-2$$cat|dog|bird}

最小値と最大値は省略することも可能です。

{-2$$~} {1-$$~}

こうすると波括弧内の要素が1つ、または2つ選ばれているのがわかると思います。

ワイルドカードでテキストファイルから要素を取得

ワイルドカードは、テキストファイル内のプロンプトをランダムに呼び出せる構文です。

例えば__name__と書いた場合、name.txtに記載されたプロンプトからランダムで入力ができます。

この__name__をワイルドカードと言います。

まずワイルドカードを使うためにテキストファイルを作成します。

今回はhair.txtというファイルを作成して、以下のように書きました。

Red hair
blue hair
blond hair

改行で1つのプロンプトとして取り込めます。

作成したファイルを以下のパスに移動します。

stable-diffusion-webui\extensions\sd-dynamic-prompts\wildcards

データを反映させるため、Stable Diffusion Web UIをリロード、もしくは再起動してください。

この状態でプロンプトに__hair__と入力すると、hair.txtの中からランダムでプロンプトが採用されます。

テキストファイルから複数の要素を採用する

ワイルドカードに対しても「値$$」が使用できます。

ワイルドカードの2$$とつけると、テキストファイル内から2つ要素を採用します。

2$$__hair__

テキストファイル内で波括弧も使える

hair.txt内で波括弧とパイプを使うことも可能です。

Red hair
{blue hair|green hair|purple hair}
blond hair

こうすると5つの要素からランダムでプロンプトが採用されます。

テキストファイル内でワイルドカードも使える

テキストファイル内にワイルドカードを書いて、別のテキストファイルを読み込むという事が可能です。

例えばhair.txt内に「__hair-style__」と記入しておくと、ワイルドカードで__hair__を使用した場合、__hair-style__からもプロンプトが採用されます。

※hair.txtの中身
Red hair
__hair-style__
blond hair

テキストファイルを複数指定する

ファイル名が一致するテキストファイルが複数ある場合、それらをまとめて指定することができます。

例えばhair-style.txtとhair-color.txt、2つからランダムで要素を取得したい場合は以下のように書けます。

__hair*__

こうすると最初にhairというファイル名がついている全てのテキストファイルから、ランダムで要素を取得します。

基本的なランダム構文の書き方は以上です。

他にも変数をつけたりプロンプトからテキストに値を渡したりできますが上記より少し複雑なので、詳細を知りたい方は公式サイトで確認してください。

https://github.com/adieyal/sd-dynamic-prompts/blob/main/docs/SYNTAX.md

ワイルドカード用のテキストファイルを追加する方法

ワイルドカードで使用できるテキストファイルは、さまざまな方法で追加することができます。

コレクションから追加する方法

Dynamic Promptsにはデフォルトでコレクションというフォルダがあり、その中にいくつかテキストファイルが用意されています。

\stable-diffusion-webui\extensions\sd-dynamic-prompts\collections

ここから追加したいテキストを探して、それをコピーすれば使えるようになりますが、Stable Diffusion Web UI上で操作が可能です。

「Wildcards Manager」というタブがあるので、そちらを開いてください。

左下に「Select a collection」というプルダウンメニューがあるので、そこから追加したいファイルを選択します。

ここにcollectionsフォルダのファイルが表示されます。

「artists」を追加したい場合は「artists」を選択後に「Copy collection」をクリックします。

そうするとartistsがツリーに追加され、wildcardsフォルダ内にartistsフォルダが追加されます。

Stable Diffusion Web UI上で中身を確認したり、編集したりが可能です。

また下にあるボタンの機能は、それぞれ以下の通りです。

Save wildcards編集した内容を保存する
Overwrite existingコレクションから同名ファイルを追加するときに上書きする
Refresh wildcardsワイルドカードを更新する
Delete all wildcards全てのワイルドカードを削除する

ただDelete all wildcardsだけクリックしてもエディター、collection、wildcardsに変化がありませんでした。

ですので、どこのワイルドカードを削除できる機能なのかよくわかりませんでした。

外部のテキストファイルを追加する方法

有志の方が作成したワイルドカード用のファイルを。CivitAIなどでダウンロードすることができます。

CivitAIにあるワイルドカード一覧

Civitai | Share your models

ダウンロードしたファイルをwildcardsフォルダに追加すれば、使用可能です。

Dynamic Promptsで使えるオプション

https://www.pexels.com/ja-jp/photo/207924/

画像生成時に設定できるオプションについて解説します。

txt2imgタブに追加されている「Dynamic Prompts」から設定可能です。

Dynamic Prompts enabled

チェックを入れるとDynamic Promptsを有効化できます。

Combinatorial generation

チェックを入れると入力したランダム構文の要素を全て生成します。

例えば{cat|dog|bird}と入力した場合、猫、犬、鳥の画像を全て生成できます。

Max generations (0 = all combinations - the batch count value is ignored)

Combinatorial generationにチェックが入っているとき有効なオプションです。

0は入力したランダム構文から全ての要素が生成されます。

値を変えると生成する枚数を制限できます。

要素が3つでもここの値を2にすると、2枚しか生成されません。

Combinatorial batches

Combinatorial generationを何回実行するか指定できます。

例えばMax generationsで2を指定、Combinatorial batchesも2を指定すると、2枚生成を2回実行するということなので、計4枚画像が生成できます。

ランダム構文の要素が3つ、Max generationsは0、Combinatorial batchesが2の場合は計6枚画像が生成されます。

Prompt Magic

入力したプロンプトに他のプロンプトを自動で付け加えてくれる機能です。

Magic promptをONにして「Gustavosta/MagicPrompt-Stable-Diffusion」というモデルを使用します。

1girl,smileのみ入力して生成すると、自動で他のプロンプトを付け足してくれます。

生成された画像

生成時のプロンプト

1girl,smile dark green dress, symmetrical eyes, symmetrical face, long curly black hair, twisted braids, golden watery eyes, secret, cool colors

このように入力した要素に対して、他のプロンプトを自動で付け加えてくれるのがMagic promptです。

Magic promptもさまざまなオプションがあります。

Magic prompt

チェックを入れると有効化できます。

Max magic prompt length

Magic prompt使用時に生成されるプロンプトの最大長を決められます。

Magic prompt creativity

Magic promptの創造性を調整できるものです。

生成画像に変化を与えたいときは値を変えると多様性が増すかもしれません。

Magic prompt model

使用するモデルを選ぶことができ、使用するモデルによって自動で追加されるプロンプトも変化します。

なお、初回のみモデルデータが自動でダウンロードされます。

それぞれのモデルは約300MB~1GBほどあるので、容量に注意してください。

GitHub - adieyal/sd-dynamic-prompts: A custom script for AUTOMATIC1111/stable-diffusion-webui to implement a tiny template language for random prompt generation
A custom script for AUTOMATIC1111/stable-diffusion-webui to implement a tiny template language for random prompt generat...

Magic prompt blocklist regex

Magic promptで追加される要素の中から、特定の要素をブロックできます。

例えばgreen hairを除外したい場合はそのまま「green hair」と入力します。

2つの要素を除外したい場合は間にパイプを入れます。

green hair|purple hair

I'm feeling lucky

チェックを入れるとlexica.art APIを使用してランダム構文を自動で生成してくれます。

Attention grabber

チェックを入れると生成されるプロンプトに対して、ランダムで強調がつきます。

例)(apple:1.1)

Minimum attention/Maximum attention

Attention grabber使用時に強調の強さを指定できます。

Minimum attentionが最小値、Maximum attentionが最大値です。

デフォルトだと1.1~1.5の間で強調がつきます。

Don't apply to negative prompts

Magic promptをネガティブプロンプトに使用するかどうかです。

チェックが入っていればネガティブプロンプトには入力されません。

Need help

Combinationsやワイルドカード、変数などの使い方を確認できます。

Jinja2 templates

公式サイトを見ると「プロンプトを命令的に定義できる実験的な機能」と書いてあります。

高度の機能なようで、スクリプトの作成に慣れているユーザーの方を推奨しています。

具体的な使い方についてはこちらを確認してください。

https://github.com/adieyal/sd-dynamic-prompts/blob/main/jinja2.md

Advanced options

Unlink seed from prompt

ランダムでシード値が与えられます。

Fixed seed

画像には同じシード値が与えられますが、プロンプトはランダム入力されます。

Don't generate images

直訳すると「画像を生成しない」なのですが、チェックを入れても画像は生成されました。

公式にも記載がなかったので、現時点でどういう機能なのかわかりませんでした。

Dynamic Promptsの使い方まとめ

今回はDynamic Promptsの使い方について、詳しく解説しました。

見出し
  • Dynamic Promptsって何ができるの?
  • Dynamic Promptsのインストール
  • Dynamic Promptsの使い方
  • ワイルドカード用のテキストファイルを追加する方法
  • Dynamic Promptsのオプション

適当なワイルドカードを使うとプロンプトの使い方あるんだ!みたいな発見もあるので、単純に面白いです。

ただ第三者が作成したワイルドカードは、何が入っているかわからないため、あまり実用的ではありません。

ランダム入力する要素や範囲を制限したい場合は、自分で作成するのがおすすめです。

ランダム入力できるだけで画像生成効率が大幅に上がるので、ぜひDynamic Promptsを試してみてください。

なお、「余計な機能はいらない!ワイルドカードだけ使いたい!」という方は、ワイルドカードのみの拡張機能もあります。

コメント

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