RealSR-NCNN-Android

RealSR-NCNN-Android 是一个简单的 Android 应用程序,它基于 Waifu2x-NCNN、SRMD-NCNN、RealCUGAN-NCNN、RealSR-NCNN 和 Real-ESRGAN、Anime4KCPP。

超分辨率是指将低质量压缩图片恢复成高分辨率图片的过程,用更常见的讲法就是放大图片并降噪。
随着移动互联网的快速发展,智能设备逐渐普及到生活的每个角落。随之而来的是大量的图像数据。有的图片本身分辨率就比较低,难以看清楚细节;有的在存储和传输的过程中被反复压缩和劣化,最终不再清晰。
为了获得更加高质量的视觉体验,或者出于更为基本的目的看清楚图片,图像恢复/超分辨率算法应运而生。而手机作为目前我们生活中最常使用的智能设备,显然有使用这一技术的迫切需求。

这个项目正是为安卓设备构建的一个图像超分辨率的应用。具有如下特点:

  1. 内置超分算法和模型多。最初使用了RealSR-NCNN和Real-ESRGAN的成果,后来又添加了SRMD-NCNN和RealCUGAN-NCNN, Anime4KCPP。同时也内置了waifu2x-ncnn(但是没有内置模型和预设命令,如有需求自行下载并添加)
  2. 兼顾传统插值算法。包括常见的nearest、bilinear、bicubic算法,以及imagemagick的二十多种filter。
  3. 内置缩小算法。除使用用户指定倍率和算法的缩小方式外,resize-ncnn设计了一种自动缩小的算法de-nearest。参见笔记
  4. 支持图形界面和命令行两种操作方式使用。
  5. 转换结果先预览,满意再导出,不浪费存储空间。
  6. 导出文件自动按照模型和时间命名,方便管理。
  7. 自定义优先选用的超分算法和模型。
  8. 自定义预设命令。
  9. 图片处理过程完全在本地运行,无需担心隐私泄漏、服务器排队、服务收费;处理耗时取于决选择的模型、图片大小以及设备的性能。

项目地址

https://github.com/tumuyan/RealSR-NCNN-Android
该项目由tumuyan提供,并非我!

如何使用RealSR-NCNN-Android-GUI

选择文件的两种方法:

  1. 将其他应用(例如图库)中的一张或多张图片共享到此应用
  2. 在本应用中,点击选图选择图片

支持两种操作方式:

  1. 点击放大(视图片大小和设备性能需要等待不同时间——毕竟原项目是使用电脑显卡运行的)- 查看放大效果是否满意,如果满意点击导出保存到相册。也可以在运行前切换使用的模型。切换模型后无需重新选择图片。运行过程中点击右上角进度可以终止运行;运行过程中切换模型并点击运行,或者直接输入命令并回车,可以终止上次任务并开始执行新的任务。
  2. 直接在输入框内输入命令完成调用(可以输入help查看更多信息)

应用依赖于vulkan API,所以对设备有如下要求:
使用了比较新的SOC。经过实际测试,骁龙853(GPU Adreno510)可以处理较小的图片
系统支持vulkan。(Google在Android7.0中增加了vulkan的集成,但是您的设备厂商不一定提供了这项支持)

图片放大算法说明

https://note.youdao.com/s/6XlIFbWt

向 RealSR-NCNN-Android-GUI 添加更多模型

RealSR-NCNN-Android-GUI 在 ver 1.7.6 以上的版本可以自动加载自定义模型。 你可以从 https://github.com/tumuyan/realsr-models 下载更多模型:

  1. 在文件管理器里新建一个目录
  2. 在App的设置中,自定义模型路径的选项里填入刚才新建目录的路径,点击保存
  3. 下载模型并复制到刚才新建的目录里
  4. 返回App,可以看到下拉菜单增加了新的模型

你自己也可以把pth格式的模型转换为本应用可用的ncnn模型。

https://upscale.wiki/wiki/Model_Database 下载模型并解压,下载 cupscale 并解压,打开 CupscaleData\bin\pth2ncnn, 用 pth2ncnn.exe 转换 pth 文件为 ncnn 模型文件
重命名文件,举例:

1
2
3
models-Real-ESRGAN-AnimeSharp  // 目录需要用 models-Real- 或 models-ESRGAN- 开头
├─x4.bin // 模型名称为 x[n], n 是放大倍率
├─x4.param

如何使用 RealSR-NCNN-Android-CLI

下载模型

你可以从 github release 页面下载 assets.zip, 或者从 https://github.com/tumuyan/realsr-models 下载所需模型,需要注意不同程序需要用对应的模型

示例命令

确保 elf 文件具有执行权限。然后输入命令

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

完整用法

其他程序的用法与realsr-ncnn相同。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
用法: realsr-ncnn -i 输入的图片路径 -o 输出的图片路径 [其他可选参数]...

-h 显示帮助
-v 显示更多输出内容
-i input-path 输入的图片路径(jpg/png/webp路径或者目录路径)
-o output-path 输出的图片路径(jpg/png/webp路径或者目录路径)
-s scale 缩放系数(默认4,即放大4倍)
-t tile-size tile size (>=32/0=auto, default=0) can be 0,0,0 for multi-gpu
-m model-path 模型路径 (默认模型 models-Real-ESRGAN-anime)
-g gpu-id gpu,-1使用CPU,默认0 多GPU可选 0,1,2
-j load:proc:save 解码/处理/保存的线程数 (默认1:2:2) 多GPU可以设 1:2,2,2:2
-x 开启tta模式
-f format 输出格式(jpg/png/webp, 默认ext/png)

使用报错

vkQueueSubmit failed -4

使用real-esrgan-x4模型通常会报错,这是参数没有设置的原因。打开软件设置,设置Tile Size参数,最小值为32。

使用实践

这是一张很小较模糊的图片,现在我们让它变大变清晰。
原图
使用软件,我们可以得到这张图。
生成结果
第一张图与这张图形成了明显的对比,图片变大的同时也清晰了不少,这是这个软件的强大之处。

如何获取?

这里提供网盘,但是不保证一直是最新版本,可前往上面的开源地址。


本站由 Natuie 使用 Stellar 1.26.8 主题创建。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。

本站总访问量次 | 本站总访客数人次
载入天数...载入时分秒...