見出し画像

LDSR と SD Upscale による生成画像のアップスケール(高解像度化)

AI 生成画像のアップスケールの方法のうち、私が最近使ってみた中で最も気に入って活用しているアップスケール手法を比較を交えながら紹介します。
動作環境は google colab T4 インスタンスの Stable Diffusion web UI です。

LDSR & SD Upscale

Stable Diffusion web UI では Extras タブ内に複数のアップスケーラーが搭載されています。簡単に検索してみると R-ESRGAN 4x+ (Anime6B) などがよく利用されているようです。一方、今回ご紹介する手法では img2img タブで SD Upscale を使います。アップスケーラーとしては LDSR を選択します。この手法は google colab の T4 インスタンスで 20 分ほどの時間がかかってしまうものですが、とても強力に作用します。

事例の紹介

アップスケール対象の画像として、今回はイラコン用を兼ねて創薬ちゃんの生成画像を使用します。

ただし、創薬ちゃんの特徴は比較的シンプルで、アップスケールの効果が分かりにくいので異世界に旅立ってもらうことにします。

図1:異世界の創薬ちゃん (text2image と inpaint で作成)

まずは左目のあたりをアップスケールした結果から見ていきます。すべて 4 倍にアップスケールしています。この画像の場合、 R-ESRGAN 4x+ Anime6B よりも R-ESRGAN 4x+ のほうが良い結果だったので比較対象としてそちらを採用しています。

左から処理なし、R-ESRGAN 4x+、LDSR、R-ESRGAN 4x+ & SD Upscale、LDSR & SD Upscale の順

右に行くほど描写が高精細になるように並べています。 実際のところ R-ESRGAN 4x+、LDSR 単体でもそれなりの性能なのですが、SD Upscale を合わせると強力です。とくに LDSR & SD Upscale が良く見えます。次に、右手で宝石を触っている部分を見てみます。

左から処理なし、R-ESRGAN 4x+、LDSR、R-ESRGAN 4x+ & SD Upscale、LDSR & SD Upscale の順

結果を見ると、単体では LDSR よりも R-ESRGAN 4x+ のほうが良好に見えますが、SD Upscale を合わせると指の描写は互角、背景の細工は LDSR & SD Upscale が高精細です。SD Upscale をかけると指先に爪ができるのも特徴的です。また、LDSR & SD Upscale では球体の宝石を指先でつまんでいるような描写に変化しているものもありました(画像は 5 枚の出力の中から選んでいます。宝石の形が変わっていないものも出力されましたが、おもしろいのでこれを採用しています)。なお、爪ができたのは R-ESRGAN 4x+ & SD Upscale では 1/5、LDSR & SD Upscale では 5/5 の割合でした。

R-ESRGAN 4x+ & SD Upscale と LDSR & SD Upscale の出力画像を以下に載せておきます。

R-ESRGAN 4x+ & SD Upscale
LDSR & SD Upscale

元画像の再現度という視点では、LDSR & SD Upscale にはやりすぎ感もあるのですが、絵としては良くなっているのでヨシとします。

設定方法

img2img で幅 768、高さ 512 ピクセルの画像へ LDSR & SD Upscale をかける際は以下のように設定します。プロンプトは生成時と同じものを使います。

LDSR & SD Upscale の設定

Sampling method を Euler a、Denoising strength を 0.1 ~ 0.2、Script で SD upscale を選択して Scale Factor を 4、Upscaler を LDSR にします。Batch count は 5 ~ 10 に設定しておくとよいと思います。SD Upscale のマニュアルでは Denoising strength 0.2 がお勧めされていますが、0.2 で変化が強すぎる場合は 0.1 などに下げてみてください。ChilloutMix のような実写系のモデルを使う場合は 0.05 くらいまで下げたほうが安定します。Batch count は LDSR 後の SD Upscale の回数を決めるものなので、複数枚出力させて気に入ったものを選ぶのがお勧めです。

設定完了後、Generate します。初回実行時には 2 GB 程度の学習済みモデルのダウンロードが行われます。処理には、google colab の T4 インスタンスで 20 分ほどの時間がかかります。

おわりに

以上、LDSR & SD Upscale によるアップスケールを紹介しました。なぜこの組み合わせで良い結果が出るのかはよくわかりませんが、LDSR は Latent Diffusion Super Resolution の略で、画像生成モデルとは兄弟のような関係にあるものなので、もともと相性が良いのかもしれません。個人的には、画像生成からアップスケールまで Diffusion モデルで完結できているのが美しく感じられるのでヨシとしています。

以下、投稿ツイートです。

変更履歴

  • Denoising strength の設定に関する記載を修正しました。

  • R-ESRGAN 4x+、LDSR 単体の処理は Extras タブから行いました。

  • 実写系モデルの Upscale 時の設定について追記しました。

この記事が気に入ったらサポートをしてみませんか?