見出し画像

img2img入門(最終回) アップスケーリング総合演習!

これまでの「img2img入門」では、Stable Diffusion WebUI を用いた Image to Imageの基本テクニックを丁寧に解説してきました。プロンプトから画像生成するのではなく、様々な画像を自分の意のままに再生成できるようになったようであれば幸いです。


今回は『Ultimate SD Upscale』という拡張機能(extention)のインストールと、それを使用したアップスケーリングの方法をおさらいしながら、今後の新しいテクニックの登場に耐えられるように仕上げとしてとして解説していきます。

☆本ブログは発売予定の新刊書籍に収録される予定です。期間限定で先行公開中しています。
メンバー向けには先行してメンバーシップ版をお届けします
Stable Diffusionをお手軽に、しかもめっちゃ丁寧に学べてしまう情報をシリーズでお送りします。
メンバーは価値あるソースコードの入手や質問、依頼ができますので、お気軽にご参加いただければ幸いです!

導入方法

『Ultimate SD Upscale』はextentionで、Colabと Stability Matrix 等のローカルインストール環境で導入方法が異なります。

Colabでのインストール方法

まず、githubのUltimate SD Upscaleのページにアクセスし、このURLをコピーします。
https://github.com/Coyote-A/ultimate-upscale-for-automatic1111

Colabに移動し、以下のコードを記述します。場所は最後の現在のディレクトリ構成では /content が Google Colabの標準ユーザディレクトリ、その下の /contents/gdrive/Mydrive/sd が AUTOMATIC1111 のインストールディレクトリなので、その下の「extentions」に git clone コマンドを使ってインストールしていきます。

%cd /content/gdrive/MyDrive/sd/stable-diffusion-webui/extensions
!git clone https://github.com/Coyote-A/ultimate-upscale-for-automatic1111 
%cd /content/gdrive/MyDrive/sd/stable-diffusion-webui/

URLは先ほどコピーしたものです。行頭に ! を付けると、サーバー側での処理、% を付けると Google Colab 側でのインタラクティブな処理となります。この場合、「%cd」は「現在のディレクトリを変える」、「!git clone (url)」は gitコマンド を使って指定したURLから必要なソースコードやデータをダウンロードしてくる、という意味になります。
これを実行し、最初に指定したパスのフォルダ内に『Ultimate SD Upscale』があることを確認しましょう。

『Ultimate SD Upscale』が表示され、インストールができていることが確認できました。
この状態で起動すれば Colab での導入は完了です。

ローカルのインストール方法

ローカルの環境の場合、まずWeb UIを起動し、『extentions』タブを開きます。

『Install from URL』を選択し、『URL for extension's git repository』に以下のURLをコピーし貼り付けます。
https://github.com/Coyote-A/ultimate-upscale-for-automatic1111

貼り付けたら『Install』を選択します。
上部のメニューから『Installed』を選択し、『Ultimate SD upscale』があることを確認します。無い場合には『Apply and quit』でリロードしましょう。

これでローカル環境でのインストールは完了です。
『Ultimate SD upscale』が表示されていない場合は、エラーが赤い文字で画面に表示されているはずですので注意深く見ておきましょう。

使用方法

Web UI を起動します。Ultimate SD Upscalerはi2iで使用する拡張機能なので、img2imgのタブに移りましょう。Generationタブの1番下の『Script』のメニューから『Ultimate SD upscale』を選択します。


このようなメニューが開きます

①Target size type
アップスケール後の画像のサイズの指定方法を選択します。
From img2img2 settings img2imgの設定に合わせます。
Custom size スライダーが表示され、縦横のサイズをそれぞれ指定します。
Scale from image size 元画像の何倍のサイズにするかを指定します。

②Upscaler
使用するアップスケーラーを選択します。

③Type
アップスケールをする際、AIは画像を分割して処理を行っており、それらの分割されたパーツを『タイル』と呼びます。ここでタイルの分け方を指定します。基本的にはデフォルトのままで問題ありません。

④Tile width/height
タイルのサイズを指定します。

⑤Mask blur
アップスケーリングの境界のぼかしの強度を指定します。

それでは実際に使ってみましょう。まずt2iで生成した画像を用意します。

bluepencil-V9b  masterpiece, best quality, ultra detailed,1girl
[NP] worst quality, low quality, bad anatomy,

これをi2iにアップロードします。
「Resize by」を2、「Denoising strength」を0.5に指定します。

