ControlNetのTileを使って忠実な高解像度化をする
初めに
stable diffusionで生成する時に、Hires. fixを使ってイラストを高解像度化すると、生成するイラストによっては全く別物になったりして諦めないといけないパターンが何度かありました。
代表的なものと言えば花火です。
花火をHires. fixすると綺麗な花が生成されてしまいます。使っているモデルの特徴なのかもしれませんがそれ以降花火イラストは諦めていました。
ControlNetのTileを使うことで変化を抑えて忠実な高解像度化が可能になりました。
※ControlNetの導入や使い方は以下ページにて解説しています。
Hires. fixとTileの違い
Hiees.fixとは低解像度で部分的にレンダリングしてからアップスケール、高解像度でイラストに追加で描き込むオプションです。
※以下で解説しています。
まずは花火のイラストを生成しました。
夜の湖で花火大会が行われる雰囲気のイラストです。
原画の状態ではちゃんと花火になっていますね。
これをHires. fixしてみましょう。どうなるでしょうか。
このように花火が綺麗な花になりましたね。
こうなってしまうとinpaintして直すのにも苦労します。何度直しても花になってしまうので膨大な時間を要します。
では新しくControlNetのTileを使ってみましょう。
ControlNetのTileの使い方
元絵をimg2imgへ送りましょう。
CFG Scaleを 3 にします。(花火の場合CFG Scaleが高いほど花になりやすいです。)
Denoising strengthを0.55にします。(0.5~0.7辺りで調整してみましょう。)
seed値は-1で固定を解除しておいてください。
ControlNetをEnable。
Pixel Perfectにチェック。
Tileを選択してPreprocessorとModelは標準のままで大丈夫です。
Script項目からSDupscaleを選択、Scale Factorを拡大したい値を入力しましょう。2~4辺りで良いと思います。私はいつも2.5です。
生成。
できました。元絵の状態を保ったまま描き込みを増やしつつ高解像度化が成功しました。Extra項目のResizeとは違ってちゃんと描き込み量が増えるのは嬉しいですね。
Hires.fixして構図や風景が変わってしまって困っていた元イラストがあれば試してみてはいかがでしょうか。かなり便利です。
Hires.fix検証
Hires.fixでもCFG scaleを下げれば花火がちゃんと花火になるんじゃない?と思い低い数値でかけましたが結果はダメでした。
低すぎると油絵になってしまうようで画風が崩壊してしまいます。
1や2は基本的に使ってはいけません。
3はこのように花火になってくれましたが明らかに構図が狂っています。
5~7までの間にどんどん花火が花になっているようです。4辺りがちょうどよかったかもしれませんが怪しい雰囲気はあります。
花火生成の時はHires.fixは諦めてTileを使った方が早いですね。
またstep数で花火が花になる影響は変わらずでした。
そこまで変わらないので20で十分でしょう。
このようにTileを使うと今まで諦めていたイラストを高解像度化できるかもしれません。試してみる価値は存分にあります。