Waifu2x

提供: ArchWiki
ナビゲーションに移動 検索に移動

この記事では深層畳み込みニューラルネットワークを使ったアニメ絵向けの超解像システムである waifu2x をインストール・使用したり学習を行う方法を説明します。

インストール

waifu2x を直接使用するには waifu2x-gitAUR パッケージをインストールしてください。AUR で waifu2x を検索すると他バージョンの waifu2x が見つかります。

ヒント: NVIDIA の GPU を使っている場合、cuda をインストールすることで超解像処理を高速化することができます。

使用方法

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
ヒント: バッチ操作のインターフェイスを探している場合、waifu2x ラッパースクリプト を見てください。

学習

カスタムモデルを学習させるには、NVIDIA のグラフィックカードが必須です。waifu2x は CUDA を使用しているためです。学習を行うには以下の依存パッケージと waifu2x のソースが必要になります。

依存パッケージ

以下のパッケージをインストールしてください:

以下の cuDNN ライブラリとバインディングパッケージもインストールすることを推奨します。cuDNN バックエンドを有効にして学習することができ、高速化につながります。

cudnn をインストールするときは NVIDIA の cuDNN サイト から cuDNN のバイナリパックを手動でダウンロードする必要があります。

waifu2x ソース

GitHub から waifu2x のソースコードを取得:

$ git clone --depth 1 https://github.com/nagadomi/waifu2x.git

ソースディレクトリに移動して waifu2x のコマンドラインツールをテストしてみてください:

$ th waifu2x.lua

コマンドラインツール

ノート: cuDNN ライブラリをインストールした場合、-force_cudnn 1 オプションで cuDNN を使うことができます。cuDNN はデフォルトカーネルよりもずっと高速です。

詳しくは 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

モデルの学習

ノート:
  • cuDNN ライブラリをインストールした場合、-backend cudnn オプションで cuDNN カーネルを使うことができます。tools/rebuild.lua で学習した cudnn モデルを cunn モデルに変換できます。
  • waifu2x の学習済みモデルを作成するのに使われたコマンドは appendix/train_upconv_7_art.shappendix/train_upconv_7_photo.sh を見てください。

データの準備

ファイルリストを生成:

$ 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 を見てください。

参照