← Back to スタジオ真榊

Pixiv Fanbox

もっと簡単、ガチャ可能!複数キャラにLoRAを当てよう

Published 08/03/2023, 07:27:01 PM · Edited 02/01/2024, 10:21:41 AM

もっと簡単、ガチャ可能!複数キャラにLoRAを当てよう

こんばんは、スタジオ真榊です。今回は、水星の魔女ファンアートの製作過程で「複数キャラにLoRAを当てる方法」をさらに簡便にできたので、具体的なやり方を書き残しておこうと思います。また、背景と前景(キャラ)を別生成して仕上げる方法についても、より前景を印象的にし、全体がリッチに見えるようエフェクトのかけ方を工夫できるようになりました。今回も作例解説という形で、ワークフローを振り返ってみます。




これまで紹介してきた複数キャラ再現の方法は、だいたいこんな感じでした。


①スレミオウェディング

StableDiffusionでスレッタ、ミオリネのイラストをそれぞれ別々に完成させ、SDのInpaintOnlyを使った「ジェネリック塗りつぶし」で一つのイラストに合体させる手法。もともと似た背景(この場合は青空)だとやりやすい。

【弱点】キャラ同士を絡ませるのは難しい


②スレミオ制服デート

Nijijourneyでイメージボードを作成。InpaintOnlyとLineartを駆使して、一人ずつ顔や細部を変化させていく手法。背景もNijijourneyで別に生成し、あとで組み合わせることで「前景が背景に溶けこんでしまうAIっぽさ」を薄れさせてみた。

【弱点】完成後、キャンバス全体のアップスケールができないのが難点。


①に比べて②はより思い通りの画面造りが可能になりますが、工程が複雑で、いったん完成した後にアップスケールができない弱点があります。(※複数キャラのLoRAを同時に当ててアップスケールしようとすると低劣化するし、当てないと別キャラに変容するため)


今回は②の弱点を克服すべく、イメージボードから完成図に至る前に「中間下絵」となるイラストを一度作り、それをうまくアップスケールする方法を考案しました。これができるようになると、絵柄を保持しながらより自分の好みにあった仕上げができるようになりますし、②のような「一点もの」の工程ではなく、できのよいものをピックする「ガチャ」も試せるので、かなり敷居が下がるはずです。


イメージボードを作ろう


前回と同様、Nijijourneyでイメージボード(下絵)を出していきます。今回は最初からディ〇ニーを楽しむ2人のイラストをイメージしていたので、こんな感じのプロンプトでいろいろと生成してみました。


プロンプト:ディズニーランド、女子高校生2人、青空、身長差、大笑い、ミッキーの耳、アニメ --s 180 --niji 5


スレミオイラストで難しいのは、やはり顔半分~一つ分くらいの身長差を出すこと。Nijijourneyで「身長差」のプロンプトを使うと、3枚に1枚くらいは効くのですが、デートというより「子ども連れ」な感じのイラストになってしまうことも多く、なかなか良い構図が出ません。


表情や細部、背景などはほとんど最終的に残らないので、イメージボードにおいて重要なのは構図・体格です。できれば服装もこの段階でイメージ通りにできると、ブラッシュアップが楽になります。あとは、前回も触れたとおり髪型は短いほどよいですね。どうしてもロングヘア多めになっちゃうのですが・・・


こちらは「おそろいの制服、女子高校生2人、ジャンプ、ディズニーランド、ミッキーの耳、リボン --niji 5 --s 180」でできた一枚。

かなり気に入った一枚だったのですが、ジャンプしていてわかりにくくはなっているものの、体格差があまりはっきり出ていないことや、スカートも構造がうまく描けていない(修正が大変)ことが気になり、ボツに。


最終的にこのイラストの構図が気に入り、こちらを採用することになりました。スレッタが無邪気に後ろから抱きしめる感じや、ミオリネがちょっと驚きながらも嬉しく受け入れている感じが出せたらな、とイメージが膨らんだのが理由です。(プロンプト:ディズニーランド、女子高校生2人、青空、身長差、大笑い、ミッキーの耳、アニメ --niji 5 --s 180)


スレミオが日本のJKだったらというifイラストなので、結婚して気持ちが穏やかに安定している感じではなく、まだお互いの気持ちが完全にわかり合っていない段階にしたいなあというのもありました。腕で顔が一部隠れているのが難しい構図なのですが、ウェディングイラストは並んでいるだけ、制服デートは肩を寄せ合っているだけだったので、さらに一歩進んで「キャラ同士がしっかり絡んでいる構図に挑戦してみよう!」ということで、こちらに決定。アウトペイント機能で大きくしておきます。


