【実験】ラフから完成にもっていく

2024年10月15日

以前にラフから線画を生成しようと試みたときに、綺麗めのラフを描いたのでついでに色もつけました。
これをAIに完成させてもらう実験です。

↓ラフから線画の実験をした記事はこちら。

使用する画像

色付きのラフ。以下「下塗り」と呼びます。

これはi2iに入れます。

綺麗めのラフ線画。以下「線画」と呼びます。

これはControlNetに入れます。

t2i + lineart

まず t2i + lineart でどんなものが出るか見てみます。

1 girl, deep green hair, twin tail and bun, pointed ears, yellow clothes, white background
Negative prompt: (worst quality, bad quality :1.4)
Steps: 20, Sampler: DPM++ 2M SDE Karras, CFG scale: 7, Seed: 1082268481, Size: 512x512, Model hash: cbfba64e66, Model: Counterfeit-V3.0_fp16, ControlNet 0: "preprocessor: invert (from white bg & black line), model: control_v11p_sd15s2_lineart_anime_fp16 [c58f338b], weight: 1, starting/ending: (0, 1), resize mode: Crop and Resize, pixel perfect: False, control mode: Balanced, preprocessor params: (512, -1, -1)", Version: v1.3.0

deep green hair と入れてみましたが深緑にはならなかったですね。もしかして dark green hair とかの方が良かったかもしれない。肩周りや胸などが上手くいってないです。胸は cut out clothing とか何とか入れたら良かったかも。改善の余地ありまくりなんですが、プロンプトを精査するのが面倒なので i2i に行きます。

ちなみにネガティブの bad quality は low quality の間違いです。

i2i + lineart

i2i に下塗り、lineart に線画を入れます。Denoising strength は 0.5 です。(0.5から上がるにつれて下塗りの色が無視されるため)

weight 1

1 girl, deep green hair, twin tail and bun, pointed ears, yellow clothes, white background
Negative prompt: (worst quality, bad quality :1.4)
Steps: 20, Sampler: DPM++ 2M SDE Karras, CFG scale: 7, Seed: 783647165, Size: 512x512, Model hash: cbfba64e66, Model: Counterfeit-V3.0_fp16, Denoising strength: 0.5, ControlNet 0: "preprocessor: invert (from white bg & black line), model: control_v11p_sd15s2_lineart_anime_fp16 [c58f338b], weight: 1, starting/ending: (0, 1), resize mode: Crop and Resize, pixel perfect: False, control mode: Balanced, preprocessor params: (512, -1, -1)", Version: v1.3.0

lineart は線画を忠実に守ってくれるのでそれが裏目に出て、線画のザカザカ描いた部分が生き残ってしまっています。

lineart 0.75

weight を 0.75 に下げてみましたが weight 1 とあまり変わらないですね。これ以上下げると「絵が変わったなあ」と思ってしまうのは【ラフ→線画】の実験で経験済みなので、weight を下げるのはここで終わります。

i2i + softedge

次は softedge を試してみます。多分 weight 1。

ザカザカしたところがなくなった感じがします。でも影や光のちょっと描き込みが少なくなったような?

描き込みを増やしたいので Denoising strength を上げてみました。ついでに残りの Preprocesser も試してみます。

Denoising を上げるとやっぱりAIの好きな色が変わりますね。しかも上げてもあまり綺麗になりませんでした。

t2i + lineart + reference only

色味の情報を reference only に入れてみたら参照してくれるかもしれないと思って、lineart と同時にかけてみました。i2i よりも効果が分かりやすいので t2i で実験します。

下塗りをreference onlyに入れる

色味は反映されてるようですが、flat color な感じまで反映されています。

i2i + lineart をreference onlyに入れる

i2i + lineart で生成したこの画像を reference only に入れます。

髪がちゃんと深緑になった!(嬉しい)
でも髪の房が塗られてなかったり、髪と服の色がお互いに侵食しまくりですね。

