Home Creators Posts Import Register Favorites Logout

Content





こんばんは、スタジオ真榊です。この記事は、プロンプトをジャンルごとにテキストファイルで管理してランダム化し、一括呼び出しできる拡張機能「Wildcard」についての解説記事です。


{blue eyes|red eyes|yellow eyes}のように記述すると、このうち一つをランダムで採用してくれるのが「DynamicPrompt」でしたが、wildcardはより本格的にプロンプトのランダム化を活用できる機能。何にでもなれる「ワイルドカード」のようにプロンプトにランダム要素を取り入れることができ、大量の画像バリエーションを作りたいときに大いに役立ちます。


Wildcardの拡張機能は既にDynamic Promptsに同梱されていますので、Dynamic PromptsをインストールしているならWildcardだけを追加導入する必要はありません。こちらの特集と合わせてお読みください。


目次

ローカル拡張機能「Wildcard」とは

wildcard機能のインストール

  <インストール手順>

プロンプト大辞典からwildcardを入手

Wildcardの使い方

  ・wildcardを追加したときは

  ・「Booru tag autocompletion」を活用しよう

プロンプトのランダム化実践例

  ・アップスケール時に注意

フルプロンプトのランダム生成も可能

XYZプロット的な使い方も

「キュー(待ち行列)」として使う


ローカル拡張機能「Wildcard」とは

wildcardは一言で言えば、「__xxxx__」という自分専用のプロンプトを作り出せる拡張機能です。例えば1行ごとに「red hair」「blue hair」「black hair」と書かれたテキストファイルを「hair.txt」という名前で用意しておき、所定のフォルダに保存しておきます。その上でプロンプトに「__hair__」と入れると、赤・青・黒の髪色のうちランダムに一つを選択し、画像を生成してくれるわけです。


これだけだと「なんだ、いくつかのプロンプトからランダム選択できるdynamic promptと同じじゃん」と思われるかもしれません。確かに見た目の現象は{red |blue|black}hairと打ち込んだときと同じになりますが、wildcardは「一つ一つのランダム要素に詰め込める量が段違い」「大量のwildcardを用意しておけばいつでも好きな要素をランダム化できる」といった違いがあります。


例えば、dynamic promptで20種類の髪型からランダム選択するケースを考えてみましょう。{bob cut | long hair | short hair | twintails | ....}と手打ちしていくのは大変面倒ですし、すぐにプロンプト欄が埋まってしまうでしょう。一方、wildcardなら数十でも数百でも、テキストファイルに書かれているだけのランダム化が可能です。逆に、自分で決めた数種類の中からチョイスしたいときはdynamic promptの方が向いていますので、使い分けが重要ということになります。


こちらは表情をランダム化するwildcardテキストの例です。__expressions__と入力すると、これらの中から1つがランダムに選ばれて生成されるわけですね。


wildcard機能のインストール

こちらがwildcard単独のリポジトリ(拡張機能配布ページ)です。


先述ン通り、dynamic promptの拡張機能にもwildcard機能は同梱されているので、そちらをインストールしていればその時点で使用可能になっています。特に理由がなければ、こちらのdynamic promptの拡張機能をインストールしておけばOK。


<インストール手順>

・拡張機能(Extensions)タブから拡張機能リストを開き、読み込みボタンをクリック。

・リスト下方にある「dynamic prompt」もしくは「wildcard」の欄の「Install」ボタンをクリック(見つからない場合は検索欄の下の「スクリプト」のチェックを外す)

・拡張機能リストの左隣の「インストール済」タブから「適用してUIを再起動」

・成功していれば、「設定」タブの左隣あたりに「ワイルドカードの管理(Wildcards Manager)」タブが現れる

上の図は、既にたくさんのwildcardを入手した状態のスクリーンショットです。初回インストール時は何も表示されませんので、さっそく何かwildcardを入手してみましょう。



プロンプト大辞典からwildcardを入手

プロンプト大辞典では「髪の毛」「ポーズ」「H体位」など種別ごとのwildcardを一括ダウンロードできるようにしておきましたので、今回はこちらを使っていろいろな要素をランダム化してみたいと思います。


ページ最下部の【巻末付録】Wildcard からzipを入手できますので、任意の場所に保存したら、次のような要領で使ってみましょう。



Wildcardの使い方

zipを解凍して出てきたテキストファイルは、各webUIのインストールフォルダ内にある「extensions\sd-dynamic-prompts\wildcards」に保存します。StabilityMatrixの場合、「Data\Packages\〇〇(webUI名)\extensions\sd-dynamic-prompts\wildcards」となります。このフォルダに全てのwildcard(テキストファイル)を並べてもよいですし、多くなりすぎるようなら「hair」「pose」などとフォルダ分けして管理してもよいでしょう。


例えば「eyes-color.txt」の中身はこのような感じ。

