2015-05-17 18:18:33 +12:00
|
|
|
# waifu2x
|
|
|
|
|
|
|
|
Image Super-Resolution for anime/fan-art using Deep Convolutional Neural Networks.
|
|
|
|
|
|
|
|
Demo-Application can be found at http://waifu2x.udp.jp/ .
|
|
|
|
|
|
|
|
## Summary
|
|
|
|
|
|
|
|
Click to see the slide show.
|
|
|
|
|
|
|
|
![slide](https://raw.githubusercontent.com/nagadomi/waifu2x/master/images/slide.png)
|
|
|
|
|
|
|
|
## References
|
|
|
|
|
|
|
|
waifu2x is inspired by SRCNN [1]. 2D character picture (HatsuneMiku) is licensed under CC BY-NC by piapro [2].
|
|
|
|
|
|
|
|
- [1] Chao Dong, Chen Change Loy, Kaiming He, Xiaoou Tang, "Image Super-Resolution Using Deep Convolutional Networks", http://arxiv.org/abs/1501.00092
|
|
|
|
- [2] "For Creators", http://piapro.net/en_for_creators.html
|
|
|
|
|
2015-05-19 11:14:08 +12:00
|
|
|
## Public AMI
|
|
|
|
```
|
|
|
|
AMI name: waifu2x server
|
|
|
|
AMI ID: ami-75f01931
|
|
|
|
Region: N. California
|
|
|
|
Instance: g2.2xlarge (require a GPU)
|
|
|
|
OS: Ubuntu 14.04
|
|
|
|
User: ubuntu
|
|
|
|
```
|
2015-05-17 18:18:33 +12:00
|
|
|
## Dependencies
|
|
|
|
|
2015-05-21 12:45:51 +12:00
|
|
|
### Hardware
|
|
|
|
- NVIDIA GPU (Compute Capability 3.0 or later)
|
|
|
|
|
2015-05-17 18:18:33 +12:00
|
|
|
### Platform
|
|
|
|
- [Torch7](http://torch.ch/)
|
|
|
|
- [NVIDIA CUDA](https://developer.nvidia.com/cuda-toolkit)
|
|
|
|
- [NVIDIA cuDNN](https://developer.nvidia.com/cuDNN)
|
|
|
|
|
|
|
|
### Packages (luarocks)
|
2015-05-19 11:14:08 +12:00
|
|
|
- cutorch
|
|
|
|
- cunn
|
2015-05-17 18:18:33 +12:00
|
|
|
- [cudnn](https://github.com/soumith/cudnn.torch)
|
|
|
|
- [graphicsmagick](https://github.com/clementfarabet/graphicsmagick)
|
|
|
|
- [turbo](https://github.com/kernelsauce/turbo)
|
|
|
|
- md5
|
|
|
|
- uuid
|
|
|
|
|
|
|
|
NOTE: Turbo 1.1.3 has bug in file uploading. Please install from the master branch on github.
|
|
|
|
|
2015-05-21 12:45:51 +12:00
|
|
|
## Installation
|
|
|
|
|
2015-05-21 12:49:59 +12:00
|
|
|
### Setting Up the Command Line Tool Environment
|
2015-05-21 12:45:51 +12:00
|
|
|
(on Ubuntu 14.04)
|
|
|
|
|
|
|
|
#### Install Torch7
|
|
|
|
|
|
|
|
```
|
|
|
|
sudo apt-get install curl
|
|
|
|
curl -s https://raw.githubusercontent.com/torch/ezinstall/master/install-all | sudo bash
|
|
|
|
```
|
|
|
|
see [Torch (easy) install](https://github.com/torch/ezinstall)
|
|
|
|
|
|
|
|
#### Install CUDA and cuDNN.
|
|
|
|
|
|
|
|
Google! Search keyword is "install cuda ubuntu" and "install cudnn ubuntu"
|
|
|
|
|
|
|
|
#### Install packages
|
|
|
|
|
|
|
|
```
|
|
|
|
sudo luarocks install cutorch
|
|
|
|
sudo luarocks install cunn
|
|
|
|
sudo luarocks install cudnn
|
2015-05-21 12:56:50 +12:00
|
|
|
sudo apt-get install graphicsmagick libgraphicsmagick-dev
|
2015-05-21 12:45:51 +12:00
|
|
|
sudo luarocks install graphicsmagick
|
|
|
|
```
|
|
|
|
|
|
|
|
Test the waifu2x command line tool.
|
|
|
|
```
|
|
|
|
th waifu2x.lua
|
|
|
|
```
|
|
|
|
|
2015-05-21 12:49:59 +12:00
|
|
|
### Setting Up the Web Application Environment (if you needed)
|
2015-05-21 12:45:51 +12:00
|
|
|
|
|
|
|
#### Install luajit 2.0.4
|
|
|
|
|
|
|
|
```
|
|
|
|
curl http://luajit.org/download/LuaJIT-2.0.4.tar.gz
|
|
|
|
tar -xzvf LuaJIT-2.0.4.tar.gz
|
|
|
|
cd LuaJIT-2.0.4
|
|
|
|
make
|
|
|
|
sudo make install
|
|
|
|
```
|
|
|
|
|
|
|
|
#### Install packages
|
|
|
|
|
|
|
|
Install luarocks packages.
|
|
|
|
```
|
|
|
|
sudo luarocks install md5
|
|
|
|
sudo luarocks install uuid
|
|
|
|
```
|
|
|
|
|
|
|
|
Install turbo.
|
|
|
|
```
|
|
|
|
git clone https://github.com/kernelsauce/turbo.git
|
|
|
|
cd turbo
|
|
|
|
sudo luarocks make rockspecs/turbo-dev-1.rockspec
|
|
|
|
```
|
|
|
|
|
2015-05-19 11:14:08 +12:00
|
|
|
## Web Application
|
2015-05-17 18:18:33 +12:00
|
|
|
|
|
|
|
Please edit the first line in `web.lua`.
|
|
|
|
```
|
|
|
|
local ROOT = '/path/to/waifu2x/dir'
|
|
|
|
```
|
|
|
|
Run.
|
|
|
|
```
|
|
|
|
th web.lua
|
|
|
|
```
|
|
|
|
|
|
|
|
View at: http://localhost:8812/
|
|
|
|
|
|
|
|
## Command line tools
|
|
|
|
|
|
|
|
### 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 2 -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 2 -i input_image.png -o output_image.png
|
|
|
|
```
|
|
|
|
|
|
|
|
See also `images/gen.sh`.
|
|
|
|
|
|
|
|
## Training Your Own Model
|
|
|
|
|
|
|
|
### Data Preparation
|
|
|
|
|
|
|
|
Genrating a file list.
|
|
|
|
```
|
|
|
|
find /path/to/image/dir -name "*.png" > data/image_list.txt
|
|
|
|
```
|
|
|
|
(You should use PNG! In my case, waifu2x is trained by 3000 PNG images.)
|
|
|
|
|
|
|
|
Converting training data.
|
|
|
|
```
|
|
|
|
th convert_data.lua
|
|
|
|
```
|
|
|
|
|
|
|
|
### Training a Noise Reduction(level1) model
|
|
|
|
|
|
|
|
```
|
|
|
|
th train.lua -method noise -noise_level 1 -test images/miku_noise.png
|
|
|
|
th cleanup_model.lua -model models/noise1_model.t7 -oformat ascii
|
|
|
|
```
|
|
|
|
You can check the performance of model with `models/noise1_best.png`.
|
|
|
|
|
|
|
|
### Training a Noise Reduction(level2) model
|
|
|
|
|
|
|
|
```
|
|
|
|
th train.lua -method noise -noise_level 2 -test images/miku_noise.png
|
|
|
|
th cleanup_model.lua -model models/noise2_model.t7 -oformat ascii
|
|
|
|
```
|
|
|
|
You can check the performance of model with `models/noise2_best.png`.
|
|
|
|
|
2015-05-19 11:14:08 +12:00
|
|
|
### Training a 2x UPscaling model
|
2015-05-17 18:18:33 +12:00
|
|
|
|
|
|
|
```
|
|
|
|
th train.lua -method scale -scale 2 -test images/miku_small.png
|
|
|
|
th cleanup_model.lua -model models/scale2.0x_model.t7 -oformat ascii
|
|
|
|
```
|
|
|
|
You can check the performance of model with `models/scale2.0x_best.png`.
|