Home Artists Posts Import Register

Content

こんにちは、スタジオ真榊です。本日は、線画をAIで自動着色する手法…つまり「AI塗り絵」について、現在のStableDiffusionでできる方法を考えてみる企画記事をお届けします。


きっかけはFANBOXの「投げ銭」プランに加入してくださったイラストレーターさん(匿名希望)から、イラストプレゼントのプラン特典として、ご自身で描かれたこちらの線画をAIで「塗り絵」してみてほしいというご依頼があったことです。


線画をAI着色する手法については、以前からコメント欄などで「改めて現在の生成環境でどうやると良いか特集してほしい」というリクエストを頂いておりましたので、これは非常に良い機会だということで、いただいた線画を題材に、いろいろと検証してみました。こちらの線画、記事末尾でAI塗り絵目的に限定して配布していますので、ぜひ皆様も塗り絵にトライしてみてください。


Controlnetを使った過去の線画着色記事は過去にも紹介(▽)しているのですが、こちらは今年3月時点の記事でかなり時間が経っていますので、あらためて現状のSDwebUIでできることを整理しています。

AIを使って「線画に色塗り」をしてもらおう!

こんばんは、スタジオ真榊です。今夜はこちらのツリーでも紹介した、線画を使ったAIイラスト生成についての記事です!線画にAIで着色するために必要ないろいろなTIPSや、controlnetの各種設定の方法、線画をできるだけそのままにしながらリッチにスケールアップする方法など、実用的な技術について解説できればと思いま...


「Lineart」や「Canny」を使うことで、線画をほぼ維持した上で着色すること自体はさほど困難ではありません。AI着色で難しいのは、どこを「何」ととらえて塗るか、正確にプロンプト指示することと、間違えた部分を直すこと。


今回の記事では、


1.Controlnetを使ったt2iでどこまで綺麗に塗れるか?

2.塗り間違いはどう直せばよいか?

3.雑塗りi2iを解禁するとどうなるか?

4.画像編集ソフト(主にClipStudio)を解禁するとどこまでできるか?

5.その方法に汎用性はあるか?(別の線画にも応用できるか?)


という順に試していきたいと思います。



・Controlnetを使ったt2iでどこまで綺麗に塗れるか?

StableDiffusionを使った線画着色といえば、まず思いつくのがControlnet(以下CN)でしょう。image2imageでは線が変化してしまうので、主線の位置をしっかり保存しつつ、プロンプトで塗りの内容を指定していきます。


まず、プロンプトを書くために依頼品を確認してみましょう。


モチーフの女騎士は鎧を着ていますが、四肢を除いた体部分は半裸で、胸や下腹部は布でかろうじて隠れている状態に見えます。支援者さんによると、こちらのイラストのコンセプトは「触手を美しく描くこと」で、キャンバス全体に這っている触手は金属系の塗りでも、植物系の塗りでも構わないとのこと。イチから「1girl,knight...」と書いていくと時間がかかるので、ここはimage2image画面で読み込ませ、「DeepBooruによる解析」ボタンでタグ推測させてみます。

このようなタグが出てきました。色のない画像ということもあってさほど検出精度はよくなく、鎧や騎士といったタグが出てこなかったのは残念ですが、ここからは自分でできるだけ線画から読み取れる要素を盛り込んでいきます。(※こうしたタグ推測は拡張機能のwd14-taggerでやっても構いません)


ここからは「好み」の世界になってきますが、女騎士の髪や目、肌の色、鎧の描写や触手の色などを私なりのセンスで指定し、また背景についても単調になりすぎないように注意してプロンプトを組んでみました。loincloth(前布)、winged helmet(翼付きヘルメット)などぱっと思いつかないタグは例によってdanbooruで調べています。

(詳しい方法はこちらの記事"これってdanbooru語で何て言う?"の項目を参照)


