【Python】AI高画質化ツールReal-ESRGANのインストール

【Python】AI高画質化ツールReal-ESRGANのインストール 機械学習

「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の動作確認を説明しました。

タイトルとURLをコピーしました