「Dynamic prompts」をわかりやすく解説ーワイルドカードでランダムキャラ作成【Stable Diffusion】

2024年9月22日Stable diffusionAI, ControlNet

cat

Stable diffusionの「ControlNET&拡張機能講座」第21回目。ワイルドカードを使って、ランダムでキャラクター作成をする拡張機能「Dynamic prompts」についてわかりやすく解説していきます。

前回の「CloneCleaner」となにが違うのニャ?

「CloneCleaner」は人物の髪型や国籍など、限定された中でのランダムキャラクター作成でしたが、今回は服装や場所など、どんなものにも対応できるランダム作成ですね。

それではさくっと学んでいきましょう。前回の「「CloneCleaner」の使い方をわかりやすく解説ーランダムで異なる人物を生成」は以下のリンクから。

 

「Dynamic prompts」の導入

「Stable diffusion」を起動し、「Extensions」タブ→「Install from URL」タブに移動し、「URL for extension’s git repository」に、

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

を貼り付けて、「Install」ボタンをクリックします。しばらく待つと「Install」ボタンの下の方にいろいろ文字が出てきてインストール終了。

つぎに「Extensions」タブ→「Installed」タブ「Apply and restart UI」 ボタンをクリックして再起動します。これでインストール完了です。

 

ワイルドカード用のファイルを導入

ワイルドカードというのは、たとえば「」と指定したら、「制服、水着、運動着、普段着」などあらかじめ準備した服の種類からランダムに選んでくれるということです。

この服の種類を格納したワイルドカードファイルは、自分で書いたものを用意してもいいのですが、面倒なのですでにあるものを使います

ワイルドカードファイルは「Civit AI」にいろいろありますが、今回は

200+ Wildcards

もしくは

1000+ Wildcards

を使いましょう(どちらも使ってもOK。最初は「200+」だけのほうがわかりやすいかも)。上のリンク先にある「Download」からファイルをダウンロードしてください。

大量のファイルが入っているので適当なフォルダに解凍

そのフォルダを、Stable Diffusionをインストールしたフォルダ内の、

「stable-diffusion-webui」>「extensions」>「sd-dynamic-prompts」>「wildcards」フォルダ

の中に入れてください。

Stable Diffusionを起動した状態でおこなったばあいは、一度Stable Diffusionを再起動してください。

 

ワイルドカードを使う・作る

Txt2img」でおこないます。

DP

下のほうに「Dynamic Prompts」というのが追加されていますので、開いて「Dynamic Prompts enabled」にチェックが入っているかどうかを確認してください。初期状態では入っているはずなので、その場合はとくになにも必要はありません。入っていなければチェックを入れてください。

あとはプロンプトに記入するだけです。

さきほど「wildcards」フォルダに入れた「200+ Wildcards」のファイルを見てみると、大量のテキストファイルが入っているはずです。

テキストファイルを開いてみると、中には大量の単語が書かれているのがわかるでしょう。

使用方法は簡単で、プロンプトに使いたいファイルを、

__使いたいファイル名__

の形で書きます(左右のアンダーバーはそれぞれ2本連続で記述)。

たとえば「clothing.txt」(服装)を使いたければ、

__clothing__

となりますね。このファイルが「200」というフォルダに入っている場合は、

__200/clothing__

とフォルダ名を記述してもOKです(記述しなくてもOKですが、複数のフォルダに同ネームのファイルがあるときは、記述しておいたほうがいいでしょう)。

ためしにプロンプトに適当な画質改善呪文を書いてから「1girl,__clothing__」(女性一人、服装のワイルドカード)で生成してみると、Cat suit」(キャットスーツ)の女性が生成されました。

想像していなかった変化球が出てきたニャ。

hair-female.txt」(女性の髪型)というのもあるので、「1girl,__clothing__,__hair-female__」と複数のワイルドカードを組み合わせていけばいいわけです。

簡単ニャ。

