【Stable Diffusion】「MultiDiffusion」を使ってimg2imgで生成したAIイラストを高画質化する方法!

こんにちは!悠です

 

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

【Stable Diffusion】生成したAIイラストを高画質化するやり方!Hires.fixやExtrasの使い方を覚えよう!
「Stable Diffusion WebUI」を使って、作成したAIイラストを高画質化する方法「hires.fix」や「Extras」の使い方を紹介した記事です。

 

今回は拡張機能「multidiffusion-upscaler-for-automatic1111」を使って、hires.fixのように生成済みAIイラストを高画質化する方法をまとめていきます。

hires.fixとの違いに関しても紹介していきますので、ぜひ参考にしてくださいね!

アイキャッチ画像は「FaceBombMix」と「Fashion Girl」を使って作成しています。
スポンサーリンク
スポンサーリンク

「MultiDiffusion」とは?

「MultiDiffusion」とは、画像生成における制御力を向上させるための技術の一種です。(参考記事

 

この技術を簡単にWebUI上で利用できるのが、今回紹介する拡張機能「multidiffusion-upscaler-for-automatic1111」で、hires.fixと比較して少ないVRAMでより大きな画像サイズへとアップスケールできます。

GitHub - pkuliyi2015/multidiffusion-upscaler-for-automatic1111: Tiled Diffusion and VAE optimize
Tiled Diffusion and VAE optimize. Contribute to pkuliyi2015/multidiffusion-upscaler-for-automatic1111 development by creating an account on GitHub.

 

GPU性能が弱くても2Kや4Kサイズの画像にアップスケールできることが魅力の1つですね。

※ちなみにGTX1660Tiでは2Kサイズも無理でした。流石に弱すぎる…

【2023年5月4日追記】
アップデートで改善されたのかもしれませんが、GTX1660TiでもMultiDiffusionで2304×1536(Scale Factor= 3)サイズにアップスケールできるようになっていました。

 

注意点として、4Kサイズ等の巨大な画像にアップスケールする際は、生成時間が膨大にかかってしまう点があります。

また、アップスケール後の画像サイズを大きくするほど意図しない映り込み(画像内に別のキャラが生成されてしまう)の可能性が増えます

 

「MultiDiffusion」の導入方法

では早速、拡張機能「multidiffusion-upscaler-for-automatic1111」を導入していきましょう。

 

Google Colaboratory版の場合

下記の方法で紹介している「maintained by Akaibu」のノートブックを使って、拡張機能「multidiffusion-upscaler-for-automatic1111」を導入していきます。

まだご覧になっていない方は、まず最初にこちらを準備しておいてください。

【Stable Diffusion】AUTOMATIC1111のWebUIをGoogle Colaboratory上で使う方法!【maintained by Akaibu】
「Stable Diffusion」で、「AUTOMATIC1111」が用意しているノートブック「maintained by Akaibu」を使って、Google Colaboratory上で自分の好きなモデルデータやLoRAを使用する方法についてまとめた記事です。
【Stable Diffusion】AUTOMATIC1111のColab版でLoRAを使う方法について紹介!【maintained by Akaibu】
AUTOMATIC1111のColab版「maintained by Akaibu」でLoRAを使う方法についてまとめた記事です。2.5D風AIコスプレイヤーを作成できる「KoreanStyle2.5D」も紹介しています。

 

それでは拡張機能「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程度にします。

いろいろ試した結果、Sampling methodは変えた方が良い場合もありました。Euler aやDDIMにすると、モデルによっては顔のディテールが向上する気がします。ただDPM++ 2M Karrasの方が綺麗な場合もあります。

 

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のタブを開きます。

ここはEnableMove 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】ControlNet TileとMultiDiffusionを組み合わせた新しいアップスケール手法のやり方を紹介!【高画質化】
「Stable Diffusion」に新しく登場した、「ControlNet Tile」と「MultiDiffusion」を組み合わせて行うアップスケールのやり方についてまとめた記事です。

 

まとめ

以上が「Stable Diffusion」で、拡張機能「multidiffusion-upscaler-for-automatic1111」を使って、hires.fixのように生成済みAIイラストを高画質化する方法でした。

hires.fixとMultiDiffusionのどちらが優れているとは一概に言えないので、ぜひ実際に試して自分の好みに合った方を使ってみてくださいね!

では、ここまで読んでいただきありがとうございました。

コメント