見出し画像

inpaintを使って1枚のイラストに複数キャラLORAを適用してみる。

 ハイ、タイトル通り。
 一枚イラスト複数LORAは、Regional Prompterを使う手法がメジャーですが、イマイチ思うどおりに扱えず、めんどくさくなってi2iでやることにしました。

 RP手法と比べたi2i方のメリットデメリットはこちら。

・メリット
 LORA適用手順はオーソドックなので、高度な拡張機能にありがちなテクニカルトラブルが発生しにくい。
 普通にLORAを適用しているだけなので通常使用と同じ効果・使用感。
 マスクを使うのでLORAの適用範囲をかなり細かく指定可能。
 キャラ毎にモデルを換えて出力できる。一人目Animagine、二人目はPonyなんて使い方も簡単。

・デメリット
 t2iで元絵出して、i2iで仕上げて…と手順が多くて面倒。
 大量生産ができない。ガチャれない。

 ざっとまとめると、i2iは工程が全手動なのでLORAの適用はかなりキメこまかく行えるが、大量生産がムリ。
 全自動のRegional Prompterはその逆で、LORAの適用範囲や効果にばらつきがあるものの、プロンプトと設定が決まればあとは大量に生成し続けられます。

1:1キャラにLORAを適用しつつ欲しい構図でイラストを生成

 今回は「2キャラを並べて坐らせつつ、それぞれに別のLORAを適用する」イラストを生成します。
 登場キャラはサイゲームズの『グランブルーファンタジー』からアニラさん、アリスソフトの『ランスシリーズ』のマリアさん。
(どちらも公式サイトに二次創作のガイドラインが公開されているので、しつらに沿うようにしつつ使わせていただきます)

 まずはキャラLORAを一つだけ適用しつつ、2人のキャラクターが並んで坐っているイラストを作成します。
 今回はアニラLORAを使用。イラストに描かれるキャラの全てがアニラっぽい見た目になります。

 2人目はこのあとインペイントで別キャラに描き換えるのですが、インペイントには「書き換え元と書き換え先のキャラは、見た目が似ている方が描き換えやすい」という特徴があります。
 なので、可能であればRegional Prompterの分割モードなどを使って、2人を書き分け、かつ2人目はLORAで出力したいキャラっぽい容姿にしておくと、最終イラスト生成時のガチャが捗ります。
 今回は、マリアの特徴である「青い髪、ポニーテール、赤いリボン」と、着せたい衣装として「作業着」をプロンプトで指定して生成しました。

 なお、RP使うのがめんどうなら、アニラ2人出力でもかまいません。最終仕上げでのガチャ難度が少し上がるだけです。

 で、できあがったのがコチラ。

score_9, score_8_up, score_7_up, score_6_up, score_5_up, score_4_up, source anime, masterpiece, best quality, sitting, 1girl is wariza and 1girl is yokozuwari ADDBASEanila, clahoge, sheep horns, draph, cleavage, santa dress, strapless, teenage, sitting, yokozuwari <lora:anila-dora-prodigy:1> ADDCOL 1girl, blue hair, red ribbon, short ponytail, (longhair:-1), wariza, jumpsuit, black thighhighs, cleavage, bra
(※サンプルは一部加筆修正済み。他にも矛盾があるかもしれないが、
とりあえずの作例なので放置)

Regional Prompterで画面を二分割。ベースプロンプトで女の子2人を坐らせ、左に坐るアニラに着させたい衣装やキャラ的特徴を適用。
 右はマリアっぽくなるように「青い髪、ポニーテール、赤いリボン」と着せたい衣装として「作業着」を指定、ついでに髪が長いと書き換え時に邪魔になりがちなので、NegPiP使って「長い髪」をネガティブ設定しました。

 つぎに右の子に「マリアLORA」を適用します。
 まず右の子をマスクします。タブでやった方が楽ですが、マウスでざっくりでも大丈夫です。ただ重なり部分はできるだけ丁寧にマスクしましょう。はみ出しや塗り抜けがあると、その部分がインペイント後に目立ちます。
