← Back to スタジオ真榊

Pixiv Fanbox

NovelAI「V3インペイント」でワークフローがこう変わる!

Published 01/07/2024, 03:36:33 AM · Edited 07/10/2024, 05:35:15 PM

NovelAI「V3インペイント」でワークフローがこう変わる!

こんにちは、スタジオ真榊です。FANBOXをご支援くださっている皆様、明けましておめでとうございます。2024年もどうぞよろしくお願いいたします。


さて、新年最初の企画は「NovelAI v3のインペイント機能が想像以上に使える」という記事からスタートしたいと思います。これまでスタジオ真榊FANBOXでは、特にControlnetを使って意図通りの絵作りをする方法について重点的に検証してきたわけですが、SDXLベースのNovelAIのインペイント力は思った以上にとんでもないことが分かってきました。例えばこんなことも簡単にできてしまいます。



これは左がXに投稿したミオリネさんのバストアップのイラストなのですが、下半分をインペイント機能で「塗り広げる」だけで、下半身を違和感なく補完できてしまいました(右側は無加筆&一発生成)。キャラクター容姿の再現度だけでなく、私がClipstudioで描いたキャラクターのピンクのふちどりや、DALLE-3で生成したパステル調の花畑の背景も再現できていることに驚きます。


「crossed legs」と指示すれば、こちら(▼)の左の画像のように、ポーズも自然にコントロールできます。右が比較用にNovelAI v2でインペイントしたものですが、実力差は明らかですね。キャラクター容姿の学習度に驚異的な差があることもそうなのですが、それだけではなく、欠けた部分を推論する力の強さを感じます。


今回はこうしたNAIインペイントの「推論力」を、普段のAIイラストづくりにどう利用できるのか、こちらの目次のような手順で検証していきたいと思います。


目次

キャラの一部だけ描いて拡大する

 - 1.キャンバスを拡大

 - 2.NAI上でマスク

 - 3.プロンプトを組んで生成

 - 4.再インペイントも可能

背景を消す

キャンバスを拡大する

人物を消して背景を抽出する

背景に人を加える

手を修正する

終わりに -アウトペイント応用-




キャラの一部だけ描いて拡大する

まず、最初に紹介したキャラクターの見切れている部分を「描き足して」もらうことから検証を始めたいと思います。具体的な手順は下記の通り。


1.キャンバスを拡大

画像編集ソフトを使い、キャンバスサイズを描き足したい方向に拡大する。下図はClipstudio(クリスタ)を使って下方向に拡大したもの。ほかのレイヤーが見えてしまっているが、どうせ塗りつぶす部分なので気にしなくてOK。

画像を保存するサイズは自由ですが、Opusプランを契約している方は「普通サイズ」(836x1216px)におさまるように縮小生成するとAnlas消費を0にできます。ただ、生成サイズが小さくなると細部がつぶれるなどクォリティが下がるため、元画像をできるだけそのままに拡大したい場合は、「カスタム」設定でサイズをそのまま生成しましょう。(その場合はAnlas消費量が増えることに注意)



2.NAI上でマスク

さきほどの画像をNovelAIのインペイント画面で読み込み、「描いてマスクを追加する」をクリック。このように、ペンサイズを大きくして描き足したい部分を塗りつぶします。

こちらの図では下半分だけを塗りつぶしていますが、例えば髪の毛をふわっと広げたい場合、このように動かしたい部分にも狭くマスクを掛けるテクニックがあります。

マスクが掛かった部分は元画像と変化してしまうので、動かしたくない部分にマスクがかからないように注意しましょう。


※NovelAIにおけるインペイントの基本操作は、こちらの記事の「v3はインペイントが強力」の項目もご参照ください。


3.プロンプトを組んで生成

NovelAIに、マスクした部分に何を描いてほしいのかテキストプロンプトで伝えます。今回の場合はミオリネさんを描いてほしいので、下記のようにしました。


プロンプト:1girl,miorine rembran, gundam suisei no majo, asticassia school uniform, crossed legs,green short pants,white long hair,floating hair,wind,detailed pantyhose,flowers+クォリティタグ

ネガティブ:規定(除外したい要素プリセットの「強い」のみ)


ここのポイントは、マスク内に描いてほしくない要素を書き込まないということです。例えば、マスク内に必ず描かれるであろうwhite hairやgreen short pantsは必要ですが、gray eyesやheart handsは不要です。何を描いてほしいかだけでなく、どんなふうに描いてほしいかも書くようにしましょう。


こちらが生成結果。


拡大するとこのような感じです。さきほど肩より上の髪の毛も塗りつぶしておいたので、描き足された下半身と矛盾なくたなびいているのが分かると思います。