ポジティブ:(loincloth,plant tentacles,detailed silver armor,armored boots,cloth on breasts:1.3),closed mouth,cleavage,shiny skin, half undress,plant,belly button,bare shoulders,bare groin,hip,smile,gradient blonde hair,knight,large breasts,detailed cyan eyes,simple eyes,smile,chroma,colorful,1girl, absurdly long hair, art nouveau, breasts, cover, greyscale, long hair, looking at viewer, magic circle, sitting, smile, solo, very long hair,winged helmet, spread legs, patterned background,blue,white,silver,(((rainbow background))),blush


ネガティブ:bare breasts,undress,(nipples:1.3),monotone,paraphrase,(simple background,monochrome:1.3)


ポイントは、胸が布で隠れるようにネガティブを工夫したのと、特徴的な鎧の関連タグを探したことくらいでしょうか。また、単調な塗りにならないよう「虹色の背景」を入れてみました。あまり悩んでもしょうがないので、まずは生成してみて、AIがどこを間違えるか確かめてから書き直すことにします。


生成設定は以下の通り。高解像度補助を掛けると線がズレてしまうので、ここでは使いません。元画像が3508x1973pxなので、ちょうど半分の1759x986pxで生成することにします。普通は崩壊してしまうサイズですが、CNを使って線を保持するので、そこまで変なことにはならないでしょう。


Steps: 35 Sampler: DPM++ SDE Karras CFG scale: 7 Size:1759x986


さて、問題はControlnetの設定をどうするかです。

白黒反転した線画を受け取るCNモデルの候補は「Canny」「Lineart」「LineartAnime」の三つ。いずれも取り込んだ画像の線を保持する性質のものです。どれが良いかは読み込ませる画像にもよるのですが、今回はLineart系二つを試すことにしました。Controlモードは「Balance」か「Controlnet is more important」の2種が候補。線画を少しも動かしたくない場合は後者を選ぶ…はずなのですが、結果によってはBalancedのほうが線を保持してくれることもあり、両方確かめてみる必要があります。


最後はControlnetの重み付けです。重みが弱いと線画がずれて「塗り絵」とは言えなくなり、強すぎると柔軟性が喪われてしまうので、とりあえず「1」にして結果を見てみましょう。


こちらが生成結果です。


こちらが比較図。Rainbowを入れたのでカラフルになってくれましたが、わざとらしすぎて不自然なこと、前髪や胸の布などの解釈がおかしいこと、顔立ちが変化してしまっていること、画像が低劣なことなどがいろいろと気になりますね。


これを解決するためには、ある程度のガチャも必要なのですが、一つの方策として「Cannyとの重ね掛け」を試してみましょう。ついでに、あまり芳しい結果にならなかった(((rainbow background)))を削除しておきます。


・Cannyを重ね掛けしてみよう

二つ目のCNとしてこのように「Canny」を設定します。重みが強すぎるとおかしくなることがあるので、こちらは0.75としました。("有効化"にチェックを入れるのを忘れないように!)


あまり普段はしないのですが、ある程度ガチャを試みてみました。プロンプトが詳しめだったためか、かなり塗りの結果は収束しています。

見比べてみると分かるのですが、向かって右側の胸の布、失敗率が高いですね。布があるべき場所と胸が露出している場所が互い違いになっているものが多いです。そんな中でも比較的ましだったのはこちら。

背景のmagic circleの部分に目のcyanカラーが流れてしまっているのですが、結果的に悪くないですし、髪の毛や鎧の塗りもなかなかです。どこが肌でどこが服なのか、さほど大きく間違っていないのが良いですね。


さらにリッチに塗ってもらいたいので、これを「色見本」にしてTileを使ってみることにしましょう。

・「色見本」を使ってTileしよう

さきほど「Canny」にしていた二つ目のCNを「Tile」に変えて、カラーイラストを読み込ませます。つまり、LineartAnime+cannyだったのが、LineartAnime+Tileになるということ。これにより、Tileで色合いの配置と線画を両方固定しつつ、さらにLineartAnimeで線画を保護することができるはずです。(ちなみに、色見本がない段階で最初からLineartAnime+Tileにすると白黒画像に引っ張られてしまうので、この工数が必要というわけです)


結果がこちら。


見比べてみないと違いが分かりにくいですね。Tileする前がこちらです。


