これまでの「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で生成した画像を用意します。
これを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」と入れておきます。
ネガティブプロンプトと描き直ししたい左下を塗ります
さらにこちらを高解像度化してみましょう(使うかわかりませんが!)
生成された画像の下にある 📐で「Send to Extras」ができます。
これはこれで参考までに取っておいて、今度は画風を置き換えていきます。
モデルは「animagine-xl-3.0」なのでSDXLらしい細部の描き込みを期待していきます。
1girl ,pointing at viewer, masterpiece, best quality, ultra detailed
Negative prompt: worst quality, low quality, bad anatomy
Lanczos
Nearest
顔はいいんですが、髪の毛の塗りが平らになり、指の周りがドット絵になってしまっている…
ESRGAN_4x
髪の毛の塗りがいいですね。指の主線も少し良くなっている印象です。
LDSR
表情が勝手に書き換わっているだけでなく、指や髪の毛が勝手に生えている…。
R-ESRGAN 4x+ (denoising = 0.5)
表面がツルッとした質感ですが、まずまず良いと思います。いちおう Denoising strengthを 0.6に変えて変化を見ておきます。
R-ESRGAN 4x+ (denoising = 0.6)
いきなり雰囲気がガラッと変わってしまいました。
ScuNET GAN
ScuNET PSNR
眼鏡部分の光の反射や透過、主線の強弱に特徴がありますね。いわゆるアニメ塗りでは難しい新境地を感じます。
SwinIR 4x
R-ESRGAN 4x+ Anime6B
こちらが本命ではありました
さすが本命です。顔も指もきれい、歯が気になる以外。
R-ESRGAN 4x+ Anime6B (再度)
頬に描き込み線が入ったりしています。ここから先は良さそうなシードを探っていったほうがいいかもしれません。
「X/Y/Z plot」を使いたいところですが、「Ultimate SD Upscale」と複数のScriptsを同時に使うことはできないようなので、上記のようにある程度絞り込んだところで仮説をもって実験をしていくのが良いと思います。
ScuNET PSNR と R-ESRGAN 4x+ Anime6B
上記の ScuNET PSNR と R-ESRGAN 4x+ Anime6B はより深い探求を行っていきたいところですが、求める画風との直結しているので解説としてはこの辺で終わりにしておきます。このような絵作りの探求結果は、今後の AICU のプロダクトやアートにでてくるかもしれませんね!ご期待ください。
感謝とまとめ
さて、9回に渡ってお送りしてきた「img2img入門編」ですが、いかがでしたでしょうか。最後までお読みいただきありがとうございました。
この内容は今後発売予定の新刊書籍に収録される予定です。期間限定で先行公開中しています。
メンバー向けには先行してメンバーシップ版をお届けします
Stable Diffusionをお手軽に、しかもめっちゃ丁寧に学べてしまう情報をシリーズでお送りします。
メンバーは価値あるソースコードの入手や質問、依頼ができますので、お気軽にご参加いただければ幸いです!
この下にGoogle Colabで動作する「AUTOMATIC1111/Stable Diffusion WebUI」へのリンクを紹介しています。
メンバーシップ向けサポート掲示板はこちら!応援よろしくお願いします!
https://note.com/aicu/membership/boards/61ab0aa9374e/posts/7cab00942b22?from=self