Git Product home page Git Product logo

realsr-ncnn-android's Introduction

RealSR-NCNN-Android

中文说明

RealSR-NCNN-Android is a simple Android application that based on RealSR-NCNN, SRMD-NCNN, RealCUGAN-NCNN & Real-ESRGAN.
The application does not collect any private information from your device.
Download: Github Release or CoolApk

This repository contains 7 project:

  1. RealSR-NCNN-Android-GUI can build a APK (has a GUI and easy to use). Actually it is a shell of the follow programs.
  2. RealSR-NCNN-Android-CLI can build a program that can be used by the console (for example, Termux) for Android. This program can use realsr models and real-esrgan models.
  3. RealCUGAN-NCNN-Android-CLI can build a program that can be used by the console (for example, Termux) for Android.
  4. SRMD-NCNN-Android-CLI can build a program that can be used by the console (for example, Termux) for Android.
  5. Waifu2x-NCNN-Android-CLI can build a program that can be used by the console (for example, Termux) for Android (models not packaged in APK).
  6. Resize-NCNN-Android-CLI can build a program that can be used by the console (for example, Termux) for Android. use ncnn only to reduce the elf file size. Contains classical interpolation mode nearest bilinear bicubic and avir lancir
  7. Resize-CLI just a demo like the Resize-NCNN-Android-CLI, but it not need ncnn and could build by VS

About Real-ESRGAN

realesrgan_logo
Real-ESRGAN is a Practical Algorithms for General Image Restoration.

[Paper] [Project Page]   [YouTube Video] [Bilibili]   [Poster] [PPT slides]
Xintao Wang, Liangbin Xie, Chao Dong, Ying Shan
Tencent ARC Lab; Shenzhen Institutes of Advanced Technology, Chinese Academy of Sciences

img Note that RealESRGAN may still fail in some cases as the real-world degradations are really too complex.

About RealSR

[paper] [project] [NTIRE 2020 Challenge on Real-World Image Super-Resolution: Methods and Results]

About SRMD

[paper] [project] demo demo

About Real-CUGAN

[project]
Real-CUGAN is an AI super resolution model for anime images, trained in a million scale anime dataset, using the same architecture as Waifu2x-CUNet.

How to build RealSR-NCNN-Android-CLI

step1

https://github.com/Tencent/ncnn/releases
download ncnn-yyyymmdd-android-vulkan-shared.zip.
https://github.com/webmproject/libwebp download the source of libwebp.

step2

extract ncnn-yyyymmdd-android-vulkan-shared.zip into ../3rdparty/ncnn-android-vulkan-shared
extract the source of libwebp into app/src/main/jni/webp

step3

open this project with Android Studio, rebuild it and then you could find the program in RealSR-NCNN-Android-CLI\app\build\intermediates\cmake\debug\obj

How to use RealSR-NCNN-Android-CLI

Download models

I have package and upload models, also you can download models from RealSR-NCNN and Real-ESRGAN.

https://github.com/tumuyan/RealSR-NCNN-Android/releases/download/1.4.1/models.zip

Example Command

make sure the elf file has execute permission. Then input command

./realsr-ncnn -i input.jpg -o output.jpg

Full Usages

Usage: realsr-ncnn -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
  -s scale             upscale ratio (4, default=4)
  -t tile-size         tile size (>=32/0=auto, default=0) can be 0,0,0 for multi-gpu
  -m model-path        realsr model path (default=models-DF2K_JPEG)
  -g gpu-id            gpu device to use (default=0) can be 0,1,2 for multi-gpu, -1 use cpu
  -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)
  • input-path and output-path accept either file path or directory path
  • scale = scale level, 4 = upscale 4x
  • tile-size = tile size, use smaller value to reduce GPU memory usage, default selects automatically
  • load:proc:save = thread count for the three stages (image decoding + realsr upscaling + image encoding), using larger values may increase GPU usage and consume more GPU memory. You can tune this configuration with "4:4:4" for many small-size images, and "2:2:2" for large-size images. The default setting usually works fine for most situations. If you find that your GPU is hungry, try increasing thread count to achieve faster processing.
  • format = the format of the image to be output, png is better supported, however webp generally yields smaller file sizes, both are losslessly encoded

If you encounter crash or error, try to upgrade your derive

