Home Artists Posts Import Register

Content


こんばんは、スタジオ真榊です。今夜は前回に続き、AIイラストと線画についての記事です。前回は線画に着色するやり方でしたが、今日は逆手順で「カラーイラストを線画化する方法」について紹介していきます。


単に主線を抜き出して線画化するだけでなく、ラフスケッチ調にしたり、鉛筆書き風に仕上げることも可能。主線を抜き出して元のイラストに重ねると、また違った表現になりますし、逆に主線を抜き出しておかしいところを線画レベルで修正し、それを新たにAIで着色する…といった今までにない手法もできるわけです。さっそく具体的手順を見ていきましょう!


傑作!「線画LoRA」の紹介


「AIを使って線画に色塗りをしてみよう!」では、最初にAI生成した線画を用意して、それに着色する方法について考察しましたよね。線画の生成に利用したのが、最近登場したこちらの線画LoRA「Anime Lineart Style」です。今回はこちらのLoRAを使って、前回とは逆にイラストを線画化する方法を紹介していきます。


(※個人配布のLoRAですので、例によって使用許諾をご確認の上、自己責任でご使用下さい)


         (▲上記civitaiURLよりスクリーンショット引用)


CyberAIchemist氏が配布されているこちらのLoRA用モデルは、単にイラストをモノクロ化するわけではなく、主線を抜き出した「線画」を出力するためにトレーニングされたもの。LoRAを適用するだけでも効果がありますが、「monochrome」「lineart」をプロンプトに入れることで、余計な色の浸食を防ぎやすくなります。weightは「0.8~1が良い」とのことで、賢木はふだん1で利用しています。


本来は線画を出力するためのLoRAなわけですが、これをControlnetと組み合わせることで既存イラストの線画化に使用してみよう!というのが今回の試みです。


              (▲前回着色に使った線画)


使うのはもちろん、線画からの着色でも使用した「Canny」。線画化したい画像を参照画像とし、weight:1、annotator resolusion:800で抽出します。線画から着色する場合と異なり、今回はカラーイラストから抽出処理をする必要があるので、preprosessorもモデルも両方「canny」にします。


ここからの作業は、線画化したいイラストが自分の環境でいつでも生成できるAIイラストである場合と、そうでないイラスト(AI未使用のイラストやAI生成後に加工してExif情報が残っていない場合など)の場合で異なります。順番に見ていきましょう。


【1】AIイラストを線画化する場合


まずは、自分で作ったAIイラストを線画にしたい場合。プロンプトやseed値、使用した学習モデルなどの生成条件が分かっており、t2i画面でいつでも全く同じイラストを生成できる環境なら、簡単に線画にすることができます。


まずは「PNG内の情報を表示」からプロンプトなどの設定を「txt2imageに転送」。学習モデルや画像サイズ、clip skipの設定など、全く同じ画像が生成できるように各種設定を確認します。以前生成したときと同じ条件が揃っていると確認できたら、プロンプトにLoRAの起動プロンプトと「monochrome,lineart」を追加します。


【重要ポイント】Hires.fixをONにすると、線画を着色したときと同様、参照画像と線画がズレてしまいます。そこで、元画像が高解像度補助(Hires.fix)を掛けていた場合は、t2i画面に設定をコピーした後Hires.fixをオフにして、元画像のHiresの倍数のキャンバスサイズを指定してください。

Ex:元画像が768✕512を2倍Hiresしていた場合→t2i画面の設定は「Hiresオフで1536✕1024サイズ」にする。


次に、Controlnet画面で線画化したい画像を読み込み、以下の通りに設定します。「preview annotator reslult」ボタンを押して抽出具合をチェックし、拾われていない線がある場合はannotator resolusionやpreprosessorの下限閾値を調整しましょう。リサイズモードは線画とずれないよう「Just Resize」にします。



今回は以前自分で生成したメイドさんのイラストを線画化してみます。


                【GIF▼】


おおむね正確に主線を抜き出すことができました。自分で生成したAIイラストであれば、生成条件も分かっているので簡単ですね。しかし、線画化したい画像がいま手元でt2i生成できないイラストだった場合、少々手続きが大変になります。




【2】AIイラスト以外を線画にする場合


さきほどは全く同じイラストを「線画状態で」生成すれば良かったわけですが、今度はSeed値もプロンプトも使うべき学習モデルも分かりません。そこで、とりあえずはDeep Booru機能を使ってプロンプトを作ってみるところから始めます。


既に使っている方も多いかもしれませんが、FANBOX記事で紹介するのは初めてなので簡単に解説しますと、Deep Booruは画像の特徴を解析して、プロンプト(danbooruタグ)を類推してくれる機能です。WebUI上では、img2img画面にあるボタンを押すことで使用することができます。


img2imgの画面左側に線画化したいイラストを読み込ませたら、生成ボタン脇の「Deep Booruによる解析(Interrogate DeepBooru)」をクリック。しばらく待つと、関連性の高いタグが自動でプロンプト欄に入力される…という仕組み。もちろん完璧ではないものの、それなりに再現性の高いプロンプトが再現できます。


さて、今回はローカルで生成できない画像を線画化する実験なので、ローカルを始める前にNovelAIで生成したイラストを読み込ませてみることにします。


使うのはこちらのかぐや様のイラスト。



Deep Booruでプロンプトが出てきたら、これをtext2img画面のプロンプト欄にまるまるコピペします。deep booruは元画像のカラーも読み取ってタグにしてしまうので、

