【Stable Diffusion】Dynamic Promptsの使い方|プロンプトをランダム生成する方法

こんにちは、タカムネ(@takamune_ai)です。

Stable Diffusion WebUIで髪色や服装、ポーズをランダムに切り替えて画像を生成したいときに便利なのが、拡張機能「Dynamic Prompts」です。

この記事では、導入方法から基本構文、生成例、ワイルドカードの使い方まで、実際の画像を交えて紹介します。

この記事でわかること

Dynamic Promptsのインストール方法と有効化の確認

{black|green|blue}などのランダム選択構文、重み付け、複数選択

生成画像の実例とワイルドカードによるプロンプト管理

目次

Dynamic Promptsとは?

Dynamic Promptsは、Stable Diffusion WebUI(AUTOMATIC1111系)で利用できるプロンプトのランダム化拡張機能です。

複数の候補をあらかじめ指定しておくと、画像生成時にその中からプロンプトを選択できます。基本は1つの候補を選びますが、構文を変えれば複数候補の選択も可能です。

例えば、髪色・髪型・目の色・ポーズを組み合わせて、さまざまなキャラクターデザインを試したいときに便利です。候補を手動で書き換える手間を減らせます。

Dynamic Promptsの導入方法

以下の導入画面は記事作成時点のStable Diffusion WebUIを使用しています。WebUIや拡張機能のバージョンによって、タブ名・ボタンの配置・表示内容が異なる場合があります。

STEP

Stable Diffusion WebUIの「Extensions(拡張機能)」タブ-「Available(拡張機能リスト)」タブの「Load from:(読込)」をクリックします。

STEP

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

STEP

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

STEP

「Apply and restart UI(適用してUIを再起動)」をクリックして、変更を反映します。環境によってはWebUI本体の再起動が必要な場合もあります。

STEP

「txt2img」タブで、下のほうに「Dynamic prompts」の項目があれば、導入ができています。

タブを開くと、「Dynamic Prompts enabled(有効化)」というチェックがあるので、チェックが入っていることを確認します。(デフォルトでオンのはず)

これで準備完了です。

Dynamic Promptsの使い方

まずは基本構文を覚えれば、髪色やポーズのランダム生成をすぐに試せます。ここでは、基本のランダム選択から順に説明します。

慣れてきたら、候補ごとの選ばれやすさを変える「重み付け」や、複数の候補を同時に選ぶ「複数選択」も活用できます。

基本的な構文

Dynamic Promptsの基本的な構文は、中括弧で全体を囲んで、複数のプロンプトを「|」で区切ります。

{A|B|C}

例 {black|green|blue} hair

例えば {black|green|blue} hair と入力すると、生成時に black hair、green hair、blue hair のいずれかが選ばれます。

重み付け

候補の前に 数値:: を付けると、選ばれやすさに重みを付けられます。数値が大きい候補ほど選ばれやすくなります。

{数値::A|数値::B|数値::C}

例 {0.7::black|0.3::green|0.2::blue} hair

数値は相対的な重みとして扱われるため、合計を1にする必要はありません。上の例なら、0.7のblackが0.3のgreenや0.2のblueより選ばれやすくなります。

複数選択

中括弧の先頭に 数値$$ を付けると、指定した数の候補を選択できます。

{数値$$A|B|C}

例 {2$$chocolate|vanilla|strawberry}
⇒要素のうち、2つが適用される

1-2$$ のように範囲を指定すると、選択する候補数自体をランダムにできます。

{数値-数値$$A|B|C}

例 {1-2$$chocolate|vanilla|strawberry}
⇒要素のうち、1つ、または、2つが選択される

Dynamic Promptsはプロンプトの候補を切り替える機能です。候補に書いた特徴が必ず画像に反映されるわけではなく、モデルや他のプロンプトの影響も受けます。

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)

ネガティブプロンプトは、「ShiratakiMix」の配布ページに記載されていたものを参考にしました。ネガティブプロンプトについては、別記事でご紹介します。

いくつか画像を生成した結果が、以下の通りです。

わかりやすいように、アングルは顔のアップを指定しています。

このように、同じ基本プロンプトから髪色・髪型・目の色の異なるキャラクターを生成できます。気に入った組み合わせが見つかったら、候補を絞って調整するのもおすすめです。

色移りについて

以下のように色が指定通りにならないことがあります。

  • 黒髪を指定したのに、目の色と同じピンク髪になった
  • 黒髪の一部が、青色の目に影響されて、部分的に青色になった

このように、色が影響しあうことはよくあります。

色の指定が混ざる場合は、候補を減らして原因を切り分けたり、髪色と目の色を個別に調整したりしてみてください。ただし、モデルによっては完全に防げないこともあります。

キャラのポーズ

次は、キャラクターの外見をある程度固定し、ポーズだけをランダムに切り替えてみます。

プロンプトは、以下の通りです。ネガティブプロンプトは、先ほどと同様です。

●プロンプト

//品質向上
masterpiece,

//キャラ全般
1girl,solo,black hair,short hair,blue eye,

//ポーズ
{sit|head tilt|claw pose},

//画角
fullbody,

今回指定したのは、「sit(座る)」「head tilt(首を傾ける)」「claw pose(ガオーポーズ)」です。

いくつか画像を生成した結果が、以下の通りです。

わかりやすいように、アングルは全身を指定しています。

今回は、割とざっくりと指定したので、同じポーズでも状況がかなり異なりますね。

また、ポーズは、画像のサイズによっても、見え方が変わってきます。

最終的には、キャラデザインやポーズだけでなく、服装や背景なども決めて、完成に近づけていくことになると思います。

タカムネ

プロンプトは、ざっくり指定して大量に画像を生成してみるのもアリ。予想外の画像ができたりもするので、面白いです。

ワイルドカードの使い方

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

作成したテキストファイルは、Dynamic Prompts拡張機能の wildcards フォルダに保存します。以下はWebUIをCドライブ直下に設置した場合の例です。

テキストファイルの保存場所

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

ファイル名は任意ですが、あとでプロンプト内から参照するため、短くわかりやすい名前がおすすめです。ここでは color.txt とします。

保存後、ワイルドカードが認識されない場合は、管理画面で再読み込みするかWebUIを再起動してみてください。

ワイルドカードの指定方法

ワイルドカードの指定方法は、テキストファイル名(拡張子なし)を「__」で囲みます。

先ほどのプロンプトをワイルドカードで置き換えると、以下のようになります。

//品質向上
masterpiece,

//キャラの人数
1girl,solo,

//髪色
__color__ hair,

//髪型
{long hair|short hair|bob cut|ponytail|twintail},

//目の色
__color__ eye,

//画角
face only,

ワイルドカードを使うことで、入力の手間が省けるので、効率アップ!

同じワイルドカードをプロンプト内の複数箇所で使うこともできます。ただし、髪色と目の色で同じ __color__ を使っても、必ず同じ色が選ばれるとは限りません。

まとめ

Dynamic Promptsを使えば、髪色やポーズなどの候補を毎回手入力し直さずに、さまざまなパターンの画像を生成できます。まずは {A|B|C} の基本構文から試し、候補が増えてきたらワイルドカードで整理すると便利です。

この記事の画面・操作例は執筆当時の環境に基づいています。最新のUIや拡張機能の仕様と異なる場合があります。

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

コメント

コメントする

目次