こんばんは、スタジオ真榊です。先日投稿した水星の魔女イラストが珍しくいいねをたくさんもらえて、大変喜んでいます。これまで記事やAI技術に関するツイートがたまたまバズることはあったのですが、純粋にAIイラストだけの投稿がバズったのは初めてでした。もちろん超人気版権のファンアートだったからなのですが、自分が好きで作ったものが他の人にも良いと思ってもらえるのは、何とも嬉しいものですね。
先日から取り組んでいるnijijourneyとStableDiffusionの組み合わせが思った以上に効果的で、自由度が高く「AIイラストっぽくない」絵作りができるようになったと感じています。
このイラストもLoRAを個別適用したツーショットなのですが、前回のウェディングイラストとは異なり、2人が絡んでいる(一部重なっている)作品です。一人ひとりのイラストを作って合成するのではなく、最初から一つのキャンバス上で生成しているので、いろいろと試行錯誤することになりました。いろいろな失敗を通じていろいろと知見が得られたので、今回も作例紹介ということで、あらためて作り方を振り返ってみたいと思います。
参考:ウェディングイラストの作例(別々のLoRA適用イラストを合成したもの)
NijiJourneyでイメージボードを作ろう!
さて、前回は最終回を前に念願のウェディングイラストを作ることができ、「水星の魔女」本放送も大団円を迎えました。今回のイラストは本編では得られなかった尊い栄養を得たい・・・という動機で、「夏の制服スレミオ」を作ろう!と思いついたのがきっかけです。アスティカシア学園の制服ではなく、日本の女子高校の制服をイメージした、日常の楽しさあふれるイラストにしたいと考えました。
一つ前の記事でもNijijourneyとSDを組み合わせた作例を紹介しましたが、今回も構図力と色彩、四肢の安定性に優れたNijiJourneyを使って、イラストのおおむねの構図を考えてみることにします。登下校中、JK、仲良し、楽しそう、しかも夏、ということで、二人が街中を歩きながらアイスを買い食いしているイラストに決定。
概要をつかむためのイメージボードとして、とりあえず何も考えずに思いついたプロンプトで生成していきます。本気の生成のときは英語推奨ですが、イメージをつかむための最初の「案出し」は日本語生成で全く構いません。PCの前にいなくても、スマホでぽちぽちしているだけでなんとなくこうしたイラストが生まれていきます。
プロンプト:2人の女子高校生、デート、笑顔、街中を歩いている、渋谷、アイスクリーム

大事なのは、出てきたイラストをよく見て、「良い」「良くない」を構成している要素は何なのかを見極めていくこと。例えば、↑の左下のイラストは構図的には素敵なのですが、2人の体が重なりすぎていて、あとでLoRAを適用してするにはかなり難しいことが予想されます。また、夏らしいイラストにしたいので、夕方や夜よりも昼間のイラストが望ましく、厚着しすぎているイラストは不自然に感じることもわかります。
Nijiの出してきた案をイメージボードにして、足し引きしたい要素をプロンプトで操作していきます。

もうこの時点で良い感じのものがいろいろと出てきているのですが、この下絵をもとにinpaintを駆使してイラストを作っていくことを考えると、髪の毛はできるだけ体のほうに映り込まない方がよいので、「ショートヘア」をプロンプトに加えました。

しかし、Nijiのショートヘアは意外と長い!あまり言うことを聞いてくれず、ロングヘアが多くなってしまいました。Stylize値を低くするとプロンプトの効果がアップする(指示に忠実になる)のですが、クォリティが下がる傾向にあるので、デフォルト値(何も指定しないと100)のままで進めることにします。
スレッタさんは身長170cmあるので、さらに「身長差」などをプロンプトに加えて生成していきます。

