こんばんは、スタジオ真榊です。今夜はこちらのツリーでも紹介した、線画を使ったAIイラスト生成についての記事です!線画にAIで着色するために必要ないろいろなTIPSや、controlnetの各種設定の方法、線画をできるだけそのままにしながらリッチにスケールアップする方法など、実用的な技術について解説できればと思います。
今回の記事はControlnetを使いますので、まだインストールしていない方は「ControlNet徹底解説!プロンプト苦難の時代が終わる…」から、StableDiffusionWebUI自体が初めての方は「【StableDiffusion導入解説】NovelAI中級者がローカル環境を導入したら別世界に突入した件」からお読みいただけると、スムーズに入れるかと思います。
線画に色を塗ってみよう!
まずは入門編、線画に色を塗る方法です。これは、これまでのControlnet記事を読んでいる方なら解説せずとも分かると思いますが、何事もまずは基本から。こちらに用意した線画を基に着色していく方法を考えてみましょう。(※ちなみにこの線画は、次回紹介する線画LoRAを使って生成しています)

こちらの線画をControlnetに放り込み、preprosessor「canny」、モデルも「canny」で生成します。線画、つまり白い背景のイラストからcanny抽出する場合は、「invert Input color」(色調反転)にチェックを入れておきましょう。

設定は上の通り。ちなみにCanvasのサイズは参照画像(線画と)これから生成するもので比率が一致しているので、いちいち操作する必要はありません。気になるのはAnnotator resolusion(抽出処理)の値。極端に高かったり、低かったりすると失敗するのですが、最適な値がどれくらいなのかよくわかりません。
そこで、実際に実験してみました。こちら(▼)が、Annotator resolusionを100,200,300,400,500,600,700,800,900,1000,1200,1400,1600,1800,2000で生成したX/Yプロットです。ちなみにSEED値は-1(ランダム)としています。

恐らく800~1200くらいまでがちょうどよい値で、低いと輪郭線が十分に認識されず、高すぎると謎のドットが散りばめられてしまう結果になりました。安定値とみられる800~1200でも胸付近に手の破綻が見られますが、何度もガチャることである程度の修正を期待するか、controlnet拡張で手の描写を支配しよう!で紹介したdepthを使った方法で修正すると良いでしょう。
実際に生成した結果
何はともあれ、さきほどのCanny設定で生成すると、下図のような結果が得られます。いずれも768✕512サイズにHiresを強さ0.5で掛けて1.5倍サイズにしたものです。

※Cannyのweightがいずれも「1」なので、細部を見比べると当初の線画からは微妙に離れていることがわかります。より線画を忠実に塗りたい場合は、weightを強めていくことになります。(後述)

特に色を指定しないと、AIはこのように、自由な判断で色を塗ってくれます。プロンプト指定で「red hair」や「Black wear」などと色を指定して、塗りを傾向づけることもできますし、「shiny skin」「cloth reflecting light」「backlighting」「cinematic lighting」「flat color」といったタグで好みの塗り・露光に近づけることも当然可能です。「線画に色を塗る」と紹介しましたが、本質的には「輪郭を固定してイラストを生成する」なので、要するに線画を参照画像にして普段のcannyと同じことをやっているだけなのですよね。
こちらはプロンプト末尾に「flat color」「anime coloring」を追加したもの▼

こちらは「realistic」を追加したもの▼ といっても、あまり大きな変化はありませんでした。もともとフラットな塗りのアニメ調モデルなので、realisticにしてもいきなり人間らしくなったりしませんが、学習モデルを別のものに変えるともっとビビッドに絵柄が変化します。





