generated at
🦊Hires.fix

512px × 512pxで生成するのはなぜ?#6595f5e0e2dacc00006b65fcで説明されていますが、Hires.fixは大きな解像度でも破綻しない画像を生成するための手法の一つです

🐟処理の流れ
text2imageで出来た画像をx倍に拡大 → image2image
とてもシンプル


🦊ComfyUIでやってみる
🟨text2image
🟩生成した画像を1.5倍に拡大
nearest-exactbilinearなどいくつか手法が選べます
🟪image2image
Hires.fixは元の絵をなるべく変えずにディテールを上げることが目的なので、Denoiseは0.35 ~ 0.55程度にすることが多いです
一番シンプルな形ですが改良できる点がいろいろあります
いくつか改良したパターンを見てみましょう


🐉アップスケーラーを使う
🟩画像をx倍する箇所ですが、上の方法はいわばパワポで画像の角をつかんでにゅっとするのと同じなので(語彙)大分雑です
詳しくは🦊アップスケーラーでやりますが、AIの力を使って綺麗に解像度をあげる方法があるのでそれに置き換えます
🟩ImageUpscaleWithModelノードを使ってここでは画像を2倍に拡大しています
アップスケーラーにもいろいろな種類がありどれを使うのかは好みですが、4x NMKD SuperscaleDATは汎用性が高い気がします


🧼latentの状態でアップスケールする
上の2つは一度ピクセル画像にデコードしてから拡大しています
が、latentの状態で拡大してそのままimage2imageすれば良いのでは?というのがこのHires.fixです
🪢ComfyUIカスタムノードのインストール
🟩NNLatentUpscaleノードで2倍に拡大してimage2imageに渡すだけなので少ないノード数で実装できます
ピクセル画像へのデコードを最後の一回しかしないため高速です
ちなみにデフォルトにLatentUpscaleByノードというものがありますが、これば許容できないほど画像が劣化してしまうため使いません


比較
step数20 / start_at_step 10 / 2倍に拡大
(あれ、思ったより違うな…nomadoor)
nearest-exactはドット絵を拡大するときに使うのですがなんだかクリアで綺麗ですね
個人的にNNLatentUpscaleには全幅の信頼を置いていたんですが、ボケてていまいちです
今になってこんな基礎的なとこ見直すことになるとは……