「AIを使って画像を高画質化したい」
「画質を落とさずに画像サイズを拡大したい」
「アニメ画像を最も綺麗に拡大できるツールを探している」
このような場合には、Real-CUGANがオススメです。
この記事では、Real-CUGANについて解説しています。
本記事の内容
- Real-CUGANとは?
- Real-CUGANのシステム要件
- Real-CUGANのインストール
- Real-CUGANの設定
- Real-CUGANの動作確認
それでは、上記に沿って解説していきます。
Real-CUGANとは?
Real-CUGANとは、アニメ映像超解像のためのAIツールです。
そして、次のような機能を備えています。
- 高画質化
- 拡大
- ノイズ除去
同じような機能を持つモノとしては、次のツールが存在します。
- Waifu2x
- Real-ESRGAN
- SwinIR
SwinIR以外をReal-CUGANと比較した結果画像に以下のモノがあります。
一番左は、オリジナルになります。
パッと見た感じでは、Waifu2xは脱落です。
そして、Real-ESRGANとReal-CUGANの争いになります。
その争いにおいて、Real-CUGANの勝利がアピールされています。
ここで、画像を良く見てください。
全部アニメですよね。
Real-CUGANは、アニメに特化しています。
だからこそ、比較画像ではReal-ESRGANより優れている結果となっています。
リアルな写真になれば、また結果は変わることになります。
Real-ESRGANについては、次の記事で説明しています。
また、その争いにSwinIRが加わるとどうなるのでしょうかね。
それぞれ、ツールには特徴があり、一概には優劣は語れないかもしれません。
そのような状況において、Real-CUGANはアニメの画像に特化したAI高画質化ツールと言えます。
つまり、アニメの高画質化ならReal-CUGANということですね。
以上、Real-CUGANのついて説明しました。
次は、Real-CUGANのシステム要件を説明します。
Real-CUGANのシステム要件
現時点(2022年9月)でのReal-CUGANの最新バージョンは、20220226となります。
この最新バージョンは、2022年2月26日にリリースされています。
サポートOSに関しては、以下を含むクロスプラットフォーム対応のはずです。
- Windows
- macOS
- Linux
公式を見る限り、明示されてはいません。
ただ、ソースはどのOSでも動くようには見えます。
Windowsで動くことは、実際に確認済みです。
サポート対象となるPythonのバージョンについても、明示はされていません。
そのような場合は、Python公式開発サイクルに従いましょう。
バージョン | リリース日 | サポート期限 |
3.6 | 2016年12月23日 | 2021年12月23日 |
3.7 | 2018年6月27日 | 2023年6月27日 |
3.8 | 2019年10月14日 | 2024年10月 |
3.9 | 2020年10月5日 | 2025年10月 |
3.10 | 2021年10月4日 | 2026年10月 |
Python公式開発サイクルに従うと、Python 3.7以降となります。
実際、新しいPythonを利用した方が無難と言えます。
それは、PyTorchも関係してくるからです。
Real-CUGANは、機械学習エンジンとしてPyTorchを採用しています。
そのPyTorchが、新しいPythonに準じるようになっています。
さらには、GPU版を利用するならCUDAのバージョンも関係してきます。
CUDAについては、公式では上記のように記載されています。
上記を見る限り、CUDA 11.1以降を利用するのがベターでしょう。
LightもHeavyもどちらも対応可能ですから。
それ以外では、次のライブラリをインストールしておきましょう。
インストールが必要なモノは、次の記事を参考にしてください。
GPU利用できるなら、GPU版PyTorchのインストールをオススメします。
以上、Real-CUGANのシステム要件について説明しました。
次は、Real-CUGANのインストールを説明します。
Real-CUGANのインストール
Real-CUGANのインストールは、プロジェクトをダウンロードするだけです。
もちろん、必要なライブラリなどはインストール済みとします。
また、Real-CUGANはPython仮想環境にインストールしましょう。
Real-CUGANのインストールを進める前に、インストールされたパッケージを確認しておきます。
> pip list Package Version ------------------ ------------ certifi 2022.6.15 charset-normalizer 2.1.1 colorama 0.4.5 decorator 4.4.2 idna 3.3 imageio 2.21.2 imageio-ffmpeg 0.4.7 moviepy 1.0.3 numpy 1.23.2 opencv-python 4.6.0.66 Pillow 9.2.0 pip 22.2.2 proglog 0.1.10 requests 2.28.1 setuptools 65.3.0 torch 1.12.1+cu113 torchaudio 0.12.1+cu113 torchvision 0.13.1+cu113 tqdm 4.64.1 typing_extensions 4.3.0 urllib3 1.26.12 wheel 0.36.2
この状態でGitHubからプロジェクトをダウンロードします。
git clone https://github.com/bilibili/ailab.git
ZIPファイルをダウンロードしても構いませんが、どうせならgitコマンドを使いましょう。
Windowsの場合であれば、次の記事をご覧ください。
gitコマンドでダウンロードできたら、次のようなディレクトリ構成となっています。
以上、Real-CUGANのインストールを説明しました。
次は、Real-CUGANの設定を説明します。
Real-CUGANの設定
Real-CUGANの設定を行います。
まずは、Real-CUGANディレクトリまで移動します。
次の作業を順番に行っていきます。
- ディレクトリの作成
- 学習済みモデルのダウンロード
- 設定ファイルの確認・編集
ディレクトリの作成
ディレクトリを二つ作成します。
mkdir inputs mkdir outputs
「inputs」は、高画質化する元画像を設置する場所です。
「outputs」は、Real-CUGANで処理した画像を保存する場所になります。
二つのディレクトリを作成した後の状況は、次の構成になっているはずです。
学習済みモデルのダウンロード
学習済みモデルは、別途ダウンロードする必要があります。
次のURLから、学習済みモデルをダウンロードできます。
https://drive.google.com/drive/folders/1jAJyBf2qKe2povySwsGXsVMnzVyQzqDD
ファイルは、最初からある「weights_v3」ディレクトリに保存します。
全部ダウンロードできたら、次のようになります。
設定ファイルの確認・編集
config.pyが、設定ファイルとして用意されています。
CPUでReal-CUGANを動かす場合のみ、修正しないといけません。
それ以外の場合は、デフォルトのまま行きましょう。
CPUでの起動にするには、「cuda:0」を「cpu」に変更します。
#如果要用CPU跑,""里填cpu device="cuda:0"
以上、Real-CUGANの設定を説明しました。
次は、Real-CUGANの動作確認を説明します。
Real-CUGANの動作確認
Real-CUGANの動作確認を行います。
その前に、高画質化したい画像を「inputs」に設置しましょう。
0014.jpg(179 x 179)
そして、Real-CUGANの直下に次のスクリプトファイルを設置します。
test.py
from config import * from inference_video import * from upcunet_v3 import * import cv2 from time import time as ttime scale = 4 input_dir = "inputs" output_dir = "outputs" upscaler2x = RealWaifuUpScaler(scale, eval("model_path%s" % scale), half=half, device=device) os.makedirs(output_dir, exist_ok=True) for name in os.listdir(input_dir): print("Processing " + name) splitName = name.split(".") inp_path = os.path.join(input_dir, name) suffix = splitName[-1] prefix = ".".join(splitName[:-1]) frame = cv2.imread(inp_path)[:, :, [2, 1, 0]] t0 = ttime() result = upscaler2x(frame, tile_mode=tile, alpha=alpha, cache_mode=cache_mode)[:, :, ::-1] t1 = ttime() print(prefix, "done", t1 - t0) final_opt_path = os.path.join(output_dir, prefix + '.' + suffix) cv2.imwrite(final_opt_path, result)
その状態でスクリプトを実行。
そうすると、コンソールに次のように表示されます。
Processing 0014.jpg 0014 done 1.8281385898590088
処理が終わったら、「outputs」を確認します。
次のファイルが作成されていることを確認できます。
0014_out.jpg(716 x 716)
元画像の4倍サイズに拡大しています。
拡大しているけれども、画質は劣化していません。
無事に、Real-CUGANで高画質化が成功しています。
なお、拡大サイズは2~4倍で設定できます。
config.pyを修正するか、もしくはスクリプトを変更します。
スクリプトにおける次の値を変更することで対応できます。
scale = 4
以上、Real-ESRGANの動作確認を説明しました。