red eyesやblack hairといったカラー系のタグは取り除き、さきほどと同様に「monochrome,line art」とLoRA起動タグを追加します。Seed値は指定する意味がないので「-1」(ランダム)。controlnetの設定をできるだけ線がきれいに抽出されるよう調整します。


生成に用いる学習モデルは何でもよいのですが、より正確に線画化するためには、タッチの似たものにする必要があります。ネガティブプロンプトは学習モデルごとに合ったものを入れておけばOK。さきほどと異なり、seed値の引きによってある程度出来が変わってしまうので、4枚ずつ生成してみましょう。



ドン。




良さげではあるのですが、やはりseed値によってばらつきがでてしまいましたね。


おおむね線は拾えているようですが、よく見ると、一つ一つ表情が違っているのがわかります。また、本来額が見えているべきところに前髪が描かれてしまっていますね。「主線の位置は分かるが、何を描くべきかまでは分からないので、とりあえずそれらしい女の子を描いた」状態になっています。また、プロンプトから背景が想定できないため、cannyで読み取れたわずかな線から類推して、謎のしましま線が出てしまっています。どうしたらより正確な線画にできるでしょうか。


まずは額を露出してもらうために「forehead」をプロンプトに追加。背景がうるさくならないように「simple white background:1.5」も加えて、cannyの抽出値を調整してみます。


背景については、ぶっちゃけ手作業で消しゴムしてもいいのですが、こんな方法もあります。Anime Remove Backgroundで先にキャラを切り抜いてしまって…


一番右の背景なしかぐや様を右クリックして「画像をコピー」。Cannyの参照画像にした上で、Multi Controlnetを使ってもう一つウィンドウを開き、同じ画像を「Normal map」で読み込みます。normal mapはマップのない部分が空白になりやすいので、切り抜き向きなんですよね。


その結果、



ここまで背景を白く線画化できました。手元でt2iできる画像でない場合は、やはりかなり煩雑な作業工程になりますね。ガチャ運によってもブレるので、ある程度は妥協して手作業で整えてあげるくらいの気持ちでいたほうがよいと思います。


人力マージで整える


また、ここでも人力マージは有効です(前回記事参照)。▲の四枚はプリーツスカートがノートみたいになってしまっているので、クリスタなどの画像編集ソフトでうまく抽出できた何枚かを重ね合わせて、部分部分を取捨選択して合成します。


背景などのゴミもついでにとってあげれば…



かなりきれいに線画化できました。(リボンとスカートの線消し忘れましたが)


ある程度の頑張りは必要ですが、t2iできないイラストもこうして線画化が可能です。ただ、線画を抜き出したい画像に別のLoRAが使われていた場合、線画LoRAと干渉してしまって安定性が失われてしまいます。それぞれのLoRAの影響度を調整すればなんとかなることもありますが、組み合わせるLoRAによっては、どうしてもうまくいかない場合があることも覚えておきましょう。


おまけ:スケッチ風にしてみよう


ほとんど同じ工程で、線画ではなくラフスケッチ風にすることも可能です。「monochrome,lineart」を「doodles,sketch」に変えてみると、



これもSEED値によって多少のぶれがあるものの、おおむね良好な結果となっています。タッチがうまく再現できるかは学習モデルによりますが、sketchと一緒にgraphite \(medium\)を入れて鉛筆書き風にすることもできそうですね。これも掘り下げるといくらでも広がりそう…


終わりに


現在、午前1時半。今日はずいぶん実験に手間がかかってしまい、遅くなってしまいました。Hires.fixさえ使わなければ、かなり主線を重ねて線画化することができそうです。抜き出した線画をCannyを掛けながらi2iアップスケールすれば、よりきれいな線にすることもできるでしょう。線画を正確に抜き出して、抜き出す前のイラストに合成モードで重ねれば、より主線を強調したイラストにすることもできます(▼)



線画が抜き出せているということは、クリスタでいかようにもコントロールできるわけですから、たとえばこんな表現も可能になります。



クリスタで「輝度を透明度に変換」して白い部分を透明にし、「透明ピクセルをロック」した状態で塗りつぶしやグラデーションツールをかければ、線画部分を好きにコントロールできます。上の画像はお遊びで虹色のグラデーションを掛けていますが、例えば夕焼けバックのときに線画の色を赤く変えたり、髪の毛と服で塗り分けたりもできるわけですね。もはやAIイラストの世界からはみ出しつつある…




線画化や線画からの着色ができるようになると、こういうGIF動画も簡単につくれるようになります。これにtiktokとかでよく使われる動画エフェクトアプリを使ったら、さらにえらい動画がイージーに作れてしまって、本当にあらゆる敷居がガンガン下がっているのを感じます。ほへ~…


そんなわけで、今夜も長くなってしまいましたが、「AIでカラーイラストから線画を抜き出してみよう!」でした。Controlnet、知れば知るほどヤバイ。


それでは皆様、素晴らしい線画ライフを!


スタジオ真榊でした。


Files

Comments

Anonymous

自分は絵の勉強をしてるのですが、 勉強教材として、 好きな絵師さんの顔の描き方パターン集など作って、 作画資料にしてました。 この機能があれば、アニメやゲームのキャラデザイン表が作れます! 絵を勉強しれる人こそ、使いたくなる機能ですね。