【AIイラスト】複数キャラクターの特徴指定
前回の続きです。
前回は版権のキャラクターに作品の異なるキャラクターの衣装のコスプレをさせることをさせました。
このあと、そのキャラクターを2人同時に出力しようとしたところ、合計4人分のキャラクターの特徴が混ざってしまい、訳の分からないことになってしまいました。
今回はプロンプトを少しずつ要素を足して整理しながら出力してみます。
(Illustration of two characters{(one young girl)AND(one lady)}:1.2),{full body}
まずはシンプルに2人のキャラクターを出力してみます。
指定をyoung girlとladyにしたのは、2girlsにするとキャラクターの混じりが発生して、似たようなキャラクターが2人居るイラストが生成されやすいので、簡単な特徴で見た目を分けてみました。
(Illustration of two characters{(one young girl)AND(one lady)}:1.2)BREAK{one young girl is kiyohime}BREAK{one lady is tamamo no mae},{fate},{cowboy shot}
今度はキャラクターに名称と作品名を足してみました。
キャラクターの特徴は指定していないですが、それっぽい雰囲気のキャラクターを生成しました。
{Illustration of two characters{(one young girl)AND(one lady)}:1.5}BREAK{(one young girl) is kiyohime(fate)}AND{kiyohime has {long hair, green hair, (white horns):1.2, yellow eyes, (green kimono,japanese clothes), white thighhighs, (sensu, hand fan,Hold a fan to lips)}:1.2}BREAK{(one lady) is tamamo no mae(fate)}AND{Tamamo no mae has {fox ears, fox tail,{twin tail, pink hair}:1.2, yellow eyes, collar, (blue kimono,japanese clothes),blue thighhighs}:1.2},{fate},{cowboy shot}
今度はキャラクターの特徴を足してみました。
まだ混ざっている要素はありますが、おおよそ狙った通りの2人のキャラクターを描き分けたイラストが出力されました。
ちなみに作品名を入れていますが、そうすることでそのキャラクターが出やすい…というよりも、その作品の画風で出力されやすくなるようです。
試しにFateには関係のないワンピースとかジョジョとか入れてみました。
少しだけその作品の画風になったような気がします。
{{{Illustration of {two characters}}AND{{two characters} are {two girls}}}}BREAK{{{first girl is (kiyohime(fate))}AND{second girl is (tamamo no mae(fate))}}:1.5}BREAK{{{(Kiyohime) dressed as (Satono Diamond's clothes)}BREAK{(tamamo no mae) dressed as (Super Creek's clothes)}}:1.5}BREAK{{(kiyohime) has {{{(white horns)AND(horns)}:1.5,green hair,long hair,yellow eyes,white thighhighs,[japanese clothes]:-1,(sensu,hand fan)}}}:1.5}BREAK{{(Tamamo no mae) has {{twin tail,pink hair,yellow eyes,fox ears,fox tail,collar,[japanese clothes]:-1}}}:1.5}BREAK{(Satono Diamond's clothes) is {{[Satono Diamond(unamusume)],green dress, green jacket, green skirt,sleeves past fingers, frilled sleeves, long sleeves,corset,thighhighs}}:1.5}BREAK{(Super Creek's clothes) is {{[Super Creek(umamusume)],blue dress,white mini skirt, {tight skirt}:1.2,crossbody shoulder bag,blue scarf, detached sleeves, clothing cutout, wrist cuffs,scrunchie, thigh boots}}:1.5},(upper body),(japanese style streetscape)
今度は前回の記事で作成した、Fateのキャラクターにウマ娘の衣装を着せるプロンプトを追加します。
長文のプロンプトを記述するにあたって、前回の記事で分からないと言っていたAND構文やBREAK構文の使い方について色々と調べてみて、やっと使い方が分かりました。
まずAIイラストを出力させるプロンプトは、複数のワードで構成されています。
ワード同士は空白やカンマで区切って複数の要素の指示をしています。
ここで、「ワードA,ワードB,ワードC,ワードD」と4種類の要素を記述したときに、出力されるイラストはワードDの要素よりワードAの要素の方が強く反映されやすいようです。
これを「ワードD,ワードA,ワードB,ワードC」と入れ替えるとワードDの要素がワードAよりも出やすくなり、ワードCの要素が他よりも出にくくなるようです。
これは表現がやや極端すぎで、実際は4種類のワードの要素は出力されるイラストに反映はされますが、内容に重複があった場合どちらを優先するかという話ですが…。
これまで記述する順番は適当にしていましたが、実際はキャラクターの特徴を複数記述するときは、印象を強くしたい要素から順に記述するほうがよさそうです。
この「ワードA,ワードB,……ワードC,ワードD」と非常に多くの要素を記述するときは、ワードが75個で1つのブロックになるようです。
「ワードA,ワードB,……ワードC(75個目),ワードD(76個目)」となった場合、ワードDは2つ目のブロックになるらしく、ワードAとワードDの要素の強さは同じになって、ワードDはワードCよりも要素の強さは上になるようです。
自分が使っているSpellAIは要素を記述し過ぎるとイラストの生成に失敗しやすくなるので、このルールはツールによって違うかもしれないですが…。
ここでAND構文とBREAK構文ですが、まずANDはカンマの代わりに使うことで前後のワードの強さを同じレベルにするようです。
「ワードA,ワードBANDワードC,ワードD」でワードCの要素をワードBと同じレベルに強めています。
この説明だと分かりにくいですが、上のプロンプトの場合、
サトノダイヤモンドの衣装の清姫(A),清姫の特徴(B),サトノダイヤモンドの衣装の特徴(C),スーパークリークの衣装の玉藻の前(D),玉藻の前の特徴(E),スーパークリークの衣装の特徴(F)
とA~Fの6つの要素を記述したとき、キャラクターの特徴が混ざるとサトノダイヤモンドの衣装の清姫と玉藻の前のイラストが出たり、清姫の要素が混ざった玉藻の前のイラストが出たりと、D~Fの要素よりもA~Cの要素が出やすくなる傾向がありました。
ここで「サトノダイヤモンドの衣装の清姫(A)ANDスーパークリークの衣装の玉藻の前(D)」とAND構文を使ってDの要素を強めています。
(というか後で気が付きましたが、前回の記事ではFate側のキャラクターを真名を避けてクラス名で記載していましたが、今回はがっつりと使っちゃっていました…。)
次にBREAK構文ですが、「ワードA,ワードBBREAKワードC,ワードD」とすると、先ほどの75個目と76個目の関係と同じように、ワードC以降を2ブロック目として扱う効果があります。
「清姫の特徴(B)BREAKサトノダイヤモンドの衣装の特徴(C)BREAK玉藻の前の特徴(E)BREAKスーパークリークの衣装の特徴(F)」と、4つのキャラクターの要素をブロック毎に分けることで、要素Fが要素Bより出にくくなることを避けています。
…じゃあ、要素A~要素F全てをBREAKで分けたらANDは要らないのでは?と思いますが、それは全て優先順位最高が良いのか、出力を繰り返してANDが適しているかBREAKが適してるかどうかは要調整というような気がします。
次に3人分のイラストを出力してみます。
{{{Illustration of (three characters)}:2}AND{{(three characters) are {{two children}:1.2}AND{{one adult woman}:1.2}}:1.5}:1.5},{full body}
1人の大人の女性と2人の子供の3人を出力してみました。
頻繁に3人の子供とか5人の子供とか出て、これだけでもガチャに時間がかかりました。もっと簡単に指定する方法がありそうですが…。
{{{Illustration of (three characters)}:2}AND{{(three characters) are {{three girls}:1.2}}}:1.5}:1.5}BREAK{{(first girl) is (kiyohime(fate))}:2}AND{{(second girl) is (tamamo no mae(fate))}:2}AND{{(third girl) is (artoria caster(fate))}:2}BREAK{{full body}
今度は3人のキャラクターを指定します。
キャラクターの特徴を名前しか付けていないので、特徴がかなり混ざって違和感はありますが…。
{{Illustration of (three characters)}:1.5}AND{{(three characters) are {three girls}}:1.5},(side by side)BREAK{{(first girl) is (kiyohime(fate))}:1.5}AND{{(second girl) is (artoria caster(second ascension)(fate))}:1.5}AND{{(third girl) is (tamamo no mae(fate))}:1.5}BREAK{{(kiyohime) has {{{white horns}:1.2,{green hair,long hair}:1.2,yellow eyes,white thighhighs,(sensu,hand fan)}}}:1.5}BREAK{{(Tamamo no mae) has {{{pink hair,twin tail},{fox ears,fox tail}:1.2,yellow eyes,collar}}}:1.5}BREAK{{(artoria caster) has {{{blonde hair:1.2}AND{twin tail,ahoge,sidelocks,hair between eyes},(blue beret,blue cloak),green eyes}}}:1.5}BREAK{cowboy shot}
今度はそれぞれのキャラクターの髪や顔の特徴を指定しました。
服装は指定していないので全員が和服になっていますが、キャラクターの特徴を分けて出力することができました。
{{Illustration of three characters}:2}AND{three characters are {three girls}}:2,fate:2,(umamusume's costumes):2,(cowboy shot)BREAK{{{first girl is kiyohime}:2}AND{{kiyohime dressed as Satono Diamond's costumes}:2}BREAK{{kiyohime has {{{white horns}:1.5,{long hair,green hair},yellow eyes}}}:2}BREAK{{Satono Diamond's costumes is {{green dress,corset}}}:2}}BREAK{{{second girl is artoria caster}:2}AND{{artoria caster dressed as Daiwa Scarlet's costumes}:2}BREAK{{artoria caster has {{{blonde hair,golden hair,twin tail}:1.5,{blue cloak},blue beret,ahoge,green eyes}}}:2}BREAK{{Daiwa Scarlet's costumes is {{blue dress},{miniskirt},long sleeves,epaulettes}}}:2}}BREAK{{{third girl is tamamo no mae}:2}AND{{tamamo no mae dressed as Super Creek's costumes}:2}BREAK{{Tamamo no mae has {{{pink hair}:1.3,fox tail,{japanese clothes},yellow eyes}}}:2}BREAK{{Super Creek's costumes is {{blue one peace}:1.5,white skirt,blue scarf,detached sleeves,{clothing cutout}}}:2}}
今度は衣装の指定をしていきますが、SpellAIで使えるプロンプトは合計で1000文字らしく、記述が全然足りない状態で文字数制限になってしまい、これ以上はエラーになってしまいます。
キャラクター2人の時と比べるとそれぞれの特徴が薄まってしまい、それぞれを描き分けられているようには見えにくいです。
文字数を削って色々と試行錯誤してみましたがこれ以上は無理そうです。
ちなみに強調するときの強度ですが、{ }で囲むと1.05倍~1.1倍になって、:と数値で直接倍率を指定します。
倍率は他所のサイトで比較していましたが、1.6倍までは要素が段階的に強調されていることが目に見えて分かりますが、それ以上の数値にするとイラストが破綻し始めます。
余談で、出力の比較はシード値という乱数値を微調整して同じイラストを複数生成すると出来るようです。
ですが使用しているSpellAIはシード値の設定が無いので、どうしてもランダムになってしまい同じイラストを再出力させることは出来ないです。自分の環境で結果の細かい比較をすることは出来ないです。
普段はイラストの特徴として強調したいのは1.5、2girlsとかcowboy shotとか強制したいものは2.0を使って、あとはバランス調整で1.1~1.5の間で変えています。
今回のプロンプトは、文字数を削りたいので1.5ではなく2で指定して、あとは根気よく出力ガチャをやっていました。
結果分かったのは、6キャラクター分のガチャは滅茶苦茶しんどいのと、文字数制限でこれ以上の特徴を分けて出力するのは厳しいです。
当初の目的は7人のキャラクターに7つの異なる衣装を着せるところでしたが、出来て2人までで3人目は挫折しました。
AIイラストのツールを変更するか、1人ずつのイラストを出力して手動で透過して合成したほうが良さそうです。
一方で衣装の変更さえしなければ3人から4人くらいは一度に出力できそうなので、今後も色々と試してみたいと思います。