グリザイユ画法にチャレンジ

線を綺麗にするにはAI度を高めにしないといけないけど、AI度を高めにすると下塗りの色が無視されていきます。それならグレースケールで生成して、色味は後から人力で乗せればどうだろうか?という実験です。

t2i + lineart 白黒で出す

色の情報が不要なら t2i の方が絵が上手いだろう、ということで t2i で生成してみます。

monochrome, grayscale, 1 girl, black hair, twin tail and bun, pointed ears, white clothes, white background
Negative prompt: (worst quality, bad quality :1.4)
Steps: 20, Sampler: DPM++ 2M SDE Karras, CFG scale: 7, Seed: 2864358350, Size: 512x512, Model hash: cbfba64e66, Model: Counterfeit-V3.0_fp16, ControlNet 0: "preprocessor: invert (from white bg & black line), model: control_v11p_sd15s2_lineart_anime_fp16 [c58f338b], weight: 1, starting/ending: (0, 1), resize mode: Crop and Resize, pixel perfect: False, control mode: Balanced, preprocessor params: (512, -1, -1)", Version: v1.3.0

おだんごが色んな色になっちゃった……。服もここまで明度差があるとしんどいので、やっぱり i2i で生成した方がいいですね。

i2i + lineart 白黒

monochrome, grayscale, 1 girl, black hair, twin tail and bun, pointed ears, white clothes, white background
Negative prompt: (worst quality, bad quality :1.4)
Steps: 20, Sampler: DPM++ 2M SDE Karras, CFG scale: 7, Seed: 2402545229, Size: 512x512, Model hash: cbfba64e66, Model: Counterfeit-V3.0_fp16, Denoising strength: 0.5, ControlNet 0: "preprocessor: invert (from white bg & black line), model: control_v11p_sd15s2_lineart_anime_fp16 [c58f338b], weight: 1, starting/ending: (0, 1), resize mode: Crop and Resize, pixel perfect: False, control mode: Balanced, preprocessor params: (512, 0.5, 1)", Script: X/Y/Z plot, X Type: Denoising, X Values: "0.5,0.55,0.6,0.65,0.7,0.75", Version: v1.3.0

i2i に入れるのはこの下塗り。
lineart には線画を入れます。

lineart は線のザカザカが生き残るのを忘れていました。でも plot を見ると Denoising を 0.6 くらいまで上げられそうです。

i2i + softedge 白黒

monochrome, grayscale, 1 girl, black hair, twin tail and bun, pointed ears, white clothes, white background
Negative prompt: (worst quality, bad quality :1.4)
Steps: 20, Sampler: DPM++ 2M SDE Karras, CFG scale: 7, Seed: 96713846, Size: 512x512, Model hash: cbfba64e66, Model: Counterfeit-V3.0_fp16, Denoising strength: 0.5, ControlNet 0: "preprocessor: softedge_pidinet, model: control_v11p_sd15_softedge_fp16 [f616a34f], weight: 1, starting/ending: (0, 1), resize mode: Crop and Resize, pixel perfect: False, control mode: Balanced, preprocessor params: (512, 0.5, 1)", Script: X/Y/Z plot, X Type: Denoising, X Values: "0.5,0.55,0.6,0.65,0.7,0.75", Version: v1.3.0

softedge はやっぱり影が少ないですね…なぜだ……。

とりあえず塗ってみる

一旦生成は諦めて、まだ陰影がついていた i2i + lineart に色を塗ってみることにします。

monochrome, grayscale, 1 girl, black hair, twin tail and bun, pointed ears, white clothes, white background
Negative prompt: (worst quality, bad quality :1.4)
Steps: 20, Sampler: DPM++ 2M SDE Karras, CFG scale: 7, Seed: 2978125372, Size: 512x512, Model hash: cbfba64e66, Model: Counterfeit-V3.0_fp16, Denoising strength: 0.55, ControlNet 0: "preprocessor: invert (from white bg & black line), model: control_v11p_sd15s2_lineart_anime_fp16 [c58f338b], weight: 1, starting/ending: (0, 1), resize mode: Crop and Resize, pixel perfect: False, control mode: Balanced, preprocessor params: (512, 0.5, 1)", Version: v1.3.0

