「人の顔写真を綺麗に復元したい」
「Real-ESRGANのインストールに失敗してしまう・・・」
このような場合には、CodeFormerがオススメです。
この記事では、CodeFormerのインストールについて解説しています。
本記事の内容
- CodeFormerとは?
- CodeFormerのシステム要件
- CodeFormerのインストール
- CodeFormerの動作確認
それでは、上記に沿って解説していきます。
CodeFormerとは?
CodeFormerは、顔面修復のアルゴリズムのことを言います。
顔面修復を簡単に言うと、顔を綺麗にすることです。
次の画像を見れば、CodeFormerで可能なことが一目瞭然でしょう。
これと同じようなことは、GFPGANでも可能です。
あと、CodeFormerではReal-ESRGANを統合しています。
Real-ESRGAN単独のインストールは、そこそこ面倒です。
それについては、次の記事で説明しています。
ただ、CodeFormerに統合されたReal-ESRGANでは、細かいモデル指定まではできないようです。
CodeFormerのソースを見ると、「RealESRGAN_x2plus.pth」が固定で指定されています。
現状では、「RealESRGAN_x4plus.pth」を指定することは無理そうです。
「RealESRGAN_x4plus.pth」を利用したいなら、本家(Real-ESRGAN単独)を利用しましょう。
以上、CodeFormerについて説明しました。
次は、CodeFormerのシステム要件を説明します。
CodeFormerのシステム要件
現時点(2022年10月)でのCodeFormerの最新バージョンは、0.1.0となります。
この最新バージョンは、2022年8月10日にリリースされています。
リリースされているとは言え、GitHub上の最新ソースを取得します。
そのため、正確にはバージョンはあってないようなモノです。
実際、変更は頻繁に実施されているようです。
CodeFormerのシステム要件は、以下のように記載されています。
- Pytorch >= 1.7.1
- CUDA >= 10.1
- Other required packages in requirements.txt
CUDAのバージョンが指定されています。
最新のGPU版PyTorchをインストールすれば、問題ないと言えます。
GPU版Pytorchのインストールについては、次の記事で解説しています。
requirements.txtには、必要なパッケージが記載されています。
それは、まとめてインストールすればよいでしょう。
とにかく、GPU版PyTorchを事前にインストールしておきます。
以上、CodeFormerのシステム要件を説明しました。
次は、CodeFormerのインストールを説明します。
CodeFormerのインストール
CodeFormerのインストールを行っていきます。
CodeFormerは、Python仮想環境にインストールすることをオススメします。
検証は、次のバージョンのPythonで行います。
> python -V Python 3.10.4
まずは、現状のインストール済みパッケージを確認しておきます。
事前にGPU版PyTorchがインストール済みです。
> pip list Package Version ------------------ ------------ certifi 2022.9.24 charset-normalizer 2.1.1 idna 3.4 numpy 1.23.3 Pillow 9.2.0 pip 22.2.2 requests 2.28.1 setuptools 65.4.1 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.37.1
次にするべきことは、pipとsetuptoolsの更新です。
pipコマンドを使う場合、常に以下のコマンドを実行しておきましょう。
python -m pip install --upgrade pip setuptools
では、CodeFormerのインストールです。
CodeFormerのインストールは、GitHubからプロジェクトをダウンロードします。
git clone https://github.com/sczhou/CodeFormer
gitコマンドでGitHubからCodeFormerのソース一式を取得します。
Windowsの場合であれば、gitコマンドが利用できないかもしれません。
その場合は、次の記事を参考にしてください。
プロジェクトのダウンロードが完了したら、リポジトリルートに移動します。
cd CodeFormer
基本的には、この場所でコマンドを実行することになります。
次は、パッケージのインストールです。
requirements.txtを同一ディレクトリ上で確認できます。
requirements.txt
addict future lmdb numpy opencv-python Pillow pyyaml requests scikit-image scipy tb-nightly torch>=1.7.1 torchvision tqdm yapf lpips gdown # supports downloading the large file from Google Drive # cmake # dlib # conda install -c conda-forge dlib
PyTorchさえインストール済みであれば、そのままインストールしても問題ありません。
次のコマンドにより、まとめてインストールします。
pip install -r requirements.txt
インストールが完了したら、インストール済みパッケージの確認です。
> pip list Package Version ----------------------- --------------- absl-py 1.2.0 addict 2.4.0 beautifulsoup4 4.11.1 cachetools 5.2.0 certifi 2022.9.24 charset-normalizer 2.1.1 colorama 0.4.5 filelock 3.8.0 future 0.18.2 gdown 4.5.1 google-auth 2.12.0 google-auth-oauthlib 0.4.6 grpcio 1.49.1 idna 3.4 imageio 2.22.0 lmdb 1.3.0 lpips 0.1.4 Markdown 3.4.1 MarkupSafe 2.1.1 networkx 2.8.6 numpy 1.23.3 oauthlib 3.2.1 opencv-python 4.6.0.66 packaging 21.3 six 1.16.0 soupsieve 2.3.2.post1 tb-nightly 2.11.0a20220930 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.1 typing_extensions 4.3.0 urllib3 1.26.12 Werkzeug 2.2.2 wheel 0.37.1 yapf 0.32.0
CodeFormerは多くのパッケージに依存しています。
やはり、CodeFormerはPython仮想環境へインストールするのが無難でしょうね。
以上、CodeFormerのインストールを説明しました。
次は、CodeFormerの動作確認を説明します。
CodeFormerの動作確認
CodeFormerの動作確認を行います。
次の流れで動作確認を説明していきます。
- 顔認識のための学習済みモデル設置
- CodeFormerのための学習済みモデル設置
- 動作確認
顔認識のための学習済みモデル設置
顔認識の学習済みモデルをダウンロードする必要があります。
このモデルは、一般的によく利用されています。
Google Driveなどからダウンロードして設置します。
しかし、CodeFormerでは専用のスクリプトが用意されています。
リポジトリルートで以下を実行すると、自動的にダウンロードが開始されます。
そして、モデルを必要な場所へ自動的に設置まで行います。
python scripts/download_pretrained_models.py facelib
しかし、次のエラーが発生することがあります。
ModuleNotFoundError: No module named 'basicsr'
「basicsr」が未インストールだと、上記エラーが出ます。
そこで、対象のパッケージをインストールします。
AIで画像・映像を扱う際に便利なツールだということです。
BasicSR
https://github.com/XPixelGroup/BasicSR
pip install basicsr
BasicSRのインストール後に、ダウンロード用のスクリプトをもう一度実行してみてください。
今度は、処理が上手くいくはずです。
処理が完了すると、「weights」ディレクトリ以下にモデルが保存されています。
CodeFormerのための学習済みモデル設置
CodeFormer専用の学習済みモデルをダウンロードします。
これは、CodeFormerの本体とも言えますね。
facelibと同じように、以下のコマンドを実行します。
python scripts/download_pretrained_models.py CodeFormer
処理が完了すると、「weights」ディレクトリ以下にモデルが保存されています。
動作確認
次のコマンドでは、サンプル画像をそのまま利用できます。
python inference_codeformer.py --w 0.5 --has_aligned --test_path inputs/cropped_faces
「–has_aligned」を付ける場合は、お膳立てをした画像である必要があります。
次の画像は、「inputs\cropped_faces\」ディレクトリ以下の画像一覧です。
お膳立てとは、顔が中心になるように切り抜いた画像ということです。
サイズは、512 x 512となります。
上記コマンドを実行すると処理が走りますが、次のようなエラーが出るかもしれません。
おそらく、出るはずです。
ModuleNotFoundError: No module named 'basicsr.version'
このエラーは、次のファイルを修正することで対応できます。
basicsr/__init__.py
11行目をコメントアウトするだけです。
再度、コマンドを実行します。
実行すると、以下のエラーが表示されてしまいます。
NameError: name 'input_video' is not defined
おそらく、次の更新と関係があるのでしょう。
エラーと言っても、処理自体は問題なく進みます。
でも、やはりエラーは気持ちの良いものではありません。
次の更新ぐらいで、解決されることを期待しましょう。
処理が完了すると、「result」ディレクトリ以下に動きがあります。
作成された画像の一覧です。
見事に画質がUPしています。
サイズは、512 x 512です。
以上、CodeFormerの動作確認を説明しました。