Stable Diffusion Webui(AUTOMATIC1111)のアップスケーリング機能Hires.fix(ハイレゾ化)のアルゴリズム(アップスケーラー)全14種類を試してみて、出力された画像とともにどのアップスケーラーを選べばよいかを検証してみました。
- 0,Hires.fixの使い方
- 1,検証条件
- 2,実際のアップスケーリング処理後の画像
- Latent アップスケーラーの場合
- Latent (antialiased) アップスケーラーの場合
- Latent (bicubic)アップスケーラーの場合
- Latent (bicubic antialiased)アップスケーラーの場合
- Latent (nearest)アップスケーラーの場合
- Latent (nearest-exact)アップスケーラーの場合
- None アップスケーラーなしの場合
- Lanczosアップスケーラーの場合
- Nearestアップスケーラーの場合
- ESRGAN_4x アップスケーラーの場合
- LDSR アップスケーラーの場合
- ScuNET GAN アップスケーラーの場合
- ScuNET PSNR アップスケーラーの場合
- SwinIR 4x アップスケーラーの場合
- 結果まとめ 結局のアップスケーラーでHires. fixすればいいのか
0,Hires.fixの使い方

webUIのtxt2imgタブの下にある「Hires. fix」にチェックするとアップスケーリングを有効化できます。
設定できる項目は現在以下の4つです。
(Resize width toとResize height toで縦横サイズを直に指定もできますが割愛します)
- Upscaler(アップスケーラー):14種類くらいある。今回ココを検証
- Hires steps:アップスケーリング時のsteps数。多分steps数が多いほど緻密になる
- Denoising strength(ノイズ除去度):アップスケーリングの元となる画像からどの程度ノイズ除去するか。ここの値を小さくするとアップスケール後に元画像とかけ離れた画像になりやすい
- Upscale by(アップスケール倍率):何倍に拡大するか

「Denoising strength(ノイズ除去度)」の説明がよくわからん
何いってんだこいつ……???
となったので検証前に、Denoising strength(ノイズ除去度)を実演しました。
これがDenoising strength(ノイズ除去度):0.2時のアップスケーリングです。

0.7だと以下の通り。

0.7の方が滑らかにアップスケールされています。
最も、0.2の画像もそういうコンセプトと思えば結構お洒落ですよね!!
アップスケールで高精細・緻密な書き込みという本記事の目的から外れてしまいますが、画像生成の出力の幅を増やすこともできる素晴らしい機能ですね!?
Hires. fixはざっっっっくり言い表すと、
低解像度(768×512とか)で出力された画像を1.5倍とかに引き伸ばした画像に対するimage2imageです。
この引き伸ばした画像にどの程度ノイズを載せたかでアップスケーリング後が大きく変わるってわけです。
1,検証条件
生成時のパラメーター
(masterpiece, best quality:1.3),1girl, looking up fireworks focus, from behind, backlighting,night,japanese clothe,kimono,yukata,
Negative prompt: lowres, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts,signature, watermark, username, blurry, artist name, looking at viewer
Steps: 14,
Sampler: DPM++ SDE Karras,
CFG scale: 7,
Seed: 233907673,
Size: 768×512,
Model hash: f6957e654e,
Model: 7th_anime_v3_C,
Clip skip: 2,
ENSD: 31337
これで生成されるアップスケーリング前の画像がこちらです。

Hires. fixのパラメーター
- Upscaler(アップスケーラー):今回ココを検証
- Hires steps:40
- Denoising strength(ノイズ除去度):0.7
- Upscale by(アップスケール倍率):1.5
アップスケーラーは、具体的には以下を検証対象とします。
使用時にはそれぞれのライセンス等を各自で確認しましょう。
Latent, Latent (antialiased), Latent (bicubic), Latent (bicubic antialiased), Latent (nearest), Latent (nearest-exact), None, Lanczos, Nearest, ESRGAN_4x, LDSR, ScuNET GAN, ScuNET PSNR, SwinIR 4x
2,実際のアップスケーリング処理後の画像
- 着物の柄
- 髪飾り
- 帯
- 背景の花火の潰れ具合
- 水面に反射した花火
これらに注目すると結構アップスケーラーごと個性があって面白いです。
Latent アップスケーラーの場合

花火自体はあまり変化なし。
水面の反射と服が高精細ですね。
Latent (antialiased) アップスケーラーの場合

髪飾りや帯に変化がありましたね。
花火は上と同程度、元絵と変化なしです。
Latent (bicubic)アップスケーラーの場合

帯と髪飾りが変化。
背景の花火(右)が精緻になりました。
Latent (bicubic antialiased)アップスケーラーの場合

人物の3D感が感じられます。
Latent (nearest)アップスケーラーの場合

Latent (bicubic)とほとんどかわりませんが、花火周辺の白い光がなくなりましたね。
Latent (nearest-exact)アップスケーラーの場合

花火周辺の白い光が星っぽくもないので、アップスケーリング時のノイズっぽいです。
他のアップスケーラーでも出てましたが、Latent (nearest-exact)はそれが顕著です。
None アップスケーラーなしの場合

単純拡大だと荒が目立ちますね。
特に花火周辺の光の階調がなめらかでないのと、、左の花火が潰れているのが致命的です。
ちなみに、なぜここでアップスケーラーなしの場合を載せたかというと、そういう並びのためです。

何故でしょうね?!
Lanczosアップスケーラーの場合

あまり元絵との変化がないため自然ですね。
Nearestアップスケーラーの場合

右袖から謎の布?が出ています、良くないですね。
花火は美しいので背景には最適かもしれません。
ESRGAN_4x アップスケーラーの場合

とても元の絵を尊重しているかたちです。
アップスケーラー検証前の私はこれを常用していました。
とても有名なアップスケーラーだけあって使い心地が良いですね。
LDSR アップスケーラーの場合
検証時での最新版でエラーが出たうえ、過去バージョンで試みたらまた別のエラーが出てアップスケーリングできなかったので保留します。
ScuNET GAN アップスケーラーの場合

左の花火とか水面の反射などが滲んでいます。
アルゴリズムが違うだけでこんなに差異があるとは!
背景をはっきりさせたい場合、ScuNET GANだけはDenoising strengtを1に近づけまくるのが良いでしょう。
ScuNET PSNR アップスケーラーの場合

ScuNET GAN同様ににじみますね。
まあどう考えてもScuNET GANとScuNET PSNRは兄弟みたいな関係そうですし、残念ながら当然です。
SwinIR 4x アップスケーラーの場合

結構忠実にアップスケーリングしますね。
ESRGAN_4xと似た感じがします。
結果まとめ 結局のアップスケーラーでHires. fixすればいいのか
XY Plot画像版
最後に、今回検証に使ったXY Plot画像の無劣化版「Hires. Fixアップスケーラー比較.pdf(←約12MB)」も一応置いておきます。
PNGだと圧縮されるので無劣化変換でPDF化しました。
通信容量に気をつけてください。
結論
私の個人的好みですが、Latent (bicubic)とSwinIR 4xのどちらかを使うのがオススメです。


背景の精緻さという面ではLatent (bicubic)が上で、人物のほどよい立体感という観点ではSwinIR 4xが上です。
ぶっちゃけ個人の好みに左右されるうえに、Hires stepsとDenoising strengthによっても出力が変わる沼のため、各自検証を行う際は評価基準を明確にして行いましょう(教訓)
他のWebUIの便利・面白い機能もご覧ください!
その他の検証記事もどうぞ!