This commit is contained in:
lltcggie 2015-06-08 03:35:07 +09:00
commit beb64222c8

113
README.md
View File

@ -2,6 +2,7 @@
本ソフトは、画像変換ソフトウェア「[waifu2x](https://github.com/nagadomi/waifu2x)」の変換機能のみを、 本ソフトは、画像変換ソフトウェア「[waifu2x](https://github.com/nagadomi/waifu2x)」の変換機能のみを、
[Caffe](http://caffe.berkeleyvision.org/)を用いて書き直したソフトです。 [Caffe](http://caffe.berkeleyvision.org/)を用いて書き直したソフトです。
CPUで変換することも出来ますが、CUDA(あるいはcuDNN)を使うとCPUより高速に変換することが出来ます。
要求環境 要求環境
@ -28,53 +29,94 @@ cuDNNで変換する場合はさらに
-------- --------
cuDNNはNVIDIA製GPUでのみつかえる高速な機械学習向けのライブラリです。 cuDNNはNVIDIA製GPUでのみつかえる高速な機械学習向けのライブラリです。
cuDNNを使うと使わない場合に比べて大きな画像を高速に変換することが出来ますが(cuDNNを使わなくてもGPUで変換出来ます)、 cuDNNを使わなくてもCUDAで変換出来ますが、cuDNNを使うと以下のような利点があります。
ライセンスの関係上動作に必要なファイルを配布することが出来ません。
なので、cuDNNを使いたい人は[こちらのページ](https://developer.nvidia.com/cuDNN)でWindows向けバイナリをダウンロードし、 * GPUと分割サイズの設定によっては大きな画像を少し高速に変換することが出来る(GPUによっては(最新に近いGPUほど)CUDAと全く差が無い)
* VRAMの使用量を減らすことが出来る(CUDAのおよそ9分の1)
このような利点があるcuDNNですが、ライセンスの関係上動作に必要なファイルを配布することが出来ません。
なので、cuDNNを使いたい人は[こちらのページ](https://developer.nvidia.com/cuDNN)でWindows向けバイナリ(v2以降)をダウンロードし、
「cudnn64_65.dll」をwaifu2x-caffeのフォルダに入れて下さい。 「cudnn64_65.dll」をwaifu2x-caffeのフォルダに入れて下さい。
(cuDNNをダウンロードするにはNVIDIA Developerへの登録とCUDA Registered Developersへの登録が必要です。 (cuDNNをダウンロードするにはNVIDIA Developerへの登録とCUDA Registered Developersへの登録が必要です。
CUDA Registered Developersはおそらく(簡単な)審査があるっぽいので登録してもすぐにcuDNNをダウンロード出来るわけではありません。) CUDA Registered Developersはおそらく(簡単な)審査があるっぽいので登録してもすぐにcuDNNをダウンロード出来るわけではありません。)
作者の環境での処理速度、VRAM使用量の計測結果は以下の通りです。
(処理時間は1回しか計っていないのでおまけです。VRAM使用量の方にご注目下さい)
使い方 GPU : GTX 660
VRAM : 2GB
処理内容 : 600*600の画像でイズ除去と拡大、JPEGイズ除去レベル1、拡大率2.00
CUDA
| 分割サイズ | 処理時間 | 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 |
cuDNN
| 分割サイズ | 処理時間 | 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 |
使い方(GUI版)
-------- --------
「waifu2x-caffe.exe」はGUIソフトです。ダブルクリックで起動します。 「waifu2x-caffe.exe」はGUIソフトです。ダブルクリックで起動します。
「入力」欄に画像かフォルダをドラッグ&ドロップで放り込むと「出力」欄が自動で設定されます。 「入力パス」欄に画像かフォルダをドラッグ&ドロップで放り込むと「出力パス」欄が自動で設定されます。
出力先を変えたい場合は「出力」欄を変更して下さい。 出力先を変えたい場合は「出力パス」欄を変更して下さい。
好みに合わせて変換設定を変更することが出来ます。 好みに合わせて変換設定を変更することが出来ます。
「変換モード」
###「変換モード」
変換モードを指定します。 変換モードを指定します。
* ノイズ除去 : ノイズ除去を行います * ノイズ除去 : ノイズ除去を行います
* 拡大 : 拡大を行います * 拡大 : 拡大を行います
* ノイズ除去と拡大 : ノイズ除去と拡大を行います * ノイズ除去と拡大 : ノイズ除去と拡大を行います
* ノイズ除去(自動判別)と拡大 : 拡大を行います。入力がJPEG画像の場合のみイズ除去も行います * ノイズ除去(自動判別)と拡大 : 拡大を行います。入力がJPEG画像の場合のみイズ除去も行います
「JPEGイズ除去レベル」
###「JPEGイズ除去レベル」
ノイズ除去レベルを指定します。 ノイズ除去レベルを指定します。
「拡大率」 ###「拡大率」
拡大率を指定します 拡大率を指定します
「出力拡張子」 ###「出力拡張子」
出力拡張子を指定します 出力拡張子を指定します
「プロセッサー」 ###「プロセッサー」
変換を行うプロセッサーを指定します 変換を行うプロセッサーを指定します
* CPU : CPUのみを使って変換を行います * CPU : CPUのみを使って変換を行います
* GPU(使えたらcuDNN) : GPUを使って変換を行います(cuDNNが使えるならcuDNNが使われます) * CUDA(使えたらcuDNN) : CUDA(GPU)を使って変換を行います(cuDNNが使えるならcuDNNが使われます)
###「分割サイズ」
内部で分割して処理を行う際の幅(ピクセル単位)を指定します。
最適な(処理が最速で終わる)数値の決め方は「分割サイズ」の項で説明します。
「-------」で区切られている上の方は入力された画像の縦横サイズの約数、
下の方は「crop_size_list.txt」から読み出した汎用的な分割サイズです。
同じ画像サイズの画像をフォルダ指定で大量に変換するときは、最適な分割サイズを調べてから変換することをおすすめします。
「cuDNNチェック」ボタンを押すとcuDNNが使えるか調べることが出来ます。 「cuDNNチェック」ボタンを押すとcuDNNが使えるか調べることが出来ます。
が、cuDNNが動く環境でしか動かしていないためうまくチェック出来るかは不明です。 cuDNNが使えない場合は理由が表示されます。
「実行」ボタンを押すと変換が始まります。 「実行」ボタンを押すと変換が始まります。
途中でキャンセルしたい場合は「キャンセル」ボタンを押します。 途中でキャンセルしたい場合は「キャンセル」ボタンを押します。
ただし、実際に停止するまでタイムラグがあります。 ただし、実際に停止するまでタイムラグがあります。
使い方(CUI版)
--------
「waifu2x-caffe-cui.exe」はコマンドラインツールです。 「waifu2x-caffe-cui.exe」はコマンドラインツールです。
`コマンドプロンプト` を立ち上げ、次のようにコマンドを打ち込み、使用して下さい。 `コマンドプロンプト` を立ち上げ、次のようにコマンドを打ち込み、使用して下さい。
@ -86,7 +128,7 @@ waifu2x-caffe-cui.exe --help
以下のコマンドは、画像変換を実行するコマンドの例です。 以下のコマンドは、画像変換を実行するコマンドの例です。
``` ```
waifu2x-caffe-cui.exe -i mywaifu.png -m noise_scale -j 8 --scale_ratio 1.6 --noise_level 2 waifu2x-caffe-cui.exe -i mywaifu.png -m noise_scale --scale_ratio 1.6 --noise_level 2
``` ```
以上を実行すると、`mywaifu(noise_scale)(Level2)(x1.600000).png`に変換結果が保存されます。 以上を実行すると、`mywaifu(noise_scale)(Level2)(x1.600000).png`に変換結果が保存されます。
@ -107,7 +149,6 @@ waifu2x-caffe-cui.exe -i mywaifu.png -m noise_scale -j 8 --scale_ratio 1.6 --noi
のようになっています。 のようになっています。
保存される場所は、基本的には入力画像と同じディレクトリになります。 保存される場所は、基本的には入力画像と同じディレクトリになります。
-l <文字列>, --input_extention_list <文字列> -l <文字列>, --input_extention_list <文字列>
input_fileがフォルダの場合の、フォルダ内の変換する画像の拡張子を指定します。 input_fileがフォルダの場合の、フォルダ内の変換する画像の拡張子を指定します。
デフォルト値は`png:jpg:bmp`です。 デフォルト値は`png:jpg:bmp`です。
@ -140,6 +181,21 @@ waifu2x-caffe-cui.exe -i mywaifu.png -m noise_scale -j 8 --scale_ratio 1.6 --noi
モデルが格納されているディレクトリへのパスを指定します。デフォルト値は`models`です。 モデルが格納されているディレクトリへのパスを指定します。デフォルト値は`models`です。
基本的には指定しなくても大丈夫です。独自のモデルを使用する時などに指定して下さい。 基本的には指定しなくても大丈夫です。独自のモデルを使用する時などに指定して下さい。
-p <cpu|gpu|cudnn>, --process <cpu|gpu|cudnn>
処理に使うプロセッサーを指定します。デフォルト値は`gpu`です。
* cpu : CPUを使って変換を行います。
* gpu : CUDA(GPU)を使って変換を行います。Windows版でのみ、cuDNNが使えるならcuDNNを使います。
* cudnn : cuDNNを使って変換を行います。
-c <整数>, --crop_size <整数>
分割サイズを指定します。デフォルト値は`128`です。
-b <整数>, --batch_size <整数>
mini-batchサイズを指定します。デフォルト値は`1`です。
mini-batchサイズは画像を「分割サイズ」で分割したブロックを同時に処理する数のことです。例えば`2`を指定した場合、2ブロックずつ変換していきます。
mini-batchサイズを大きくすると分割サイズを大きくするとの同様にGPUの使用率が高くなりますが、計測した感じだと分割サイズを大きくした方が効果が高いです。
(例えば分割サイズを`64`、mini-batchサイズを`4`にするより、分割サイズを`128`、mini-batchサイズを`1`にした方が処理が速く終わる)
--, --ignore_rest --, --ignore_rest
このオプションが指定された後の全てのオプションを無視します。 このオプションが指定された後の全てのオプションを無視します。
スクリプト・バッチファイル用です。 スクリプト・バッチファイル用です。
@ -152,7 +208,24 @@ waifu2x-caffe-cui.exe -i mywaifu.png -m noise_scale -j 8 --scale_ratio 1.6 --noi
手軽に使い方を確認したい時などにどうぞ。 手軽に使い方を確認したい時などにどうぞ。
おことわり 分割サイズ
--------
waifu2x-caffe(waifu2xもですが)は画像を変換する時、
画像を一定のサイズ毎に分割して一つずつ変換を行い、最後に結合して一枚の画像に戻す、という処理をしています。
分割サイズ(crop_size)とは、この画像を分割する際の幅(ピクセル単位)の事です。
CUDAで変換中でもGPUを使い切れていないGPUの使用率が100%近くまでいっていない)場合、
この数値を大きくすることでGPUを使い切ることが出来る様になるため処理が早く終わる可能性があります。
[GPU-Z](http://www.techpowerup.com/gpuz/)などでGPU Load(GPU使用率)とMemory Used(VRAM使用率)を見ながら調節してみて下さい。
また、以下の様な特性があるので参考にして下さい。
* 数値が大きければ大きいほど速くなるわけでは無い
* 分割サイズが画像の縦横サイズの約数(あるいは割ったときに余りが少ない数)だと、無駄に演算する量が減って速くなる。 (この条件にあまり当てはまらない数値が最速になるケースもあるらしい?)
* 数値を2倍にした場合、使用するメモリ量は4倍になる(実際は34倍といったところ)のでソフトが落ちないように注意。特にCUDAはcuDNNに比べてメモリの消費量がとても多いので気をつけること
おことわり
------------ ------------
本ソフトは無保証です。 本ソフトは無保証です。
@ -162,6 +235,6 @@ waifu2x-caffe-cui.exe -i mywaifu.png -m noise_scale -j 8 --scale_ratio 1.6 --noi
謝辞 謝辞
------ ------
オリジナルのwaifu2x、及びモデルの制作を行い、MITライセンスの下で公開して下さった ultraistさん、 オリジナルの[waifu2x](https://github.com/nagadomi/waifu2x)、及びモデルの制作を行い、MITライセンスの下で公開して下さった [ultraist](https://twitter.com/ultraistter)さん、
オリジナルのwaifu2xを元にwaifu2x-converterを作成して下さった アミーゴさん(READMEやLICENSE.txtの書き方、OpenCVの使い方等かなり参考にさせていただきました) オリジナルのwaifu2xを元に[waifu2x-converter](https://github.com/WL-Amigo/waifu2x-converter-cpp)を作成して下さった [アミーゴ](https://twitter.com/WL_Amigo)さん(READMEやLICENSE.txtの書き方、OpenCVの使い方等かなり参考にさせていただきました)
に、感謝します。 に、感謝します。