Twitterやいろんなサイトを見ていると、サイズが大きく綺麗な高画質なイラストを見たことはありませんか?
Stable Diffusion web UIは1発でそんな画像を出すことを苦手としています。ただ単に大きな画像を出力するサイズ設定では構図が崩れるなど思ったような画像を生成してくれません。なにより大きな画像を出力することはグラボが耐えてくれません。
そこで利用されているのが「Hires.fix(高解像度補助)」というものです。
Hires.fixは構図の破綻を抑えつつ画像を高画質化できる機能です。ここではこのHires.fixの使い方をご説明しつつ、好みの設定を見つけられるよう比較表と合わせてご紹介していきます。
Hires.fix(高解像度補助)とは
構図の破綻を抑えつつ画像を高画質化できる機能がHires.fix(高解像度補助)とお伝えしましたが、SDwebUIの機能説明ページによると
A convenience option to partially render your image at a lower resolution, upscale it, and then add details at a high resolution. By default, txt2img makes horrible images at very high resolutions, and this makes it possible to avoid using the small picture's composition.
(Google翻訳)画像を部分的に低解像度でレンダリングし、アップスケーリングしてから、高解像度で詳細を追加する便利なオプションです。デフォルトでは、txt2img は非常に高い解像度で恐ろしい画像を作成するため、小さな画像の合成を使用することを避けることができます。
つまり要約すると次の手順によって動いているものとなります。
- 低解像度で画像を生成する。
- 生成された低解像度画像を拡大する。
- 拡大された画像を高画質化する。
SDwebUIは、人やモノを認識して生成していません。そのため1度で大きな画像を生成しようとすると歪な構図となる可能性が高くなってしまいます。
小さな画像で構図を確定させてからそれを大きくすることで、崩壊を避ける手順(image2image)を踏んでいると読み取れます。
Hires.fixの効果検証
同じプロンプトとシード値を使い生成した画像がこちらになります。
▼プロンプト情報
cute little girl, wind, pale-silver hair, very long twintails, white dress, blue sky, smile, looking at viewer, beach, lens flare, dramatic, coastal
Negative prompt: (easynegative:1.0),(worst quality,low quality:1.2),(bad anatomy:1.4),(realistic:1.1),nose,lips,adult,fat,sad, (inaccurate limb:1.2),extra digit,fewer digits,six fingers,(monochrome:0.95)
Steps: 60, Sampler: DPM++ SDE Karras, CFG scale: 7.5, Seed: 2830078986, Size: 768x768, Model hash: ded0c94f95, Model: ShiratakiMix-fixed, Clip skip: 2Denoising strength: 0.55, Hires upscale: 2, Hires upscaler: Latent
目のディティール、髪の毛、服のシワなどの描写が細やかになっていますね。Hires.fixを使いこなすと画像のクオリティが数段跳ね上がります。
画面構成と使い方
Hires.fixはSDwebUIをインストールして最初から入っているデフォルト機能です。
筆者の環境では、サンプラーの下にチェックボックスがあり、チェックを入れると表示されます。
Hires.fix画面構成
①アップスケーラー
高画質化をするアルゴリズムのことを指します。いろいろな種類があり、同じモデルとシード値でもアップスケーラーを変更すると雰囲気が大きく変わったり、書き込み量に変化があったりします。
人気なアップスケーラーは「Latent」「Latent(nearest)」「R-ESRGAN 4x+ Anime6B」などが挙げられると思います。
②ステップ数
高画質化する際のステップ数。「0」にするとサンプリングステップ数と同じ値が適用されます。
➂ノイズ除去強度
高画質化をどの程度行うかの設定。値が大きいと書き込み量が増えたりと画質向上になるが、大きすぎると元のイラストと異なる生成結果となったり、破綻が増えたりする。下部に比較表がございます。
④アップスケール倍率
画像の拡大率。
⑤指定拡大サイズ
画像拡大後のサイズを直接指定できる。
アップスケーラー比較
アップスケーラーにはいくつかの種類があり、それぞれで生成結果が異なってきます。ここでは、それぞれの生成結果を比較表と共に見ていきましょう。
▼サンプル画像
プロンプト情報
cute little girl, wind, pale-silver hair, very long twintails, white dress, blue sky, smile, looking at viewer, beach, lens flare, dramatic, coastal
Negative prompt: (easynegative:1.0),(worst quality,low quality:1.2),(bad anatomy:1.4),(realistic:1.1),nose,lips,adult,fat,sad, (inaccurate limb:1.2),extra digit,fewer digits,six fingers,(monochrome:0.95)
Steps: 60, Sampler: DPM++ SDE Karras, CFG scale: 7.5, Seed: 2830078986, Size: 768x768, Model hash: ded0c94f95, Model: ShiratakiMix-fixed, Clip skip: 2
▼Hires.fixの設定
ステップ数:20
ノイズ除去強度:0.55
倍率:2
単純に綺麗な高画質化から、ディティール書き込み量に差があります。
アップスケーラーとノイズ除去強度の関係性
アップスケーラーの単純比較をご覧いただきました。しかし実は、アップスケーラー毎に推奨される適切なノイズ除去強度があります。
例えば、Latent (nearest)はノイズ除去強度0.5~0.6くらいが構成変化も少なく高画質化ができるのに対し、SwinIR_4xなど強度は0.3くらいで高画質化がほぼ出来上がっております。
アップスケーラーそれぞれのノイズ除去強度別の比較表をご紹介します。
Latent
Latent (antialiased)
Latent (bicubic)
Latent (bicubic antialiased)
Latent (nearest)
Latent (nearest-exact)
None
Lanczos
Nearest
ESRGAN_4x
R-ESRGAN 4x+
R-ESRGAN 4x+ Anime6B
LDSR
SwinIR_4x
終わりに
Hires.fix(高解像度補助)をご紹介して参りました。よりクオリティの高く好みのイラストが生成できるよう確実に抑えたいテクニックになりますね。