
【効率化爆上げ】古参最推し機能"大量ランダム生成効率化" -Dynamic Promptsのすすめ【最推し機能】
今回の記事ではAIギャル物語の最推し機能である"Dynamic prompts"について応用的な使い方も含めてご紹介します。
関ヶ原の戦いに素手で挑んでいた方々に日本刀を贈呈致します。
自己紹介
はい。歴史上最もギャルを生成した人類。(AIギャル物語調べ)
AIギャル物語と申します。
かれこれ100万人は生成してます。
【生成暦】:2年弱。古参の部類になるかと思います。
【活動場所】:Xでギャル垢と地雷系女子垢を運営していてSNS合計5万人弱のフォロワーがいます。
あと、最近はパン派です。
https://x.com/JPAI_HEAVEN/status/1857732846468632679
最近は動画を個人でもコラボでも作ってます♪
じま…自己紹介は以上で本題に入ります。
Dynamic promptの導入と使い方(基本編)
※初心者向けです。
まずはここで素手から木刀に進化しましょう。

■冒頭
画像生成に慣れてくると一気に色んなシチュエーションをまとめて生成したくなると思います。
それを普通に実行しようとすると非常に手間です。
そんな時このDynamicPromptsが大きく手助けしてくれます。
機能としては一枚生成する毎にランダムにプロンプトを変更してくれます。そうする事で大量生成する際に毎度全く違うシチュエーションにできるわけです。
■インストールと簡単な使い方
Dynamic prompts自体はかなり前からあるので色んな方々が導入や簡単な使い方を説明してくれてます。
まずは、こちらの解説をしてくれているページをご覧いただいてDLして触ってみて下さい♪ 著者様に感謝を。
簡単に少しだけ機能を紹介すると大きく2つあります。
①プロンプトの直接ランダム化:{ A | B | C }
入力したA、B、Cからランダムに適用される。
ex.) She has { short | long } { black | blonde | brown } hair.
⇒{ ショート orロング }×{黒 or 金 or 茶色}の2×3=計6パターンの髪の長さと色の組み合わせをランダム化できる。
②wildcard:__XYZ__
事前に用意したXYZ.txt(名前はなんでもいい)に保存しておいたプロンプトからランダムに一個適用される。
(.txt内に書くプロンプトは単語でも文でもいい。各単語or文の区切りは改行で認識される)
※wildcardはDynamicPromptsという拡張機能の中の機能の一つです。
■Wildcardの保存
次に実際に使うランダム化したいプロンプト集(wildcard)を用意するんですが、
例えば色関係をランダム化したいなぁという方は
red
blue
yellow
green
の様に単語と単語の間を改行して記入した.txtファイルを用意します。
そして用意したwildcardを以下保存先に保存します。
webui\extensions\sd-dynamic-prompts\wildcards
これで準備は完了です。
※webUIのverが古いとwildcardの内容を編集したり、新しいwildcardを追加した際は必ずStablediffusionを再起動しでないと内容が更新されませんでしたが、最近のverは再起動不要です。
※wildcard(.txt)に入れるプロンプトは単語だけでなく、〇,〇,〇という風に,区切りの複数語もOK。文と文の区切りは改行で認識されます。
■Wildcardを適用する際のプロンプトの書き方
wildcardを適用するには
__(適用したいwildcardのファイル名)__
という形で記述する必要があります。先ほどの色のwildcardを例に取ると、
__color__
という記述になります。
この前後の「__」はアンダーバーを2回書いたものでwildcardを呼び出すキーになるんですが、非常にわかりにくいので私は「*」に変更してます。
この呼び出しキーの変更は”settings(設定)”-"dynamic prompts"の該当部分を変更する事で任意のものに変えられます。

ここから先では、__ XXX __ではなく* XXX *と表記する事にします。
先ほどの色のランダム化に話を戻してより具体的にプロンプトを書くと
a girl, *color* hair,sea,beach
という様に、海辺に佇む少女の髪の色をcolor.txtに保存されたプロンプトの中からランダムに1色を呼び出して適用する事ができます。
なんだ髪の色をランダムにできるだけかぁ。。。
と思ったそこのあなた、こんなもんではないです。
Dynamic promptの使い方(応用)
※中級者以上はここから読んでね

ここでは、基本的な使い方を身に着けた方向けに更に一歩進んだ応用的な使い方を説明します。これらをマスターすると木刀から日本刀に進化します。
■あらゆるプロンプトのランダム化(∞)
まず、私が普段生成する際に使っているプロンプトを紹介します。
1girl, looking at me, *make*, *pose*, *cloth*, *scene*
解説すると全部で4つのwildcardを使ってまして
*make*…化粧のwildcard (黒ギャルと白ギャルをランダム化)
*pose*…様々なポーズのwildcard
*cloth*…様々な服装のwildcard
*scene*…様々な背景のwildcard
という形で、生成画像を構成する大部分をランダムプロンプト化することで、組み合わせとしては100万通り以上のパターンを作り出しています。
すっごい!!
■Wildcardのマトリョーシ化(∞×∞)
マトリョーシカ知ってますか?
人形の中にまた小っちゃい同じ人形が入ってるロシアの人形です。
それと同じようにランダム化の中にランダム化を織り交ぜていきます。

【準備】
まず先に誤っておくと、ごめんなさい。私は先ほど嘘をつきました。
本当は↑の様なプロンプトを使っていません。
例えば、衣装のwildcardを作る際に全部の衣装を一つのwildcard(.txt)にまとめてしまうと常に全ての衣装からランダムに選ばれてしまいます。
一方で、段々使っているとその中から一部だけ適用したくなってくると思います。
例えば、
「このシチュエーションにはスカートものだけがいいな~」とか、
「今回は丈が短くて足が出てるやつだけにしたいな~」とかです。
そういった欲望に備えて、wildcardを保存する際に衣装の中でドレスのコーディネート、ミニスカートのコーディネート、ショートパンツのコーディネート、ロングパンツのコーディネート等々、ジャンルごとに分けてwildcard(.txt)を保存する事をお勧めします。

