Home Artists Posts Import Register

Downloads

Content

こんばんは、スタジオ真榊です。このところControlnetの研究報告が続いたので、今夜はとっても便利なのに取り上げる機会がなかった拡張機能、「Wild card」についての記事を書こうと思います。「固定シチュエーションを色んなキャラで描いてもらおう!」で紹介したDynamicPromptに似た機能で、何にでもなれる「ワイルドカード」のようにプロンプトにランダム要素を取り入れることができるのですが、うまく使うとDynamicPrompt以上に柔軟でエキサイティングなガチャを楽しめます!まだ試していない方はインストールの価値があるので、ぜひトライしてみてくださいね。


インストール方法

WebUIの拡張機能リストの中にあるので、日本語化のときと同様にインストールするだけでOKです。

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

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

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

・成功していれば、「設定」タブの左隣あたりに「Wildcards Manager」タブが現れる



どんな機能なの?

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


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


dynamic promptではすぐにプロンプト欄が埋まってしまうので、せいぜい3~4種類の要素をいじるのが精一杯だったわけですが、wild cardなら数十でも数百でも、danbooru tagsやプロンプト新辞典に書いてある要素をがっつり盛り込んでSSR待ちをすることができますし、これからこの記事でご紹介したいさまざまな応用法があります。さらにControlnetと組み合わせると、例えば「Segmentation」で構図を固定しながらさまざまな容姿のキャラクターを生み出すことも可能になるわけで、似たりよったりのイラストでフォルダが埋め尽くされるより、ずっと楽しみになると思いませんか?



一つ一つのテキストにはこんな感じで、ランダムに入れ込みたいプロンプトを記入します。これは「expressions」というテキストにしたので、「__expressions__」をプロンプトの中に入れればこれらのうち一つの表情がランダムに挿入されるというわけです。


【ポイント】テキストは1行だけでもOK!

実はこのテキストファイル、複数行にわたっていればそのうちランダムに一つが選ばれるわけですが、1行だけなら必ずその文字列が選択されます。ということは、

(anime coloring:1.4),masterpiece,extremely detailed CG,official art,high resolusion

と1行だけ書かれた「quality.txt」というテキストファイルを置いておけば、「__quality__」と指定するだけでいつものクォリティタグを一括呼び出しすることも可能なわけですね。看板娘的な「うちの子」キャラの起動術式を放り込んでみるのも便利ですよ!(※残念ながら記事執筆時点ではネガティブプロンプトには使えないようです)


使い方


テキストファイルの保存先は「C:\stable-diffusion-webui\extensions\stable-diffusion-webui-wildcards\wildcards」。いちいちテキストを作るのは面倒だと思いますので、こちらでdanbooruタグを適当にぶちこんだかんたんwildcard集を作っておきました!



sakaki-wildcards


こちらのzipファイルをダウンロード後解凍し、上記の保存フォルダに放り込みましょう。まずはテストとして、試しにこちらのプロンプトで生成してみます。


__pose__,__expressions__,1girl having beautiful __color__ eyes and __breasts__ and __color__ hair,__length__, wearing detailed __wear__,background is __outdoor__+クォリティタグ


前後の「__」は全角アンダーバーではなく「半角アンダーバー✕2」ですのでご注意を。


生成結果




はい、見事に全然違う画像になりました。それぞれのプロンプトを見てみましょう。


【左上】contrapposto,wavy mouth,1girl having beautiful light green eyes and breasts and pink hair,very long hair, wearing detailed cardigan,background is hill

【右上】arms behind head,furrowed brow,1girl having beautiful streaked eyes and breasts and white hair,absurdly long hair, wearing detailed aran sweater,background is ferris wheel

【左下】faceplant,furrowed brow,1girl having beautiful orange eyes and breasts and colored inner hair,very short hair, wearing detailed raincoat,background is cave

【右下】arm_up,grin,1girl having beautiful blonde eyes and breasts and blonde hair,very long hair, wearing detailed safari jacket,background is crosswalk


それぞれポーズ、表情、目の色、髪の色、髪の長さ、服、背景がランダマイズされているのが分かると思います。ここまですべてランダムにしてしまうと、もはやただの「1girl」生成とある意味同じような結果になってしまいますね。ちなみにこれ、胸の大きさのランダム化に失敗して、全部「breasts」になってしまっています。これは、テキストファイル名が「breast.txt」なのに、「__breasts__」と誤記してしまったせい。「eye」と「eyes」など、最後の「s」を間違えることがよくあるので、皆様もご注意下さい…。


wild cardを使いこなす上で大切なのは、全部AIにお任せするのではなく、シチュエーションを指定してしまうことです。例えばこちらのように…



「夜のアウトドアエロバニーさん」という要素を固定してしまい、他をランダマイズすることで奇跡の取り合わせを狙うパターンですね。プロンプトは以下の通り。


