「Stable Diffusionで画像を生成したけど拡大すると画質が悪い、、、」「大きいサイズの画像を生成しようとすると構図が崩れてしまう、、、」
このような悩みをお持ちの方は多いのではないでしょうか?
今回PROMPTYでは、Stable Diffusionで高画質化(アップスケール)する方法について解説します。
Stable Diffusionで高画質化(アップスケール)する方法
Stable Diffusionで高画質化(アップスケール)する方法として、①img2imgで使える拡張機能「MultiDiffusion」を使う②「Hires.fix」を使うの2つが挙げられます。
それぞれ解説していきます。
①img2imgで使える拡張機能「MultiDiffusion」を使う
Stable Diffusionで高画質化(アップスケール)する方法の1つとして、img2imgで使える拡張機能「MultiDiffusion」を使うという方法があります。
img2imgとは、AIに対して参考画像を提供して、そこから新しい画像を生成する方法のことです。
img2imgについてはこちらの記事で詳しく解説しています。
「Stable Diffusionのプロンプトを入力するときに、こんな感じの画像がいい!とイメージは浮かんでいるけど、言語化するのが難しい、、、」 このような悩みをお持ちの方は多いのではないでしょうか? 実は、Stable D[…]
ここでは「MultiDiffusion」とは何か、「MultiDiffusion」のインストール方法、そして「MultiDiffusion」を使って高画質化(アップスケール)する方法について解説していきます。
「MultiDiffusion」とは
より高精細にしつつ画像サイズを拡張する
「MultiDiffusion」は、img2imgを用いて画像を生成する際に、画像のレイアウトを維持したまま、より高精細にアップスケールできる機能です。
「MultiDiffusion」により、より高精細な(画素数が多い)画像を出力することができます。
容量が少ないグラボでも、高解像度画像の生成ができる
「MultiDiffusion」は、低VRAM容量のグラフィックボードでも高解像度の画像生成を可能にします。
Stable Diffusion WebUIで、サイズの大きい画像を生成しようとすると、VRAMエラーが発生してしまう場合があります。
しかし「MultiDiffusion」を使うと、公式情報によれば、VRAM12GBのグラフィックボードを使用した場合でも、最大で8Kの高解像度化ができるとされています。
これは、「MultiDiffusion」が画像を細かく分割し、それぞれの領域を個別に描画することで、限られたVRAMでもサイズの大きい画像生成を可能にするためです。
「MultiDiffusion」のインストール方法
(1)Stable Diffusion WebUIを起動します。
(2)「Extensions」タブをクリックします。
(3)「Install from URL」タブをクリックします。
(4)「URL for extension’s git repository」に下記のURLを入力して、オレンジ色の「Install」ボタンをクリックします。
URL:
https://github.com/pkuliyi2015/multidiffusion-upscaler-for-automatic1111
(5)「Install」ボタンの下に下記画像のようなメッセージが表示されたら、インストール完了です!
「MultiDiffusion」を使って高画質化する方法
(1)「MultiDiffusion」をインストールした後に、Stable Diffusion WebUIを再起動すると下記画像のように「Tiled Diffusion」と「Tiled VAE」の項目が追加されます。
(2)まずは、txt2imgで画像を生成します。使用したプロンプトは下記の通りです。
プロンプト
1girl, black hair, gradient hair, blue eyes, embarrassed, frontal face, wallpaper,
ネガティブプロンプト
(worst quality, low quality:1.4), (zombie, sketch, interlocked fingers, comic), nsfw,
使用モデル:meinamix_meinaV10.safetensors
Sampling method:DPM++ 2S a Karras
Sampling steps:20
Width:512
Height:512
Batch count:1
Batch size:1
CFG Scale:7
Seed:-1
Script:None
画像の生成が完了したら、下記画像の赤枠で囲われた「Send to img2img」をクリックします。
(3)すると下記画像のように、「img2img」に生成した画像が移動します。
(4)ページを下にスクロールし、「Sampling method」を画像を生成したときと同じにします。
今回は、画像を生成したときと同じ「DPM++ 2S a Karras」に設定します。
(必ずしも同じである必要はありません。)
(5)「Tiled Diffusion」をクリックします。
(6)MultiDiffusionの設定項目が表示されるので、「Enable Tiled Diffusion」と「Keep input image size」にチェックをします。
(7)「Method」は「MultiDiffusion」のままで大丈夫です。
(8)好みの「Upscaler」(今回はR-ESRGAN 4x+ Anime6Bを使用)を選択して、「Scale Factpr」を設定します。
「Scale Factpr」とは、画像の拡大率のことで、今回はWidth:512 Height:512の画像なので、2倍のWidth:1024 Height:1024に拡大されます。
(9)ここまでで設定が完了したので、ページ上部にスクロールし、オレンジ色の「Generate」ボタンをクリックします。すると高画質化したアップスケール画像が生成されます。
(10)元の画像と「MultiDiffusion」で高画質化した画像を比較してみます。
元の画像 ↓
「MultiDiffusion」で高画質化した画像 ↓
元の画像よりも目の描写が丁寧になっていますね。
細かいところではありますが、服の影や肌の光沢の描写もより高精になっています。
また、下記のようにプロンプトが恥ずかしい表情(embarrassed)をする女性を出力するためのものだったので、ほほの赤みの描写が加わり、プロンプトの目的にも近づいています。
プロンプト
1girl, black hair, gradient hair, blue eyes, embarrassed, frontal face, wallpaper,
このように、「MultiDiffusion」を使うことで、画像を高画質化してアップスケールすることができます。
②「Hires.fix」を使う
Stable Diffusionで高画質化(アップスケール)するもう一つの方法として、「Hires.fix」を使う方法があります。
「Hires.fix」とは何か、「Hires.fix」の使い方について解説していきます。
「Hires.fix」とは
「Hires.fix」は、Stable Diffusion WebUIの機能の一つであり、サイズが大きい高解像度の画像生成をする時に、画像が崩れてしまうことを避けることを目的として設計されています。
※画像サイズが大きくても画質がいい=解像度が高いということです!
「Hires.fix」は通常とは異なる下記のようなステップを踏むことで、画像が崩れることを避けます。
①基本サイズで画像を作成する
②作成した画像を拡大する
③粗く拡大された画像をimg2imgできれいに補正する
「Hires.fix」の使い方
(1)「txt2img」タブの中にある「Hires.fix」にチェックを入れます。
(2)「Hires.fix」にチェックを入れると、「Hires.fix」の設定項目が表示されます。
各項目の説明は以下の通りです。
Upscaler:高画質化するときに使用されるアルゴリズムで、どのUpscalerを選ぶかによって画像の質が変化します。
Hires steps:拡大したイラストから画像生成する際のステップ数を設定します。
Denoising strength:ノイズを除去する度合いを設定します。
Upscale by:拡大比率を設定します。2の場合は2倍の画像サイズになります。
Resize width to:元のイラストの比率を変更したい場合に使用します。
(3)今回は下記画像の設定でWidth:1440 Height:1440画像を生成します。
※Width:720 Height 720でUpscale by=2(2倍)でWidth:1440 Height:1440になります。
(4)すると下記のように高解像度の画像が生成されました。
ちなみに「Hires.fix」を使わずに、Width:1440 Height:1440の画像を作成しようとすると下記のような崩れた画像が生成されてしまいます。
このように、「Hires.fix」を使うことで、高解像度の画像を崩れることなく作成することができます。
「Hires.fix」についてはこちらの記事でより詳しく解説しています。
「Stable Diffusionを使っていて、画像サイズやアスペクト比を変更したいけど方法が分からない...」「高解像度の画像を生成したいけど、どうすればいいの?...」 そう思う方もいるのではないでしょうか。 今回PROMPT[…]
まとめ
今回PROMPTYでは、Stable Diffusionで高画質化(アップスケール)する方法について解説しました。
「MultiDiffusion」「Hires.fix」の2つを使うことで、高画質な画像を構図が崩れることなく生成することができます。
ぜひ今回の記事を参考に、高画質な画像を生成してみてください。
~Stable Diffusionで素早く画像生成するには~
Stable Diffusionの画像生成スピードや画像サイズは、グラフィックボード(GPU)の性能によって大きく変わります。
このため、より効率的かつ快適な画像生成を望むユーザーにとって、最適なグラフィックボードの選択が重要となります。
推論処理やLoRAなどの追加学習処理といった大量の計算を効率よく行うためには、12GB以上のVRAMを持つグラフィックボードを選ぶことを強くおすすめします。
2GBや4GBのVRAMを持つグラフィックボードでは、学習プロセスや高解像度の画像生成に支障が出る可能性が高いです。
コスパを重視する方は、RTX 3060を選ぶと良いでしょう。
このグラフィックボードを使えば、Stable Diffusionの画像生成機能を最大限に活用することが可能となります。