さて、前景が決まったので、背景もこの段階で出していきます。前景のキャラの位置や色合いがきまらないと、相性のよい背景も決まらないので、前景→背景の順に作りましょう。中央にシンデレラ城が来るとキャラとかぶってしまって見えないので、今回は左奥に配置することに。中央からずらすと端っこが足りなくなる可能性があるので、2倍Zoomを掛けておきます。プロンプトは「背景、ディズニーランド、空、風景、パース、地面、人々」としました。

こちらも、適宜アウトペイントで拡大版を作っておきます。


スレミオにして「中間下絵」を作ろう

さて、イメージボードが確定したので、さっそくこれをスレミオイラストにしていきます。


最初の流れは前回と同様で、顔部分を「InpaintOnly」で選択してLoRA入りプロンプトでtxt2image生成していくだけです。このとき、プロンプトで表情を決めるのですが、せいぜい「笑顔・泣き顔・怒り顔などの表情種類」と「口を開けているか」「目は閉じているか」程度で、キャラのイメージを崩さないことが優先です。私の場合、最終的に加筆するときに目や口を塗りつぶして描き直すことが多いので、この段階ではさほど細部にこだわらなくてOKです。目鼻の位置や顔の向き、顔の大きさのバランスなどが正確であることの方が重要です。

※「買い食いスレミオ」は身長差にこだわりすぎて、スレッタさんが長身すぎる(顔が小さすぎる)問題がありました。見慣れてしまうと気づけず、投稿後に後悔するんですよね…


Inpaintで顔+髪部分を選択して、まずはミオリネ単体を作ります。手が巻き込まれて破綻してしまってもここでは構いません。細部のクォリティよりもまずはだいたいの構図を掴むことを先にします。


プロンプト:miorine rembran, 1girl, face,blush,beautiful silver eyes,(white long hair:1.3),happy smile,wind,ahoge,masterpiece,extremely detailed CG,official art,high resolusion (+LoRA)


完成させるわけではないので、「だいたいミオリネさん」になっていればOKです。うまくできたものからLinart Animeで黒背景の線画を抽出。おかしい部分を描き直したり、アホ毛など記号として重要な部分を描き込みます。


あとでアップスケールするので、おおむねこの程度でだいじょうぶです。


次は同じようにスレッタを作ります。顔部分をInpaintOnlyでマスクして、下記のLoRA適用プロンプトで生成します。

プロンプト:sulleta mercury, ahoge, (happy smile with closed eyes:1.2), dark skin, dark-skinned femaile, hair between eyes, hairband, long hair, low ponytail, red hair, swept bangs, thick eyebrows,1girl, face,thick eyebrows,open mouth,masterpiece,extremely detailed CG,official art,high resolusion (+LoRA)


これで、「中間下絵」ができました。背景は最終的に差し替えるので、この時点では気にしていません。


この時点で目を描き込んだりスレッタのしっぽ(後ろ髪)を作ったりヘアバンドを描いたりしてみたのですが、クォリティとして満足なレベルに至っておらず、やはりしっかりしたアップスケールが必要だとこの時点で自覚しました。


しかし、さきほどまでバラバラに使っていた二人のプロンプトを混在させてアップスケールすると、それぞれの特徴が壊れてしまいます。Linart Animeを使ってこの中間下絵の線画を維持しても、やはり違うキャラになってしまうんですね。かといってLoRAなしではこうなります。(背景はAnime Remove Backgroundで消しました)



やろうと思えば、RegionalPrompterを使ったり、InpaintOnlyを使って部分アップスケールを繰り返す手法もありますが、大変手間が掛かります。そこで考えたのが、2人ともミオリネとしてアップスケールした1枚と、二人ともスレッタとしてアップスケールした1枚を合体させる手法です。


無法のダブルアップスケール


つまりこういうことです。

プロンプト:suletta mercury,ahoge, hug,black hairband, dark skin, dark-skinned femaile, hair between eyes, hairband, long hair, low ponytail, red hair, swept bangs, thick eyebrows,mouse ears,detailed black dress,,masterpiece,extremely detailed CG,official art,high resolusion+LoRA

プロンプト:miorine1, miorine rembran,happy smile,blush,ahoge,mouse ears, hug,long hair, grey eyes, grey hair, ahoge,hair between eyes,floating hair,wind,detailed white dress,masterpiece,extremely detailed CG,official art,high resolusion+LoRA


もう1人のデザインが変容してしまうことはお構いなしに、二人ともにLoRAプロンプトを掛けてしまおうということですね。しかも、この2種のプロンプトをWildcardで1つにしてしまうのがポイントです。