__outdoor__,erotic,__pose__,__expressions__,1girl having beautiful __color__ eyes and __breast__ and __color__ hair,__length__, wearing (detailed __color__bunnysuit,pantyhose,bunny ears:1.4),night,beautiful sky+クォリティタグ



ランダム要素は広げすぎると収集がつかなくなるので、自分の好みを一点突破で狙うのが良いようです。例えばシチュエーションを固定してキャラクターの「job」だけランダマイズするとか、逆にキャラクターを固定して背景だけランダムにしてみるとかですね。


注意が必要なポイントとして、「img2imgに送る」をしても、プロンプトは固定される前のランダム指定のもので送られてしまいます。そのままアップスケールしたいのに全く違う画像になってしまうことがあるので、各イラストの確定プロンプトからコピペするか、いったんimage browserなどからアップスケールしたい画像を選んで、そこから「img2imgに送る」ようにしてください。



こちらはメイドさんをランダム生成したパターンですね。ランダム化の要素はあまり多くしすぎず、Forever生成するときに何かバリエーションしても良い部分(例えば瞳の色や胸の大きさなど)を特定しておくとよいでしょう。ただ、実はwildcardの真骨頂はまだ他にあります。


フルプロンプトをランダム生成しよう!


ちょっと考えてみましょう。起動術式やクオリティタグを一行に詰め込めるということは、あるイラストのプロンプト全体を一行に詰め込んでも問題ないはずです。例えば「test.txt」というファイルを作り、一行目に「パノラマ風景と少女」のプロンプトを入れたとします。2行目は「えちちなメイドさん」、3行目は「フィギュアスケート選手」、4行目は「魔法使い」として、プロンプト「__text__」だけでランダム生成してみましょう。



残念!えちちなメイドさんが抽選漏れしました。


ただ、この方法で4枚を100バッジで生成するとなると、全400枚にほぼ均等に4種のイラストが割り付けられることになります。朝出かけてから帰宅するまでずっと生成させるような場合、無駄な生成量を押さえながらさまざまなガチャを楽しむことができるわけ。これって、さらに応用できると思いませんか?


X/Yプロット的な使い方をしてみよう!


そう、wildcardはさまざまな設定で最適な結果を探っていくX/Yプロット的な使い方もできるのです。例えば、このイラストに合ったクォリティタグをいろいろ探ってみたいときに、クォリティタグ部分を何パターンか書き分けてwildcardを多数回ガチャる…なんて使い方ができます。



【1行目】(えっちなメイドさんプロンプト)+masterpiece,high resolusion,illustration,ultra detailed 8k art

【2行目】(えっちなメイドさんプロンプト)+(masterpiece:1.5), (high resolusion:1.5), (illustration:1.5),(ultra detailed 8k art:1.5)

【3行目】(えっちなメイドさんプロンプト)+(masterpiece:2), (high resolusion:2), (illustration:2),(ultra detailed 8k art:2)

【4行目】(えっちなメイドさんプロンプト)+glowing particles,illustration,extremely detailed,intense shadows

【5行目】(えっちなメイドさんプロンプト)+beautiful,8k,delicate

【6行目】(えっちなメイドさんプロンプト)+soft lighting,shiny skin,curated masterpiece


こんな風にいろいろな可能性をガチャってみるのもよいでしょう。こうしたクォリティータグ確認ガチャをよく試すなら、「+」以下だけを「qualitytest.txt」にすればOKですし、慣れてくるとプロンプティングの幅がグッと広がります。ちなみに、上記のwildcardでできたのがこれ。



どれがどのプロンプトで生成されたかは、生成結果を見て確認しましょう。ちなみにこちらの画像のプロンプトは下記のとおりでした。私は右上の意外性が好きです笑


【左上】(masterpiece:1.15), (high resolusion:1.2), (illustration:1.05),(ultra detailed 8k art:1.05)

【右上】glowing particles,illustration,extremely detailed,intense shadows

【左下】(masterpiece:1.5), (high resolusion:1.5), (illustration:1.5),(ultra detailed 8k art:1.5)

【右下】masterpiece,high resolusion,illustration,ultra detailed 8k art


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


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


例えば、これから漫画のコマを10コマ分作りたいとしましょう。一つ一つ組んでは生成、組んでは生成していたら何日掛かっても終わりませんが、10コマ分のプロンプトをさきに組んでForever生成しておけば、翌日には大量のコマ材料がPC内にできあがっているわけです。それが30コマなら?いや30ページ分なら?夢が広がりますね!



終わりに


そんなわけで、今日の記事は「Wild cardでもっとForever生成を楽しもう!」でした。さっきは「夢が広がりますね」で終わらせちゃいましたが、もっとはっきり言えば、10種類のキャラの見た目(__chara__)+「日常風景」「こちらを睨んでいる」「催眠を掛ける(虚ろ目)」「笑顔のえっちシーン」の4つ(__situation__)を何日間か大量生成して正しく並べ替えた場合、安易に10人分のワンシチュ催眠4コマCG集ができてしまいます。この機能の名前、wildcardで本当にいいのか?


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


