こんにちは、タカムネ(@takamune_ai)です。
この記事では、Stable Diffusion WebUIの拡張機能『Dynamic Prompts』を使ってランダム生成する方法をご紹介します。
Dynamic Promptsとは?
Dynamic Promptsとは、Stable Diffusion WebUIの拡張機能の一つです。
Dynamic Promptsを導入することによって、指定した複数のプロンプトのなかから、ランダムで1つを選択して、画像生成することができます。(厳密には1つ以上を選択することも可能)
例えば、キャラのデザインやキャラのポーズなど、いくつかのパターンを試したいときに便利で、使っている方も非常に多いのではないかと思います。
Dynamic Promptsの導入方法
Stable Diffusion WebUIの「Extensions(拡張機能)」タブ-「Availlable(拡張機能リスト)」タブの「Load from:(読込)」をクリックします。

表示されたリストから「Dynamic prompts」を探して、右側にある「Install」をクリックします。

「Installed(インストール済み)」タブをクリックして、一覧に「Dynamic prompts」があることを確認します。

念のため「Apply and restart UI(適用してUIを再起動)」をクリックして、再起動します。

「txt2img」タブで、下のほうに「Dynamic prompts」の項目があれば、導入ができています。
タブを開くと、「Dynamic Prompts enabled(有効化)」というチェックがあるので、チェックが入っていることを確認します。(デフォルトでオンのはず)
これで準備完了です。

Dynamic Promptsの使い方
Dynamic Promptsを使い方は、基本的な構文を参照いただければ十分かなと思います。
「重み付け」「複数選択」というオプションもありますが、あんまり使う機会はないかも。
基本的な構文
Dynamic Promptsの基本的な構文は、中括弧で全体を囲んで、複数のプロンプトを「|」で区切ります。
{A|B|C}
例 {black|green|blue} hair
これで、プロンプトのどれか1つが、ランダムで適用されます。
重み付け
それぞれのプロンプトに「数値::」つけることで、選択率に重み付けすることもできます。
{数値::A|数値::B|数値::C}
例 {0.7::black|0.3::green|0.2::blue} hair
なお、数値の合計は、必ずしも1にする必要はありません。
複数選択
先頭に「数値$$」をつけることで、複数のプロンプトを適用することもできます。
{数値$$A|B|C}
例 {2$$chocolate|vanilla|strawberry}
⇒要素のうち、2つが適用される
数値を「-」でつなげることで、選択数に範囲を持たせることもできます。
{数値-数値$$A|B|C}
例 {1-2$$chocolate|vanilla|strawberry}
⇒要素のうち、1つ、または、2つが選択される
Dynamic Promptsの使用例
具体的にDynamic Promptsの使用例をご紹介します。
使わせていただいたモデルは、Vすき焼き様(@Vsukiyaki_AIArt)の「ShiratakiMix」です。

キャラデザイン
キャラの印象を大きく左右する「髪色」「髪型」「目の色」をランダム生成してみます。
プロンプトは、以下の通りです。
●プロンプト
//品質向上
masterpiece,
//キャラの人数
1girl,solo,
//髪色
{black|green|blue|red|pink} hair,
//髪型
{long hair|short hair|bob cut|ponytail|twintail},
//目の色
{black|green|blue|red|pink} eye,
//画角
face only,●ネガティブプロンプト
(easynegative:1.0),(worst quality,low quality:1.2),(bad anatomy:1.4),(realistic:1.1),nose,lips,adult,fat,sad, (inaccurate limb:1.2),extra digit,fewer digits,six fingers,(monochrome:0.95)いくつか画像を生成した結果が、以下の通りです。
わかりやすいように、アングルは顔のアップを指定しています。






こんな感じでイメージをつかんで、自分好みをキャラを作っていくのも楽しいですね。
以下のように色が指定通りにならないことがあります。
- 黒髪を指定したのに、目の色と同じピンク髪になった
- 黒髪の一部が、青色の目に影響されて、部分的に青色になった
このように、色が影響しあうことはよくあります。
この回避方法などについては、別の記事で紹介しようと思います。
キャラのポーズ
今度は、ある程度キャラの要旨を固定したうえで、ポーズをランダム生成してみます。
プロンプトは、以下の通りです。ネガティブプロンプトは、先ほどと同様です。
●プロンプト
//品質向上
masterpiece,
//キャラ全般
1girl,solo,black hair,short hair,blue eye,
//ポーズ
{sit|head tilt|claw pose},
//画角
fullbody,いくつか画像を生成した結果が、以下の通りです。
わかりやすいように、アングルは全身を指定しています。






今回は、割とざっくりと指定したので、同じポーズでも状況がかなり異なりますね。
また、ポーズは、画像のサイズによっても、見え方が変わってきます。
最終的には、キャラデザインやポーズだけでなく、服装や背景なども決めて、完成に近づけていくことになると思います。
タカムネプロンプトは、ざっくり指定して大量に画像を生成してみるのもアリ。予想外の画像ができたりもするので、面白いです。
ワイルドカードの使い方
Dynamic Promptsがさらに便利に使える機能として、「ワイルドカード」があります。
事前に、プロンプトのリストを作成しておくことで、簡単な指定方法でDynamic Promptsが使えます。
ワイルドカードは、以下の2種類の方法がありますので、順番に説明します。
- 標準のコレクションを使用
- 自分でテキストファイルを作成
標準のコレクションを使用
標準でワイルドカード用の「コレクション」と呼ばれるリストが用意されています。
これを使うには、「Wildcards Manager(ワイルドカードの管理)」タブの「select a collection(コレクションを選択)」のプルダウンから、目的のコレクションを選択します。
今回は「devilkkw」を選択して、「Copy collection(コレクションをコピー)」をクリックします。


ツリーが追加されるので、今回はそのなかにある「devilkkw/animals/animals_categories」をクリックします。
右側の「Wildcards file」という項目にある「__devilkkw/animals/animals_categories__」がワイルドカードです。


試しに、このワイルドカードをプロンプトに張り付けて画像を生成してます。








このワイルドカードは、動物がリストされているようですね。
自分でテキストファイルを作成
やりたいことが明確に決まっている場合は、自分でリストを作ったほうがいいです。
テキストファイルを新規で作成して、以下のようにプロンプトを改行して記載します。
black
green
blue
red
pinkそして、以下のフォルダ配下に、テキストファイルを保存します。
C:\stable-diffusion-webui\extensions\sd-dynamic-prompts\wildcards
これで、準備完了です。WebUIが起動中のときは、一度リロードする必要があります。
ワイルドカードの指定方法
ワイルドカードの指定方法は、テキストファイル名(拡張子なし)を「__」で囲みます。
先ほどのプロンプトをワイルドカードで置き換えると、以下のようになります。
//品質向上
masterpiece,
//キャラの人数
1girl,solo,
//髪色
__color__ hair,
//髪型
{long hair|short hair|bob cut|ponytail|twintail},
//目の色
__color__ eye,
//画角
face only,ワイルドカードを使うことで、入力の手間が省けるので、効率アップ!
同じワイルドカードを複数個所でも使えます。







コメント