それと「tag complete」にも対応しており、「__」(アンダーバー)を打つと候補が出てきて便利です。導入しておくといいでしょう。

テキストファイルを自分で作る

ファイルは自分でもつくれます

他のファイルを参考に、テキストファイルに単語を書きまくるだけです(単語ごとに改行を入れる)。

また単語だけでなく、ワイルドカードを入れてもOKです。「__clothing__」とかですね。

ぶっちゃけ書いていることをランダムで呼び出しているだけですしね。

ちなみに「200+ Wildcards」の作者は「単語はChatGPTに聞いてつくった」と言っていますね。

大量につくるばあいはChatGPTが便利ニャ。「女性の服装を50種類リストアップしてください」とか聞けばいいニャ。

 

テキストファイルを使わずにワイルドカード使用

いちいちテキストファイル作成するのが面倒」「3個の中から1個選んでくれれば十分。大量にはいらない」という方は、直接プロンプトに書き込む方法があります。

たとえば「school uniform」「swimsuite」「maid」の3種類からランダムで選んでほしい場合は、

{school uniform|swimsuite|maid}

と記述すればOKです。「1girl,{school uniform|swimsuite|maid}」みたいな感じですね。「{ }」で囲ってから単語ごとに「|」で区切るだけです。

{__clothing-female__|__clothing__}

のように複数のワイルドカードを組み合わせたいときにも使えます。

複数を選択

3つのうち2つ選んでほしい場合は、

{2$$ school uniform|swimsuite|maid}

と「2$$」を付け加えます。

服装を2つ選ぶと変な感じになりそうニャ。

andで結合

選択した2つを「and」で結合したければ、

{2$$ and $$ school uniform|swimsuite|maid}

となります。

選択数をランダムで決める

1~3つをランダムで決めてほしいばあいは、

{1-3$$ school uniform|swimsuite|maid}

となります。

重みづけ

ランダムに重みづけをしたいばあいは、

{ 0.1::school uniform|0.2::swimsuite|0.3::maid}

となります。メイド服が制服の3倍の確率で出るようになりますね。

いろいろできるのニャ。

わざわざテキストファイルをつくるのも面倒というときはこの方法でよいでしょう。

Combinatorial generation

Dynamic Prompts内にある「Combinatorial generation」にチェックマークを入れると、

{school uniform|swimsuite|maid}

をランダムではなく、順番に生成してくれます。

その下にある「Combinatorial generation」は生成する枚数(0はすべての組み合わせ)。

Combinatorial batches」はそれぞれのを何枚にするのかになります。

Prompt Magic

プロンプトの内容を考えるのも面倒くさいという人は、このPrompt Magicにチェックを入れておけば、勝手にプロンプトを考えてくれます。自分では「1 girl」とか必要なことだけ書いておきましょう。

Max magic prompt length」はプロンプトの長さ(デフォルトは100)。

Magic prompt creativity」は重みで、ここを変えると変化が起こります(デフォルトは0.7)。

最初はデフォルトのままでいいでしょう。

 

「Wildcards Manager」で作成

manager

「Wildcards Manager」タブでは、さきほど「wildcards」フォルダに放り込んだファイルの編集が可能です。

Stable Diffusion上で編集できるのニャ。

左でファイルを選ぶと、右側にその内容が出てきます。追加したり削除したりして、最後に下の「Save wildcards」ボタンを押せば保存されます。

 

まとめ

以上、ワイルドカードでランダムキャラクターをつくる方法でした。

ぶっちゃけテキストファイルに書いていることをランダムに呼び出しているだけので、なに書いてもOKですね。

自分でオリジナルのテキストファイルをつくってみるといいと思います。ChatGPTも使うと作業がはかどります

ChatGPTに単語を羅列してもらうと速いのニャ。

そんなわけでまた次回の講座お会いしましょう(作成中)。【追記】次回「「Checkpoint Merger」をわかりやすく解説ー複数のモデルから新たなモデルを作る」出来ました。以下のリンクから。