見比べてみると、Tileが加わったことでより塗りがパワーアップし、詳細が付け加えられてリッチに感じられることがわかると思います。これで塗りと線画保持がほぼできることが分かったので、さらにt2iでできる画質アップをはかります。高解像度補助(Hires)をONにし、1.5倍に拡大したのがこちら。ぱっと見は違いがわかりませんが、細部は詳細化しています。

使ったアップスケーラーは「4x-AnimeSharp」、強さは0.4で掛けています。サイズは1.5倍されて2632x1472pxになりました。


「インペイントNG、加筆、アップスケールNG」「あくまでt2i画面だけでできるAI塗り絵」というレギュレーションだと、このあたりが限界でしょうか。ガチャを繰り返しても得られるものは少なそうなので、次の段階に移行します。(人によってはAI段階はこれで終わりとし、あとは加筆でレタッチすればいいや、という方もいるでしょう)


・塗り間違いをCNインペイント

さて、キャンバス上で複数の色を指定するとどうしても起こるのが「色移り」ですね。上の画像でも、「cyan eyes」の水色が背景の「magic circle」に流れ込んでいます。(色移りについてはこちらの記事も参照のこと)

ノーモア色移り?プロンプトの影響範囲を操作しよう!

こんばんは、スタジオ真榊です。今日はレタッチ機能の掘り下げ記事を更新する予定だったのですが、新たに公開された拡張機能が非常にエキサイティングな内容だったため、順番を差し替えてお送りします! 今回登場したのは、プロンプトの影響を狭めて色移りを起こりにくくしてくれるという拡張機能「sd-webui-cutoff」。 ...


今度はCNインペイント(InpaintOnly)を使って塗り間違いを直していきたいと思います。さきほどのイラストのうち、目立つ間違いはこちら。(ヘルメット部分など解釈次第な部位もありますが、イラストレーターさんに確認しました)



さきほどのLineartAnimeに加え、Controlnet画面でinpaint onlyを使ってさきほどのイラストを読み込み、間違っている部分を塗りつぶしましょう。いっぺんに直すのは大変なので、チクチクと…


インペイント設定はこちら。これに線画を読み込ませた「Canny」「LineartAnime」を重ね掛けしています。とりあえず最初は布があるはずの部分を塗りつぶしました。ちなみに、インペイント画面は「S」キーで拡大できます。(塗り終えたら再びSキーで元に戻します。×を押すと消えちゃいますよ!)



まずは下半身から始めます。ポジティブプロンプトは(black thighhighs:1.3)のみ。ネガティブにskinを入れて、「ここにはサイハイソックス(太ももまでのロングソックス)が描かれるよ、肌じゃないよ」と指示します。結果がこちら。


ピンクのサイハイを履かせられました。ただ、部分によっては白すぎたり、肌が透けてるっぽくなっているので、なかなか一発では難しく、面倒くさい(もうこの時点で私ならクリスタに送って加筆で直しています)


これをさらにインペイント元にして、間違っている部分をもう一度塗りつぶします。

多少塗りミスは残りますが、おおむね意図した場所に色は置かれた感じでしょうか。このような感じで、先ほどのミスをちまちま直していきます。


しかしこれがなかなか大変で、範囲指定やSeed値によってAIの気まぐれ解釈結果が変わるため、サイハイと同様になかなか一発で直るわけではありません。これはどうしても額を覆っているものはヘルメットではなく前髪だと思ってしまうAIくん。


結局なにやかや試行錯誤して、ここまではCNインペイントだけで直すことができました。

ただ、ごく狭い範囲なのに直し作業だけで1時間以上かかっていますし、例えば前髪部分は完全にヘルメットにできておらず不十分な出来です。「もう手で直させてくれ!」「せめて雑塗りi2iさせてくれ!」というのが正直なところですね。


そんなわけで、「t2i画面縛り」の塗り絵検証はここまで。AIは「だいたい」をやってもらうのにはいいのですが、細部まで思い通りにコントロールしようとするとかえって面倒になってしまうので、人間との作業分担が大切なことがよくわかりました。


