🦊Hires.fix
🏠/🦊雑に学ぶComfyUI
前/🦊image2image
次/🦊SDXL
512px × 512pxで生成するのはなぜ?#6595f5e0e2dacc00006b65fcで説明されていますが、Hires.fixは大きな解像度でも破綻しない画像を生成するための手法の一つです
🐟処理の流れ
https://gyazo.com/a7242443c37ed0356b04e866c3db3da3
text2imageで出来た画像をx倍に拡大 → image2image
とてもシンプル
🦊ComfyUIでやってみる
https://gyazo.com/cc3a7dffdb61f000a3eaaf0688f49803
SimpleHiresfix.json
🟨text2image
🟩生成した画像を1.5倍に拡大
nearest-exactやbilinearなどいくつか手法が選べます
🟪image2image
Hires.fixは元の絵をなるべく変えずにディテールを上げることが目的なので、Denoiseは0.35 ~ 0.55程度にすることが多いです
一番シンプルな形ですが改良できる点がいろいろあります
いくつか改良したパターンを見てみましょう
🐉アップスケーラーを使う
🟩画像をx倍する箇所ですが、上の方法はいわばパワポで画像の角をつかんでにゅっとするのと同じなので(語彙)大分雑です
詳しくは🦊アップスケーラーでやりますが、AIの力を使って綺麗に解像度をあげる方法があるのでそれに置き換えます
https://gyazo.com/aed6ceac8698f528f54f1ee8e28043c2
Hiresfix_with_upscaler.json
🟩ImageUpscaleWithModelノードを使ってここでは画像を2倍に拡大しています
アップスケーラーにもいろいろな種類がありどれを使うのかは好みですが、4x NMKD SuperscaleやDATは汎用性が高い気がします
🧼latentの状態でアップスケールする
上の2つは一度ピクセル画像にデコードしてから拡大しています
が、latentの状態で拡大してそのままimage2imageすれば良いのでは?というのがこのHires.fixです
🪢ComfyUIカスタムノードのインストール
ComfyUI Neural network latent upscale custom node
https://gyazo.com/ca587e8681b4721e978659146b93a918
Hiresfix_latent.json
🟩NNLatentUpscaleノードで2倍に拡大してimage2imageに渡すだけなので少ないノード数で実装できます
ピクセル画像へのデコードを最後の一回しかしないため高速です
ちなみにデフォルトにLatentUpscaleByノードというものがありますが、これば許容できないほど画像が劣化してしまうため使いません
比較
step数20 / start_at_step 10 / 2倍に拡大
https://gyazo.com/60053d218b9fe5ee94f5daf79e221e84
(あれ、思ったより違うな…nomadoor.icon)
nearest-exactはドット絵を拡大するときに使うのですがなんだかクリアで綺麗ですね
個人的にNNLatentUpscaleには全幅の信頼を置いていたんですが、ボケてていまいちです
今になってこんな基礎的なとこ見直すことになるとは……