画像のアップスケール

CodeFormer

顔専用のアップスケーラーCodeFormer https://t.co/UOqrvx29o8 を試し中。左→右。これくらいならまだいいが、ボケボケの顔をくっきりさせると自分じゃない顔になってしまう pic.twitter.com/SGWZa92QyM

— Haruhiko Okumura (@h_okumura) November 8, 2022

微妙に自分じゃない顔になる例(顔以外はReal-ESRGAN) pic.twitter.com/dDP17eB1ku

— Haruhiko Okumura (@h_okumura) November 8, 2022

上は CodeFormer という顔専用のアップスケーラー(高解像度化ツール)を使った例である。論文は https://arxiv.org/abs/2206.11253、ソースコードは https://github.com/sczhou/CodeFormer にある。

私は M1 Mac 上の Python 3.10(公式サイトからインストールしたもの)を使っているので、次のようにしてインストールした。

git clone https://github.com/sczhou/CodeFormer.git
cd CodeFormer
python3 scripts/download_pretrained_models.py facelib
python3 scripts/download_pretrained_models.py CodeFormer
pip3 install lpips  # ほかにも必要に応じてインストール
python3 basicsr/setup.py develop --user

まずはサンプルの画像で試してみる:

python3 inference_codeformer.py -w 0.7 --input_path inputs/whole_imgs/00.jpg

出力が results/test_img_0.7/final_results/00.png に入る。

顔以外も高解像度化する際には Real-ESRGAN が使われる。初回実行時に https://github.com/sczhou/CodeFormer/releases/download/v0.1.0/RealESRGAN_x2plus.pth が weights/realesrgan/RealESRGAN_x2plus.pth にダウンロードされる(64M ほど)。

python3 inference_codeformer.py -w 0.7 --bg_upsampler realesrgan \
    --input_path inputs/whole_imgs/00.jpg

SwinIR

いちえふの写真をSwinIRで縦横とも4倍にしようとしたんだけれど、何となくそれらしいけれど文字がダメだ pic.twitter.com/tKjLQkpzJi

— Haruhiko Okumura (@h_okumura) November 2, 2022

こちらは SwinIR というアップスケーラーである。Swin Transformer というものを使っている(Swin = Shifted windows)。

git clone https://github.com/JingyunLiang/SwinIR.git
cd SwinIR

モデルのどれかを取得して適当な場所(例:experiments/pretrained_models)に入れる。主なモデル:

例えば上の最後のもの(large)をコマンドで取得する例:

wget https://github.com/JingyunLiang/SwinIR/releases/download/v0.0/003_realSR_BSRGAN_DFOWMFC_s64w8_SwinIR-L_x4_GAN.pth \
    -P experiments/pretrained_models

実際に動かしてみよう。次のコマンドがエラーになれば不足ライブラリを入れる(私の場合は pip3 install timm が必要であった)。画像は testsets/okumura の中に入れた。

4倍 large:

python3 main_test_swinir.py --task real_sr --scale 4 --large_model \
    --model_path experiments/pretrained_models/003_realSR_BSRGAN_DFOWMFC_s64w8_SwinIR-L_x4_GAN.pth \
    --folder_lq testsets/okumura

結果は results/swinir_real_sr_x4_large に入る。

2倍 middle:

python3 main_test_swinir.py --task real_sr --scale 2 \
    --model_path experiments/pretrained_models/003_realSR_BSRGAN_DFO_s64w8_SwinIR-M_x2_GAN.pth \
    --folder_lq testsets/okumura

結果は results/swinir_real_sr_x2 に入る。