・雑塗りi2iで直してみる

さて、ここからはi2i画面を解禁します。CNインペイントで直したところはいったんもとに戻して、ふたたびここから修正してみましょう。


i2i画面の「インペイントスケッチ」タブで上の画像を読み込み、右上のカラーパレットからこのように色を塗りつぶしていきます。上の画像は高解像度補助がかかっているので大変サイズが大きいのですが、4分の1程度に縮小しておくとこのあとの作業が楽になります。(i2iの際に4倍サイズにすれば元に戻るので)


スポイトツールがあるので、うまく周囲の色を拾って塗りつぶしていきましょう。ただSDwebUIのペイントツール、以前から異様に重いです。RTX4080環境でもガタガタするので、こだわりがなければ画像編集ツールに飛ばして塗りつぶしたほうがずっと楽でしょう。


完成したら、「画像のコピー先:img2img」でimg2img画面に飛ばします。


再び初心に戻って、キャンバス全体のプロンプトを指示します。この画像をほどよく参照しつつ、雑塗り部分の低劣さが残らないように、ノイズ除去強度は「0.5」にしましょう。ここの除去強度は非常に重要で、少しずらして「0.4」だと十分に低劣さが除去できず、逆に0.6以上に強めると色が薄くなってしまいます。


サイズはさきほど参照画像を4分の1にしたので、元に戻すため「4倍」にしておきましょう。


プロンプトは以下の通り。雑塗りで直したところがあるので、それを踏まえて書き直しています。


ポジティブ:(light pink thighhighs:1.3),loincloth,tentacles,detailed silver armor,white cloth on breasts,closed mouth,cleavage,shiny skin, half undress,belly button,bare shoulders,bare groin,hip,smile,gradient blonde hair,knight,large breasts,detailed cyan eyes,simple eyes,smile,chroma,colorful,1girl, absurdly long hair, art nouveau, breasts, cover, greyscale, long hair, looking at viewer, magic circle, sitting, smile, solo, very long hair,winged helmet, spread legs, patterned background,blue,white,silver,blush, masterpiece,extremely detailed CG,official art,high resolusion

ネガティブ:bare breasts,undress,(nipples:1.3),monotone,paraphrase,(simple background,monochrome:1.3),, (worst quality, low quality:1.4), (greyscale, monochrome:1.0), text, title, logo, signature


このままimg2imgすると線がズレて「塗り絵」ではなくなるため、ここでもControlnetを使います。これまでと同様、LineartAnime+Cannyの重ね掛け(両方重さ:1)で、いずれも線画を入力しています。


生成結果がこちら。


やや画質がぼやけているのと、鼻の解釈が間違っているのが気になります。ただ、少なくとも雑塗りした部分の低劣さは除去され、色の配置は正しくなっていますね。あとはもう簡単、最初のTileの工程を足して品質をアップさせるだけです。


いまできた画像をノイズ除去強度0.5でimg2imgします(まだ間違いがある場合はここでもう一度雑塗りして直しておきます)。プロンプトは同じ。Tileにも今からimg2imgするのと同じ画像を読み込ませます。


CN1:Tile 重さ0.5-0.7 プリプロセッサ「none」 ControlStep0.1~0.9

CN2:LineartAnime 重さ1 ※線画保持のため

(CN3:Canny 重さ1 ※線画保持を更に強めるため。低劣化する場合は外す)

いずれもCNモードは「Balanced」です。


Tileは「参照画像の低劣な細部を削除して、プロンプトに従って詳細化する」効果がありますが、その際色が変化してしまう欠点があります。これをできるだけ排除してくれるのが「tile colorfix」ですが、効果はまだ完璧ではなく、色変化は必ず起きてしまいます。そこで、「正しいがぼやけている画像」をimg2imgすることで、カラー配置を守りながら高画質化させようというわけですね。

また、Tileが強すぎるとやはりぼやけてしまうため、重みを0.5-0.7程度に弱め、効果が及ぶStepも0.1~0.9に限定しています。


生成結果がこちら。



GIF動画で比較してみます。


