RealESRGANが物足りない時に...
RealESRGANは低解像度の画像をアップスケールして、しかもくっきり綺麗にしてくれる強力なモデルです。拡大しても粗いピクセルにならず、なめらかな質感になるようスムージングしてくれます。
【猫の画像を4倍にアップスケール】
しかし、結果を細かく見てみると、スムージングのせいで細部が潰れてしまったり、くっきりしすぎてアーティファクトが生じたりすることがあります。
これを解決するために、目的にあった独自のデータセットでRealESRGANを追加トレーニングし、望む質感を得ることができます。
今回は、猫の高解像度画像データセットを追加で学習させ、より細かい毛並みを表現できるようにして見ました。
【RealESRGANの事前トレーニング済みモデル】
【猫の画像で追加トレーニングしたRealESRGAN】
毛並みがよりくっきりしている。
RealESRGANをインストール
git clone https://github.com/xinntao/Real-ESRGAN.git
cd Real-ESRGAN
pip install basicsr
pip install facexlib
pip install gfpgan
pip install -r requirements.txt
python setup.py develop
データを準備する
1、画像を集める
超解像の結果として欲しい解像度を持った画像を集め、一つのディレクトリにまとめます。
今回は猫の画像を集めました。
画像サイズはバラバラで大丈夫です。
以下のようなフォルダ構成にします。
RealESRGAN
|__datasets
|__own_dataset_root
|__own_images # your custom images
|__image0.jpg
|__image1.jpg
|__...
2、解像度をダウンしたデータを作る
スクリプトで、上記画像を0.75倍、0.5倍、0.33倍した低解像度データを作ります。
python scripts/generate_multiscale_DF2K.py --input datasets/own_dataset_root/own_images --output datasets/own_dataset_root/own_images_multiscale
以下を独自のものに指定します。
--input :元画像(集めた高解像度画像)のディレクトリ
--output 低解像度画像が保存するディレクトリ。
3、メタ情報テキストファイルを作る
スクリプトで、画像ファイルパス一覧が記載されたテキストファイルを作ります。
python scripts/generate_meta_info.py --input datasets/own_dataset_root/own_images datasets/own_dataset_root/own_images_multiscale --root datasets/own_dataset_root datasets/own_dataset_root --meta_info datasets/own_dataset_root/meta_info/meta_info_own_imagesmultiscale.txt
以下を指定します。
--input :元画像のディレクトリと低解像度にした画像のディレクトリを連続して指定します。
--root :inputのディレクトリが存在する親ディレクトリのパスを指定します。
--meta_info メタ情報テキストファイルが保存するパス。
メタ情報テキストファイルは以下のように入力画像パスが一覧で記載されます。
own_images/image0.jpg
own_images/image1.jpg
...
own_images_multiscale/image0.jpg
own_images_multiscale/image1.jpg
...
事前トレーニングモデルのダウンロード
wget https://github.com/xinntao/Real-ESRGAN/releases/download/v0.1.0/RealESRGAN_x4plus.pth -P experiments/pretrained_models
wget https://github.com/xinntao/Real-ESRGAN/releases/download/v0.2.2.3/RealESRGAN_x4plus_netD.pth -P experiments/pretrained_models
experiments/pretrained_modelsに generatorとdiscriminatorの事前トレーニング済みモデルが保存されます。
トレーニング構成ファイルを一部書き換える
options/finetune_realesrgan_x4plus.ymlを一部書き換えます。
datasets:
train:
name: own_dataset
type: RealESRGANDataset
dataroot_gt: datasets/own_dataset_root
meta_info: datasets/own_dataset_root/meta_info/meta_info_GIRLmultiscale.txt
datasets/trainの以下の項目を書き換えます。
name: 独自の名前をつける
dataroot_gt: input画像のディレクトリが存在する親ディレクトリのパス
meta_info: メタ情報テキストファイルのパス
path:
# use the pre-trained Real-ESRNet model
pretrain_network_g: experiments/pretrained_models/RealESRNet_x4plus.pth
pretrain_network_g: を experiments/pretrained_models/RealESRGAN_x4plus.pthに書き換える。
logger:
print_freq: 100
save_checkpoint_freq: !!float 5e3
save_checkpoint_freq: トレーニング結果のモデルチェックポイントを何iterごとに保存するかを指定する。(100とか1000とかの数字で指定する)
トレーニング
トレーニングスクリプトを実行します。
以下を指定します。
python realesrgan/train.py -opt options/finetune_realesrgan_x4plus.yml --auto_resume
experiments/finetune_RealESRGANx4plus_400kにトレーニング結果のモデルチェックポイントファイルが保存されます。
トレーニングした独自モデルでの推論
python inference_realesrgan.py -n RealESRGAN_x4plus -i inputs --outscale 4 --model_path experiments/finetune_RealESRGANx4plus_400k/models/net_g_160.pth
以下を指定します。
--inputs :推論の入力画像ディレクトリ
---model_path :トレーニングで生成されたチェックポイントファイルのパス
🐣
フリーランスエンジニアです。
AIについて色々記事を書いていますのでよかったらプロフィールを見てみてください。
もし以下のようなご要望をお持ちでしたらお気軽にご相談ください。
AIサービスを開発したい、ビジネスにAIを組み込んで効率化したい、AIを使ったスマホアプリを開発したい、
ARを使ったアプリケーションを作りたい、スマホアプリを作りたいけどどこに相談したらいいかわからない…
いずれも中間コストを省いたリーズナブルな価格でお請けできます。
お仕事のご相談はこちらまで
rockyshikoku@gmail.com
機械学習やAR技術を使ったアプリケーションを作っています。
機械学習/AR関連の情報を発信しています。