「AIを使って画像を高画質化したい」
「画質を落とさずに画像サイズを拡大したい」
「無料で使える高画質化ツールをインストールしたい」
このような場合には、Real-ESRGANがオススメです。
この記事では、Real-ESRGANについて解説しています。
本記事の内容
- Real-ESRGANとは?
- Real-ESRGANのシステム要件
- Real-ESRGANのインストール
- Real-ESRGANの設定
- Real-ESRGANの動作確認
それでは、上記に沿って解説していきます。
Real-ESRGANとは?
Real-ESRGANは、高画質化ツールです。
次の画像を見れば、どういうモノであるかは一目瞭然と言えます。
Real-ESRGANは、技術的には機械学習をベースにしています。
その際に利用している機械学習フレームワークは、PyTorchになります。
また、Real-ESRGANは次の3つの形式で利用することができます。
- Online inference
- Portable executable files (NCNN)
- Python script
手っ取り早くReal-ESRGANを試すには、Online inferenceが最適です。
https://arc.tencent.com/en/ai-demos/imgRestore
Portable executable filesは、バイナリファイルで提供されています。
試しにダウンロードして検証しましたが、エラーで動きませんでした。
この記事では、Python scriptについて解説を行っています。
以上、Real-ESRGANについて説明しました。
次は、Real-ESRGANのシステム要件を説明します。
Real-ESRGANのシステム要件
現時点(2022年8月末)でのReal-ESRGANの最新バージョンは、0.2.5.0となります。
この最新バージョンは、2022年4月24日にリリースされています。
サポートOSに関しては、以下を含むクロスプラットフォーム対応です。
- Windows
- macOS
- Linux
サポート対象となるPythonのバージョンは、以下。
- Python 3.7
- Python 3.8
かなり狭い範囲のサポート状況になります。
このような場合、Python 3.9や3.10でも問題ないだろうと考えがちです。
しかし、Real-ESRGANにおいては本当にPython 3.10では動きませんでした。
おそらく、Python 3.9でも同じでしょう。
その原因は、Numpyにあります。
実際、次のようなエラーが出ます。
setup.py:66: RuntimeWarning: NumPy 1.20.3 may not yet support Python 3.10.
Numpyのバージョン依存から、Pythonのバージョンに制約があるということです。
ここは割り切って、Real-ESRGAN専用のPython仮想環境を用意しましょう。
追記 2022年10月12日
Python 3.9やPython 3.10でも、Real-ESRGANを動かせる方法が見つかりました。
それもGUIでの操作も可能です。
Python仮想環境については、次の記事で説明しています。
あと、Real-ESRGANのシステム要件で重要なモノはPyTorchです。
GPUが利用可能なら、GPU版PyTorchを利用しましょう。
GPU版PyTorchのインストールについては、次の記事を参考にしてください。
以上、Real-ESRGANのシステム要件を説明しました。
次は、Real-ESRGANのインストールを説明します。
Real-ESRGANのインストール
検証は、次のバージョンのPythonで行います。
> python -V Python 3.8.6
まずは、現状のインストール済みパッケージを確認しておきます。
GPU版PyTorchが、インストール済みの状態です。
> pip list Package Version ------------------ ------------ certifi 2022.6.15 charset-normalizer 2.1.1 idna 3.3 numpy 1.23.2 Pillow 9.2.0 pip 22.2.2 requests 2.28.1 setuptools 65.3.0 torch 1.12.1+cu113 torchaudio 0.12.1+cu113 torchvision 0.13.1+cu113 typing_extensions 4.3.0 urllib3 1.26.12 wheel 0.36.2
次にするべきことは、pipとsetuptoolsの更新です。
pipコマンドを使う場合、常に以下のコマンドを実行しておきましょう。
python -m pip install --upgrade pip setuptools
では、Real-ESRGANのインストールです。
Real-ESRGANのインストールは、以下のコマンドとなります。
pip install realesrgan
Real-ESRGANのインストールは、結構時間がかかります。
終了したら、どんなパッケージがインストールされたのかを確認します。
> pip list Package Version ----------------------- --------------- absl-py 1.2.0 addict 2.4.0 basicsr 1.4.1 cachetools 5.2.0 certifi 2022.6.15 charset-normalizer 2.1.1 colorama 0.4.5 cycler 0.11.0 facexlib 0.2.4 filterpy 1.4.5 fonttools 4.37.1 future 0.18.2 gfpgan 1.3.4 google-auth 2.11.0 google-auth-oauthlib 0.4.6 grpcio 1.47.0 idna 3.3 imageio 2.21.1 importlib-metadata 4.12.0 kiwisolver 1.4.4 llvmlite 0.39.0 lmdb 1.3.0 Markdown 3.4.1 MarkupSafe 2.1.1 matplotlib 3.5.3 networkx 2.8.6 numba 0.56.0 numpy 1.20.3 oauthlib 3.2.0 opencv-python 4.6.0.66 packaging 21.3 Pillow 9.2.0 pip 22.2.2 protobuf 3.19.4 pyasn1 0.4.8 pyasn1-modules 0.2.8 pyparsing 3.0.9 python-dateutil 2.8.2 PyWavelets 1.3.0 PyYAML 6.0 realesrgan 0.2.5.0 requests 2.28.1 requests-oauthlib 1.3.1 rsa 4.9 scikit-image 0.19.3 scipy 1.9.1 setuptools 65.3.0 six 1.16.0 tb-nightly 2.11.0a20220827 tensorboard-data-server 0.6.1 tensorboard-plugin-wit 1.8.1 tifffile 2022.8.12 torch 1.12.1+cu113 torchaudio 0.12.1+cu113 torchvision 0.13.1+cu113 tqdm 4.64.0 typing_extensions 4.3.0 urllib3 1.26.12 Werkzeug 2.2.2 wheel 0.36.2 yapf 0.32.0 zipp 3.8.1
多くのパッケージが、インストールされました。
このことからも、Python仮想環境の利用を推奨します。
以上、Real-ESRGANのインストールを説明しました。
次は、Real-ESRGANの設定を説明します。
Real-ESRGANの設定
Real-ESRGANの設定を行います。
Real-ESRGANを動かすためには、次のことをやる必要があります。
- ディレクトリの作成
- 学習済みモデルのダウンロード
- スクリプトファイルのダウンロード
- スクリプトファイルの修正
それぞれを下記で説明します。
その前に、まずは作業場となる場所を決めましょう。
メインとなるディレクトリは、realesrganとします。
ディレクトリの作成
最低限で4つのディレクトリが必要です。
それぞれの用途は、ディレクトリ名でわかると思います。
詳細は、動作確認時に説明します。
realesrganに移動して、次のコマンドを実行します。
mkdir experiments mkdir experiments/pretrained_models mkdir inputs mkdir results
realesrgan以下は、次のような状態です。
学習済みモデルのダウンロード
experiments/pretrained_modelsにモデルを配置します。
コマンドで実行する場合は、以下となります。
cd experiments/pretrained_models wget https://github.com/xinntao/Real-ESRGAN/releases/download/v0.1.0/RealESRGAN_x4plus.pth -O RealESRGAN_x4plus.pth
Windowsの場合であれば、wgetでのダウンロードはかなり遅いです。
我慢できない場合は、ブラウザでダウンロードしましょう。
realesrgan以下は、次のような状態です。
スクリプトファイルのダウンロード
GitHubの公式ページから、スクリプトファイルをダウンロードします。
スクリプトの設置場所は、realesrgan直下となります。
wget https://raw.githubusercontent.com/xinntao/Real-ESRGAN/master/inference_realesrgan.py -O inference_realesrgan.py
realesrgan以下は、次のような状態です。
スクリプトファイルの修正
ダウンロードしたスクリプトファイルを修正します。
Real-ESRGANのバージョンが上がれば、この修正は不要かもしれません。
ただ、現状ではスクリプトファイルにバグがあります。
スクリプトを実行すると、次のようなエラーが出ます。
Traceback (most recent call last): File "inference_realesrgan.py", line 127, in <module> main() File "inference_realesrgan.py", line 69, in main upsampler = RealESRGANer( TypeError: __init__() got an unexpected keyword argument 'gpu_id'
RealESRGANer関数に余計な引数「gpu_id」が存在しているという内容です。
このRealESRGANer関数の定義は、以下。
しかし、スクリプトファイル内では次のように関数を呼び出しています。
確かに、「gpu_id」が余計です。
そこで、次のように修正します。
まとめ
Real-ESRGAN 0.2.5.0では、上記のようにスクリプトの修正が必要となっています。
次期バージョンでは、不具合が修正されて欲しいですね。
それ以外の作業もGitHubからプロジェクトを落とせば、不要となるでしょう。
ただし、無駄なモノが多く含まれています。
したがって、地道に設定作業を行いましょう。
以上、Real-ESRGANの設定を説明しました。
次は、Real-ESRGANの動作確認を説明します。
Real-ESRGANの動作確認
Real-ESRGANの動作確認を行います。
そのためには、高画質化したい画像を用意しましょう。
Real-ESRGAN公式(GitHub)で公開されている画像を拝借します。
対象となる画像は、inputsに設置することになります。
cd inputs wget https://raw.githubusercontent.com/xinntao/Real-ESRGAN/master/inputs/0014.jpg -O 0014.jpg
上記コマンドを実行すれば、次の画像をinputsに設置できます。
0014.jpg(179 x 179)
realesrgan以下は、次のような状態です。
この状態において、次のコマンドを実行します。
実行場所は、realesrgan直下です。
python inference_realesrgan.py --model_name RealESRGAN_x4plus.pth --input inputs
上記コマンドを実行すると、resultsディレクトリに次の画像を確認できます。
0014_out.jpg(716 x 716)
realesrgan以下は、次のような状態です。
inference_realesrgan.pyは、デフォルトでinputs以下の画像を対象とします。
そして、それらの画像を指定したモデルで高画質化します。
結果的には、高画質化された画像がデフォルトでresults以下に保存されます。
それぞれのディレクトリ場所は、変更することが可能です。
詳細は、ヘルプで確認できます。
> python inference_realesrgan.py -h usage: inference_realesrgan.py [-h] [-i INPUT] [-n MODEL_NAME] [-o OUTPUT] [-s OUTSCALE] [--suffix SUFFIX] [-t TILE] [--tile_pad TILE_PAD] [--pre_pad PRE_PAD] [--face_enhance] [--fp32] [--alpha_upsampler ALPHA_UPSAMPLER] [--ext EXT] [-g GPU_ID] optional arguments: -h, --help show this help message and exit -i INPUT, --input INPUT Input image or folder -n MODEL_NAME, --model_name MODEL_NAME Model names: RealESRGAN_x4plus | RealESRNet_x4plus | RealESRGAN_x4plus_anime_6B | RealESRGAN_x2plus | realesr-animevideov3 -o OUTPUT, --output OUTPUT Output folder -s OUTSCALE, --outscale OUTSCALE The final upsampling scale of the image --suffix SUFFIX Suffix of the restored image -t TILE, --tile TILE Tile size, 0 for no tile during testing --tile_pad TILE_PAD Tile padding --pre_pad PRE_PAD Pre padding size at each border --face_enhance Use GFPGAN to enhance face --fp32 Use fp32 precision during inference. Default: fp16 (half precision). --alpha_upsampler ALPHA_UPSAMPLER The upsampler for the alpha channels. Options: realesrgan | bicubic --ext EXT Image extension. Options: auto | jpg | png, auto means using the same extension as inputs -g GPU_ID, --gpu-id GPU_ID gpu device to use (default=None) can be 0,1,2 for multi-gpu
以上、Real-ESRGANの動作確認を説明しました。