残念なのが鼻の部分で、どうしても学習モデルの癖が出て別の位置に鼻の影や光を入れようとしてしまいます。ここはもう人の手で直した方が早いでしょう。


画像編集ソフトを解禁すると

AIでの修正にこだわっても時間だけが過ぎていくので、ここからは画像編集ソフトを解禁します。線画を重ねたり、彩度を操作したりして、AIでは寄せきれなかった部分をより意図通りに仕上げていきます。


まずはClipstudioPaintEXの「輝度を透明度に変換」でこのように線画の白背景部分を透過します。(これ、本当に便利な機能ですね)


さきほどの生成画像に重ねれば、このように線画部分をしっかり保全できます。線がずれていないことがよくわかりますね。


ただ、これだと濃すぎるので、合成モードを「乗算」にするなどして適宜調整するとよいでしょう。色トレスをしてももちろん良いです。


あとは顔を直しましょう。気になる部分を…


このように加筆で簡単に直します。あんなに苦労した前髪風ヘルメットが、あっという間に直せてしまうと、AIにこだわりすぎても本末転倒になるのがよくわかりますね…。ついでに目にハイライトも入れておきました。


グロー効果を掛けたり、色相・彩度を好みでいじったり、背景の文様にさらに手を加えても面白いですが、そこまで行くと「AI塗り絵」でもなんでもないのでここまでにしておきます。個人的には、触手と背景が似たカラーで埋没しているのが少しもったいないので、植物風のグリーンカラーに変えても映えたかな?と思います。



「AI塗り絵」工程まとめ

さて、今回の「AI塗り絵」の工程を振り返ってみますと、以下のようになります。


・工程①「色見本」

プロンプトを練り、「LineArtAnime+Canny」の重ね掛けでいったんカラーに。ここでガチャを繰り返して「色見本」を作る(ある程度の塗り間違いはOK)

・工程②「雑塗り修正」

「塗り間違い」部分を雑塗りして修正し、img2imgに入力。ノイズ除去強度は0.5。CN「LineArtAnime+Canny」(いずれも線画を入力)で生成

・工程③「Tile仕上げ」

今度は②でできた画像をimg2imgに入力。ノイズ除去強度は0.5。CN「LineArtAnime+Canny+Tile」で生成。ぼやけてしまうのでTileの重み・Stepは弱めること。


汎用性検証

提供いただいた線画にしか使えないとなると意味がないので、実際にこの工程に汎用性があるのか、違う線画で確かめてみましょう。

こちらの線画は、NovelAIv3で下記のプロンプトでポン出しした画像を、Photoshopで線画らしくしたものです。余計な線に簡単に消しゴムを掛けています。


PP:smile,{{{black and white,monochrome,lineart}}},1girl,solo,glasses,{school uniform,serafuku},long ponytail,short sleeves,pleated skirt, shiny skin,tareme,detailed pantyhose,beautiful eyes,black hair,large white ribbon on hair, [[ai-generated]],{{{ amazing quality, very aesthetic}}}, dot nose,small breasts,detailed face,

NP:anime color,manga,grey color,@_@,simple eyes,tareme,chibi,sticasia school uniform,looking at viewer,shadow,


まず工程①。色見本を作ります。プロンプトはこちら。

PP:1girl,solo,standing,smile,outdoor,beautiful sky,cloud,magic hour,city,skyline,sun,red glasses,(navy school uniform,navy serafuku:1.3),ponytail,short sleeves,navy pleated skirt, shiny skin,detailed black pantyhose, detailed feet,beautiful purple eyes,black hair,white ribbon+クォリティタグ

NP:(worst quality, low quality:1.4), (greyscale, monochrome:1.0), text, title, logo, signature


チェリーピックなし、4枚一発生成です。(768x512pxをHiresで2倍サイズに)

時刻を指定していなかったので、いろいろなパターンが出てしまいました。どれでもいいのですが、とりあえず右下を「色見本」にします。


②の工程。色の間違いを雑に直しましょう。スカートのすそ、セーラー服のえり、リボン、髪の毛あたりです。スピード優先でクリスタを使っています。