「haircolor.txt」はこうです。

ミナちゃんを生成するときに、普段「black hair」「blue eyes」としている部分を「__haircolor__」「__eyes-color__」に変更するとこのようになります。(※前後の「__」は全角アンダーバーではなく「半角アンダーバー✕2」ですのでご注意ください)


このほか、カラー指定だけが入っている「color.txt」もあります。アイデア次第ですが、「__color__ ribbon」などと指定することで、リボンの色をランダム化させることも可能になるわけですね。

・wildcardを追加したときは

Wildcardフォルダの内部に変動があった場合は、拡張機能画面の下部にあるタブを開いて「ワイルドカードの一覧を更新する」を押すと最新の状態に変更されます。「すべてのワイルドカードを削除する」は滅多に使う機会がないと思うので、間違って押さないよう気を付けましょう。


・「Booru tag autocompletion」を活用しよう

それぞれのwildcardの呼び出しタグは「__XXXX(テキストファイル名)__」になるわけですが、いちいち覚えていなくても、Booru tag autocompletion機能で「__」と打つだけで一覧呼び出しすることができます。LoRA名と同様ですね。

Booru tag autocompletion機能は、danbooruタグを予測変換してくれる非常に便利な拡張機能です。こちらの記事の「⑥」で解説していますので、導入することを強くおすすめします。


プロンプトのランダム化実践例

wildcardはさまざまな使い道がありますが、よく使うのは固定したいシチュエーションだけを指定しておいて、背景や表情、衣装といった要素をランダム化してみることです。


例えば、オリジナルキャラを呼び出すタグに、

「__cosplay__,__expression_all__,__color__ background,__pose_hand__」

・・・と追記してみたとします。


こうすると、さまざまなコスプレや表情、手のポーズがランダムが選択されつつ、背景はランダムなカラーになるわけですね。「__color__」の部分にyellowやblueなどが「代入」されるので、「yellow background」「blue background」などと毎回変わるはずです。


こちらが生成結果。それぞれの要素がしっかりランダム化されていることがわかります。

ただ、ここまでランダム性が高い設定だと、滅多に良い取り合わせのイラストにはなりません。表情もランダムですから、かっこいい衣装によだれがたれている表情(drooling)がついてきたりして、ちぐはぐなものばかりになってしまいがち。こうしたランダム生成は全くアイデアが湧いてこないときに「とりあえずやってみる用」で、実際にはもっとシチュエーションを絞り込んで、ちょっとした「遊び」を作るためにwildcardを使うことのほうが多いかなと思います。


例えばこのように、「正解」のシチュエーションをもう固定してしまって、背景色だけをランダムにしてみるような場合です。

衣装と表情、ポーズの取り合わせに悩んだときなども、wildcardから意外なインスピレーションを得られることがありますので、着想に詰まったときはいろいろとランダム生成してみると面白いかも知れません。案出しの際はstep数を普段よりぐっと落として、スピード優先にするのがポイントです。


こちらは背景色を赤と決めた後、衣装カラーとの取り合わせを検討してみた例。何を「良い」と感じたかを考えて、自分の中にしかない正解ににじり寄っていくのにWildcardは役立つと思います。


・アップスケール時に注意

テスト生成が終わり、ようやく本番生成というときに注意すべきポイントがあります。img2imgタブに移動してアップスケールをする場合、プロンプトを確認するようにしてください。再びプロンプトがランダム(__XXXX__が混じって状態状態)になってしまうと、生成結果がおかしくなってしまいます。「img2imgに送る」ボタンを押すときは、ちゃんとプロンプトが確定後のものになっているかよく見てから生成開始するようにしましょう。


フルプロンプトのランダム生成も可能

wildcardは、テキストに書かれた各行を一つだけランダムに採用する機能ですので、一行にいくらでもタグを詰め込むことができます。つまり、プロンプトの一部だけを差し替えるだけでなく、完成した全く別のプロンプトを何行かに分けて記述しておけば、同時に全く違うプロンプトで生成を行うことも可能になります。


例えば「test.txt」というファイルを作り、このように1行目にちびミナちゃん、2行目に綾香さんのプロンプトを記述したとします。(右端で折り返していますが、それぞれは1行扱いです)


この状態で「__test__」のみで生成すると、このように毎回1行目か2行目のプロンプトが選択されて、2種類の生成を同時に行うことができます。

この方法で4種類のプロンプトを100バッジ生成すると、全400枚にほぼ均等に4種のイラストが割り付けられることになります。朝出かけてから帰宅するまでずっと生成させるような場合、無駄な生成量を押さえながらさまざまなガチャを楽しむことができて大変便利です。


XYZプロット的な使い方も

wildcardはさまざまな設定で最適な結果を探っていくXYZプロット的な使い方もできます。(XYZ plotについてはこちらを参照)


