こんにちは!悠です!
今回は「Stable Diffusion WebUI」で、4K画像(3,840×2,160)をロースペックGPUでも簡単に出力できる方法に関してまとめていきます。
私はGTX1660TiというVRAM6GBのGPUを使用していますが、これでも問題なく4K画像を出力可能です。

ただ勿論、GPUの性能が低いと高解像度生成においては大きなハンデがあります。その点に関してもご紹介していくので、ぜひ参考にしてください!
【注意】いきなり4K画像を生成するのは不可能
よく初心者の方が間違えられるポイントなんですが、WebUIで段階を踏まずにいきなり高解像度の画像を作成することはできません。
例えば下の画像のように、Widthを1,920、Heightを1,080(フルHD)にして生成しても、よほどハイスペックなGPUじゃない限り出力は不可能です。
加えて仮に生成できたとしても、モデルが学習している基本的な画像サイズ(512×512)から大きくかけ離れているため、ほぼ間違いなく絵自体が破綻します。
そのため高解像度画像を生成するには、hires.fixなどの段階を踏む必要があるんですね。

ただHires.fixは大きくVRAMを消費するので、1,536×1,024程度の画像サイズなら1660Ti(VRAM6GB)でも可能ですが、それ以上になるとかなり厳しくなってきます。
そこで登場するのがMultiDiffusionおよびExtrasです。
【方法1】MultiDiffusionを使って4K画像を生成
MultiDiffusion(拡張機能「multidiffusion-upscaler-for-automatic1111」)の導入方法や使い方に関しては、下記の記事で詳しく紹介しています。

MultiDiffusionはVRAMの消費量を格段に抑えつつアップスケールすることが可能なので、VRAM6GBでも4K画像を生成することができます。
具体的な手順は次の通りです。
- txt2imgで768×432の画像を生成
- img2imgでMultiDiffusionを使い、1の画像を2.5倍(1,920×1,080)にアップスケール
- img2imgでMultiDiffusionを使い、2の画像を2倍(3,840×2,160)にアップスケール
1で生成した画像をいきなり5倍に拡大すると破綻の原因になるので、一度フルHDの解像度を挟むのがおすすめです。
具体例を紹介します。
まずは下のプロンプトで768×432の画像を生成します。(プロンプトはMajinAIを参考にしました。)
モデルは「Yuzu」、Loraに「flat2」を使用しています。
masterpiece, best quality, absurdres, highres, official art, 1girl, solo, cowboy shot, dynamic angle, shiny skin, petite, large breasts, golden eyes, angelic smile, silver hair, short hair, colored inner hair, straight hair, hair over one eye, (Angel Wings:1.3), (off shoulder, white frilled dress:1.3), Golden hour, (lake in the forest:1.3), arms behind back, <lora:flat2:-0.3>
(worst quality, low quality:1.4), (monochrome, greyscale:1.4), nude, bad anatomy, EasyNegative, text, logo, watermark, bad_prompt_version2, cleavage,
また、拡張機能「adetailer」で顔の補正を入れています。

生成した画像は次の通りです。
これをimg2imgのMultiDiffusionで、次の設定でアップスケールしていきます。なおアップスケーラーに関しては下記の記事をご覧ください。

【1回目(2.5倍)】
- Steps: 20
- Sampler: DPM++ 2M Karras
- CFG scale: 7
- Denoising strength: 0.45
- Scale Factor: 2.5
- Upscaler: 4x_foolhardy_Remacri
【2回目(2倍)】
- Steps: 20
- Sampler: DPM++ 2M Karras
- CFG scale: 7
- Denoising strength: 0.45
- Scale Factor: 2
- Upscaler: 4x_foolhardy_Remacri
これで出来上がった4K画像が次の通りです。
ブログに上げると自動的に解像度が落ちるため分かりにくいですが、全体的にくっきりしているのが伝わるかと思います。
特に機械っぽい背景だったり、サイバーパンク系のメカスーツだと顕著に違いが判ると思いますよ!
【注意点1】生成時間が膨大
上で紹介した4K画像ですが、GTX1660Tiでは生成時間がかなり長いです。
まず、768×432+adetailerの補正にかかる時間が33秒、1,920×1,080へのアップスケールにかかる時間が3分30秒、3,840×2,160へのアップスケールにかかる時間が14分程度です。
ですので、4K画像1枚を生成するのに約20分弱かかります。
モデルによってアップスケーラーを変えたり、サンプラーを変更したくなることはよくあるんですが、1個設定を変えて再挑戦するだけで20分かかります。
VRAM6GBでも4K画像の生成自体はできるんですが、やはり生成時間という大きなハンデがあることを痛感しますね。
ちなみにVRAMは、–midvramオプションありだと4.8GB程度しか使用しないので意外と余裕があります。
また下の記事で紹介しているControlNet TileとMultiDiffusionを併用したアップスケール手法もあるんですが、こちらは生成時間がMultiDiffusion単体の2~3倍程度かかるため、低VRAMの4K画像の生成に使うのは現実的ではありません。

【注意点2】Denoising strength
MultiDiffusionによるアップスケールの最大の博打要素がDenoising strengthです。
この数値を上げるほどアップスケール後のディテールが向上しますが、構図が変わったり画像が崩壊する可能性も増えます。
どんなに上げても0.5が限界だと思っておきましょう。これ以上は5割を超える確率で破綻します。
1度失敗するとVRAM6GBなら+20分ですからね。0.35くらいが安全でおすすめです。
上で紹介した画像は0.45と結構攻めた割には崩壊が少なかったですが、スカートの後ろに化け物の手みたいなものが生成されてしまっています。

個人的には嫌いじゃないですけどねw
【方法2】Extrasを使って4K画像を生成
Extrasタブで画像をアップスケールする場合は、4K画像への変換でも1分程度で完了します。
こちらもいきなり5倍にするのではなく、2.5倍→2倍と段階を踏んだ方が出来上がりの品質が良くなる印象です。
ただ画像を拡大してみればその差は一目瞭然です。
左がExtras、右がMultiDiffusionでアップスケールした画像です。
精細さがまるで違いますよね。
ただ私のようにブログにアップしたりYouTubeで使う場合などは、かなり小さめにリサイズされるので案外粗が目立たなかったりします。
まとめ
以上が「Stable Diffusion WebUI」で、4K画像(3,840×2,160)をロースペックGPUでも出力できる方法の紹介でした。
生成時間はかなりかかりますが、低スぺGPUでも4Kレベルを作成できるというのは希望が湧きますよね!
ぜひ皆さんも一度は試してみてくださいね!

RTX40X0だと結構簡単に8Kが作れるそうです。羨ましい(涙)
では、ここまで読んでいただきありがとうございました。
コメント