Stable Diffusionで生成した画像をReal-ESRGANを使って高画質化する方法

  • URLをコピーしました!

今回は画像を高画質化できる機械学習モデル、Real-ESRGANを使ってStable Diffusionで生成した画像を高画質化できるかを試してみましたので、使用方法と実行結果について解説します。

また、以下の記事でStable Diffusionの使い方をまとめていますので、あわせてご覧ください。

\ 機械学習を学びたい人には自宅で学べるUdemyがおすすめ! /

講座単位で購入できます!

目次

Real-ESRGANとは

Real-ESRGANは画像を高画質化することが可能な機械学習をベースとしたアプリケーションです。画像サイズを大きくしたり、画像のノイズを除去したりすることが可能です。PyTorchを使って実装されているようです。
Real-ESRGANのGitHubのリポジトリは以下となります。

画像生成AIであるStable Diffusionは使用するグラフィックボードのメモリ容量によって生成できる画像サイズに制約があります。そのため、今回はStable Diffusionで生成した画像のサイズを、Real-ESRGANを使って拡張できないかを試してみたいと思います。

Stable Diffusionの使い方は以下の記事で解説しています。

Real-ESRGANのインストール

GitHubからReal-ESRGANのリポジトリをダウンロードします。

git clone https://github.com/xinntao/Real-ESRGAN.git
cd Real-ESRGAN

続いて以下を1つづつインストールします。

pip install basicsr
pip install facexlib
pip install gfpgan
pip install -r requirements.txt
python setup.py develop

学習済みモデルの取得

続いてReal-ESRGANで推論を実行するための学習済みモデルをダウンロードします。以下のURLからダウンロードしてください。

1つ目はデフォルトのモデル

https://github.com/xinntao/Real-ESRGAN/releases/download/v0.1.0/RealESRGAN_x4plus.pth

2つ目はアニメ画像に特化したモデルです。

https://github.com/xinntao/Real-ESRGAN/releases/download/v0.2.2.4/RealESRGAN_x4plus_anime_6B.pth

ダウンロードした学習済みモデルを以下のディレクトリに配置します。

(Real-ESRGANが格納されているディレクトリ)\Real-ESRGAN\weights

Real-ESRGANの推論を実行する

先ほどダウンロードしたReal-ESRGANのリポジトリと学習済みモデルを使って実際に高画質化を行います。

推論を実行するためのコマンドは以下となります。オプションの「-i」は入力したい画像ファイルが格納されるディレクトリ、「-n」が使用するモデルとなります。

./realesrgan-ncnn-vulkan.exe -i input -n model_name

その他のパラメータについては以下を参照してください。
https://github.com/xinntao/Real-ESRGAN-ncnn-vulkan#computer-usages

また、私の環境では以下のようなエラーが発生したため、解決方法も記載しておきます。

発生したエラー 1つ目

AttributeError: 'NoneType' object has no attribute 'shape'

こちらは初期状態で「input」の中にフォルダが含まれているため発生するようです。
input内のフォルダを削除すると解消されました。

発生したエラー 2つ目

Error "slow_conv2d_cpu" not implemented for 'Half'
If you encounter CUDA out of memory, try to set --tile with a smaller number.

CUDAが使用できないノートPCなどで実行すると発生するようです。
CPUのみで処理する場合は「–fp32」のオプションを指定してください。

python inference_realesrgan.py -n RealESRGAN_x4plus_anime_6B -i inputs --fp32

実行結果

まずはReal-ESRGANにデフォルトで入っているサンプルを試してみます。
サンプルは2次元キャラなので「RealESRGAN_x4plus_anime_6B」を使用します。

python inference_realesrgan.py -n RealESRGAN_x4plus_anime_6B -i inputs --fp32

実行前

Real-ESRGANでの高解像度化前の画像がこちらです。
画像サイズが小さく、圧縮されているため画像が劣化しています。

推論実行前

実行後

Real-ESRGANで推論を実行し、高解像度化された後の画像です。
画像サイズが大きくなり、綺麗になっています。特に猫の輪郭周りの劣化していた部分を比較すると良くわかるかと思います。

推論実行後

Stable Diffusion(Waifu Diffusion)で生成した画像を高解像度化

最後にStable Diffusionを使って生成した画像を、Real-ESRGANで実際に高画質化してみます。
今回、使用する画像はStable Diffusionの2次元用モデル、Waifu Diffusionを使って生成しています。Waifu Diffusionの使い方は以下の記事で解説しています。

実行前

こちらが実行前の画像です。Stable Diffusionのデフォルトサイズの512×512となっています。

推論実行前

実行後

こちらが実行後の画像です。
サイズが2048×2048まで拡大されました。拡大による画質の劣化もなく非常に奇麗です。

推論実行後

欲しい絵に出会うためにハードウェアを揃えよう

Google Colabでは無料でStable Diffusionを使用するためのコードを実行できますが、GPUリソースの制限がありますのでできればローカルでGPUマシンを用意してトライしたいところです。

Stable Diffusionで絵を生成する場合はグラフィックボードのGPUメモリの容量により生成できるサイズに制約ができますので、できれば12GB以上のメモリを積んでいるものがおすすめです。

まとめ

今回はStable Diffusionで生成した画像をReal-ESRGANで高画質化できるかを試してみました。一番の目的は画像サイズを大きくすることですが、4倍の画像サイズになり画質も非常に奇麗でしたので、十分実用できるかと思いました。
「Stable Diffusionでもっと大きい画像を作りたい!」と思っている方にはおすすめです。

それでは、また次の記事でお会いしましょう。

\ Pythonのプログラミングを学びたい人には自宅で学べるUdemyがおすすめ!  /

講座単位で購入できます!

参考

よかったらシェアしてね!
  • URLをコピーしました!
目次