もちろんこれが完璧というわけではなく、例えば脚ストッキングのラインの位置(脚の前後に一本ずつあるのが正しい)や、非常に難しい袖の処理など甘い部分もあるのですが、加筆前の段階でここまで迫れるのは素晴らしいですね。


4.再インペイントも可能

気に入った部分を残したければ、このように生成画像を画面左にドラッグして「画像をインポート」します。


再び「描いてマスクを追加」し、やり直したい部分をマスクします。


このように、該当部分のみが「ガチャされ直す」ような結果が得られます。特に袖はさきほどよりも自然になっているように見えますね。(※ストッキングのラインが通る場所をコントロールし直すのは難しそうなので、個人的には塗りつぶして加筆したほうがずっと早いと思います)


さらに逆方向の検証も行いました。いまインペイントで描き足された部分の下半身から、上半身を推論させることを行います。このように塗りつぶし、上半身に関するプロンプトに書き換えます。


ついでに表情を変えてみましょう。新たに書き加えたのは「expressionless,gray eyes,flowers,beautiful blue sky, ahoge」。生成結果がこちらです。

元画像は私の画風で加筆しているので当然再現はされませんが、容姿が学習されているキャラクターであれば双方向に推論が可能であることが分かります。


背景を消す

今度は、このイラストから背景を消すことができるかを実験します。


プロンプトはこちら。「white background,simple background」がメインなので強く入れますが、マスク部分がキャラに侵食しているため、キャラクターが誰なのかもきちんと明記しておきました。


プロンプト:{{{white background,simple background}}},1girl,miorine rembran, gundam suisei no majo, asticassia school uniform, crossed legs,green short pants,white long hair


生成結果がこちら。

元画像と見比べると、マスクがキャラに侵食している部分は変化しているので、正確には「切り抜き」とは呼べませんが、Anime Remove BackgroundやSDKatanukiなどで切り抜くと消し残しや消しすぎ、ふち部分のガタつきが生じることがありますので、さほど正確さにこだわらない場合は選択肢になろうかと思います。

         ▲背景の花に「消し残し」が生じた例


コツとしては、「マスクを必ず全周囲キャラに侵食させる」ということです。

上の画像の髪の先のように、1ピクセルでも「このキャラには白い縁取りがある」と受け取れるような塗り残し部分があると、「orange background」と設定してもこのように白い縁取りが推論されてしまいます。


このようにしっかりと塗りつぶせば…


キワまでオレンジ背景に塗ることができます。ただ、上の塗りつぶした部分の毛先と見比べてもらうと、元画像からは変化していることが分かります。あくまで「単色背景の描き足し」であって「元背景の除去」ではないことに注意が必要です。


キャンバスを拡大する

さきほどは主に下半身を推論する実験でしたが、次はこちらの白背景のAIイラストを「背景も含めてアウトペイント」する実験を行います。


下方向だけでなく、このように全方向にキャンバスを拡大します。「拡大」と書きましたが、Anlas消費を抑えるため、これはNovelAIの普通サイズ(832x1216px)の白紙キャンバスを用意して、そこに上のイラストを縮小コピペしたものです。


手順はさきほどと同じです。このように、キャラクター部分以外を丁寧にマスキングしましょう。白いふちが出てもかまわないのでさきほどのような「侵食」テクは使わず、元画像をできるだけ維持することを優先しています。


【🎍ワンポイント】

細かいテクニックとして、ペンサイズはスライダーでは最小5までしかずらせないのですが、数字部分をクリックしてテンキー入力すると「1」まで小さくすることができます。毛先など細かな部分はこれで処理するととても楽です。


ミナちゃんのプロンプトは下記の通り。


プロンプト:1girl,red glasses,{navy school uniform,navy serafuku},long ponytail,sitting,short sleeves,navy pleated skirt, shiny skin,tareme,detailed black pantyhose,orange pupils,beautiful purple eyes,black hair,black shoes,in school,blue sky,window,classroom,crowd,students,blackboard,red ribbon on hair, [[ai-generated]],{{{ amazing quality, very aesthetic}}}, anime coloring, flat color, dot nose,red tie,small breasts


元は白背景ですが、このように生徒のいる教室背景を描いてもらえないか試してみました。


こちらが生成結果。

残念ながらほかの生徒は推論しにくかったようです。(5personとか7girlsといったプロンプトにすればまた違う結果になったかもしれません)


キャラ部分の推論は上手にできていますが、今回はAnlas節約のためにキャンバスサイズを落としたため、セーラー服や机に置いた手など細部はつぶれてしまっているのが目立ちます。また、背景もじっくり見ると「これぞAI背景」という感じで、立体物として不自然すぎますね。背景だけを抽出してクォリティアップすることはできるでしょうか。


人物を消して背景を抽出する

今度は、さきほどの「人物+背景」のイラストから人物部分だけを消せるかを試します。このように、さきほどのイラストのキャラクター部分だけをできるだけ広めに塗りつぶして、無人の教室のプロンプトを書きます。