↑これにクリスタで色を塗ってみます。

「グリザイユって…どうやるんや…!?」と思いながら塗りました。ついでに気になってたザカザカ描き部分も加筆修正してみましたが…そもそも…自分の色塗りが下手…!あと影も少なくて「完成」というには足りないかなと思いました。

生成をもう少しがんばる

陰影が少なく感じるなら「もう一度 i2i にかける」というアプローチを試してみることにしました。

i2i(i2i + lineart) + lineart

i2i に入れるのはこれ。i2i(下塗り)+ lineart(線画)で生成したものです。lineart には今回も線画を入れて生成。

こうなりました。ちょっと描き込みが増えたかな~?でももっと変わってほしい。

からの~ 顔以外 inpaint + CN

lineart を使っているのは、主に「顔が維持されてほしい」という理由です。ここまでで顔周りは色が塗れているので、ここから顔以外を inpaint してみたらどうだろう??

i2i のタブを inpaint に切り替えて、こんな感じで雑マスク。「マスクの範囲以外を inpaint」にして生成します。CN は何がいいか、X/Y/Z plot してみます。

scribble

1 girl, deep green hair, twin tail and bun, pointed ears, yellow clothes, white background
Negative prompt: (worst quality, bad quality :1.4)
Steps: 25, Sampler: DPM++ 2M SDE Karras, CFG scale: 9, Seed: 2500785936, Size: 512x512, Model hash: cbfba64e66, Model: Counterfeit-V3.0_fp16, Denoising strength: 0.5, Mask blur: 4, ControlNet 0: "preprocessor: scribble_hed, model: control_v11p_sd15_scribble_fp16 [4e6af23e], weight: 1, starting/ending: (0, 1), resize mode: Crop and Resize, pixel perfect: False, control mode: Balanced, preprocessor params: (512, -1, -1)", Script: X/Y/Z plot, X Type: Denoising, X Values: "0.5,0.6,0.7", Y Type: [ControlNet] Preprocessor, Y Values: "scribble_hed,pidinet_scribble,scribble_xdog", Version: v1.3.0

hed と pidinet はおだんごに三つ編みが発生してしまいますね。xdog はけっこう忠実だけどザカザカの部分はなくなってていい感じ。invert も試してみたら良かったですね。何でやらなかったのか。

softedge

softedge は全体的に三つ編みが出がち(細かめのところを好きに描きがち)ですね。あと服を理解してもらえてないですね…これは元の絵がAIの絵から離れている(オブラート)ということだと思うので…かなしみ…。

canny

たまたまかもしれないですが、canny は denoising 0.7 でも元の絵に近い服を描いてくれてますね。canny はなぜかいつも色がくすみがち(セピアっぽくなる)に感じるのですが、canny のモデルのせいなのか、生成に使ってる counterfeit-v3 との相性なのかは知らないです。

まとめ

スタート。

ゴール。
最後に canny で生成したものに加筆修正。

やっぱり色が変わっちゃうのがしんどいですね。色調補正すればいいんだけど、面倒なのでしてないです。下塗り作成時にレイヤーを分けていれば、ある程度それが使えると思うので多少楽かも?色を塗るのが面倒だからAIにやってもらおうとしてるのに、そんなに手間暇かけてたら意味ないやろがい!という気持ちです。

ですが。この実験をしたのが1か月くらい前で、今は色の維持や描き込みに関してもうちょっと改善できています。denoising をもっと下げて、flat2 LoRA をマイナスでかける方法です。この絵では試してないので、また試して実験記事を書く~~はず。

今回の最終成果をまとめた画像。