Stable Diffusionでランダムに画像生成できるDynamic Promptsの使い方

黒髪ショートヘアーの日本人女性のAI写真

みなさんStable Diffusion楽しんでますか?

でも、同じような画像ばかり生成されて・・・いつもとは違った画像も生成したいですよね!

そんなときは拡張機能のひとつ、Dynamic Promptsを使ってみましょう!

この記事で理解できること
  • Dynamic Promptsのインストール方法
  • Dynamic Promptsを使用して、プロンプトをランダム出力する方法
目次

Dynamic Promptsとは

沢山の黒いクエスチョンマークの中に赤色のクエスチョンマークが2つある

Dynamic Promptsを導入すると、プロンプトに対してワイルドカード機能が使えます。

ワイルドカードとは

あらかじめ用意した複数のプロンプトからランダムで選択する機能です。

例えば、【赤、黄、青】髪型 のように設定すると、赤、黄、青色の髪型用プロンプトがランダムで生成されるわけです。

ワイルドカードの使用例

人物の画像を生成する場合、体や背景などをプロンプトで記述していきますよね。
通常はプロンプトが固定されているので、バッチ回数を増やしても同じような画像が生成されるだけです。

そこで人物のプロンプトに対して、ワイルドカードを設定してみましょう。

髪型や体形、服装などをワイルドカードで設定すると、画像生成する度にプロンプトがランダムで設定され、思いがけない画像が生成されます。

アイデアが思いつかない場合や、煮詰まったときに使うのも有効だね!

Dynamic Promptsのインストール方法

STEP
「Extensions」タブに移動する

stable diffusion webUIを起動したら、上部に表示されるタブ一覧から「Extensions」をクリックします。

Extensionsをフォーカスしている
Extensionsタブに移動
STEP
「Available」タブに移動する

Extensionsタブ内の「Available」をクリックします。

Availableをフォーカスしている
Availableタブに移動
STEP
拡張インデックスURLを確認する

「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
「Extension index URL」をフォーカスしている
拡張インデックスURLの確認
STEP
「Load from:」ボタンをクリックする

localizationのチェックを外したら、「Load from:」ボタンをクリックします。

「Load from:」ボタンをフォーカスしている
Load from:ボタンの位置
STEP
Dynamic Promptsをインストールする

一覧の中から「Dynamic Prompts」を探し、右に表示される「install」ボタンをクリックします。

installボタンクリックを誘導している

Dynamic Promptsはブラウザの検索機能か、Hide extensions with tagsの下にある検索窓に「Dynamic」と入力すればヒットします。

STEP
「Reload UI」をクリックする

拡張機能をインストールした場合は、リロードする必要があります。

「Extensions」タブ→「Installed」サブタブ内のApply and restart UIをクリックするか、
「Settings」タブの上部に表示されているReload UIをクリックしましょう。

「Apply and restart UI」ボタンをフォーカスしている
Extensionsタブ内
「Reload UI」ボタン
Settingsタブ内

Dynamic Promptsの使い方

Dynamic Promptsでランダム画像を生成する方法はいくつか用意されています。

  • ワイルドカードファイルを利用する
  • ワイルドカードファイルを自作する
  • プロンプトでワイルドカードを設定する

上記の中でも、ワイルドカードファイルを使ったランダム生成が一番簡単なのでおすすめです。

ワイルドカードファイルでランダム生成する

最初は設定済みのワイルドカードを使用してみましょう。

STEP
ワイルドカードファイルを入手する

いろいろなファイルが公開されていますが、おすすめはcivitaiで公開されている200+です。

zipファイルなのでダウンロードして解凍しましょう。

STEP
ワイルドカードファイルの保存先

ダウンロードしたファイルは[WebUIフォルダ]→「extensions」→「sd-dynamic-prompts」→「wildcards」フォルダに保存します。

STEP
ワイルドカードの使用方法

ワイルドカードを使用したい場合は、ワイルドカードの管理タブから使用したいワイルドカードをクリックします。

ワイルドカードファイル欄にキーワードが表示されるので、このキーワードをプロンプト欄にコピペします。

ワイルドカードファイル欄のキーワードのコピーを促している

ワイルドカードキーワードは「__ワイルドカードファイル名__」になっています。
(前後のアンダーバーは2個づつ必要)

ワイルドカードの管理タブではワイルドカードを編集することも可能だよ

ワイルドカードを使用する場合、プロンプトによっては工夫が必要になります。

例えば色が設定されているワイルドカードを髪色に反映したい場合は、「ワイルドカードキーワード hair」と入力します。
こうすることで、実際のプロンプトは「blue hair」や「pink hair」のように、ランダムで出力されます。

blue、pinkと記載されたテキストファイル
色用ワイルドカードファイル例
プロンプト入力欄に「__color__ hair」と入力している
プロンプトの入力
STEP
画像生成する

プロンプトの設定が終わったら画像生成するだけです。

Dynamic Promptsは初期設定で有効化されています。
無効化したい場合には、Dynamic Promptsのメニューを開いて「Dynamic Prompts enabled」のチェックを外すだけです。

ワイルドカードを自作する

ワイルドカードファイルは以下手順で自作することも可能です。

STEP
テキストファイルを作成してプロンプトを記述する

テキストファイルを作成しファイル内にプロンプトを記述します。

ランダムに生成したいプロンプトごとに改行します。
また、ファイル名はプロンプトの入力時に使用するので、分りやすい名前にしましょう。

ワイルドカードファイルの書き方例

「red hair」、「blue hair」をランダムにしたい場合は、間に改行を入れます。

red hair
blue hair
STEP
作成したテキストファイルの保存先

作成したファイルは[WebUI解凍したフォルダ]→「extensions」→「sd-dynamic-prompts」→「wildcards」フォルダに保存します。

hair_color.txt等、分り易いファイル命名を促している

プロンプトで直接ワイルドカードの設定をする

ファイルを使用しなくてもワイルドカード機能は使用できます。

簡単なものであれば、この手順がおすすめです。

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」で生成枚数を調整しましょう。

ワイルドカードはスタイルとして使用することも可能

ここまで紹介したワイルドカード機能ですが、スタイルとして保存することも、もちろん可能です。

お気に入りのワイルドカードのパターンが作成できたらスタイルとして保存しておきましょう。

スタイルについては↓の記事で紹介しているので、ご参考ください。

あわせて読みたい
Stable Diffusionでプロンプトを保存する方法を解説します【styles機能の使い方】 Stable Diffusion WebUIでお気に入りの画像が作成できた場合、プロンプトを保存して再使用したり管理出来たら便利ですよね。 と、いうことで今回はStable Diffusion Web...

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を紹介しました。

ワイルドカードを使用すれば思いもよらない画像が生成できるので、まんねり化してしまった場合はぜひ導入してみましょう。

作業しながら適当な画像を生成してガチャを引くのもおすすめだよ!

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

IT技術者でありDTMer
EDMの作曲を始めたところ楽しさに気づき、ロック以上にハマっています。
楽器はギターを弾いており、バンドではギタリストとしても活動しています。

コメント

コメントする

目次