それでは皆様、よりワイルドな画像生成ライフを!スタジオ真榊でした。


Files

Comments

金柑

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

スタジオ真榊

どれもあるあるですわね~。それは学習モデルがそのように学習元から学んでいるので、完全に排除することはできないのですわ。高品質なえちちイラストが出るのと引き換えに、そうしたえちちイラストにはピンクのパンツや文字やハートマークや体の震え線が描き込まれているので、どうしても出てしまうんですよね(少数枚から学ぶLoRAなんかはその傾向が顕著ですわ) どれくらい強く出るかは出したいイラストと学習モデル等によりますが、排除する方法はネガティブに思い当たるものを入れるほかないと思います。トラブルシューティングというよりAIの宿命みたいなものですが、現時点では学習モデルの進歩を願うか、自分で作るほかないと思います。今後の技術進歩に期待ですわね~(パンツニ枚履きはpanty thighletをネガティブに入れるとか、Controlnetで直すこともできます。Cannyで抽出して二重パンツ部分を消して再生成とか) AIイラストあるある質問集みたいな企画はあっても面白いですね、考えてみます!

金柑

そうだったんですね! 勉強になります! 自分でモデルを作る事はできそうにないのです技術の進歩に期待します… パンツ2枚穿きの解決策もありがとうございます! ボツ画像で試してみたいと思います!! あるある質問集楽しみにしてますね!

z-kumagon

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

スタジオ真榊

あるあるですわね~~~再セットアップ、何度やったか分かりませんわ。増築に継ぐ増築でみんなわけわからん状態になっていると思うので、どこかでドンガラしないといけないのですわ…

z-kumagon

そして再セット完了しても見つからないなと焦っていたら、気がついたらタブがもうある…。 うん、便利でした。 お騒がせいたしました。 これ、指定した要素を1つ選択ではなく、指定要素全盛りのやつが欲しいですね。(※LORAも含めて一行に纏めたらいいんですね。理解しました。)特定のキャラの設定を纏められて楽ですね。

Anonymous

フォルダ指定が 「C:\stable-diffusion-webui\extensions\stable-diffusion-webui-wildcards\wildcards」 と説明されていますが、おそらく正しくは 「C:\stable-diffusion-webui\extensions/sd-dynamic-prompts/wildcards」 ではないでしょうか?

Anonymous

(スラッシュの向きがなんか途中からおかしいですが誤植です)

スタジオ真榊

dynamic promptsにも同じワイルドカード機能があって、そのフォルダはそちらの方のフォルダですわね~。機能としてはこの記事で紹介しているstable-diffusion-webui-wildcardsと同じなはずです!

Anonymous

これ違う機能なんですね ありがとうございます。

shingo.play

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

shingo.play

(プロンプトの中にWidth、Height指定が記述できれば話は早いのですが。。。)

スタジオ真榊

おおっ、その発想はありませんでしたわ。外出しちゃったので確認できませんが、それはxyプロットで設定できるのではないかしら。x軸にheight、y軸にwidthをいくつか入れてフォーエバー生成すると(ランダムではありませんが)複数のアスペクト比で出そうな気がしますわ。

shingo.play

x/y/xプロットの中にも、Width、Heightの項目は無いんですよ。 恐らく、生成時の重みや探索ステップとは別レベルの、そもそもの生成ネットワークの規模(出力層のサイズ)を決めるためのパラメータだと思うので、ちょっと扱い方が違うのかなぁ、と思ってます。 もし、何か情報があれば共有頂けると幸いです。

スタジオ真榊

そうでしたか、想像で知ったかしちゃいましたわ… 確かにアスペクト比は生成の根幹に関わる部分なので、そう簡単にいじれない要素な気がしますよね。何か方法がありそうな気もしますし、ほっといたらしれっとxyプロットに実装されてそうな気もしますが、気づいたことがあったら報告いたします😊

shingo.play

いえいえ、こちらこそ教えをこいている身ですので 私も、引き続き情報収集してみます ありがとうございました

z-kumagon

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

一閃

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

ohyamanobuko

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

スタジオ真榊

たぶん、()を取り払って{laughing|__expressions__}だと動作するのではないでしょうか?いま手元でやってみましたが、おそらく大丈夫そうでした。

ohyamanobuko

最初 {laughing|__expressions__} で試していたのですが、動作しなかったため () を付加したところ、そのときは動作しました。しかし、あとでもう一度やると、動作せず。動作したりしなかったりな不安定な挙動です。 もしかすると、例によって、自分の環境の問題ということもありそうですね。PC再起動してみます

ohyamanobuko

見直したところseed固定でXYZ plotで回していたので、ランダム選択結果が固定になっていた状況でした。ちゃんと効いてますね。お騒がせしました。 Wild cardは最近は最初からインストールされていますし、超便利機能ですね。活用させていただきます。