RealSR-NCNN-Android
RealSR-NCNN-Android 是一个简单的 Android 应用程序,它基于 Waifu2x-NCNN、SRMD-NCNN、RealCUGAN-NCNN、RealSR-NCNN 和 Real-ESRGAN、Anime4KCPP。
超分辨率是指将低质量压缩图片恢复成高分辨率图片的过程,用更常见的讲法就是放大图片并降噪。
随着移动互联网的快速发展,智能设备逐渐普及到生活的每个角落。随之而来的是大量的图像数据。有的图片本身分辨率就比较低,难以看清楚细节;有的在存储和传输的过程中被反复压缩和劣化,最终不再清晰。
为了获得更加高质量的视觉体验,或者出于更为基本的目的看清楚图片,图像恢复/超分辨率算法应运而生。而手机作为目前我们生活中最常使用的智能设备,显然有使用这一技术的迫切需求。
这个项目正是为安卓设备构建的一个图像超分辨率的应用。具有如下特点:
- 内置超分算法和模型多。最初使用了RealSR-NCNN和Real-ESRGAN的成果,后来又添加了SRMD-NCNN和RealCUGAN-NCNN, Anime4KCPP。同时也内置了waifu2x-ncnn(但是没有内置模型和预设命令,如有需求自行下载并添加)
- 兼顾传统插值算法。包括常见的nearest、bilinear、bicubic算法,以及imagemagick的二十多种filter。
- 内置缩小算法。除使用用户指定倍率和算法的缩小方式外,resize-ncnn设计了一种自动缩小的算法de-nearest。参见笔记
- 支持图形界面和命令行两种操作方式使用。
- 转换结果先预览,满意再导出,不浪费存储空间。
- 导出文件自动按照模型和时间命名,方便管理。
- 自定义优先选用的超分算法和模型。
- 自定义预设命令。
- 图片处理过程完全在本地运行,无需担心隐私泄漏、服务器排队、服务收费;处理耗时取于决选择的模型、图片大小以及设备的性能。
项目地址
https://github.com/tumuyan/RealSR-NCNN-Android
该项目由tumuyan提供,并非我!
如何使用RealSR-NCNN-Android-GUI
选择文件的两种方法:
- 将其他应用(例如图库)中的一张或多张图片共享到此应用
- 在本应用中,点击选图选择图片
支持两种操作方式:
- 点击放大(视图片大小和设备性能需要等待不同时间——毕竟原项目是使用电脑显卡运行的)- 查看放大效果是否满意,如果满意点击导出保存到相册。也可以在运行前切换使用的模型。切换模型后无需重新选择图片。运行过程中点击右上角进度可以终止运行;运行过程中切换模型并点击运行,或者直接输入命令并回车,可以终止上次任务并开始执行新的任务。
- 直接在输入框内输入命令完成调用(可以输入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 下载更多模型:
- 在文件管理器里新建一个目录
- 在App的设置中,自定义模型路径的选项里填入刚才新建目录的路径,点击保存
- 下载模型并复制到刚才新建的目录里
- 返回App,可以看到下拉菜单增加了新的模型
你自己也可以把pth格式的模型转换为本应用可用的ncnn模型。
从 https://upscale.wiki/wiki/Model_Database 下载模型并解压,下载 cupscale 并解压,打开 CupscaleData\bin\pth2ncnn, 用 pth2ncnn.exe 转换 pth 文件为 ncnn 模型文件
重命名文件,举例:
1 | models-Real-ESRGAN-AnimeSharp // 目录需要用 models-Real- 或 models-ESRGAN- 开头 |
如何使用 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 | 用法: realsr-ncnn -i 输入的图片路径 -o 输出的图片路径 [其他可选参数]... |
使用报错
vkQueueSubmit failed -4
使用real-esrgan-x4模型通常会报错,这是参数没有设置的原因。打开软件设置,设置Tile Size参数,最小值为32。
使用实践
这是一张很小较模糊的图片,现在我们让它变大变清晰。
使用软件,我们可以得到这张图。
第一张图与这张图形成了明显的对比,图片变大的同时也清晰了不少,这是这个软件的强大之处。
如何获取?
这里提供网盘,但是不保证一直是最新版本,可前往上面的开源地址。