UNPKG

arch-wiki-md-repo

Version:

All arch-wiki articles in markdown format, updated every two days.

240 lines (154 loc) 8.54 kB
This article covers installing, using and training [waifu2x](https://github.com/nagadomi/waifu2x), image super-resolution for anime-style art using deep convolutional neural networks. ## Contents * [1 Installation](#Installation) * [2 Usage](#Usage) * [2.1 Upscaling](#Upscaling) * [2.2 Noise Reduction](#Noise_Reduction) * [2.3 Upscaling & Noise Reduction](#Upscaling_.26_Noise_Reduction) * [3 Training](#Training) * [3.1 Dependencies](#Dependencies) * [3.2 waifu2x source](#waifu2x_source) * [3.3 Command line tools](#Command_line_tools) * [3.3.1 Noise Reduction](#Noise_Reduction_2) * [3.3.2 2x Upscaling](#2x_Upscaling) * [3.3.3 Noise Reduction + 2x Upscaling](#Noise_Reduction_.2B_2x_Upscaling) * [3.4 Train your own models](#Train_your_own_models) * [3.4.1 Data Preparation](#Data_Preparation) * [3.4.2 Train a Noise Reduction(level1) model](#Train_a_Noise_Reduction.28level1.29_model) * [3.4.3 Train a Noise Reduction(level2) model](#Train_a_Noise_Reduction.28level2.29_model) * [3.4.4 Train a 2x UpScaling model](#Train_a_2x_UpScaling_model) * [3.4.5 Train a 2x and noise reduction fusion model](#Train_a_2x_and_noise_reduction_fusion_model) * [4 Docker](#Docker) * [5 See also](#See_also) ## Installation To directly use waifu2x, install [waifu2x-git](https://aur.archlinux.org/packages/waifu2x-git/) pakage. There are other alternates for using waifu2x, just search `waifu2x` in AUR. **Tip:** If you have an NVIDIA GPU, you can install [cuda](https://www.archlinux.org/packages/?name=cuda) to significantly speed up the conversion process. ## Usage waifu2x is avaliable with command `waifu2x`. For detailed options, run `waifu2x --help` ### Upscaling Use `--scale_ratio` parameter to specify scale ratio you want. And `-i` with input file name, `-o` with output file name: ``` waifu2x --scale_ratio 2 -i my_waifu.png -o 2x_my_waifu.png ``` ### Noise Reduction Use `--noise_level` parameter(`1` or `2`) to specify noise reduction level: ``` waifu2x --noise_level 1 -i my_waifu.png -o lucid_my_waifu.png ``` And you can use `--jobs` to specify number of threads launching at same time, benifit for multi-core CPU : ``` waifu2x --jobs 4 --noise_level 1 -i my_waifu.png -o lucid_my_waifu.png ``` ### Upscaling & Noise Reduction `--scale_ratio` and `--noise_level` can be combined, so you can: ``` waifu2x --scale_ratio 2 --noise_level 1 -i my_waifu.png -o 2x_lucid_my_waifu.png ``` **Tip:** If you are finding a batch operation interface, you can have a look at this [waifu2x wrapper script](https://gist.github.com/frantic1048/0970e86c4304b322270edc0ab36dd6a8) ## Training To train custom models, **an NVIDIA graphical card is required** because waifu2x uses [CUDA](https://developer.nvidia.com/cuda-zone) for computing. Then you need to prepare below develop dependencies and waifu2x source. ### Dependencies Install: * [lua51](https://www.archlinux.org/packages/?name=lua51) * [cuda](https://www.archlinux.org/packages/?name=cuda) * [snappy](https://www.archlinux.org/packages/?name=snappy) * [graphicsmagick](https://www.archlinux.org/packages/?name=graphicsmagick) * [torch7-git](https://aur.archlinux.org/packages/torch7-git/) * [torch7-trepl-git](https://aur.archlinux.org/packages/torch7-trepl-git/) * [torch7-sys-git](https://aur.archlinux.org/packages/torch7-sys-git/) * [torch7-cutorch-git](https://aur.archlinux.org/packages/torch7-cutorch-git/) * [torch7-nn-git](https://aur.archlinux.org/packages/torch7-nn-git/) * [torch7-cunn-git](https://aur.archlinux.org/packages/torch7-cunn-git/) * [torch7-image-git](https://aur.archlinux.org/packages/torch7-image-git/) * [torch7-xlua-git](https://aur.archlinux.org/packages/torch7-xlua-git/) * [torch7-dok-git](https://aur.archlinux.org/packages/torch7-dok-git/) * [torch7-optim-git](https://aur.archlinux.org/packages/torch7-optim-git/) * [lua51-graphicsmagick-git](https://aur.archlinux.org/packages/lua51-graphicsmagick-git/) * [lua51-cjson](https://aur.archlinux.org/packages/lua51-cjson/) * [lua51-csvigo-git](https://aur.archlinux.org/packages/lua51-csvigo-git/) * [lua51-snappy-git](https://aur.archlinux.org/packages/lua51-snappy-git/) It is recommended to install below *optional* [cuDNN](https://developer.nvidia.com/cudnn) library and bindings package. With them you can enable cuDNN backend for training, which have a significant speed up. You need to manually downlaod a cudnn binary pack from [NVIDIA cuDNN site](https://developer.nvidia.com/cudnn) during installing [cudnn](https://www.archlinux.org/packages/?name=cudnn). * (optional)[cudnn](https://www.archlinux.org/packages/?name=cudnn) * (optional)[torch7-cudnn-git](https://aur.archlinux.org/packages/torch7-cudnn-git/): ### waifu2x source Fetch waifu2x source code from GitHub: ``` git clone --depth 1 https://github.com/nagadomi/waifu2x.git ``` Enter source directory. Now you can test waifu2x command line tool: ``` th waifu2x.lua ``` ### Command line tools **Note:** If you have installed cuDNN library, you can use cuDNN with `-force_cudnn 1` option. cuDNN is too much faster than default kernel. #### Noise Reduction ``` th waifu2x.lua -m noise -noise_level 1 -i input_image.png -o output_image.png ``` ``` th waifu2x.lua -m noise -noise_level 0 -i input_image.png -o output_image.png th waifu2x.lua -m noise -noise_level 2 -i input_image.png -o output_image.png th waifu2x.lua -m noise -noise_level 3 -i input_image.png -o output_image.png ``` #### 2x Upscaling ``` th waifu2x.lua -m scale -i input_image.png -o output_image.png ``` #### Noise Reduction + 2x Upscaling ``` th waifu2x.lua -m noise_scale -noise_level 1 -i input_image.png -o output_image.png ``` ``` th waifu2x.lua -m noise_scale -noise_level 0 -i input_image.png -o output_image.png th waifu2x.lua -m noise_scale -noise_level 2 -i input_image.png -o output_image.png th waifu2x.lua -m noise_scale -noise_level 3 -i input_image.png -o output_image.png ``` For more, see [waifu2x#command-line-tools](https://github.com/nagadomi/waifu2x#command-line-tools). ### Train your own models **Note:** If you have installed cuDNN library, you can use cuDNN kernel with `-backend cudnn` option. And, you can convert trained cudnn model to cunn model with `tools/rebuild.lua`. **Note:** The command that was used to train for waifu2x's pretraind models is available at `appendix/train_upconv_7_art.sh`, `appendix/train_upconv_7_photo.sh`. Maybe it is helpful. #### Data Preparation Genrating a file list. ``` find /path/to/image/dir -name "*.png" > data/image_list.txt ``` **Note:** You should use noise free images. Converting training data: ``` th convert_data.lua ``` #### Train a Noise Reduction(level1) model ``` mkdir models/my_model th train.lua -model_dir models/my_model -method noise -noise_level 1 -test images/miku_noisy.png # usage th waifu2x.lua -model_dir models/my_model -m noise -noise_level 1 -i images/miku_noisy.png -o output.png ``` You can check the performance of model with `models/my_model/noise1_best.png`. #### Train a Noise Reduction(level2) model ``` th train.lua -model_dir models/my_model -method noise -noise_level 2 -test images/miku_noisy.png # usage th waifu2x.lua -model_dir models/my_model -m noise -noise_level 2 -i images/miku_noisy.png -o output.png ``` You can check the performance of model with `models/my_model/noise2_best.png`. #### Train a 2x UpScaling model ``` th train.lua -model upconv_7 -model_dir models/my_model -method scale -scale 2 -test images/miku_small.png # usage th waifu2x.lua -model_dir models/my_model -m scale -scale 2 -i images/miku_small.png -o output.png ``` You can check the performance of model with `models/my_model/scale2.0x_best.png`. #### Train a 2x and noise reduction fusion model ``` th train.lua -model upconv_7 -model_dir models/my_model -method noise_scale -scale 2 -noise_level 1 -test images/miku_small.png # usage th waifu2x.lua -model_dir models/my_model -m noise_scale -scale 2 -noise_level 1 -i images/miku_small.png -o output.png ``` You can check the performance of model with `models/my_model/noise1_scale2.0x_best.png`. For latest information, see [waifu2x#train-your-own-model](https://github.com/nagadomi/waifu2x#train-your-own-model). ## Docker See [waifu2x#docker](https://github.com/nagadomi/waifu2x#docker). ## See also * [waifu2x GitHub repository](https://github.com/nagadomi/waifu2x)