Stable Diffuson で画像を生成していて、アイデアが浮かばない瞬間ってありますよね。
そんな時は自動で呪文(プロンプト)を考えてくれる、そんな拡張機能があります。
『Dynamic Prompts』はランダムに呪文(プロンプト)を生成します。
※Stable Diffusionの立ち上げ方法や使い方については、以下の記事で詳しく解説しています。
ランダム性のある画像生成が可能な『Dynamic Prompts』とは?
正式名称は「Stable Diffusion Dynamic Prompts extension」
プロンプトをランダムに組み合わせられるweb UI用の拡張機能です。この拡張機能を使えば、自動でプロンプトを生成してくれたり、予め指定したプロンプトをランダムに組み合わせて画像を生成することができます。
公式ページはこちら
拡張機能『Dynamic Prompts』の導入方法
では、導入の方法について説明します。
①ローカル環境
「Stable diffusion」を起動し、「Extensions」タブ→「Install from URL」タブに移動し、「URL for extension’s git repository」に、
https://github.com/adieyal/sd-dynamic-prompts.git
を貼り付けて、「Install」ボタンをクリックします。
これでインストール終了です。
1度リロードしてください。
②Googole Colab
立ち上げ時、以下のコードを足してください。
%cd /content/stable-diffusion-webui/extensions
!git clone https://github.com/adieyal/sd-dynamic-prompts.git
%cd /content/stable-diffusion-webui
場所は !python launch.py の部分が Web UI を実行するコードなので、その前に入れてください。
ダウンロードができていれば、左下の拡張機能欄に『Dynamic Prompts』が表示されます。
※その他おすすめの拡張機能もありますので、以下の記事を参考にしてください。
- Stable Diffusionのプロンプトの見本が知りたい
- 画像生成が思ったようにできない
- 色々なプロンプトを探したい
【画像例付き】拡張機能『Dynamic Prompts』の使い方
『Dynamic Prompts』には完全にランダムにプロンプトを生成する方法と、事前に登録したプロンプトのテキストファイル『ワイルドカード』から選択する方法があります。
そして、『ワイルドカード』を使うためには、『Dynamic Prompts』の専用の構文を覚える必要があります。
なのでまずは、『Dynamic Prompts』の専用構文の解説からしていきます。
完全にランダム生成だけやりたい方は、ここは飛ばしてもらっても大丈夫です。
ランダム選択の方法:{A | B | C}
Dynamic Prompts の専用構文を使って画像を生成する際はDynamic Prompts enabledを有効化してください。
最初は最も基本的な構文です。
(呪文A~Cの中からランダムに1つだけ選ぶ)は次のように書きます。
{ 呪文A | 呪文B | 呪文C }
呪文を半角の|で区切り、それを半角の{}で囲むだけです。
Dynamic Prompts enabled を有効化し、プロンプトに
{ Jacket | Dress | bikini }
このように書くと、
服装3つの中から、一つを選んで画像を生成します。
髪型を変えたり、ポーズを変えてみると、面白い画像が生成できるかもしれません。
重み付けの方法:{0.1 :: ○○ | 0.1 :: ○○ | 0.5 :: ○○}
選択されるプロンプトの重みを変更することもできます。
{0.5:: happy | 0.1:: Sad | 0.3:: Furious | 0.1:: Crying}
こうすると、0.5 happy, 0.1 Sad , 0.3 Furious , 0.1Crying の割合で選択されます。
表情が割合で振り分けられています。
数値はあくまで相対的な割合なので、合計を1にする必要はありません。
複数選択の方法:{2$$ ○○ | ○○ | ○○}
プロンプトの中からランダムに複数を選択することもできます。その場合の構文は次のとおりです。
{ 選択する数 $$ 呪文A | 呪文B | 呪文C }
具体例は次のような感じです。
{ 2$$ Sword | Shield | Glasses }
このように書くと, Sword , Shield , Glasses から2語が選択されます。
Dynamic Promptsの専用構文はもっとたくさんあります。恐ろしいほどに・・・
しかしながら、基本的な機能を使う上ではこのぐらいを覚えてしまえば大丈夫です。
もしも他にどんなものがあるか知りたい方はこちらの公式ページをご確認ください。
次は「ワイルドカード」の話です。
『Dynamic Prompts』でワイルドカードを使う方法
「ワイルドカード」はテキストファイルに事前にプロンプトを登録した物です。
その中からランダムに選んで画像を生成できます。
前もってワイルドカードを準備する必要があります。
※『Dynamic Prompts』でワイルドカードを使う方法については、以下の記事で詳しく解説しています。
またワイルドカード用の構文が出てきましたね。
次に完全にランダムにプロンプトを自動生成するやり方をご紹介します。
呪文(プロンプト)をランダム生成する『Prompt Magic』の使い方
Dynamic Promptsの下に現れる『Prompt Magic』を利用します。
これを使うと完全にランダムにプロンプトを生成できます。(モデルによって傾向はあります)
使うときは Magic prompt だけでなく Dynamic Prompts も有効化してください。
Max magic prompt lengthはプロンプトの最大の長さ
Magic prompt creativityはプロンプトの創造性ですが、どちらもデフォルトのままでいいです。
Magic prompt modelがプロンプトを作ってくれるモデルです。たくさん種類がありますが、「Gustavosta/MagicPrompt-Stable-Diffusion」は GPT-2 を使い訓練したモデルだそうです。
どのモデルを使うのかは、公式にも説明の無いモデルもあるので、使ってみて判断してください。
Magic prompt blocklist regex には除外したいプロンプトがあれば入れてください。
Minimum / Maximum attention はプロンプトの強度設定です。−1から2までの間で設定できます。
では実践してみます。
基本のプロンプトは : Beautiful girl ネガティブに : EasyNegative あとはPrompt Magicにお任せしてみます。
Beautiful girl by Gustav Klimt, Joel Santana, Vivien Lecouffe-Deharme, (Erik Johansson:-0.28), Denis Villeneuve, Earl Norem, Henry Meynell Rheam, Enoch Bolles
Negative prompt: EasyNegative
Steps: 20, Sampler: DPM++ 2M Karras, CFG scale: 7, Seed: 1274684247, Size: 512×512, Model hash: d173e91970, Model: etherRealMix_etherRealMix31, RNG: CPU, Version: v1.3.2
Used embeddings: EasyNegative [119b]
Beautiful girl smiling, portrait, ice magic, black and white hair, dark fantasy, rococo knife and brush strokes, dia de los muertos, Reflective lighting, Eldritch, fantasy, intricate details, cinematic, realistic, 8k, artstation, (smooth:0.57), sharp focus
Negative prompt: EasyNegative
Steps: 20, Sampler: DPM++ 2M Karras, CFG scale: 7, Seed: 1274684248, Size: 512×512, Model hash: d173e91970, Model: etherRealMix_etherRealMix31, RNG: CPU, Version: v1.3.2, Used embeddings: EasyNegative [119b]
(Beautiful girl in Soviet pioneer uniform:0.78), oil on canvas, intricate, portrait, 8k highly professionally detailed, HDR, CGsociety, illustration painting by Mandy Jurgens and Małgorzata Kmiec and Dang My Linh and Lulu Chen and Alexis Franklin and Filip
Negative prompt: EasyNegative
Steps: 20, Sampler: DPM++ 2M Karras, CFG scale: 7, Seed: 1274684249, Size: 512×512, Model hash: d173e91970, Model: etherRealMix_etherRealMix31, RNG: CPU, Version: v1.3.2 ,Used embeddings: EasyNegative [119b]
Beautiful girl in croptop and cargo pants character design by charlie bowater, ross tran, (artgerm:0.14), and makoto shinkai, detailed, inked, western comic book art
Negative prompt: EasyNegative
Steps: 20, Sampler: DPM++ 2M Karras, CFG scale: 7, Seed: 1274684250, Size: 512×512, Model hash: d173e91970, Model: etherRealMix_etherRealMix31, RNG: CPU, Version: v1.3.2 ,Used embeddings: EasyNegative [119b]
Beautiful girl full body, (beehive hair flowing:-0.19), matte navy-blue bodysuit (((((no helmet))))))), ingsocwatch fractal patterns, by Alphonse Mucha, holding the glowing light torch above her head, crystal chains, sitting on a tree top
Negative prompt: EasyNegative
Steps: 20, Sampler: DPM++ 2M Karras, CFG scale: 7, Seed: 1274684251, Size: 512×512, Model hash: d173e91970, Model: etherRealMix_etherRealMix31, RNG: CPU, Version: v1.3.2 ,Used embeddings: EasyNegative [119b]
Beautiful girl with short white hair, wearing labcoat, character concept art, (trending on artstation:0.55), highly detailed, clean lineart
Negative prompt: EasyNegative
Steps: 20, Sampler: DPM++ 2M Karras, CFG scale: 7, Seed: 1274684252, Size: 512×512, Model hash: d173e91970, Model: etherRealMix_etherRealMix31, RNG: CPU, Version: v1.3.2 ,Used embeddings: EasyNegative [119b]
こんな感じで、思いもよらぬものが誕生していきます。
ちなみに「I’m feeling lucky」をONにすると、自分のプロンプトは完全無視され『Prompt Magic』に丸投げの画像生成になります。
でも使い道がわかりません・・・
まとめ
いかがでしたでしょうか?
Stable Diffusionで画像をランダムに生成できる『Dynamic Prompts』とは?について解説してきました。
今回のポイントをまとめると、以下のようになります。
- 『Dynamic Prompts』を使えばランダムに画像を生成できる
- 『Prompt Magic』はプロンプトを自動で生成できる
画像のバリエーションが欲しい時には『Prompt Magic』はかなりいいです。
自分では考えつかないようなプロンプトを生成してくれますので。
皆さんもぜひお試しください。
- Stable Diffusionのプロンプトの見本が知りたい
- 画像生成が思ったようにできない
- 色々なプロンプトを探したい