このように「miorine」という名前のwildcardを設定し、プロンプト「__miorine__」のみで生成すれば、生成ごとにミオリネプロンプトかスレッタプロンプトがランダムに適用されますね。

wildcardの詳しい使い方はこちらの過去記事をご参照ください。


この設定でしばらくForever生成しておけば、このように「ガチャ」をすることができます。髪の色を観ると、なんとなくスレッタプロンプトかミオリネプロンプトかわかりますね笑


あとはこれらからうまくアップスケールできたものをチェリーピックし、レイヤーで重ねて合成すれば…

このような一枚ができます。


これを手描き加筆で修正したのがこちら。


こちらはビフォーアフターGIF。スカートのシワなど、LamacleanerやInpaintOnlyも併用して微修正しています。


背景を合成しよう

あとはさらに加筆を加えた上で、背景と合成します。さきに見せてしまうと、加筆部分はこんな感じ。ミ◯ー風のリボンでスレッタと「対」感を出したのと、ストッキングにミオリネ感を出しました。あとは手や破綻部分の加筆がほとんどですね。それと、あとで説明するドットパターンを加えています。


こちらが背景と合成したもの。きれいに切り抜くのがちょっと面倒だったのもあったのですが、「買い食いスレミオ」でピンナップイラスト風に加工するのがAIアートっぽくなくて面白いことに気づいたので、キャラ部分にふちどりを加えてグロー効果を掛けてみました(少し緑色っぽくふちが輝いている効果)


次に、白い枠線と背景のドットを加えました。このドットは前からやってみたかったもので、ハーフトーンを使うなど色々な手法があるのですが、ここでは単純にドット柄の素材をクリスタ公式からもらってきて、「消しグラデーション」を掛けた上、合成モードをオーバーレイ(透明度50%)にしています。


狙いはいずれも、背景とキャラクター(前景)をほどよく切り離すこと。AIイラストは背景と前景が溶けあったり、視線誘導や部位強調といった意図がない絵作りになりがちなので、さほど難しくない手法でそれを消してみようと試みました。キャラの白い縁取りも初めてやってみましたが、ポスター風になってくれたので気に入っています。


さらにポスターっぽくしたかったので、フキダシを入れて、手前のスカートをぼかしてみました。


描き文字の技法についての書籍を最近購入しまして、これまではただガシガシと描くだけだったんですが、袋文字状に線を描いて内側にグラデーションを掛けるなど、ちょっとした工夫で見栄えが変わることを覚えました。このあと、イラスト全体に水色系の色調加工を施すので、水色の補色である赤を一番目立つフキダシの文字に使ってみました。


最後にグラデーションマップを使ってドットパターンの色調を変化させました(参照)

イメージしたのは最終話のキャリバーンの虹色の輝き。パチンコでよくあるギラギラした虹色パターンと違って、上品な色合いでとってもよかったです。あまり悪目立ちしないように、背景や文字色と合うくらいのカラーでとどめました。


全体にグラデーションマップを掛けるとこういうこともできるんですね(ようやく理解してきた)

簡単な操作なので手の技術は関係なく、色の知識やセンスや好みが問われる工程だとは思いますが、私のような素人でもカラーリングをいろいろ楽しめるのは実に楽しいですね。手持ちの仕上げパターンがたくさんあると、さらに絵作りが楽しめると思うので、いろいろと本を読んで勉強しているところです。



そんなわけで、これで完成です!

niji journeyの淡い色合いは背景向きで、アニメ調モデルのSDによるキャラクターと合わせると(やりすぎると違和感がありますが)なかなか好きな感じに仕上がると感じています。



反省ポイント

一方、このイラストは反省ポイントもいろいろありまして…。一番は、まだまだスレミオのデザインを理解できていないこと。特に、スレッタの「赤い肌」(黒ではなく)や左右非対称の髪型が今回もしっかり描けていなかったので、今後の課題にしたいと思います。あとは、腕がからむ難しい構図で、スレッタの右手をごまかしてしまったこと。これならミオリネのお腹のあたりに右手を置いたほうが不自然にならなかったかもしれません。



あとは、服装にこだわれなかったなと。こういうハレの日に女の子二人が選ぶ服って色んな意味があると思うので、そこにメッセージ性を込められないとダメなんだ~!とあとで分かりました。最初はスレミオ制服ディズニーのつもりで作っていたのですけど、なかなかイメージボードができず、ポーズ重視で妥協したのが最後まで響きました。イメージボード段階で最終像や意図をしっかり固めることが大事ですね。あと、スレッタのミッ◯ー耳はふだんのヘアバンドから生えさせるつもりだったんですけど、位置的に描き直しが大変だったので、なんとなく妥協したのもよくなかった。