プロンプトはschool,blue sky,window,classroom,blackboard, chair,desk,tree,{{{no humans}}} としました。ネガティブに「1girl」を入れておきます。


生成結果がこちら。

消すことはできていますが、もともとの背景クォリティが非常に低いため、まあこの程度だよねという感じになってしまっています。正確な背景と思い通りのキャラクターを組み合わせるためにどうしたらいいか、がここで問題となります。


ここまでの実験結果が示唆しているのは、「キャラクターに正確な背景を加える」よりも「正確な背景に後からキャラクターを加える」方が有望であるということです。


背景に人を加える

こちらは昨年5月の記事です。


自分で撮影した歌舞伎座の写真をAIでアニメ調にし、ミナちゃんをControlnetで合成してみるーという企画だったわけですが、こちらのイラストにさきほどのミナちゃんを立たせることができるでしょうか。



このように張り付けて、不要な白背景を部分を選択削除します。


NovelAIで読み込み、このようになんとなく体が描かれるべきところをマスキングして生成するだけです。


このように合成できました。ただこれ、画風があまりにも背景とキャラクターで違いすぎて浮いているので、もうひと手間かける必要があります。


SDwebUIのt2i画面でControlnet画面を二つ開き、一つはLineartAnime、一つはTileにします。上の画像の線画をLineartAnimeで保持し、Tileを使ってカラーリングをおおむね維持するのが目的です。設定画面は以下の通り。


①Lineart(重み0.6)


②Tile(重み0.6)


こちらが生成結果。色合いがなじんだかなと思います。とはいえ破綻が見えますので、作品にする場合はこれをスタート地点にして加筆修正していくことになります。


手を修正する

こちらのイラストの手をインペイント修正してみます。


このように手が入るであろう部位を多少広めに取ります。範囲を狭くとるとそこに入る手しか描かれないためです。


プロンプトは「1girl,waving hand」として生成したところ、このような感じになります。


このようにうまくいかなかったものもありますが、最初の一枚のようにぐちゃってしまうことはありませんでした。


もちろんインペイント部分が非常に小さいとつぶれてしまうので、万全ではないものの、pointingやfinger counting、finger gunなど指のジェスチャータグも利きます。LoRAやControlnet、ADetailerなどを使うよりも手軽に修正が効くと思います。


終わりに ~アウトペイント応用~

そんなわけで、NovelAIインペイントを使ったいろいろを検証してみました。今回取り上げた中では、特に「背景に人を加える」に有望さを感じています。AIイラストはいつも「キャラを出して、背景と組み合わせる」順で行ってきたのですが、例えば背景力・構図力の強いDALLE-3などを使ってまず全体像を作り、その中に調和する形でキャラクターをV3インペイントし、雑塗りi2iで仕上げるというような逆順のワークフローのほうが調和のあるイラストになってくるのではないかと思います。


またはいったん出した構図から「人物を消す」手順で背景抽出して、背景を別個に仕上げた後に「人を加える」で作り直すなど、場合に応じてさまざまな工夫ができるのではないかと思っています。当たり前なので特に取り上げはしませんでしたが、顔の向きだけを変える、服装だけを交換する、キャラを変える…等のまさに「インペイント」な使い方ももちろん有用です。


あとはniji journeyでもありましたが、アウトペイントを繰り返すことで印象的な絵作りをすることもできます。「1girlどまんなか」ないかにもなAIイラストから離れた絵作りができてとても楽しいんですよね。


例えば、このSDwebUIで出した一枚をアウトペイントして…


こちらの一枚ができますが、下半分を星を移す水面にしたいので、下半分をインペイントします。


水が張りました。あとはこれをさらにアウトペイントして…


このようにちょっと面白い感じにしてみました。星を見せる絵にしてもいいし、水を見せる絵にしてもいいしという感じで、アップスケールしていくと楽しいと思います!




それではまた、近いうちに投稿できればと思います。楽しい一年になりますように。


Attachments (42)

r0rOcCuZiMpPuqTSSRNpAo2J.jpeg

r0rOcCuZiMpPuqTSSRNpAo2J.jpeg

8koSzIefizR41sY7P74t0qQY.jpeg

8koSzIefizR41sY7P74t0qQY.jpeg

rcgxShWX34UG0kfBxxfLOCPv.png

rcgxShWX34UG0kfBxxfLOCPv.png

Kj8w6Jk5YCLfl2SeDj82wehK.png

Kj8w6Jk5YCLfl2SeDj82wehK.png

B2nzp2IFk99NfDRQ3QHOH4Te.png

B2nzp2IFk99NfDRQ3QHOH4Te.png

17pjq8N9LsbkVDYfE2bSljFY.png