(粗くなるの部分は小さいので、重なり部分はマスクやプロンプトを駆使して綺麗に出そうとするよりも、とりあえず生成してから目立つ部分を手描きでちょいちょいと直した方が圧倒的に楽だし早いです)

 マスクをしたらインペイントで右の子にLORAを適用します。
 LORAを適用してインペイントするには、普通にプロンプトを入力して生成すればOK。1枚目に使ったプロンプトから一人目のキャラにかんする記述を全削除するだけでも問題ありません。

これはわりとキッチリとマスクした例。右の背景部分もマスクした方が、キャラと背景の切れ目を綺麗に描いてくれることも多い。ケースバイケース。
LORA適用してインペイントした作例。よく見るとアニラの左手・マリアの腰あたりがちょっと怪しい。マリアの左膝も重なり部分がわずかにぼやけている。このあたりが気になるときは手動レタッチでなじませるのが楽。

 以上のように、キャラをきっちりと分けてマスクできる場合はわりと簡単に作成できます。
 ところが、密着していたり身体が被っていたりすると、とたんに面倒になります。とくに重なっている部分の切れ目は、インペイントで綺麗に処理するのが難しいです。
 対処方としては、「手描きで修正」「顔だけ書き換える」「そもそも重ならない構図にする」あたりでしょうか。
 顔だけ書き換えはけっこう効果的です。Adetailerを上手に活用すれば自動化できる…かもしれません。


おまけ1:インペイントのパラメータについて

 インペイントのパラメータの意味を知っておくと自力での微調整が楽になるはずです。

・Mask Blur:マスクの端をぼかす度合い。数値が大きいほどぼかす。ぼかしてごまかせるときに効果的。

・Mask Mode:「Inpaint Masked」はマスクした部分を書き換える。「Inpaint not masked」はマスクしていない部分を書き換える。

Masked content:マスク部分の処理方法。
 「fill」マスク周辺の色にそって書き換える。マスク内パーツを消してマスク外となじませるときなどに使う。
 「original」マスク内の画像を参照する。元画像を活かしたいときに。
 「latent noise」マスク内を書き直す。
 「latent nothing」マスク内の画像をある程度活かしつつ書き換える。

・inpaint area:
 
「Whole picture」イラスト全体を考慮しつつマスク部分を変更する
 「Only masked」マスクした部分だけ書き換える。

・only masked padding,pixels:マスクを指定ピクセル分だけ拡張する。

・Denoising strength:ノイズの強度。大きいほど元絵から離れる。輪郭を残しつつ描写を換えたいときは0.7前後ぐらい。

 他のパラメータはt2iと同じ感覚で設定すればOK。
 自分は、元画像をある程度参照しつつ書き換えたい場合は、下記設定でやっています。

 Mask Mode「inpaint mod」
 Masked Content「original」
 inpaint area「Whole Picture」
 Denoising Strength:0.7

 これが正解というわけではないので、この設定をベースにいろいろ試してみてください。


おまけ2:キャラが重なる場合

とりあえず出力。足の重なりが構造的にややおかしいのは気にしない方向で。
画面全体にアニラLORAが適用され、2人ともアニラ化している。
本来はマリアに書き換える左のアニラをマスクするのだが、
インペイントで画面に広がる髪が邪魔になりそうなので、
まずはここを処理すべく「髪だけざっくりマスク」。
「latent nothing」でinpaintすると、髪が消えたうえに背景も書き足してくれる。
この状態で右キャラ部分をマスク。重なり部分はできるだけ境界線に沿っておく。
その後、右のキャラ全体をマスクしてインペイント。
インペイントしたイラスト。顔の重なり部分でアニラの髪がぶった切られている。
致命傷というほどではないが、違和感が残るのはたしか。
髪のように入り組んだ重なりはi2iで処理するのは難しいので、
クリスタなどのペイント・レタッチソフトを使って手作業で直すのが楽。
元画像からアニラの顔を大きめに範囲指定してコピー。
インペイントした画像に持ってきて「同じ場所にコピー」。
アニラの髪が切れていない状態にしたのち、髪ではない部分(本来なら透けて見える場所)を消しゴムなどで削除しすれば完了。単純切り抜き作業なので慣れれば数分で終わります。

この記事が気に入ったらサポートをしてみませんか?