How to build RealSR-NCNN-Android-GUI

download models & elf files, put them to this folder, then build it with Android Studio. (I have upload the assets.zip)

RealSR-NCNN-Android-GUI\app\src\main\assets\realsr
│  libncnn.so
│  libvulkan.so
│  realcugan-ncnn
│  realsr-ncnn
│  srmd-ncnn
│  
├─models-DF2K
│      x4.bin
│      x4.param
│      
├─models-DF2K_JPEG
│      x4.bin
│      x4.param
│      
├─models-nose
│      up2x-no-denoise.bin
│      up2x-no-denoise.param
│      
├─models-Real-ESRGAN
│      x4.bin
│      x4.param
│      
├─models-Real-ESRGAN-anime
│      x4.bin
│      x4.param
│      
├─models-Real-ESRGANv2-anime
│      x2.bin
│      x2.param
│      x4.bin
│      x4.param
│      
├─models-se
│      up2x-conservative.bin
│      up2x-conservative.param
│      up2x-denoise1x.bin
│      up2x-denoise1x.param
│      up2x-denoise2x.bin
│      up2x-denoise2x.param
│      up2x-denoise3x.bin
│      up2x-denoise3x.param
│      up2x-no-denoise.bin
│      up2x-no-denoise.param
│      up3x-conservative.bin
│      up3x-conservative.param
│      up3x-denoise3x.bin
│      up3x-denoise3x.param
│      up3x-no-denoise.bin
│      up3x-no-denoise.param
│      up4x-conservative.bin
│      up4x-conservative.param
│      up4x-denoise3x.bin
│      up4x-denoise3x.param
│      up4x-no-denoise.bin
│      up4x-no-denoise.param
│      
└─models-srmd
        srmdnf_x2.bin
        srmdnf_x2.param
        srmdnf_x3.bin
        srmdnf_x3.param
        srmdnf_x4.bin
        srmdnf_x4.param
        srmd_x2.bin
        srmd_x2.param
        srmd_x3.bin
        srmd_x3.param
        srmd_x4.bin
        srmd_x4.param

How to use RealSR-NCNN-Android-GUI

You can open photo picker, chose a model, click the Run button and wait some time. The photo view will show the result when the progrem finish its work. If you like the result, you could click the Save button.

Also the app could input shell command. (You can input help and get more info)

Add more models to RealSR-NCNN-Android-GUI

First of all , you could use preset commands or input command as shell, but

RealSR-NCNN-Android-GUI could load waifu2x models from sdcard automatily in ver 1.7.6🎉.

  1. Make a directory in sdcard.
  2. Open setting, input the directory path to Path for custom models (RealSR/ESRGAN/Waifu2x) and save.
  3. Download waifu2x-ncnn and unzip it to somewhere.
  4. Copymodels-cunet models-upconv_7_anime_style_art_rgb models-upconv_7_photo to the directory you make.
  5. Open the App, then you could select new commands for waifu2x-ncnn.

RealSR-NCNN-Android-GUI could load esrgan models from sdcard automatily in ver 1.7.6 🎉.
Cause of most models is pytorch not ncnn, you should convert moddls in your PC.

  1. Download ESRGAN pytorch models from https://upscale.wiki/wiki/Model_Database and unzip it to somewhere.
  2. Download cupscale and unzip it
  3. Convert pytorch models to ncnn. Open CupscaleData\bin\pth2ncnn, use pth2ncnn.exe to convert pth files to ncnn file.
  4. Rename models, just like this:
models-Real-ESRGAN-AnimeSharp  // directory should have a suffix of models-Real- or models-ESRGAN-
├─x4.bin                       // models name as x[n], n is scale
├─x4.bin
  1. You should make a directory in sdcard.
  2. Open setting, input the directory path to Path for custom models (RealSR/ESRGAN/Waifu2x) and save.
  3. Copy models to the directory you make.
  4. Open the App, then you could select new commands for realsr-ncnn.

Screenshot

input & output

Others project in this Repository

Building and usage is same as RealSR-NCNN-Android-CLI

Acknowledgement

original super-resolution projects

ncnn projects and models

Most of the C code is copied from Nihui, cause of the directory structure had to be adjusted, the original git was broken

Other Open-Source Code Used

realsr-ncnn-android's People

Contributors

tumuyan avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.