これをCN「LineArtAnime+Canny」でimg2imgしたのがこちら。サイズは1.5倍にしています。


最後の工程③。上の画像をimg2imgでさらに1.5倍にアップスケールして仕上げます。今度は三つ目のCNとして弱めの「Tile」を掛けます。「LineArt+Canny+Tile」になりますが、線画指定が強すぎてガビガビになることがあるため、その場合はCannyを外したり、さらにLineArtを弱めたりして調整します。


これが完成図。


GIFで比較してみます。


工程③で終わりにせず、さらに工程②に戻すこともできます。例えばこんな風に、クリスタなどを使って逆光に加工してからもう一度Tile仕上げしてみるのも面白いかもしれません。


終わりに ~線画配布について~


大変長くなりましたが「AIで線画を着色+修正!StableDiffusionでできるAI塗り絵の現在」でした。こちらは「線画→AI着色→手書き修正」のGIF比較です。


今回、こちらの線画をイラストレーター様のご厚意で、記事を読んでいただいた皆様にもAI塗り絵のサンプルとして配布してOKとおっしゃっていただきました。


・線画そのままの再配布行為は禁止

・線画をもとにAI着色を行ったイラストのSNS等への投稿は自由


上記2点を守って、ぜひ皆様の環境やセンスでAI着色してみてください。


配布線画

(※著作権はイラストレーターさんに帰属します。常識の範囲で、AI塗り絵目的に限定してご利用ください)



別パターンの塗りではこんな案もありまして、これはこれで幻想的で素敵なアイデアだなと思いました。AIの塗りはプロンプト指示に縛られるので、プロンプトの発想次第でいろいろな案が出てきて非常に面白いですね。背景を宇宙にしてみたり、触手を金属風にしてみたり、アイデアがしっかりあれば全く違う塗りにできるはずです。


今回、この塗り絵企画をご提案頂いたイラストレーターさんからは、ご依頼に際して次のようなメッセージを頂いています。


「現在、対立している手描きとAIユーザー勢が将来的に共存するとすれば、こういった共同創作も可能なのではないかと考えており、そういった未来に向けて一つの形を示してみたいと思ったのが依頼のきっかけです」


「AI単体では、規則性と形状に意味を持たせる伝統模様的な表現は苦手だろうと私は考えており、そこに人間の手による補助が加わることで、手描きの価値をAIユーザーの方に知ってもらう機会になればと思っています」


実際このワークフローを見てもらえれば十分伝わると思うのですが、AIで意図したとおりに「一発塗り」をするのはまだまだ難しく、細部にこだわればこだわるほど「正確な色分けや色選びは人間が行った方がずっと創作的、かつ手っとり早い」ことが逆にはっきりしたように思います。特に、鼻の位置の誤解など、ごく細かな誤解をAIに「分からせる」のには時間ばかりがかかってしまい、全く創作的ではないことがよくわかりました。


画像生成AIは面白いツールですが、まだまだプロのワークフローを抜本的に変えるほど「便利」なものではなく、人間を脅かすようなものではないと感じます。最近は「イナズマイレブン」や「ベイブレードX」といったアニメにも生成AI技術が使われ始めて話題になっていますが、いずれも「アイデア出し」や既にクリエイターが生み出したものを補助するような使い方がなされており、人間の創作的関与を必要としない「純AI-generated」なコンテンツが商業レベルに達するのはまだまだ先なのかなと思っています。



今回の「AI塗り絵」の手法も、もちろん使用するCheckpointやLoRA、または線画のタッチなどで結果も変わってくるはずです。もしよかったら、ご自身の線画でやってみた結果などを教えていただけると、今後の検証に活かせるので、ぜひ試してみてくださいね。


申し遅れましたが、最近PC環境を一新して、RTX4080環境になりました。ミナちゃんの動画が作れたりして大変面白いです!RTX3060との違いなどについても、近いうちに検証記事をお伝えできればと思います。


それではまた近いうちに!スタジオ真榊でした。





Files

Comments

No comments found for this post.