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

【Stable Diffusion Web UI】プロンプトをランダムに入力できる「Dynamic Prompts」の使い方!

画像生成をしていると毎回同じ画像になってしまう、レパートリーが少ないと感じることはないでしょうか?

そもそもどんなプロンプトで何が生成できるのか、どんな組み合わせがあるのか、わからない方も多いと思います。

そんな時に便利なのがこの「Dynamic Prompts」です。

ランダムにプロンプトを出現させたり、誰かが作ったものを取り入れたり、自動でランダム構文を作ることもできます。

「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は「Extensions」からインストールできます。

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

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

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

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

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

手動でインストールする方法

何らかの理由で拡張機能一覧からだと、インストールできない場合があります。

その場合は手動インストールを試してみてください。

まずStable Difussion Web UIを起動して「Extensions」→「Install from URL」タブを開き、下記URLを入力して「Install」をクリックします。

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

インストールできるとInstallボタンの下に「Installed into ~~. Use Installed tab to restart.」と表示されます。

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

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

Dynamic Promptsの使い方

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

それでは実際に「Dynamic Prompts」の使い方について解説します。

最初に拡張機能が有効化になっているかチェックします。

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

中にある「Dynamic Prompts enabled」にチェックが入っているか確認してください。

通常は自動でチェックされています。

チェックが入っていればDynamic Promptsが使える状態です。

手動でランダム構文を入力

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

{プロンプト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

改行で要素が区切られます。

作成したファイルを以下のパスに移動してください。

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

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

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

ワイルドカードに対して値$$をつけると、テキストファイル内から値の数だけ要素を採用できます。

2$$__hair__

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

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

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

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

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

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

例えばhair-style.txtというファイルがあった場合、hair.txt内に__hair-style__と書けば、hair.txtとhair-style.txtからランダムで要素が取得できます。

※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

このコレクションの中のテキストファイルを、実際に使えるようにするためには以下の手順が必要です。

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

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

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

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

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

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

それぞれボタンの機能は以下の通りです。

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

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

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

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

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

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

Civitai | Stable Diffusion models, embeddings, LoRAs and more
Civitai is a platform for Stable Diffusion AI Art models. Browse a collection of thousands of models from a growing number of creators. Join an engaged communit...

ダウンロードしたファイルを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 generation - GitHub - adieyal/sd-dynamic-prompt...

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を使うと、自分が知らない表現方法やプロンプトを発見できる可能性があります。

もし良いなと思った要素を見つたら、その要素を自分の好きな要素と組み合わせて、より良い画像が生成できるかもしれません。

画像生成の幅がグッと広がるので、ぜひDynamic Promptsを試してみてください。

コメント

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