Waifu2x
この記事では深層畳み込みニューラルネットワークを使ったアニメ絵向けの超解像システムである waifu2x をインストール・使用したり学習を行う方法を説明します。
インストール
waifu2x を直接使用するには waifu2x-gitAUR パッケージをインストールしてください。AUR で waifu2x
を検索すると他バージョンの waifu2x が見つかります。
使用方法
waifu2x は waifu2x
コマンドで使うことができます。詳しいオプションは waifu2x --help
を実行してください。
アップスケーリング
--scale_ratio
パラメータを使って縮尺を指定してください。-i
で入力ファイル名を、-o
で出力ファイル名を指定します:
$ waifu2x --scale_ratio 2 -i my_waifu.png -o 2x_my_waifu.png
ノイズリダクション
--noise_level
パラメータを使ってノイズリダクションのレベルを指定できます (1
または 2
):
waifu2x --noise_level 1 -i my_waifu.png -o lucid_my_waifu.png
また、--jobs
を使うことで同時実行されるスレッドの数を指定することができます (マルチコアの CPU で効果があります):
$ waifu2x --jobs 4 --noise_level 1 -i my_waifu.png -o lucid_my_waifu.png
アップスケーリング & ノイズリダクション
--scale_ratio
と --noise_level
は組み合わせることができます:
$ waifu2x --scale_ratio 2 --noise_level 1 -i my_waifu.png -o 2x_lucid_my_waifu.png
学習
カスタムモデルを学習させるには、NVIDIA のグラフィックカードが必須です。waifu2x は CUDA を使用しているためです。学習を行うには以下の依存パッケージと waifu2x のソースが必要になります。
依存パッケージ
以下のパッケージをインストールしてください:
- lua51
- cuda
- snappy
- graphicsmagick
- torch7-gitAUR
- torch7-trepl-gitAUR
- torch7-sys-gitAUR
- torch7-cutorch-gitAUR
- torch7-nn-gitAUR
- torch7-cunn-gitAUR
- torch7-image-gitAUR
- torch7-xlua-gitAUR
- torch7-dok-gitAUR
- torch7-optim-gitAUR
- lua51-graphicsmagick-gitAUR
- lua51-cjsonAUR
- lua51-csvigo-gitAUR
- lua51-snappy-gitAUR
以下の cuDNN ライブラリとバインディングパッケージもインストールすることを推奨します。cuDNN バックエンドを有効にして学習することができ、高速化につながります。
- cudnnAUR (オプション)
- torch7-cudnn-gitAUR (オプション)
cudnnAUR をインストールするときは NVIDIA の cuDNN サイト から cuDNN のバイナリパックを手動でダウンロードする必要があります。
waifu2x ソース
GitHub から waifu2x のソースコードを取得:
$ git clone --depth 1 https://github.com/nagadomi/waifu2x.git
ソースディレクトリに移動して waifu2x のコマンドラインツールをテストしてみてください:
$ th waifu2x.lua
コマンドラインツール
詳しくは waifu2x#command-line-tools を見てください。
ノイズリダクション
$ th waifu2x.lua -m noise -noise_level 1 -i input_image.png -o output_image.png
2x アップスケーリング
$ th waifu2x.lua -m scale -i input_image.png -o output_image.png
ノイズリダクション + 2x アップスケーリング
$ th waifu2x.lua -m noise_scale -noise_level 1 -i input_image.png -o output_image.png
モデルの学習
データの準備
ファイルリストを生成:
$ find /path/to/image/dir -name "*.png" > data/image_list.txt
学習データに変換:
$ th convert_data.lua
ノイズリダクション (レベル1) モデルの学習
$ mkdir models/my_model $ th train.lua -model_dir models/my_model -method noise -noise_level 1 -test images/miku_noisy.png
使用するには:
$ th waifu2x.lua -model_dir models/my_model -m noise -noise_level 1 -i images/miku_noisy.png -o output.png
models/my_model/noise1_best.png
でモデルの性能を確認できます。
ノイズリダクション (レベル2) モデルの学習
$ th train.lua -model_dir models/my_model -method noise -noise_level 2 -test images/miku_noisy.png
使用するには:
$ th waifu2x.lua -model_dir models/my_model -m noise -noise_level 2 -i images/miku_noisy.png -o output.png
models/my_model/noise2_best.png
でモデルの性能を確認できます。
2x アップスケーリングモデルの学習
$ th train.lua -model upconv_7 -model_dir models/my_model -method scale -scale 2 -test images/miku_small.png
使用するには:
$ th waifu2x.lua -model_dir models/my_model -m scale -scale 2 -i images/miku_small.png -o output.png
models/my_model/scale2.0x_best.png
でモデルの性能を確認できます。
2x アップスケーリングとノイズリダクションの混合モデルの学習
$ th train.lua -model upconv_7 -model_dir models/my_model -method noise_scale -scale 2 -noise_level 1 -test images/miku_small.png
使用するには:
$ th waifu2x.lua -model_dir models/my_model -m noise_scale -scale 2 -noise_level 1 -i images/miku_small.png -o output.png
models/my_model/noise1_scale2.0x_best.png
でモデルの性能を確認できます。
最新の情報は waifu2x#train-your-own-model を見てください。
Docker
waifu2x#docker を見てください。