例えば、そのイラストに合ったクォリティタグをいろいろ探ってみたいときに、クォリティタグ部分を何パターンか書き分けてwildcardを多数回ガチャる…なんて使い方も可能です。



「キュー(待ち行列)」として使う

「ダウンロードキュー」という言葉をよく聞くと思いますが、イラスト生成でもあんな風に「まずはAのイラスト、その生成が終わったらBのイラスト、その次は…」と、いま頭の中にある複数のアイデアを順番に試したいときってありますよね。これまではAの生成が終わったら、その結果を見て、次にBを試して、というふうにずっとPCの前に座っていなければならなかったのですが、wildcardを使えばもっとスマートにできます。


例えば、これから漫画のコマを10コマ分作りたいとしましょう。一つ一つ組んでは生成、組んでは生成していたら何日掛かっても終わりませんが、10コマ分のプロンプトをさきに組んでwildcard化し、Forever生成(生成ボタンを右クリックして停止するまで生成を続ける手法)しておけば、翌日には大量のコマ材料がPC内にできあがっているわけですね。

LINE用のスタンプづくりなどをするときにも、wildcardは役立ちそうです。LINEスタンプは8、16、24、32、40枚用意する必要がありますから、それだけの行数のプロンプトをwildcardにしておいて、外出中に掛ければOK。キャラクターを統一してもよいですし、ランダムにしたい場合も、複数のwildcardを組み合わせれば思い通りにガチャを引き続けることができます。


とにかくアイデアさえあれば、どんどん創作の幅が広がる拡張機能なので、ぜひ活用してみてくださいね。


それでは今日はこのへんで。スタジオ真榊でした。


Files

Comments

金柑

わかりやすい記事ありがとうございます。 ワイルドカード、とても便利ですよね! 私も愛用しています! この記事を拝見して、「パンツ2枚穿き」と「ピンクのパンツが多くなる現象」は誰でも起こりえるんだなと少しほっとしました。 もし解決策をご存じでしたらご教授ください。 ※ネガティブに2pantiesやpink pantiesを入れても直りません。 と、少し話が逸れたついでにご要望を。 もしお時間に余裕があれば「みんなの悩みと解決方法」というような企画?記事が欲しいです。 私の場合、「パンツ2枚穿き」と「ピンクのパンツが多くなる現象」や「文字やハートマークのようなものが画面上に多量に出る」事があるという悩みがあります。 ※思い当たる文言をネガティブに入れても解消せず AI術士として、その悩みが自分だけのものかの把握と、解決方法の模索ができるのはとても有意義だと思います。 何卒ご一考ください。

z-kumagon

ワイルドカードがリストに出せず苦戦中です。 アップデート時にエラーが出てアップデートのチェックすら出来ない状態になってしまったので、再び最初からセットアップいたしました。 今回はいくつかのダウンロードしたファイルがあるフォルダを先にバックアップへ逃がしておきましたが、いくつか漏れがありました。復旧だけで時間かかりますね。いや、本当に助かります。

shingo.play

いつも丁寧なご解説、ありがとうございます。 今回の解説も「Forever生成」ライフのQOLが向上いたしました! さらなる向上に向けて、Width、Height(正確にはアスペクト比)にもバリエーションを持たせたいと思って、やり方を探しているのですが、ここは何かやり方をご存じだったりしますでしょうか? (内部的にはStable Diffusionに引数として渡しているはずなので、その処理を上書きできれば出来るのかな?と思って探しているのですが。。。)

z-kumagon

Wild cardで男要素と女要素を別個に固めたら混ざらないんじゃないかという… 夢を見ました。 部分的にチェックポイントやLoRAのオンオフまで制御出来ればなぁ。

一閃

いつも有益な情報ありがとうございます。 この記事を参考にワイルドカードをフル活用しようと色々試してたんですが、これってテキスト内にLoRAを記述しても読み込んでくれないんでしょうか? テキスト内にプロンプトと<lora:xxxx>の記述をしたんですが、どうも読み込まれてないっぽくて。。 ただ作られた画像をPNG infoに放り込むとちゃんとセットはされてるという・・・。 ワイルドカードで色んなLoRAを効かせられると色々捗るのでもし良い方法があれば教えてくださいませ

ohyamanobuko

素敵のzipご提供ありがとうございます。色々な表情を作れて楽しいですね!ミオリネさんの笑顔がなかなか出てくれないので、{laughing|(__expressions__)} としてみたのですが、動作することもあるものの、laughing で固定されることもあり、動作が安定しないようでした。dynamicと混ぜて使えるものではなさそうですね。笑顔多めに記述した __laughing_expressions__ とか作ってみます

naritomo08

この記事を見てwildcard使ってみようかと思います。 これまで数千キャラのランダム出力をdynamic_promptで行っていて、プロンプトの作りで混乱することあったので活用させていただこうかと思います。