深夜まで突貫作業しないで、作業を何日にも分けてのんびり作ったほうが良いというのが結論です。普通の手描き絵はそうなんですから、1日で仕上げようというほうが横着なんでしょうね。


終わりに

そんなわけで、「もっと簡単、ガチャ可能!複数キャラにLoRAを当てよう」でした。Controlnetを使っているとガチャをする機会があまりないのですが、ガチャ+チェリーピックはやはりAIイラストの強みの一つだと思うので、クオリティアップのためにためらわずガンガン使っていきたいと思います。


さて、8月に入りました。Controlnetを始め、新機能の登場ラッシュも一段落した感がありますので、今月は過去記事のまとめ直しとLoRA制作について研究できたらと思っています。まだ人様にお見せできるようなLoRAが作れていないので、解説記事を書くのがおこがましいのですが、いろいろ試行錯誤して役に立つ記事をお届けしていきたいと思います。それと、ChatGPTのnsfw路線の使い方も研究しているのですが…ちょっと脱獄(規約違反)っぽい内容になりかねないので、これもいろいろとラインを検討しないといけませんね。こうした路線の研究をなさっているDiscordなどもしありましたら、こっそり教えてください笑


それでは、今月もどうぞよろしくお願いします。スタジオ真榊でした!



▼おまけ・バニーの日スレミオ



Attachments (25)

85lg35jHQKmSBxwjjxquc69w.png

85lg35jHQKmSBxwjjxquc69w.png

uKPGQUojuQOMFpzpCYnmAXWu.png

uKPGQUojuQOMFpzpCYnmAXWu.png

Ou1v9BATmr71RanchgKUoln0.png

Ou1v9BATmr71RanchgKUoln0.png

OyapoStVw597IzHyWkKGDyHR.png

OyapoStVw597IzHyWkKGDyHR.png

hTqurT8M5t5fEtAtUSRYbTwh.png

hTqurT8M5t5fEtAtUSRYbTwh.png

UNUVSptob931rkgmxIxlWtbg.png

UNUVSptob931rkgmxIxlWtbg.png

KfZkPvoVJatROUQAUisM6K0P.png

KfZkPvoVJatROUQAUisM6K0P.png

YbJyhWwtJGUdJouxQeCeGAp5.png

YbJyhWwtJGUdJouxQeCeGAp5.png

Nkqg0A4CeYr6XZbWchx46mDj.png

Nkqg0A4CeYr6XZbWchx46mDj.png

yLzIp7tcOWp5LlQ7BR7PYbCW.png

yLzIp7tcOWp5LlQ7BR7PYbCW.png

K51wnImDMN6duURxOTOlDPMV.png

K51wnImDMN6duURxOTOlDPMV.png

uLVhKTBdgqQns6uaammDa4eE.png

uLVhKTBdgqQns6uaammDa4eE.png

PquCqwJApKbAarNEzGeZ4GQl.png

PquCqwJApKbAarNEzGeZ4GQl.png

Ly6R11gNxDMoKgLI7B8FEk70.png

Ly6R11gNxDMoKgLI7B8FEk70.png

cKpvSoVqfwrhNfS3rZw0VYIZ.png

cKpvSoVqfwrhNfS3rZw0VYIZ.png

xjOZOjSF8jFi7R1OaEhLABTj.png

xjOZOjSF8jFi7R1OaEhLABTj.png

xpK4YsSDSdWWl5p2vEt1Xc3z.png

xpK4YsSDSdWWl5p2vEt1Xc3z.png

UymNUrig4JPCX7e8xzNmS761.gif

UymNUrig4JPCX7e8xzNmS761.gif

33nSOeSsOfkRThfp4n8zv6HW.png

33nSOeSsOfkRThfp4n8zv6HW.png

oeyo8NvxvWXpuhoK3lcLmDbS.png

oeyo8NvxvWXpuhoK3lcLmDbS.png

6eDCKBnkJVU2rnJxKhYIAxld.png

6eDCKBnkJVU2rnJxKhYIAxld.png

fh1VsNGZzQ2oxQQIutb7rvxT.png

fh1VsNGZzQ2oxQQIutb7rvxT.png

10HbSabXJcOBnlqr20vH8gYJ.png

10HbSabXJcOBnlqr20vH8gYJ.png

W7BiKLhEwF4du432Oh6Evg5A.png

W7BiKLhEwF4du432Oh6Evg5A.png

OcCY3HYYaciRemthsISLlI5C.png

OcCY3HYYaciRemthsISLlI5C.png