アップスケーラーの倍率と解像度に潜む2つのルール
Stable Diffusionにおいてベース解像度を64の倍数に設定することは基本ですが、アップスケールを行う際にも考慮すべき2つの倍数ルールが存在します。
1つ目は、最終的に出力される縦横ピクセル数が64の倍数(最低でも8の倍数)である必要がある点です。Hires.fixのように「アップスケール後に再度潜在空間(Latent Space)とピクセル空間を行き来させる手法」では、UNetおよびVAEの制約を直接受けます。端数が生じる解像度を指定すると、境界部分の歪みやブロックノイズの原因となります。
2つ目は、AIアップスケーラーモデルが内部的に持っている「ネイティブ倍率」の存在です。ESRGANやSwinIRなどの主要なアップスケーラーモデルは、ネットワーク構造自体が2倍($\times 2$)または4倍($\times 4$)固定で学習されています。ここで倍率に 1.5 などを指定した場合、ツール内部では「一度モデルのネイティブ倍率で拡大した後に、バイキュービック等の画像補間処理で1.5倍に縮小する」という2段階の処理が行われます。この縮小処理に伴い、モデルが描き出した細かなディテールがわずかにボケてしまったり、余分な計算コストが発生したりします。
これまで 1.5倍 を指定しても問題が生じにくかったのは、ベース解像度として使われる 512 × 512 や 512 × 768 を1.5倍した結果がそれぞれ 768 × 768 や 768 × 1152 となり、偶然にも64の倍数に合致していたためです。アップスケーラー本来の描写性能を最大限に引き出すのであれば、拡大倍率は 2.0倍 などの整数倍を基準にするのが合理的です。
Hires.fixにおけるHR Stepsとノイズ除去強度の考え方
ベース生成のステップ数が 25 前後の場合、Illustrious系を含む多くのモデルにおいて HR Steps は 10〜15 程度で十分な品質が得られます。
Hires.fixで実際に処理される計算回数は、設定したステップ数そのものではなく、ノイズ除去強度(Denoising Strength)との積によって決まります。
$$\text{実効ステップ数} = \text{HR Steps} \times \text{Denoising Strength}$$
構図やキャラクターデザインの崩れを防ぐために Denoising Strength を 0.40 付近に設定した場合、HR Steps を 15 とすると実効ステップ数は $15 \times 0.40 = 6$ ステップとなります。この状態から HR Steps を30などに倍増させても、実際に増える処理は数ステップ程度に過ぎず、生成時間が大幅に延びる割にクオリティの向上は限定的です。
とりわけIllustrious系(SDXL派生)はベース生成の段階で細部の描き込み性能が非常に高いため、Hires.fix側で過剰にステップを回すと線の多重化やテクスチャの破綻を招きやすくなります。
- 推奨HR Steps:10 〜 15
- 推奨Denoising Strength:0.35 〜 0.45
- 推奨アップスケーラー:
4x-Anime6B、R-ESRGAN4x+ Anime6B
ディテールを増やしたい場合は HR Steps を増やすのではなく、Denoising Strength を 0.45〜0.50 付近まで少し引き上げる方が直接的な効果を得られます。逆に生成速度を優先したい場合は、HR Steps を 10 まで下げても仕上がりに大きな差は生じません。