7
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

RealESRGANを独自のデータでトレーニングしてカスタマイズモデルを作る

Last updated at Posted at 2023-11-04

RealESRGANが物足りない時に...

RealESRGANは低解像度の画像をアップスケールして、しかもくっきり綺麗にしてくれる強力なモデルです。拡大しても粗いピクセルにならず、なめらかな質感になるようスムージングしてくれます。

【猫の画像を4倍にアップスケール】

pexels-alena-koval-982300のコピー.jpg
pexels-alena-koval-982300のコピー_out (2).jpg

しかし、結果を細かく見てみると、スムージングのせいで細部が潰れてしまったり、くっきりしすぎてアーティファクトが生じたりすることがあります。

これを解決するために、目的にあった独自のデータセットでRealESRGANを追加トレーニングし、望む質感を得ることができます。

今回は、猫の高解像度画像データセットを追加で学習させ、より細かい毛並みを表現できるようにして見ました。

【RealESRGANの事前トレーニング済みモデル】
スクリーンショット 2023-11-05 0.17.34.png
【猫の画像で追加トレーニングしたRealESRGAN】
スクリーンショット 2023-11-05 0.17.51.png

毛並みがよりくっきりしている。

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、画像を集める

超解像の結果として欲しい解像度を持った画像を集め、一つのディレクトリにまとめます。
今回は猫の画像を集めました。

スクリーンショット 2023-11-05 0.21.03.png

画像サイズはバラバラで大丈夫です。
以下のようなフォルダ構成にします。

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関連の情報を発信しています。

Twitter
Medium
GitHub

7
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?