「固定シチュ・ランダムキャラ」で大量生成 DynamicPromptの活用法 (Pixiv Fanbox)
Content
こんにちは、スタジオ真榊です。今回は「Dynamic prompt」というローカル用の拡張機能を使って、シチュエーションはしっかり固定しながら、毎回異なるキャラクターの画像を大量生成する方法について解説します。
※2023年1月に「固定シチュエーションを色んなキャラで描いてもらおう!」として公開した記事がやや古くなったため、現在のSDXL環境(AnimagineXL3.1使用)で再構成した内容となります。再現例が男性向けR-15シチュエーションのため、苦手な方はご注意ください。
ご存じの通り、SDwebUIやForgeではオレンジ色の生成ボタンを右クリックすることで、停止するまで同じ条件で生成を続けることができます。これはNovelAIなどの有料サービスにはない、ローカルならではの利点の一つと言えます。
ただ、せっかく数百、数千枚の画像ができてもキャラクターの造形にバリエーションがないと面白くありません。例えばこちらの画像をご覧ください。
こちらは賢木の好みである「メイドさんangry lift skirtシチュエーション」を大量にt2iしたうちのグリッド画像1枚です。シチュエーションだけでなく、黒髪・短髪・青瞳のキャラクター造形も固定されてしまうので、意図した画像がたくさんできる代わりに意外性もありません。それはそれでありがたくはあるのですが、「何が出るかな?」というガチャっぽい楽しさが得られないのですよね。
髪色や髪型などをプロンプト指定しなければある程度の幅は出ますが、自分で選んだ少数のパターンの中で組み合わせてもらえたら、より狙い通りの画像を作れるはず。そこで、今回はローカルの拡張機能「DynamicPrompt」を使って、シチュエーションは固定しながらキャラクター造形に意図した幅を持たせる方法を試してみましょう。
ダイナミックプロンプトの基本
SDwebUIやForgeのExtension画面で拡張機能「sd-dynamic-prompts」をインストールすることで、特殊なプロンプト記法が使えるようになります。{Aword|Bword|Cword}のように、{}と|を組み合わせて複数のプロンプトを記述することで、これらのうちどれかを毎回ランダム選択するようAIに指示することができるーというのが基本。例えば、1girl, {blue|red|blonde} hairのように利用すると、毎回青/赤/金色の髪のうちどれかが3分の1の確率で選ばれることになります。(青赤金の順に選ばれるわけではありません)
ランダム結果にある程度偏りを付けたい場合は、{white|white|black}のように、多く選択させたいタグの数を多めに表記する方法があるので、覚えておきましょう。「|」で区切ればいくつでもタグを増やせるので、例えば「black hair,black eyes|blue hair,blue eyes|red hair,red eyes」のように複数タグを並列した記述もできます。
このほか、下記のような方法でより高度なランダム指定も可能です。
{2$$A|B|C}
3つのプロンプトのうち、どれか2つがランダムで選択される
{1-3$$A|B|C}
3つのプロンプトのうち、1~3つがランダムで選択される
{2$$and$$ A|B|C}
A, B, C のうちどれか2つが選択され、「and」で結合される。
Wildcardとの違い
プロンプトをランダムで選択する別の方法として「Wildcard」があります。こちらもDynamicPromptの機能の一つで、事前に用意しておいたテキストファイルに列記したプロンプトの中から、毎回ランダムに1行を選択する機能です。詳しくは下記記事をご参照ください。
「Wild card」でもっとForever生成を楽しもう!
こんばんは、スタジオ真榊です。このところControlnetの研究報告が続いたので、今夜はとっても便利なのに取り上げる機会がなかった拡張機能、「Wild card」についての記事を書こうと思います。「固定シチュエーションを色んなキャラで描いてもらおう!」で紹介したDynamicPromptに似た機能で、何にでもなれる「ワイルド...
例えば「用意した100種類の髪型プロンプトの中から毎回ランダムに一つ選ぶ」ようなことがしたい場合、{a|b|c}の記述法だとプロンプト欄に100種類もタグを書き連ねなければならないのに対し、Wildcardでは「__hairstyle__」と書くだけでできるというメリットがあります。選択肢が少なくてよい場合は{a|b|c}の記述法を使い、選択肢が多い場合はテキストファイルを用意してwildcardでランダム化…というように使い分けるとよいでしょう。
インストール方法
DynamicPromptはWebUIの拡張機能リストの中にあるので、webUIの日本語化のときと同様、下記のどちらかの手順でインストールするだけでOKです。
【1.一覧からインストールする場合】
①拡張機能(Extensions)タブから拡張機能リストを開き、読み込みボタンをクリック。
②リスト下方にある「wild card」の欄の「Install」ボタンをクリック(見つからない場合は検索欄の下の「スクリプト」のチェックを外す)
③拡張機能リストの左隣の「インストール済」タブから「適用してUIを再起動」
④成功していれば、「設定」タブの左隣あたりに「Wildcardの管理(Wildcards Manager)」タブが現れる
【2.URLからインストールする場合】
①拡張機能(Extensions)から「URLからインストール」のタブを開く
②「拡張機能のリポジトリのURL」欄に「https://github.com/adieyal/sd-dynamic-prompts」と入力
③インストールボタンを押す。インストールが終わったら、拡張機能リストの左隣の「インストール済」タブから「適用してUIを再起動」
④成功していれば、「設定」タブの左隣あたりに「Wildcardの管理(Wildcards Manager)」タブが現れる
具体的な使い方
さて、実際にダイナミックプロンプトを使って固定シチュエーションのランダムキャラ生成を試してみましょう。今回はAnimagineXL3.1を使い、「いやな表情でスカートをめくっている美人メイドさん」シチュエーションをさまざまな表情・髪型・髪色・瞳色・服色・胸の大きさで生成してみたいと思います。プロンプトは以下の通り。
PP:1girl,{black|white|cyan|pink|green} dress,maid costume,from below,focus on panty,night room,sexy,lifted skirt by self,{angry|glarling|bad mood|expressionless},holding skirt,disgust,garter belt,detailed lace panty,{black|white|red|cyan|pink} panty,detailed stockings,emblassed,cinematic lighting,shiny skin,{red|brown|blue|black|blonde|silver|gradient} hair, {long hair|short hair|bob cut|twintails|low_twintails|forehead} hair,{blue|purple|cyan|silver} eyes, {large|medium|small} breasts, legs_together,fisheye lens, straight-on,masterpiece, best quality, very aesthetic, absurdres
NP:nsfw, lowres, (bad), text, error, fewer, extra, missing, worst quality, jpeg artifacts, low quality, watermark, unfinished, displeasing, oldest, early, chromatic aberration, signature, extra digits, artistic error, username, scan, [abstract],
この指定により、次のようなランダム効果が得られます。
{black|white|cyan|pink|green} dress:黒・白・シアン・ピンク・緑色のうちいずれかの色のメイド服
{angry|glarling|bad mood|expressionless}:怒る・睨む・不審な表情・無表情のいずれか
{black|white|red|cyan|pink} panty:黒・白・赤・シアン・ピンク色のうちいずれかの色のパンツ
{red|brown|blue|black|blonde|silver|gradient} hair, {long hair|short hair|bob cut|twintails|low_twintails|forehead} hair:髪型・髪色のランダム化
{blue|purple|cyan|silver} eyes:青・紫・シアン・銀色のうちいずれかの色の目
{large|medium|small} breasts:胸の大きさランダム化※
※平らな「flat chest」も入れたい場合は{large breasts|medium breasts|small breasts|flat chest}となります。「breasts」がカッコ内に入るところに注意。
実際の設定はこちらのスクリーンショットをご参照ください。スケール7、ステップ28、4x anime sharpというアップスケーラーを強度0.35で掛け、4枚同時生成してみます。
生成結果
完全に趣味な内容で恐縮ですが、このように表情にもバリエーションを出すことができます。
◆一部のランダム化がうまくいかないときは
注意ポイントとして、今回のようにたくさんランダム化すると、記述ミスにより、ランダムになっていない要素が混じってしまう場合があります。そういう場合は、画面右下にある生成画像のプロンプト欄をチェックして、間違いがないか確かめましょう。
▲ココの欄
例えば、縦線で区切って{red|black|green}としなければいけないところを{red,black,green}としてしまっていたり、{blue|purple|cyan|silver} eyesとしなければいけないところを{blue|purple|cyan|silver eyes}とカッコ内に入れてしまっていたりすると、期待した結果が得られません。
今回は色縛りで試しましたが、例えば「room」部分をいじって背景をランダムにしたり、服装を「スク水・メイド服・セーラー服・チャイナ服」からチョイスさせたりすることももちろん可能です。「何が出てくるかはわからないけど、超好きな条件しか設定していないから、自分が超好きなものが出てくることだけは間違いない」というのが、画像生成AIの醍醐味の一つですね。
◆応用法
今回は複数選択肢でのランダムキャラ化を試しましたが、私がよくやるのは固定キャラクターの複数ポーズ・複数背景です。例えば、屋外・屋内・画角・ライティング・時刻・カラーテーマ・ポーズなどをdynamic promptやwildcardでランダム化し、外出中に無限生成させておくわけですね。帰宅後に生成結果をばーっと見ていると、イラストのテーマのアイデアがとてもよく浮かびます。
最近の記事でもよく「イメージボードを作る」というくだりが出てきますが、大量に生成したものをそのまま使うのではなく、さまざまな図案をばーっと見ていると「あっこれがこうだったらすごくいいのにな」というイラストをいくつか見つけることができます。人間は連想の生き物なので、全く何もない状態からビジュアル的な発案をするのは難しいのですが、既存のものから少し整えるくらいなら結構できるのですよね。
良いと思ったイラストから、良いと思った要素を抽出して新しくプロンプトを組んだり、加筆やV3インペイントでおかしいところを修正したりと、アイデアの料理の仕方はいろいろ。こちらの記事で紹介した「既存のAI絵を基にちょっとだけ変える」Variation機能を使うことで、キャラもシチュエーションも固定した上で微妙なランダム生成を行うことも可能です。
「惜しい画像」捨てないで!Variation機能の活用法
こんばんは、スタジオ真榊です。日々色んなLoRAを試しては生成、試しては生成で、ぜんぜん本来業務(同人製作)が進んでおりません! 行けるところまで行ききらないと同人の続きが作れる気がしなくなってきたので、もう開き直ってきました。 そんなわけで、今日は「惜しい画像」についての記事です。 皆さん、お目当て...
最近のおすすめは、推しキャラに似合う髪型や私服をランダム化で模索する遊び。これもとっても楽しいですよ!この作例は、ビビっとくる髪型や顔立ち、服装を求めて{1girl|1boy|tomboy}と髪型・服装wildcardを組み合わせていろいろ試し、ポニテ+タキシードを思いついた例です。
ですが、こうした細かな自由度の高さがローカル環境の強みの一つでもありますので、しっかり生かしていけるとAI絵の幅が広がると思います。
それでは皆様、よきランダム生成ライフを。スタジオ真榊でした。