こちらの左下のイラストがビビっと来ました。
・二人の足取りがそろっていて、顔の向きからも仲良しなのが伝わってくる
・左の子の身長や服装、仕草のイメージが現代JK版ミオリネにぴったり
・制服がシンプルかつ2人でそろっていて、スカートの丈やシャツのたるみがリアル(萌え方向にデフォルメされていない)
といった点が評価ポイント。
マイナスなのは、ふたりともロングヘアだったこと。この点を最初に修正しておかなかったことで、のちのち作業が難航することになります。なにはともあれ、このイラストを原案としてイラストを作っていくことに決定しました。 (今後、記事中ではこのイラストを『下絵』と呼びます)
まずはLoRAのinpaint適用
ウェディングイラストのときはスレッタとミオリネをそれぞれ別の単独イラストとして仕上げたあと、キャンバス上で合流させるテクニックを使いましたが、今回は最初から同じキャンバス上で生成していきます。
前回と違って面倒なのが、「相当工夫しないとアップスケールを掛けられない」こと。同時に別々のキャラ再現LoRAを適用すると、どうしても低劣化したりデザインの混線が起こるので、アップスケールは必然的にLoRAなしで行うことになります。すると、どうしても主線がずれて別のキャラになってしまう。「Inpaintで画面左をアップスケール→それをまたControlnetに入れて残る右側をアップスケール」するとか、「キャラ部分だけを切り抜いて、別々に分け、別々にLoRA適用してアップスケールして合成」のようにする方法もありますが、どうするのが正解なのか分からずかなりまごつきました。
案ずるより産むがやすしということで、まずは縦768pxサイズのまま、二人の顔をInpaintで入れていくことにしましたが、本当は「下絵をLamaCreanerでショートヘアにしてからアップスケール」を先にするのが正解でした。先に縦2048pxの「アップスケール済み下絵」を得ていたほうが、その後の作業が楽なのです。最適ルートは何だったかはあとで振り返るとして、作業の過程を追っていきます。
スレッタを作ってみよう
1人目はさほど難しいことはありません。ウェディングイラストのときと同様、Inpaint Onlyで右の女の子の顔周辺を塗りつぶして、Lineartで顔の輪郭を指定し、スレッタのLoRA適用プロンプトで生成するだけです。まだ下絵段階のテストなので、768✕512サイズで生成しています。(※今後、特に断らない場合はControlモードを「ControlNet is more important」にしています)
Lineart Animeで読み込ませたのはこちらの線画。下絵をLineart Animeで線画化し、顔の向きを示す主要要素意外を黒で塗りつぶしています。
プロンプト:suletta_mercury,1girl, face,smile,serafuku, happy smile,masterpiece,extremely detailed CG,official art,high resolusion+LoRA
このように、基本的に顔や目の位置を固定しながらスレッタを生成できました。Inpaint Onlyだけで生成しようとすると、顔の大きさや向きがめちゃくちゃになってしまうので、線画指定は非常に重要なことがわかります。
線画指定を忘れるとこうなるぞ…。
さて、何度か繰り返してよさそうなSeedを見つけ、今度は高解像度補助をONにします。最近は「4x-AnimeSharp」というアニメ調イラスト向けのアップスケーラーを好んで利用しています。R-ESRGAN 4x+ Anime6Bと似た感じのアップスケーラーで、重い代わりにあまり絵柄が変化しないのが良いですね。複数枚生成しようとするとすぐCUDA out of memoryエラーが起こるのでご注意ください。
こちらのサイトで「4x-AnimeSharp」をページ内検索し、リンク先から「4x-AnimeSharp.pth」ファイルをダウンロード。SDwebUIをインストールしたフォルダ内の「models\ESRGAN」フォルダに置けば、ほかのアップスケーラーと同様に利用できるようになります。同じサイトにある「4x-UltraSharp」もおすすめです。
さて、こちらが「4x-AnimeSharp」で2倍にしたイラスト。
眉毛が細すぎてスレッタには見えませんし、ヘアバンドも低劣な感じですが、それはあとで修正しましょう。