Ultimate SD upscaleの「Upscaler」は『R-ESRGAN 4x+』を選択し、他はデフォルトの設定で生成します。

生成できました。細部を比較しても、高解像度化が成功していることがわかります。

(左)アップスケーリング前、(右)アップスケーリング後

アップスケーラーごとの違い

先ほどアップスケーラーは『R-ESRGAN 4x+』を選択しましたが、他のアップスケーラーではどのような画像が生成されるのでしょうか。試してみましょう。

Lanczos

ランチョス法とよみます

Nearest

ESRGAN_4x

LDSR

R-ESRGAN 4x+ Anime6B

ScuNET GAN

SwinIR 4x

一部のアップスケーラーでは右下にもう1人女の子が生成されてしまいました。今回のイラストでは、R-ESRGAN 4x+が最も高品質だと感じましたが、細部の雰囲気で顔の印象が変わったりするのが興味深いですね。アルゴリズムの違いによって画像の変化のタイミングが異なりあmス。写真などリアル調の画像などにするとまた相性の良いアップスケーラーが変わるので、目的に合わせて使い分けていきましょう。

実戦編

お題として、こちらの画像をi2iによって新たな画風にできないか、探求していきましょう。

モデルは話題の animagine-xl-3.0.safetensors [1449e5b0b9] を使ってみます。

まず 「PNG Info」 に入れてみましょう。Stable Diffusion WebUIで生成された画像であればなにか情報が残っているかもしれません。

特に何も無さそうです。例えばNijiJourneyなどで生成した画像には PNG Infoで発掘できる情報が保存されていないため取得できないことは多いです。

「Send to img2img」ボタンを使ってまずはインペイントです。

左下の余計な人物を消します。プロンプト(正)は空白で、ネガティブプロンプトにのみ「worst quality」と入れておきます。

三角定規ボタン📐で縦横比を原作と同じ 1280x664 にセットします

ネガティブプロンプトと描き直ししたい左下を塗ります

出来上がりです

さらにこちらを高解像度化してみましょう(使うかわかりませんが!)

生成された画像の下にある 📐で「Send to Extras」ができます。

R-ESRGAN 4x+ Anime6B を使って 1280x664 → 5120x2856まで拡大しました

これはこれで参考までに取っておいて、今度は画風を置き換えていきます。

モデルは「animagine-xl-3.0」なのでSDXLらしい細部の描き込みを期待していきます。
1girl ,pointing at viewer, masterpiece, best quality, ultra detailed
Negative prompt: worst quality, low quality, bad anatomy

Lanczos

1girl ,pointing at viewer, masterpiece, best quality, ultra detailed,1girl Negative prompt: worst quality, low quality, bad anatomy, Steps: 20, Sampler: DPM++ 2M Karras, CFG scale: 7, Seed: 1214435941, Size: 2560x1328, Model hash: 1449e5b0b9, Model: animagine-xl-3.0, Denoising strength: 0.5, Mask blur: 4, Ultimate SD upscale upscaler: Lanczos, Ultimate SD upscale tile_width: 512, Ultimate SD upscale tile_height: 512, Ultimate SD upscale mask_blur: 8, Ultimate SD upscale padding: 32, Version: v1.7.0

Nearest

1girl ,pointing at viewer, masterpiece, best quality, ultra detailed Negative prompt: worst quality, low quality, bad anatomy, Steps: 20, Sampler: DPM++ 2M Karras, CFG scale: 7, Seed: 2065470509, Size: 2560x1328, Model hash: 1449e5b0b9, Model: animagine-xl-3.0, Denoising strength: 0.5, Mask blur: 4, Ultimate SD upscale upscaler: Nearest, Ultimate SD upscale tile_width: 512, Ultimate SD upscale tile_height: 512, Ultimate SD upscale mask_blur: 8, Ultimate SD upscale padding: 32, Version: v1.7.0

顔はいいんですが、髪の毛の塗りが平らになり、指の周りがドット絵になってしまっている…

ESRGAN_4x

1girl ,pointing at viewer, masterpiece, best quality, ultra detailed Negative prompt: worst quality, low quality, bad anatomy, Steps: 20, Sampler: DPM++ 2M Karras, CFG scale: 7, Seed: 3785878436, Size: 2560x1328, Model hash: 1449e5b0b9, Model: animagine-xl-3.0, Denoising strength: 0.5, Mask blur: 4, Ultimate SD upscale upscaler: ESRGAN_4x, Ultimate SD upscale tile_width: 512, Ultimate SD upscale tile_height: 512, Ultimate SD upscale mask_blur: 8, Ultimate SD upscale padding: 32, Version: v1.7.0

