Home

Awesome

waifu2x ncnn Vulkan

CI download

ncnn implementation of waifu2x converter. Runs fast on Intel / AMD / Nvidia / Apple-Silicon with Vulkan API.

waifu2x-ncnn-vulkan uses ncnn project as the universal neural network inference framework.

Download

Download Windows/Linux/MacOS Executable for Intel/AMD/Nvidia GPU

https://github.com/nihui/waifu2x-ncnn-vulkan/releases

This package includes all the binaries and models required. It is portable, so no CUDA or Caffe runtime environment is needed :)

Usages

Example Command

waifu2x-ncnn-vulkan.exe -i input.jpg -o output.png -n 2 -s 2

Full Usages

Usage: waifu2x-ncnn-vulkan -i infile -o outfile [options]...

  -h                   show this help
  -v                   verbose output
  -i input-path        input image path (jpg/png/webp) or directory
  -o output-path       output image path (jpg/png/webp) or directory
  -n noise-level       denoise level (-1/0/1/2/3, default=0)
  -s scale             upscale ratio (1/2/4/8/16/32, default=2)
  -t tile-size         tile size (>=32/0=auto, default=0) can be 0,0,0 for multi-gpu
  -m model-path        waifu2x model path (default=models-cunet)
  -g gpu-id            gpu device to use (-1=cpu, default=auto) can be 0,1,2 for multi-gpu
  -j load:proc:save    thread count for load/proc/save (default=1:2:2) can be 1:2,2,2:2 for multi-gpu
  -x                   enable tta mode
  -f format            output image format (jpg/png/webp, default=ext/png)

If you encounter a crash or error, try upgrading your GPU driver:

Build from Source

  1. Download and setup the Vulkan SDK from https://vulkan.lunarg.com/
dnf install vulkan-headers vulkan-loader-devel
apt-get install libvulkan-dev
pacman -S vulkan-headers vulkan-icd-loader
  1. Clone this project with all submodules
git clone https://github.com/nihui/waifu2x-ncnn-vulkan.git
cd waifu2x-ncnn-vulkan
git submodule update --init --recursive
  1. Build with CMake
mkdir build
cd build
cmake ../src
cmake --build . -j 4

Speed Comparison with waifu2x-caffe-cui

Environment

Measure-Command { waifu2x-ncnn-vulkan.exe -i input.png -o output.png -n 2 -s 2 -t [block size] -m [model dir] }
Measure-Command { waifu2x-caffe-cui.exe -t 0 --gpu 0 -b 1 -c [block size] -p cudnn --model_dir [model dir] -s 2 -n 2 -m noise_scale -i input.png -o output.png }

cunet

Image SizeTarget SizeBlock SizeTotal Time(s)GPU Memory(MB)
waifu2x-ncnn-vulkan200x200400x400400/200/1000.86/0.86/0.82638/638/197
waifu2x-caffe-cui200x200400x400400/200/1002.54/2.39/2.363017/936/843
waifu2x-ncnn-vulkan400x400800x800400/200/1001.17/1.04/1.022430/638/197
waifu2x-caffe-cui400x400800x800400/200/1002.91/2.43/2.73202/1389/1178
waifu2x-ncnn-vulkan1000x10002000x2000400/200/1002.35/2.26/2.462430/638/197
waifu2x-caffe-cui1000x10002000x2000400/200/1004.04/3.79/4.353258/1582/1175
waifu2x-ncnn-vulkan2000x20004000x4000400/200/1006.46/6.59/7.492430/686/213
waifu2x-caffe-cui2000x20004000x4000400/200/1007.01/7.54/10.113258/1499/1200
waifu2x-ncnn-vulkan4000x40008000x8000400/200/10022.78/23.78/27.612448/654/213
waifu2x-caffe-cui4000x40008000x8000400/200/10018.45/21.85/31.823325/1652/1236

upconv_7_anime_style_art_rgb

Image SizeTarget SizeBlock SizeTotal Time(s)GPU Memory(MB)
waifu2x-ncnn-vulkan200x200400x400400/200/1000.74/0.75/0.72482/482/142
waifu2x-caffe-cui200x200400x400400/200/1002.04/1.99/1.99995/546/459
waifu2x-ncnn-vulkan400x400800x800400/200/1000.95/0.83/0.811762/482/142
waifu2x-caffe-cui400x400800x800400/200/1002.08/2.12/2.11995/546/459
waifu2x-ncnn-vulkan1000x10002000x2000400/200/1001.52/1.41/1.441778/482/142
waifu2x-caffe-cui1000x10002000x2000400/200/1002.72/2.60/2.681015/570/459
waifu2x-ncnn-vulkan2000x20004000x4000400/200/1003.45/3.42/3.631778/482/142
waifu2x-caffe-cui2000x20004000x4000400/200/1003.90/4.01/4.351015/521/462
waifu2x-ncnn-vulkan4000x40008000x8000400/200/10011.16/11.29/12.071796/498/158
waifu2x-caffe-cui4000x40008000x8000400/200/1009.24/9.81/11.16995/546/436

Sample Images

Original Image

origin

Upscale 2x with ImageMagick

convert origin.jpg -resize 200% output.png

browser

Upscale 2x with ImageMagick Lanczo4 Filter

convert origin.jpg -filter Lanczos -resize 200% output.png

browser

Upscale 2x with waifu2x noise=2 scale=2

waifu2x-ncnn-vulkan.exe -i origin.jpg -o output.png -n 2 -s 2

waifu2x

Original waifu2x Project

Other Open-Source Code Used