waifu2x README

The project's README from github.com/nagadomi/waifu2x. As one markdown file: README.md.

waifu2x

Image Super-Resolution for Anime-style art using Deep Convolutional Neural Networks. And it supports photo.

The demo application can be found at https://waifu2x.udp.jp/ (Cloud version), https://unlimited.waifu2x.net/ (In-Browser version).

2023/02 PyTorch version

nunif

waifu2x development has already been moved to the repository above.

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

TODO

Third Party Software

Third-Party

If you are a windows user, I recommend you to use waifu2x-caffe(Just download from releases tab), waifu2x-ncnn-vulkan or waifu2x-conver-cpp.

Dependencies

Hardware

Platform

LuaRocks packages (excludes torch7's default packages)

Installation

Setting Up the Command Line Tool Environment

(on Ubuntu 16.04)

Install CUDA

See: NVIDIA CUDA Getting Started Guide for Linux

Download CUDA

sudo dpkg -i cuda-repo-ubuntu1404_7.5-18_amd64.deb
sudo apt-get update
sudo apt-get install cuda

Install Package

sudo apt-get install libsnappy-dev
sudo apt-get install libgraphicsmagick1-dev
sudo apt-get install libssl1.0-dev # for web server

Note: waifu2x requires little-cms2 linked graphicsmagick. if you use macOS/homebrew, See #174.

Install Torch7

See: Getting started with Torch.

Getting waifu2x

git clone --depth 1 https://github.com/nagadomi/waifu2x.git

and install lua modules.

cd waifu2x
./install_lua_modules.sh

Validation

Testing the waifu2x command line tool.

th waifu2x.lua

Web Application

th web.lua

View at: http://localhost:8812/

Command line tools

Notes: If you have cuDNN library, than you can use cuDNN with -force_cudnn 1 option. cuDNN is too much faster than default kernel. If you got GPU out of memory error, you can avoid it with -crop_size option (e.g. -crop_size 128).

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

Batch conversion

find /path/to/imagedir -name "*.png" -o -name "*.jpg" > image_list.txt
th waifu2x.lua -m scale -l ./image_list.txt -o /path/to/outputdir/prefix_%d.png

The output format supports %s and %d(e.g. %06d). %s will be replaced the basename of the source filename. %d will be replaced a sequence number. For example, when input filename is piyo.png, %s_%03d.png will be replaced piyo_001.png.

See also th waifu2x.lua -h.

Using photo model

Please add -model_dir models/photo to command line option, if you want to use photo model. For example,

th waifu2x.lua -model_dir models/photo -m scale -i input_image.png -o output_image.png

Video Encoding

* avconv is alias of 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 -framerate 24 -i new_frames/%d.png -i audio.mp3 -r 24 -vcodec libx264 -crf 16 video.mp4

Train Your Own Model

Note1: If you have 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.

Note2: The command that was used to train for waifu2x's pretrained 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

You should use noise free images. In my case, waifu2x is trained with 6000 high-resolution-noise-free-PNG 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.

Docker

( Docker image is available at https://hub.docker.com/r/nagadomi/waifu2x )

Requires nvidia-docker.

docker build -t waifu2x .
docker run --gpus all -p 8812:8812 waifu2x th web.lua
docker run --gpus all -v `pwd`/images:/images waifu2x th waifu2x.lua -force_cudnn 1 -m scale -scale 2 -i /images/miku_small.png -o /images/output.png

Note that running waifu2x in without JIT caching is very slow, which is what would happen if you use docker. For a workaround, you can mount a host volume to the CUDA_CACHE_PATH, for instance,

docker run --gpus all -v $PWD/ComputeCache:/root/.nv/ComputeCache waifu2x th waifu2x.lua --help

waifu2x (nagadomi/waifu2x)

Searching Database…

28.2K ·GitHub
这是什么?waifu2x 是一个命令行工具,用深度卷积神经网络把动漫风格的图片放大 2 倍并去除噪点——它还提供了专门的模型来处理照片。
它是图形界面程序,还是要在终端里运行的?它是一个基于 Torch7 的命令行工具——你用 'th waifu2x.lua' 来运行,可以加上 -cropsize 或 -modeldir 这样的选项。如果你只是想试试效果,README 里提供了云端和浏览器内在线演示版的链接。
在 Linux 上怎么把它跑起来?README 里以 Ubuntu 16.04 为例讲了完整的安装流程:先安装 NVIDIA CUDA,再安装 Torch7 和 LuaRocks 软件包(lua-csnappy、md5、uuid、csvigo、turbo),克隆仓库,然后运行一个验证测试。
对显卡有要求吗?有——硬件要求里写明需要一块支持 CUDA 的 NVIDIA 显卡。装上 cuDNN 库之后可以加 -forcecudnn 1 获得大幅提速;如果遇到显存不足(out-of-memory)的报错,可以用 -cropsize(比如 128)来缓解。
它能在 Windows 上直接运行吗?不能——作者让 Windows 用户改用现成的替代品:waifu2x-caffe(在其 releases 标签页下载)、waifu2x-ncnn-vulkan 或 waifu2x-convert-cpp。
它到底能对图片做什么?有三种模式:降噪、2 倍放大,或者两者同时进行,另外还支持批量转换,输出文件名里的 %s 和 %d 会分别替换成源文件名(不含扩展名)和一个序号。
它能处理真实照片,而不只是动漫图吗?可以——在命令里加上 -modeldir models/photo,切换到照片模型即可。
它能放大视频吗?一条命令做不到,但 README 里给出了一套 ffmpeg 工作流:先用 ffmpeg 把视频拆成帧和音频,对图片逐张跑 waifu2x,再用放大后的帧和音频重新合成视频。
我能训练自己的模型吗?可以——仓库里自带训练脚本(appendix/trainupconv7art.sh 和 trainupconv7photo.sh),可以分别训练降噪模型和 2 倍放大模型。作者大约用了 6,000 张高分辨率、无噪点的 PNG 图片来训练。
有 Docker 镜像吗?有,但需要 nvidia-docker,而且不开 JIT 缓存的话运行会非常慢——解决办法是把宿主机上的一个目录挂载到 CUDA 缓存路径。
这个仓库还在开发吗?基本不算了——截至 2023 年 2 月,开发已经转移到基于 PyTorch 的 'nunif' 仓库,这个 Torch7 版本实际上处于维护状态。
Creator
nagadomi
Size
692.9 MB
Stars
28.2K
Age
11y
Commits · 90 Days