髪の毛の塗りがいいですね。指の主線も少し良くなっている印象です。

LDSR

1girl ,pointing at viewer, masterpiece, best quality, ultra detailed Negative prompt: worst quality, low quality, bad anatomy, Steps: 20, Sampler: DPM++ 2M Karras, CFG scale: 7, Seed: 2352107263, Size: 2560x1328, Model hash: 1449e5b0b9, Model: animagine-xl-3.0, Denoising strength: 0.5, Mask blur: 4, Ultimate SD upscale upscaler: LDSR, Ultimate SD upscale tile_width: 512, Ultimate SD upscale tile_height: 512, Ultimate SD upscale mask_blur: 8, Ultimate SD upscale padding: 32, Version: v1.7.0

表情が勝手に書き換わっているだけでなく、指や髪の毛が勝手に生えている…。

R-ESRGAN 4x+ (denoising = 0.5)

1girl ,pointing at viewer, masterpiece, best quality, ultra detailed Negative prompt: worst quality, low quality, bad anatomy, Steps: 20, Sampler: DPM++ 2M Karras, CFG scale: 7, Seed: 2512431875, Size: 2560x1328, Model hash: 1449e5b0b9, Model: animagine-xl-3.0, Denoising strength: 0.5, Mask blur: 4, Ultimate SD upscale upscaler: R-ESRGAN 4x+, Ultimate SD upscale tile_width: 512, Ultimate SD upscale tile_height: 512, Ultimate SD upscale mask_blur: 8, Ultimate SD upscale padding: 32, Version: v1.7.0

表面がツルッとした質感ですが、まずまず良いと思います。いちおう Denoising strengthを 0.6に変えて変化を見ておきます。

R-ESRGAN 4x+ (denoising = 0.6)

1girl ,pointing at viewer, masterpiece, best quality, ultra detailed Negative prompt: worst quality, low quality, bad anatomy, Steps: 20, Sampler: DPM++ 2M Karras, CFG scale: 7, Seed: 1428958562, Size: 2560x1328, Model hash: 1449e5b0b9, Model: animagine-xl-3.0, Denoising strength: 0.6, Mask blur: 4, Ultimate SD upscale upscaler: R-ESRGAN 4x+, Ultimate SD upscale tile_width: 512, Ultimate SD upscale tile_height: 512, Ultimate SD upscale mask_blur: 8, Ultimate SD upscale padding: 32, Version: v1.7.0

いきなり雰囲気がガラッと変わってしまいました。

ScuNET GAN

1girl ,pointing at viewer, masterpiece, best quality, ultra detailed Negative prompt: worst quality, low quality, bad anatomy, Steps: 20, Sampler: DPM++ 2M Karras, CFG scale: 7, Seed: 2885412463, Size: 2560x1328, Model hash: 1449e5b0b9, Model: animagine-xl-3.0, Denoising strength: 0.5, Mask blur: 4, Ultimate SD upscale upscaler: ScuNET GAN, Ultimate SD upscale tile_width: 512, Ultimate SD upscale tile_height: 512, Ultimate SD upscale mask_blur: 8, Ultimate SD upscale padding: 32, Version: v1.7.0

ScuNET PSNR

1girl ,pointing at viewer, masterpiece, best quality, ultra detailed Negative prompt: worst quality, low quality, bad anatomy, Steps: 20, Sampler: DPM++ 2M Karras, CFG scale: 7, Seed: 1098847837, Size: 2560x1328, Model hash: 1449e5b0b9, Model: animagine-xl-3.0, Denoising strength: 0.5, Mask blur: 4, Ultimate SD upscale upscaler: ScuNET PSNR, Ultimate SD upscale tile_width: 512, Ultimate SD upscale tile_height: 512, Ultimate SD upscale mask_blur: 8, Ultimate SD upscale padding: 32, Version: v1.7.0

眼鏡部分の光の反射や透過、主線の強弱に特徴がありますね。いわゆるアニメ塗りでは難しい新境地を感じます。

ScuNET PSNR

SwinIR 4x

