diff --git a/README.md b/README.md index 3b7701c..c492f14 100644 --- a/README.md +++ b/README.md @@ -38,40 +38,63 @@ cuDNNで変換する場合はさらに cuDNNはNVIDIA製GPUでのみつかえる高速な機械学習向けのライブラリです。 cuDNNを使わなくてもCUDAで変換出来ますが、cuDNNを使うと以下のような利点があります。 - * GPUと分割サイズの設定によっては大きな画像を少し高速に変換することが出来る(GPUによっては(最新に近いGPUほど?)CUDAと全く差が無い) - * VRAMの使用量を減らすことが出来る(CUDAのおよそ9分の1) + * 使用するGPUと分割サイズの設定によっては画像をより高速に変換することが出来る + * VRAMの使用量を減らすことが出来る(最低でもCUDAの半分未満。分割サイズが大きくなるほど差が開いていく) このような利点があるcuDNNですが、ライセンスの関係上動作に必要なファイルを配布することが出来ません。 -なので、cuDNNを使いたい人は[こちらのページ](https://developer.nvidia.com/cuDNN)でWindows向けバイナリ(v5 RC以降)をダウンロードし、 +なので、cuDNNを使いたい人は[こちらのページ](https://developer.nvidia.com/cuDNN)でWindows向けバイナリ(v5.1 RC以降)をダウンロードし、 「cudnn64_5.dll」をwaifu2x-caffeのフォルダに入れて下さい。 なお、ソフトを起動している最中にdllを入れた場合はソフトを起動しなおしてください。 (cuDNNをダウンロードするにはNVIDIA Developerへの登録とCUDA Registered Developersへの登録が必要です。 CUDA Registered Developersはおそらく(簡単な)審査があるっぽいので登録してもすぐにcuDNNをダウンロード出来るわけではありません。) 作者の環境での処理速度、VRAM使用量の計測結果は以下の通りです。 -(処理時間は1回しか計っていないのでおまけです。VRAM使用量の方にご注目下さい) -GPU : GTX 660 -VRAM : 2GB -処理内容 : 600*600の画像でノイズ除去と拡大、JPEGノイズ除去レベル1、拡大率2.00 +GPU : GTX 980 Ti +VRAM : 6GB +処理内容 : 1000*1000のPNG 4ch画像でノイズ除去と拡大、JPEGノイズ除去レベル1、拡大率2.00、TTAモード未使用 +処理時間計測方法 : CUI版で10回の平均処理時間を計測。ただし初めに2回事前に処理を行う(初期化にかかる時間を含めないようにするため) +VRAM使用量計算方法 : (GUI版で処理中に使用した最大VRAM) - (GUI版を起動した後のVRAM使用量) -CUDA +cuDNN RGBモデル -| 分割サイズ | 処理時間 | VRAM使用量(MB) | -|:-----------|:-------------|:---------------| -| 100 | 00:00:02.590 | 373 | -| 120 | 00:00:02.500 | 529 | -| 150 | 00:00:02.733 | 816 | -| 200 | 00:00:05.110 | 1229 | +| 分割サイズ | 処理時間 | VRAM使用量(MB) | +|:-----------|:-------------|:-------------------| +| 100 | 00:00:03.170 | 278 | +| 125 | 00:00:02.745 | 279 | +| 200 | 00:00:02.253 | 365 | +| 250 | 00:00:02.147 | 446 | +| 500 | 00:00:01.982 | 1110 | -cuDNN +CUDA RGBモデル -| 分割サイズ | 処理時間 | VRAM使用量(MB) | -|:-----------|:-------------|:---------------| -| 100 | 00:00:02.532 | 42 | -| 120 | 00:00:02.423 | 58 | -| 150 | 00:00:02.343 | 87 | -| 200 | 00:00:02.331 | 149 | +| 分割サイズ | 処理時間 | VRAM使用量(MB) | +|:-----------|:-------------|:-------------------| +| 100 | 00:00:06.192 | 724 | +| 125 | 00:00:05.504 | 724 | +| 200 | 00:00:04.642 | 1556 | +| 250 | 00:00:04.436 | 2345 | +| 500 | 計測不能 | 計測不能(6144以上) | + +cuDNN UpRGBモデル + +| 分割サイズ | 処理時間 | VRAM使用量(MB) | +|:-----------|:-------------|:-------------------| +| 100 | 00:00:02.831 | 328 | +| 125 | 00:00:02.573 | 329 | +| 200 | 00:00:02.261 | 461 | +| 250 | 00:00:02.150 | 578 | +| 500 | 00:00:01.991 | 1554 | + +CUDA UpRGBモデル + +| 分割サイズ | 処理時間 | VRAM使用量(MB) | +|:-----------|:-------------|:-------------------| +| 100 | 00:00:03.669 | 788 | +| 125 | 00:00:03.382 | 787 | +| 200 | 00:00:02.965 | 1596 | +| 250 | 00:00:02.852 | 2345 | +| 500 | 計測不能 | 計測不能(6144以上) | 使い方(GUI版) @@ -154,6 +177,7 @@ cuDNN * 2次元イラスト(RGBモデル) : 画像のRGBすべてを変換する2次元イラスト用モデル * 写真・アニメ(Photoモデル) : 写真・アニメ用のモデル * 2次元イラスト(UpRGBモデル) : 2次元イラスト(RGBモデル)より高速かつ同等以上の画質で変換するモデル。ただしRGBモデルより消費するメモリ(VRAM)の量が多いので、変換中に強制終了する場合は分割サイズを調節すること + * 写真・アニメ(UpPhotoモデル) : 写真・アニメ(Photoモデル)より高速かつ同等以上の画質で変換するモデル。ただしPhotoモデルより消費するメモリ(VRAM)の量が多いので、変換中に強制終了する場合は分割サイズを調節すること * 2次元イラスト(Yモデル) : 画像の輝度のみを変換する2次元イラスト用モデル ###「TTAモードを使う」 @@ -183,7 +207,7 @@ cuDNN ###「使用プロセッサー」 変換を行うプロセッサーを指定します。 - * CUDA(使えたらcuDNN) : CUDA(GPU)を使って変換を行います(cuDNNが使えるならcuDNNが使われます) + * CUDA(使えたらcuDNN) : CUDA(GPU)を使って変換を行います(cuDNNが使える場合はcuDNNが使われます) * CPU : CPUのみを使って変換を行います ###「出力ファイルを上書きしない」 @@ -194,6 +218,9 @@ cuDNN * 起動時に変換する : 起動時に自動で変換を開始します * 成功時に終了する : 変換終了時に失敗していなければ自動で終了します +###「使用GPU No」 + GPUが複数枚ある場合に使用するデバイス番号を指定できます。CPUモード時や無効なデバイス番号を指定した場合は無視されます。 + ###「入力参照時固定フォルダ」 入力の参照ボタンを押した際に最初に表示されるフォルダをここで設定したフォルダに固定します。 @@ -344,12 +371,13 @@ GUI版ではオプション指定に当てはまらなかった引数は入力 ###--no_overwrite <0|1> `1`を指定すると、画像の書き込み先に同名のファイルが存在する場合は変換を行いません。 -###-y , --model_type +###-y , --model_type 使用するモデルを指定します。 GUIでの設定項目「モデル」と以下のように対応しています。 * anime_style_art_rgb : 2次元イラスト(RGBモデル) * photo : 写真・アニメ(Photoモデル) * upconv_7_anime_style_art_rgb : 2次元イラスト(UpRGBモデル) + * upconv_7_photo : 写真・アニメ(UpPhotoモデル) * anime_style_art_y : 2次元イラスト(Yモデル) @@ -388,10 +416,12 @@ GUI版ではオプション指定に当てはまらなかった引数は入力 基本的には指定しなくても大丈夫です。デフォルト以外のモデルや自作のモデルを使用する時などに指定して下さい。 ###--crop_w <整数> - 分割サイズ(横幅)を指定します。設定しなかった場合はcrop_sizeの値が使用されます + 分割サイズ(横幅)を指定します。設定しなかった場合はcrop_sizeの値が使用されます。 + 入力する画像の横幅の約数を指定するとより高速に変換できる可能性があります。 ###--crop_h <整数> - 分割サイズ(縦幅)を指定します。設定しなかった場合はcrop_sizeの値が使用されます + 分割サイズ(縦幅)を指定します。設定しなかった場合はcrop_sizeの値が使用されます。 + 入力する画像の縦幅の約数を指定するとより高速に変換できま可能性があります。 分割サイズ @@ -402,13 +432,13 @@ waifu2x-caffe(waifu2xもですが)は画像を変換する時、 分割サイズ(crop_size)とは、この画像を分割する際の幅(ピクセル単位)の事です。 CUDAで変換中でもGPUを使い切れていない(GPUの使用率が100%近くまでいっていない)場合、 -この数値を大きくすることで(GPUを使い切ることが出来る様になるため)処理が早く終わる可能性があります。 +この数値を大きくすることで処理が早く終わる可能性があります。(GPUを使い切ることが出来る様になるため) [GPU-Z](http://www.techpowerup.com/gpuz/)などでGPU Load(GPU使用率)とMemory Used(VRAM使用率)を見ながら調節してみて下さい。 また、以下の様な特性があるので参考にして下さい。 * 必ずしも数値が大きければ大きいほど速くなるわけでは無い * 分割サイズが画像の縦横サイズの約数(あるいは割ったときに余りが少ない数)だと、無駄に演算する量が減って速くなる。 (この条件にあまり当てはまらない数値が最速になるケースもあるらしい?) - * 数値を2倍にした場合、使用するメモリ量は4倍になる(実際は3~4倍といったところ)のでソフトが落ちないように注意。特にCUDAはcuDNNに比べてメモリの消費量がとても多いので気をつけること + * 数値を2倍にした場合、理論上は使用するメモリ量は4倍になる(実際は3~4倍といったところ)のでソフトが落ちないように注意。特にCUDAはcuDNNに比べてメモリの消費量がとても多いので気をつけること アルファチャンネル付き画像について