Stable Diffusion / Hires. fix での高解像度化を試してみた

本サイトで紹介している商品・サービス等の外部リンクには、アフィリエイト広告が含まれる場合があります。

概要

Hires. fix を利用することで、元の画像の構図や雰囲気を保持しながら、高解像度で鮮明に詳細が書き込まれた画像を得ることができます。

環境

以前用意した環境で試します。(Stable Diffusion 3.5 は別の機会に試そうと思います。)

Hires. fix のパラメータなど

Stable Diffusion WebUI (AUTOMATIC1111 版) では [Hires fix] のところをクリックするだけで利用できます。

Hires. fix の動作に影響する以下のパラメータが指定できます。

  • Upscaler
  • Hires steps
  • Denoising strength
  • Upscale by
  • Resize width to, Resize height to

Upscaler

画像の解像度を高める処理を行うアルゴリズムを指定します。
Latent Upscaler、ESRGAN、SwinIR などが用いられ、それぞれ異なる特性を持っています。
いくつか試してみて自分の好みを見つける形になると思います。
元の画像の画風 (写真のようなリアルな画風、アニメ画風など) によっても向き不向きなどがあるかもしれません。

以下では R-ESRGAN 4x+ で試してみます。

  • SRGAN(Super-Resolution Generative Adversarial Network)は、低解像度の画像を高解像度に変換するための深層学習モデルで、GAN(Generative Adversarial Network)を超解像タスクに適用したもの
  • ESRGAN(Enhanced Super-Resolution Generative Adversarial Networks)は、低解像度の画像を高解像度に変換するための深層学習モデルです。従来のSRGAN(Super-Resolution Generative Adversarial Networks)を改良し、より高品質な画像生成を実現
  • R-ESRGAN 4x+ は、ESRGAN(Enhanced Super-Resolution Generative Adversarial Networks)を改良した画像超解像アルゴリズムで、このモデルは、画像の解像度を最大 4倍に拡大し、ノイズリダクションを強化することで、より鮮明で高品質な画像生成が可能

Hires. steps

Hires. fix 処理において再描画を行う際のステップ数を設定します。この値を調整することで、画像のディテールや処理時間に影響を与えます。

  • 低ステップ数(10~20):
    • 処理が高速。
    • 大きな変化を加えず、元画像の雰囲気を保ちたい場合に有効。
  • 高ステップ数(30~50以上):
    • 処理が精密になり、ディテールが向上。
    • より時間がかかる。

Denoising strength

Hires. fix におけるノイズ除去の強度を指定します。直観的には、高解像度化の際の追加書き込み時のアレンジ強度みたいな感じになると思います。(厳密な説明をすれば違うかもしれませんが)

値の範囲は 0.0 ~ 1.0 で設定され、これも様子を見つつ調整する形になると思います。

  • 低値(0.1~0.3): 元画像の構図やディテールを保持しつつ微調整。
  • 中間値(0.4~0.6):元画像を適度に修正しつつも、オリジナルの要素を残す。
  • 高値(0.7~1.0): 元画像を大幅に改変 (足りない部分もちゃんと書いてくれる ともいえるかもしれない)

Upscale by, Resize width to, Resize height to

再生成する画像のサイズを倍率指定する場合は Upscale by で指定し、サイズを直接指定する場合は Resize width to, Resize height to で行います。

Hires. fix を試してみる

ベースの設定

以下のページの最後で利用したものと同じ設定で行います。

  • Stability Matrix 経由 Stable Diffusion WebUI (AUTOMATIC1111 版) を使用
  • チェックポイント : yayoiMix_v25.safetensors
  • txt2img で作成
    • Prompt : a girl, high resolution, professional photography quality
    • Negative Prompt : low quality, cartoonish, painting, digital art, illustration, anime, 2D art, sketch, watercolor, flat colors, stylized, low quality, blurry focus on the subject, deformed, disfigured, grainy, overexposed, abstract
  • Sampling method : DPM++2M
  • Schedule type : Automatic
  • Sampling steps : 20
  • Hires.fix : なし
  • Refiner : なし
  • Width : 512
  • Height : 512
  • Batch count :1
  • Batch size :1
  • CFG Scale : 7
  • Seed : 1622676478

元画像

今回は Hires. fix としては、以下は固定としておきます。

  • Upscaler : R-ESRGAN 4x+
  • Upscale by : 2

Denoising strength による違い

Denoising strength が小さいと元画像に近いままですが、大きくなると例えば髪の毛の詳細まで書き込まれた形になりました。
しかしながら、Denoising strength が大きくなりすぎると元画像からかけ離れていくことがわかります。

Hires steps : 0, Denoising strength : 0.0

(画像をクリックした後、左右キーで次の画像が確認できます。)

Hires steps : 0, Denoising strength : 0.1

Hires steps : 0, Denoising strength : 0.2

Hires steps : 0, Denoising strength : 0.3

Hires steps : 0, Denoising strength : 0.4

Hires steps : 0, Denoising strength : 0.5

Hires steps : 0, Denoising strength : 0.6

Hires steps : 0, Denoising strength : 0.7

Hires steps : 0, Denoising strength : 0.8

Hires steps : 0, Denoising strength : 0.9

Hires steps : 0, Denoising strength : 1.0

Hires steps の違い

次は Denoising strength : 0.3 をピックアップして、Hires steps を増やしてみました。

今回のケースに限って言えば、Hires steps を変えてもほとんど画像の変化はありませんでした。(元画像依存か、Upscaler 依存か などは確認していません。)。
Hires steps を増やすと処理のために時間がかかるので、このような場合は少なくてよさそうです。

Hires steps : 10, Denoising strength : 0.3

Hires steps : 50, Denoising strength : 0.3

Hires steps : 150, Denoising strength : 0.2

参考となれば幸いです。