1girl ,pointing at viewer, masterpiece, best quality, ultra detailed Negative prompt: worst quality, low quality, bad anatomy, Steps: 20, Sampler: DPM++ 2M Karras, CFG scale: 7, Seed: 1328026797, Size: 2560x1328, Model hash: 1449e5b0b9, Model: animagine-xl-3.0, Denoising strength: 0.5, Mask blur: 4, Ultimate SD upscale upscaler: SwinIR 4x, Ultimate SD upscale tile_width: 512, Ultimate SD upscale tile_height: 512, Ultimate SD upscale mask_blur: 8, Ultimate SD upscale padding: 32, Version: v1.7.0
SwinIR 4x なぜか汗ツヤが出がち

R-ESRGAN 4x+ Anime6B

こちらが本命ではありました

1girl ,pointing at viewer, masterpiece, best quality, ultra detailed Negative prompt: worst quality, low quality, bad anatomy, Steps: 20, Sampler: DPM++ 2M Karras, CFG scale: 7, Seed: 330166519, Size: 2560x1328, Model hash: 1449e5b0b9, Model: animagine-xl-3.0, Denoising strength: 0.5, Mask blur: 4, Ultimate SD upscale upscaler: R-ESRGAN 4x+ Anime6B, Ultimate SD upscale tile_width: 512, Ultimate SD upscale tile_height: 512, Ultimate SD upscale mask_blur: 8, Ultimate SD upscale padding: 32, Version: v1.7.0

さすが本命です。顔も指もきれい、歯が気になる以外。

おしい

R-ESRGAN 4x+ Anime6B (再度)

1girl ,pointing at viewer, masterpiece, best quality, ultra detailed Negative prompt: worst quality, low quality, bad anatomy, Steps: 20, Sampler: DPM++ 2M Karras, CFG scale: 7, Seed: 1198898673, Size: 2560x1328, Model hash: 1449e5b0b9, Model: animagine-xl-3.0, Denoising strength: 0.5, Mask blur: 4, Ultimate SD upscale upscaler: R-ESRGAN 4x+ Anime6B, Ultimate SD upscale tile_width: 512, Ultimate SD upscale tile_height: 512, Ultimate SD upscale mask_blur: 8, Ultimate SD upscale padding: 32, Version: v1.7.0

頬に描き込み線が入ったりしています。ここから先は良さそうなシードを探っていったほうがいいかもしれません。
「X/Y/Z plot」を使いたいところですが、「Ultimate SD Upscale」と複数のScriptsを同時に使うことはできないようなので、上記のようにある程度絞り込んだところで仮説をもって実験をしていくのが良いと思います。

ScuNET PSNR と R-ESRGAN 4x+ Anime6B

上記の ScuNET PSNR と R-ESRGAN 4x+ Anime6B はより深い探求を行っていきたいところですが、求める画風との直結しているので解説としてはこの辺で終わりにしておきます。このような絵作りの探求結果は、今後の AICU のプロダクトやアートにでてくるかもしれませんね!ご期待ください。

1girl ,V, masterpiece, best quality, ultra detailed Negative prompt: worst quality, low quality, bad anatomy, Steps: 20, Sampler: DPM++ 2M Karras, CFG scale: 7, Seed: 3531507796, Size: 2560x1328, Model hash: 1449e5b0b9, Model: animagine-xl-3.0, Denoising strength: 0.5, Mask blur: 4, Ultimate SD upscale upscaler: ScuNET GAN, Ultimate SD upscale tile_width: 512, Ultimate SD upscale tile_height: 512, Ultimate SD upscale mask_blur: 8, Ultimate SD upscale padding: 32, Version: v1.7.0

感謝とまとめ

さて、9回に渡ってお送りしてきた「img2img入門編」ですが、いかがでしたでしょうか。最後までお読みいただきありがとうございました。


この内容は今後発売予定の新刊書籍に収録される予定です。期間限定で先行公開中しています。
メンバー向けには先行してメンバーシップ版をお届けします
Stable Diffusionをお手軽に、しかもめっちゃ丁寧に学べてしまう情報をシリーズでお送りします。
メンバーは価値あるソースコードの入手や質問、依頼ができますので、お気軽にご参加いただければ幸いです!





この下にGoogle Colabで動作する「AUTOMATIC1111/Stable Diffusion WebUI」へのリンクを紹介しています。
メンバーシップ向けサポート掲示板はこちら!応援よろしくお願いします!
https://note.com/aicu/membership/boards/61ab0aa9374e/posts/7cab00942b22?from=self

ここから先は

84字

Stable Diffusionをゼロから学ぶマガジン

¥500 / 月
初月無料
このメンバーシップの詳細

応援してくださる皆様へ!💖 いただいたサポートは、より良いコンテンツ制作、ライターさんの謝礼に役立てさせていただきます!