17pjq8N9LsbkVDYfE2bSljFY.png

GyVHMTGguv0KDQsyxQh4Vl3x.png

GyVHMTGguv0KDQsyxQh4Vl3x.png

NqD9KQqyN6ufY3zHXRU4klU1.jpeg

NqD9KQqyN6ufY3zHXRU4klU1.jpeg

0rP0aFVH6BrXyaRi0OmSEWZk.png

0rP0aFVH6BrXyaRi0OmSEWZk.png

mAWpt5dvgKD72hIQdgSTWxZZ.png

mAWpt5dvgKD72hIQdgSTWxZZ.png

wZNaNDT7G6BowGmtqY3h3u3e.png

wZNaNDT7G6BowGmtqY3h3u3e.png

W7118dyBFCkNDGiqsOg2PeW2.png

W7118dyBFCkNDGiqsOg2PeW2.png

t8dwlVeUhNmeCuOKNkEQblbJ.png

t8dwlVeUhNmeCuOKNkEQblbJ.png

tRZyrAuRLI5OodolKu967U4L.png

tRZyrAuRLI5OodolKu967U4L.png

wVqTPeg5AIiScW69yKkVMCrM.png

wVqTPeg5AIiScW69yKkVMCrM.png

5UiDov1pCixVTZcjgf3nNGw5.png

5UiDov1pCixVTZcjgf3nNGw5.png

Rov3QwG2kPCS39oQ1NwH2X1h.png

Rov3QwG2kPCS39oQ1NwH2X1h.png

JuFXpICncLrAPYdQLZ9iVH7a.png

JuFXpICncLrAPYdQLZ9iVH7a.png

f0uKWJ6w6HGZpK4PkWPyxnSN.png

f0uKWJ6w6HGZpK4PkWPyxnSN.png

8wGeo8VlPpWN26aLhEzydJBc.png

8wGeo8VlPpWN26aLhEzydJBc.png

756oSp17TrXoX9kFQALk4ERG.png

756oSp17TrXoX9kFQALk4ERG.png

Q8Hqveo6P3Wq1aGRZnovd2w3.png

Q8Hqveo6P3Wq1aGRZnovd2w3.png

WAGqdLSXw2HFeL99VQbMMfR4.png

WAGqdLSXw2HFeL99VQbMMfR4.png

QlEerPXfEkG1Mfgr6ZUytjeR.png

QlEerPXfEkG1Mfgr6ZUytjeR.png

3AFUXcn1XA6QgMIIBPbkVzBH.png

3AFUXcn1XA6QgMIIBPbkVzBH.png

vJUSDys7F6Qlnw1ew0WvNcuY.png

vJUSDys7F6Qlnw1ew0WvNcuY.png

G5Z1uesAXQ9qX8iyaMj5oJeN.jpeg

G5Z1uesAXQ9qX8iyaMj5oJeN.jpeg

6KA0y4upcydZhVz8614WEPb2.png

6KA0y4upcydZhVz8614WEPb2.png

UtC3ZcyqnfnSqILSwbA3wsk3.png

UtC3ZcyqnfnSqILSwbA3wsk3.png

NRJhjPhlowwGDdnvfJ87cmPv.png

NRJhjPhlowwGDdnvfJ87cmPv.png

Zi0ZQNCtHBwqCBfqggTjhJeq.png

Zi0ZQNCtHBwqCBfqggTjhJeq.png

4VF0T7rkFhL40LhqKLgYwIwP.png

4VF0T7rkFhL40LhqKLgYwIwP.png

S1SkbE9xoDFHejzQ71Y7XSAF.jpeg

S1SkbE9xoDFHejzQ71Y7XSAF.jpeg

PazWME26qWWPF9bzpNiclGRz.png

PazWME26qWWPF9bzpNiclGRz.png

Jhi1d8UcrgczN2X3oAfKh8pv.png

Jhi1d8UcrgczN2X3oAfKh8pv.png

LaPl0hTmJz5PlzjQzNZK34Kt.png

LaPl0hTmJz5PlzjQzNZK34Kt.png

DYfyw2XWaW9g252rAp0VKFuw.png

DYfyw2XWaW9g252rAp0VKFuw.png

vCot6be7ffTMM4NFD33Rjvlk.png

vCot6be7ffTMM4NFD33Rjvlk.png

o4IKqJng8N54wnSNGszfgLAT.png

o4IKqJng8N54wnSNGszfgLAT.png

ojLpkZ5HncwCGfzkO6GAAEBj.png

ojLpkZ5HncwCGfzkO6GAAEBj.png

tSgLYNlCVJJE1n2ThThsmM9V.jpeg

tSgLYNlCVJJE1n2ThThsmM9V.jpeg

tGzvml4GpttGc6IZoyeFkScR.png

tGzvml4GpttGc6IZoyeFkScR.png