こんにちは!悠です
以前「Stable Diffusion」で生成したAIイラストを高画質化する方法として、hires.fixをご紹介いたしました。

今回は拡張機能「multidiffusion-upscaler-for-automatic1111」を使って、hires.fixのように生成済みAIイラストを高画質化する方法をまとめていきます。
hires.fixとの違いに関しても紹介していきますので、ぜひ参考にしてくださいね!
「MultiDiffusion」とは?
「MultiDiffusion」とは、画像生成における制御力を向上させるための技術の一種です。(参考記事)
この技術を簡単にWebUI上で利用できるのが、今回紹介する拡張機能「multidiffusion-upscaler-for-automatic1111」で、hires.fixと比較して少ないVRAMでより大きな画像サイズへとアップスケールできます。
GPU性能が弱くても2Kや4Kサイズの画像にアップスケールできることが魅力の1つですね。
※ちなみにGTX1660Tiでは2Kサイズも無理でした。流石に弱すぎる…
注意点として、4Kサイズ等の巨大な画像にアップスケールする際は、生成時間が膨大にかかってしまう点があります。
また、アップスケール後の画像サイズを大きくするほど意図しない映り込み(画像内に別のキャラが生成されてしまう)の可能性が増えます
「MultiDiffusion」の導入方法
では早速、拡張機能「multidiffusion-upscaler-for-automatic1111」を導入していきましょう。
Google Colaboratory版の場合
下記の方法で紹介している「maintained by Akaibu」のノートブックを使って、拡張機能「multidiffusion-upscaler-for-automatic1111」を導入していきます。
まだご覧になっていない方は、まず最初にこちらを準備しておいてください。


それでは拡張機能「multidiffusion-upscaler-for-automatic1111」を導入していきましょう。
Google Driveからモデルデータを読み込むセルの下に新しくセルを作成し、下記のコードを入力してください。
#multidiffusionをインストール %cd /content/stable-diffusion-webui/extensions/ !git clone https://github.com/pkuliyi2015/multidiffusion-upscaler-for-automatic1111 /content/stable-diffusion-webui/extensions/multidiffusion-upscaler-for-automatic1111 %cd /content/stable-diffusion-webui
WebUIを起動し、txt2imgとimg2imgの欄に「Tiled Diffusion」と「Tiled VAE」のタブが新たに追加されていれば導入は成功です。
ローカル版の場合
「Extensions」→「Install from URL」の「URL for extension’s git repository」に下記のURLを入力しInstallをクリックしましょう。
https://github.com/pkuliyi2015/multidiffusion-upscaler-for-automatic1111
「MultiDiffusion」を使った高画質化のやり方【img2img】
拡張機能「multidiffusion-upscaler-for-automatic1111」は、txt2imgとimg2imgのどちらでも使用することができますが、今回はimg2imgでのやり方を紹介していきます。
img2imgを使用するとプロンプトだけでなく画像も使ってアップスケールをするため、元画像から細部が変更されにくくなりますよ!
まずimg2imgのタブを開き、アップスケールしたい画像をドラッグアンドドロップします。
ポジティブプロンプトとネガティブプロンプトは、元画像の作成に使用したものと一緒でOKです。
画像下にある設定欄を変更していきます。まず元画像を作成したのと同じSampling methodを設定し、CFG Scaleを7~9程度、Denoising strengthを0.3~0.5程度にします。
Denoising strengthの値を上げるほど詳細になりますが、元画像からかけ離れた画像が生成されやすくなります。
WidthとHeightは使わないのでデフォルトのままでOKです。Seed値も設定する必要はありません。
次にTiled Diffusionのタブを開きます。
Enableにチェックを入れ、methodをMultiDiffusionにし、UpScalerに自分の好きなものを設定しましょう。
Scale Factorにアップスケール後の画像の拡大率を設定します。(例えば元画像が512×512でScale Factorが2なら、アップスケール後の画像は1024×1024になります。)
Keep input image sizeにチェックを入れます。
次にTiled VAEのタブを開きます。
ここはEnableとMove VAE to GPUにチェックを入れるだけでOKです。もしメモリーエラーで生成が止まってしまう場合は、Encorder Tile Sizeを小さくするといいそうです。
なお、Tiled VAEは拡大率が大きい場合(2K解像度以上の画像サイズ?)に自動的に使用されます。
これで設定は完了です。Generateボタンを押して画像のアップスケールを開始しましょう。
「MultiDiffusion」の注意点
上で紹介したimg2imgで、MultiDiffusionを使って高画質化する際、拡大率2倍程度なら問題ないんですが、4倍以上にしていくと画像の色が薄く(VAEを適用していないような感じに)なることがあります。
【追記】
対処法がわかりました。Tiled VAEの「Move VAE to GPU」にチェックを入れればOKです。
チェックを入れていないと高拡大率でVAEが適用されなくなるっぽいです。
それでもダメな時は、Tiled VAEの「Encoder Color Fix」にチェックを入れるといようです。
「ControlNet」×「MultiDiffusion」のやり方
ControlNet1.1で追加された新機能「ControlNet Tile」と「MultiDiffusion」を組み合わせることで、より素材に忠実にアップスケールするやり方を下の記事でまとめました。

まとめ
以上が「Stable Diffusion」で、拡張機能「multidiffusion-upscaler-for-automatic1111」を使って、hires.fixのように生成済みAIイラストを高画質化する方法でした。
hires.fixとMultiDiffusionのどちらが優れているとは一概に言えないので、ぜひ実際に試して自分の好みに合った方を使ってみてくださいね!
では、ここまで読んでいただきありがとうございました。
コメント