1
0
Fork 0
mirror of synced 2024-05-29 17:19:39 +12:00
Go to file
nagadomi a706892b59 merge develop repo
- remove support for cuDNN
- add new pre-trained model and json files
- some changes in training script

If you have cuDNN model, Please run following commands to convert.
$ cp models/your_own_model.t7 models/your_own_model.t7.backup
$ th cudnn2cunn.lua -model models/your_own_model.t7
2015-06-13 15:20:40 +09:00
appendix add cron script; fix run-web.sh 2015-05-17 07:24:24 +00:00
assets fix hit 2015-05-20 19:38:37 +09:00
cache first commit 2015-05-16 14:48:05 +09:00
data add slide and appendix 2015-05-17 03:59:49 +09:00
images merge develop repo 2015-06-13 15:20:40 +09:00
lib merge develop repo 2015-06-13 15:20:40 +09:00
models/anime_style_art merge develop repo 2015-06-13 15:20:40 +09:00
.gitignore update training script 2015-05-17 14:43:07 +09:00
cleanup_model.lua merge develop repo 2015-06-13 15:20:40 +09:00
convert_data.lua merge develop repo 2015-06-13 15:20:40 +09:00
cudnn2cunn.lua merge develop repo 2015-06-13 15:20:40 +09:00
export_model.lua merge develop repo 2015-06-13 15:20:40 +09:00
LICENSE add LICENSE and NOTICE 2015-05-17 17:26:53 +09:00
NOTICE add LICENSE and NOTICE 2015-05-17 17:26:53 +09:00
README.md merge develop repo 2015-06-13 15:20:40 +09:00
train.lua merge develop repo 2015-06-13 15:20:40 +09:00
train.sh merge develop repo 2015-06-13 15:20:40 +09:00
waifu2x.lua merge develop repo 2015-06-13 15:20:40 +09:00
web.lua merge develop repo 2015-06-13 15:20:40 +09: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

References

waifu2x is inspired by SRCNN [1]. 2D character picture (HatsuneMiku) is licensed under CC BY-NC by piapro [2].

Public AMI

(maintenance)

Dependencies

Hardware

  • NVIDIA GPU

Platform

Packages (luarocks)

Installation

Setting Up the Command Line Tool Environment

(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

Install CUDA

Google! Search keyword: "install cuda ubuntu"

Install packages

sudo luarocks install cutorch
sudo luarocks install cunn
sudo apt-get install graphicsmagick libgraphicsmagick-dev
sudo luarocks install graphicsmagick

Test the waifu2x command line tool.

th waifu2x.lua

Setting Up the Web Application Environment (if you needed)

Install luajit 2.0.4

curl -O 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
sudo luarocks install turbo

Web Application

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.

Video Encoding

* avconv is ffmpeg on Ubuntu 14.04.

Extracting images and audio from a video. (range: 00:09:00 ~ 00:12:00)

mkdir frames
avconv -i data/raw.avi -ss 00:09:00 -t 00:03:00 -r 24 -f image2 frames/%06d.png
avconv -i data/raw.avi -ss 00:09:00 -t 00:03:00 audio.mp3

Generating a image list.

find ./frames -name "*.png" |sort > data/frame.txt

waifu2x (for example, noise reduction)

mkdir new_frames
th waifu2x.lua -m noise -noise_level 1 -resume 1 -l data/frame.txt -o new_frames/%d.png

Generating a video from waifu2xed images and audio.

avconv -f image2 -r 24 -i new_frames/%d.png -i audio.mp3 -r 24 -vcodec libx264 -crf 16 video.mp4

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 with 3000 high-resolution-noise-free-PNG images.)

Converting training data.

th convert_data.lua

Training 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
th cleanup_model.lua -model models/my_model/noise1_model.t7 -oformat ascii
# 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.

Training a Noise Reduction(level2) model

th train.lua -model_dir models/my_model -method noise -noise_level 2 -test images/miku_noisy.png
th cleanup_model.lua -model models/my_model/noise2_model.t7 -oformat ascii
# 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.

Training a 2x UpScaling model

th train.lua -model_dir models/my_model -method scale -scale 2 -test images/miku_small.png
th cleanup_model.lua -model models/my_model/scale2.0x_model.t7 -oformat ascii
# 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.