【実践】
そしてここから実践に入りますが、実は{|}とwildcardは併用できます。
これを活用した3つの型を紹介します。
①特定のwildcard群から均等比率で呼び出す。
②呼び出すwildcardの出現比率を変える。
③たまーにだけ呼び出す。
<①壱の型 ー均等出現型ー>
ex.)
{*mini_skirt* | *mini_dress* | *long_dress* }
⇒ミニスカ:ミニドレス:ロングドレス=1:1:1(出現比率)
このように記述すると、
この3つのwildcardのどれが適用されるかがランダムに決まります。
そして決まったwildcardの中からプロンプトがランダムで呼び出されるわけです。つまりマトリョーシ化。
こうする事で、たくさんあるwildcardの中からその時使いたいwildcardを絞ってかつ均等に呼び出せます。
<②二の型 ー出現比率調整型ー>
あと私が良くやるのが、ミニスカートの比率はあげたいけど、ショートパンツ(ショーツ)も少し欲しいなって時。とてもよくあるよね。
そういう時は、
ex.)
{*mini_skirt* | *mini_skirt* | *mini_pants* }
とか
{*mini_skirt* | *mini_skirt* | *mini_skirt* | *mini_pants*}
⇒ ミニスカ:ショーツ=2:1 / 3:1 (出現比率)
という風にあえて同じwildcardを重複して書くことで出現比率を調整できます。やったぜ。
<③三の型 ーあえて書かない、そう、あえてね…型ー>
根本的には②と変わりませんが、
よく使うのが例えば眼鏡とかガーターベルトとかの装飾品系って多くの人にとってはたまーに出て欲しくて、毎回はいらないですよね。
そういう時は、
{ | | *item* }
⇒item.txt 出現頻度 33%
{ | | | *item* }
⇒item.txt 出現頻度 25%
(item.txtは事前に用意した装飾品系プロンプトのwildcardです。)
みたいな感じで、{ | }の中に何もプロンプトが入っていない項目を入れておいてwildcardが呼び出される比率を何も入力していない項目の数によって調整できます。これはマジでよく使う。
ちなみに割とピンポイントで欲しい時が多いので、
{ | | garter belt}
みたいな感じでwildcardではなくプロンプトを直書きする事が多いです。
【※2024/12/2追記】
もっとスマートな出現頻度調整方法をfai-9さんより教えて頂きました。
{0.5:: A | 0.1:: B | 0.3:: C | 0.1:: D}
という風にプロンプトの前に「数字::」をつけると、
各プロンプト前につけた数字の比率に応じて出現頻度を調整可能です!
スマートですね ♪
■<参考>マトリョーシ化の究極系(∞×∞×∞)(非推奨)
超絶システム管理化好きマン用です。
実はwildcardの中身には先ほどの{ | }を使う事が可能です。
そして、その中にwildcard呪文{ *XXX* }を書いて適用する事が可能なのです。
そうするとこうなります。

ア〇ウェイみたいな図になり恐縮ですが、
簡単に説明すると
A.txtというwildcardの中に { *B1* | *B2* | *B3* } という文を入れておくと、
Aが呼び出されたときにランダムにB1,B2,B3のどれかが呼び出されます。
そしてB1~B3にも同じ様に { *? * | *?* | *?* } という風にまた別のwildcardをランダムに呼び出すようにしておくと∞にネッ〇ワークビジネスの様に幸せの輪が広がっていきます(意味不明)
今までの技を組み合わせるとこういった摩訶不思議アドベンチャーマトリョーシ化が可能です。
ここまで複雑にして生成したいものがあまり浮かびませんが、一応知識として共有します。私は使ってませんし、システマティックな管理が相当好きな人以外はあえて勧めません。
Tips: 入力の簡素化
もう一つだけ。
これはランダム化とは関係ないですが、いつも書いている固定の長文プロンプトってありますよね。
SD1.5系ならbest quality~とかPony系ならscore_9 ~とかです。
あの辺の固定で毎回使うやつは一つのwildcardにいれてしまって毎回呼び出すようにすると、便利です。

まとめ
以下まとめです。
・とにかくDynamicPromptsを使ってみよう!
・3つの型を使いこなそう!
・AIギャル物語を応援しよう!
最後に
参考までに、私はXで衣装のプロンプトを最近公開し始めました。
是非チェックしてみて下さい♪
◆◇ギャル図鑑 & 衣装プロンプト配布💖◆◇
— AIギャル物語/AI gal's story (@JPAI_HEAVEN) November 23, 2024
年齢:23歳
職業:広告プランナー
趣味:サウナ巡り
好きな食べ物:グレープフルーツ
※衣装プロンプトはALTに記載してます!画像左下の『ALT』を押して確認してね♪#衣装プロンプト pic.twitter.com/ftcbCZHOCp
今後は無料プレゼント企画や特に良質なものは有料記事で販売も考えています。
暇な人用
ホントはこの記事書くつもりはなかったんですが、
noteを漁っていたらちょうど1年ぐらい前に7割ぐらい書いてた下書きを見つけたので今の状況にアップデートして公開することにしました。
「なんか文体が前回と違くね?」と思った方、
まだnote記事のキャラどんな感じでいけばいいか定まってないから気にすんな!
ではまた次回お会いしましょう!