diff --git a/README.md b/README.md index ed55324..de1dc68 100644 --- a/README.md +++ b/README.md @@ -6,9 +6,9 @@ You can go to the [releases page](https://github.com/k4yt3x/video2x/releases) to download the latest builds of `Video2X`. The exe files will require no Python or Python module installation. -The **`full`** package provides all packages that will possibly be needed by `Video2X`, including `FFmpeg`, `waifu2x-caffe`, `waifu2x-converter-cpp`, `waifu2x-ncnn-vulkan`, `Anime4K` and `srmd-ncnn-vulkan`. The config file (`video2x.json`) is also already configured for the environment. All you need to do is just to launch `video2x.exe`. +The **`full`** package provides all packages that will possibly be needed by `Video2X`, including `FFmpeg`, `waifu2x-caffe`, `waifu2x-converter-cpp`, `waifu2x-ncnn-vulkan`, `srmd-ncnn-vulkan` and `Anime4KCPP`. The config file (`video2x.yaml`) is also already configured for the environment. All you need to do is just to launch `video2x.exe`. -The **`light`** package provides only the most basic functions of `Video2X`. Only `video2x.exe`, `video2x_setup.exe` and `video2x.json` are included. To setup dependencies (e.g. `FFmpeg` and `Waifu2X`) automatically, simply launch `video2x_setup.exe`. +The **`light`** package provides only the most basic functions of `Video2X`. Only `video2x.exe`, `video2x_setup.exe` and `video2x.yaml` are included. To setup dependencies (e.g. `FFmpeg` and `Waifu2X`) automatically, simply launch `video2x_setup.exe`. ## Prerequisites @@ -22,11 +22,22 @@ Component names that are **bolded** can be automatically downloaded and configur - [**waifu2x-caffe**](https://github.com/lltcggie/waifu2x-caffe/releases) - [**waifu2x-converter-cpp**](https://github.com/DeadSix27/waifu2x-converter-cpp/releases) - [**waifu2x-ncnn-vulkan**](https://github.com/nihui/waifu2x-ncnn-vulkan) - - [**Anime4K**](https://github.com/bloc97/Anime4K) - [**srmd-ncnn-vulkan**](https://github.com/nihui/srmd-ncnn-vulkan) + - [**Anime4KCPP**](https://github.com/TianZerL/Anime4KCPP) ## Recent Changes +### 4.0.0 (May 5, 2020) + +- Added internationalization support + - Added language zh_CN (简体中文) + - Language will change automatically according to system locale settings +- Added support for [Anime4KCPP](https://github.com/TianZerL/Anime4KCPP) in replacement for Anime4K (Java) +- Driver-specific settings can now be specified in the command line by specifying them after a `--` +- All driver-specific settings are parsed by the corresponding driver +- Modularized driver wrappers in Video2X +- Cleaned up some clutters in the code + ### 3.2.0 (April 26, 2020) - Added support for [SRMD-NCNN-Vulkan](https://github.com/nihui/srmd-ncnn-vulkan) @@ -37,22 +48,15 @@ Component names that are **bolded** can be automatically downloaded and configur - Added support for graceful exit upon `KeyboardInterrupt` or termination signals - Other minor improvements such as replacing `' '.join(execute)` with `shlex.join(execute)` -### 3.0.0 (November 26, 2019) +### Setup Script 1.8.0 (May 5, 2020) -- Linux compatibility -- Configuration file changed to YAML format - - You may still use a JSON-formatted config file. To do so, please specify `-c video2x.json`. -- Other code clean-up and optimization - -### Setup Script 1.7.0 (April 26, 2020) - -- Added support for srmd-ncnn-vulkan +- Added support for Anime4KCPP ## Description Video2X is an automation software based on waifu2x image enlarging engine. It extracts frames from a video, enlarge it by a number of times without losing any details or quality, keeping lines smooth and edges sharp. -For short: **Video2X enlarges your video without losing details** +For short: **Video2X enlarges your video without losing details**. Watch for the sharper edges in this screenshot around the shadows: @@ -80,9 +84,9 @@ You can find all detailed user-facing and developer-facing documentations in the For those who want a detailed walk-through of how to use `Video2X`, you can head to the [Step-By-Step Tutorial](https://github.com/k4yt3x/video2x/wiki/Step-By-Step-Tutorial) wiki page. It includes almost every step you need to perform in order to enlarge your first video. -### [Waifu2X Drivers](https://github.com/k4yt3x/video2x/wiki/Waifu2X-Drivers) +### [Drivers](https://github.com/k4yt3x/video2x/wiki/Drivers) -Go to the [Waifu2X Drivers](https://github.com/k4yt3x/video2x/wiki/Waifu2X-Drivers) wiki page if you want to see a detailed description on the different types of `waifu2x` drivers implemented by `Video2X`. This wiki page contains detailed difference between different drivers, and how to download and set each of them up for `Video2X`. +Go to the [Drivers](https://github.com/k4yt3x/video2x/wiki/Drivers) wiki page if you want to see a detailed description on the different types of drivers implemented by `Video2X`. This wiki page contains detailed difference between different drivers, and how to download and set each of them up for `Video2X`. ### [Q&A](https://github.com/k4yt3x/video2x/wiki/Q&A) @@ -98,14 +102,14 @@ If you have any questions, first try visiting our [Q&A](https://github.com/k4yt3 Download: https://www.python.org/downloads/windows/ - **FFmpeg Windows Build** Download: https://ffmpeg.org/download.html -- **waifu2x-caffe** (for Nvidia CUDA/CUDNN) +- **waifu2x-caffe** (designed for Nvidia CUDA/cuDNN) Download: https://github.com/lltcggie/waifu2x-caffe/releases -- **waifu2x-converter-cpp** (required for AMD, OpenCL and OpenGL processing) +- **waifu2x-converter-cpp** Download: https://github.com/DeadSix27/waifu2x-converter-cpp/releases - **waifu2x-ncnn-vulkan** Download: https://github.com/nihui/waifu2x-ncnn-vulkan/releases -- **Anime4K** -Download: https://github.com/bloc97/Anime4K/releases +- **Anime4KCPP** +Download: https://github.com/TianZerL/Anime4KCPP/releases - **srmd-ncnn-vulkan** Download: https://github.com/nihui/srmd-ncnn-vulkan/releases @@ -115,12 +119,12 @@ First, clone the video2x repository. ```shell git clone https://github.com/k4yt3x/video2x.git -cd video2x/bin +cd video2x/src ``` Then you may run the `video2x_setup.py` script to install and configure the dependencies automatically. This script is designed and tested on Windows 10. -This script will install the newest version of `ffmpeg`, any one or all `waifu2x-caffe`, `waifu2x-converter-cpp`, and `waifu2x-ncnn-vulkan` to `%LOCALAPPDATA%\\video2x` and all required python libraries. +This script will install the newest version of `ffmpeg`, and all upscaling drivers to `%LOCALAPPDATA%\\video2x` and all required python libraries. ```shell python video2x_setup.py @@ -134,112 +138,78 @@ Then you'll need to install python dependencies before start using video2x. Inst pip install -r requirements.txt ``` -**Note that all command line arguments/options overwrite configuration file settings.** - ### Sample Videos If you can't find a video clip to begin with, or if you want to see a before-after comparison, we have prepared some sample clips for you. The quick start guide down below will also be based on the name of the sample clips. ![sample_video](https://user-images.githubusercontent.com/21986859/52905766-d5512b00-3236-11e9-9aea-077636539679.png) -- [Sample Video Original (240P) 1.7MB](https://files.flexio.org/Resources/Videos/sample_input.mp4) -- [Sample Video Upscaled (1080P) 4.8MB](https://files.flexio.org/Resources/Videos/sample_output.mp4) +- [Sample Video Original (240P) 1.7MB](https://files.k4yt3x.com/Resources/Videos/sample_input.mp4) +- [Sample Video Upscaled (1080P) 4.8MB](https://files.k4yt3x.com/Resources/Videos/sample_output.mp4) Clip is from anime "さくら荘のペットな彼女". Copyright belongs to "株式会社アニプレックス (Aniplex Inc.)". Will delete immediately if use of clip is in violation of copyright. -### Nvidia CUDA (waifu2x-caffe) +### Basic Upscale Example -Enlarge the video to 1920x1080 using CUDA. You may also use the `-r/--ratio` option. +This example command below uses `waifu2x-caffe` to enlarge the video `sample-input.mp4` two double its original size. ```shell -python video2x.py -i sample_input.mp4 -o sample_output.mp4 -m gpu --width=1920 --height=1080 +python video2x.py -i sample-input.mp4 -o sample-output.mp4 -r 2 -d waifu2x_caffe ``` -### Nvidia CUDNN +### Advanced Upscale Example -Enlarge the video to 1920x1080 using CUDNN. You may also use the `-r/--ratio` option. +If you would like to tweak engine-specific settings, either specify the corresponding argument after `--`, or edit the corresponding field in the configuration file `video2x.yaml`. **Command line arguments will overwrite default values in the config file.** + +This example below adds enables TTA for `waifu2x-caffe`. ```shell -python video2x.py -i sample_input.mp4 -o sample_output.mp4 -m cudnn --width=1920 --height=1080 +python video2x.py -i sample-input.mp4 -o sample-output.mp4 -r 2 -d waifu2x_caffe -- --tta 1 ``` -### AMD or Nvidia (waifu2x-converter-cpp OpenCL) - -Enlarge the video by 2 times using OpenCL. Note that `waifu2x-converter-cpp` doesn't support width and height. You'll also have to explicitly specify that the driver to be used is `waifu2x_converter`. +To see a help page for driver-specific settings, use `-d` to select the driver and append `-- --help` as demonstrated below. This will print all driver-specific settings and descriptions. ```shell -python video2x.py -i sample_input.mp4 -o sample_output.mp4 -m gpu -r 2 -d waifu2x_converter -``` - -### AMD or Nvidia (waifu2x-ncnn-vulkan Vulkan) - -```shell -python video2x.py -i sample_input.mp4 -o sample_output.mp4 -m gpu -r 2 -d waifu2x_ncnn_vulkan -``` - -### Anime4K - -Enlarge the video by 2 times using Anime4K. **Remember to install and configure [JRE 12](https://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase12-5440181.html) path in the configuration file.** - -```shell -python video2x.py -i sample_input.mp4 -o sample_output.mp4 -r 2 -d anime4k -``` - -### CPU - -Enlarge the video to 1920x1080 using the CPU. You may also use the `-r/--ratio` option. **waifu2x-based upscalers potentially run much slower than using a GPU, but Anime4K is more CPU-dependant**. The configuration file for this method is similar to the previous methods. - -```shell -python video2x.py -i sample_input.mp4 -o sample_output.mp4 -m cpu --width=1920 --height=1080 +python video2x.py -d waifu2x_caffe -- --help ``` --- # Full Usage -## General Options +## General Options: ### -h, --help show this help message and exit -## File Options - ### -i INPUT, --input INPUT - Source video file/directory (default: None) + source video file/directory ### -o OUTPUT, --output OUTPUT - Output video file/directory (default: None) - -## Upscaling Options - -### -m {cpu,gpu,cudnn}, --method {cpu,gpu,cudnn} - Upscaling method (default: gpu) - -### -d {waifu2x_caffe,waifu2x_converter}, --driver {waifu2x_caffe,waifu2x_converter} - Waifu2x driver (default: waifu2x_caffe) - -### -y MODEL_DIR, --model_dir MODEL_DIR - Folder containing model JSON files - -### -t THREADS, --threads THREADS - Number of threads to use for upscaling (default: 5) + output video file/directory ### -c CONFIG, --config CONFIG - Video2X config file location (default: video2x\bin\video2x.json) + video2x config file path -### -b, --batch - Enable batch mode (select all default values to questions) +### -d {waifu2x_caffe,waifu2x_converter_cpp,waifu2x_ncnn_vulkan,srmd_ncnn_vulkan,anime4kcpp}, --driver {waifu2x_caffe,waifu2x_converter_cpp,waifu2x_ncnn_vulkan,srmd_ncnn_vulkan,anime4kcpp} + upscaling driver (default: waifu2x_caffe) + +### -p PROCESSES, --processes PROCESSES + number of processes to use for upscaling (default: 1) + +### -v, --version + display version, lawful information and exit ## Scaling Options ### --width WIDTH - Output video width + output video width ### --height HEIGHT - Output video height + output video height ### -r RATIO, --ratio RATIO - Scaling ratio + scaling ratio --- @@ -260,7 +230,8 @@ This project relies on the following software and projects. - [waifu2x-caffe](https://github.com/lltcggie/waifu2x-caffe) - [waifu2x-converter-cpp](https://github.com/DeadSix27/waifu2x-converter-cpp) - [waifu2x-ncnn-vulkan](https://github.com/nihui/waifu2x-ncnn-vulkan) -- [Anime4K](https://github.com/bloc97/Anime4K) +- [srmd-ncnn-vulkan](https://github.com/nihui/srmd-ncnn-vulkan) +- [Anime4KCPP](https://github.com/TianZerL/Anime4KCPP) ## Special Thanks