Real-ESRGAN-ncnn-vulkan 实用指南:如何在 GPU 上快速跑通图像超分辨率
【免费下载链接】Real-ESRGAN-ncnn-vulkanNCNN implementation of Real-ESRGAN. Real-ESRGAN aims at developing Practical Algorithms for General Image Restoration.项目地址: https://gitcode.com/gh_mirrors/re/Real-ESRGAN-ncnn-vulkan
Real-ESRGAN-ncnn-vulkan 是基于 ncnn 框架、走 Vulkan 计算路径的图像超分辨率与修复工具:输入一张低分辨率 jpg/png/webp,输出一张 2 倍、3 倍或 4 倍的更清晰图像,同时覆盖动漫帧和真实照片两类素材。只要显卡支持 Vulkan 且驱动为近期版本,Windows、Linux、macOS 上都能跑,适合希望把“放大变清晰”变成一条可重复命令的批量处理场景。
(建议插入:Real-ESRGAN 超分辨率前后对比图)
适合谁,不适合谁
- 适合用命令行批量放大动漫、壁纸、截图,且能接受“一条命令 + 参数微调”工作方式的人。
- 适合有 Vulkan 显卡和最新驱动的机器;NVIDIA、AMD、Intel 核显均可。
- 不适合需要人脸修复的素材:GFPGAN 人脸恢复目前仍在项目 TODO 列表中,尚未合入。
- 不适合无 GPU 或无 Vulkan 环境:推理完全依赖 Vulkan 计算,程序不提供纯 CPU 路径。
🚀 首次运行:最短路径
如果只是想验证“能不能用”,按下面三步走完即可;有官方预编译包时可跳过前两步,直接执行第 3 条。
- 获取代码并初始化子模块(ncnn 和 libwebp 都在子模块里,缺了会直接构建失败):
git clone https://gitcode.com/gh_mirrors/re/Real-ESRGAN-ncnn-vulkan cd Real-ESRGAN-ncnn-vulkan && git submodule update --init --recursive- 编译(需要 Vulkan SDK 提供 glslangValidator 来编译着色器):
mkdir build && cd build && cmake .. && make -j4- 用仓库自带的示例图跑一张 2 倍输出:
realesrgan-ncnn-vulkan -i images/input.jpg -o output.png -n realesr-animevideov3 -s 2注意:模型权重文件不随代码仓库提供,需要从项目发布渠道获取后放入models目录,且该目录名中必须包含 “models” 或 “models2”,否则程序会报 unknown model dir type。
⚖️ 关键选择:改哪个参数,什么时候改
| 目标 | 参数 | 怎么写 | 改了会发生什么 |
|---|---|---|---|
| 动漫/视频帧,要速度 | -n | realesr-animevideov3(默认) | 唯一支持 2/3/4 倍可选的模型,线条干净 |
| 真实照片 | -n | realesrgan-x4plus 或 realesrnet-x4plus | 固定 4 倍,细节更贴近实拍 |
| 动漫但要色彩更浓 | -n | realesrgan-x4plus-anime | 固定 4 倍 |
| 显存吃紧或黑屏 | -t | 128 或更小(≥32) | 单块占用下降;写 0 时程序按显存自动在 200/100/64/32 中选 |
| GPU 没吃满、想更快 | -j | 4:4:4 | 读/算/存三阶段线程都加大,显存占用同步上升 |
| 大图 + 显存紧张 | -j | 2:2:2 | 降低并行度换显存余量 |
| 单张画质优先 | -x | 启用 TTA | 多方向推理再平均,耗时大约增至 3 倍以上 |
| 控制产物体积 | -f | webp 或 png | 两者均为无损编码,webp 文件更小;jpg 为有损 |
放大倍率-s默认是 4,输出体积会很大。试跑阶段建议显式传-s 2;realesr-animevideov3 会按倍率自动加载realesr-animevideov3-x2/x3/x4对应的 .param/.bin,其余模型文件名不带倍率,只能 4 倍输出。
📦 三个常见场景
场景 1:单张动漫图快速放大目标:把示例图放大 2 倍并确认效果。用仓库里的images/input.jpg执行上面第 3 条命令,输出文件名扩展名决定编码格式——-o output.png就是 png,-o output.webp就是 webp,无需额外加-f。
场景 2:目录批量处理目标:把整个素材目录一次性转成 png。-i和-o同时传目录(两者必须同为文件或同为目录),输出沿用输入文件名加新扩展名;若同名冲突会自动加后缀避免覆盖。带透明通道的输入若指定 jpg 输出,程序会提示并自动改存为 png。
场景 3:4K 大图 + 多卡目标:大图不爆显存、多卡并行。先给-t 64或-t 128压低单块占用;双卡时-g 0,1,并配合-t 0,0、-j 1:2,2,2:2让两张卡各跑 2 个处理线程。
🛠️ 出错先看这里
- 崩溃、无输出或输出黑图:先更新显卡驱动(Intel/AMD/NVIDIA 官方渠道),再把
-t调小重试;项目 TODO 中记录了部分 PC 输出黑图的问题,驱动版本是第一排查点。 - invalid tilesize argument:
-t只接受 0(自动)或 ≥32 的整数,且多卡时个数要与-g一致。 - unknown model dir type:
-m指定的模型目录路径中没有 “models” 或 “models2” 字样,换一个包含该字样的目录名。 - 找不到模型 / 加载失败:核对
models目录下 .param/.bin 与-n的拼写;realesr-animevideov3 还需带-x2、-x3或-x4后缀,倍率要与-s匹配。 - 速度低于预期:先确认没误开
-x、动漫素材用了 anime 系模型、-j没被设得过小;仍慢时加-v观察读/算/存哪个阶段是瓶颈。 - 目录模式没有产物:再次确认输入与输出是否同为文件或同为目录,混用会直接报错退出。
📚 可以继续了解
src/realesrgan.cpp与src/realesrgan.h:网络加载、tile 分块、TTA 与 bicubic 倍率的实现核心。src/realesrgan_preproc.comp、src/realesrgan_postproc.comp(含_tta版本):前后处理用的 Vulkan 计算着色器。src/CMakeLists.txt:构建开关,如 USE_SYSTEM_NCNN、USE_SYSTEM_WEBP、USE_STATIC_MOLTENVK(macOS 上经 MoltenVK 静态链接)。README.md的 TODO 列表:任意倍率 resize、GFPGAN 人脸恢复等后续方向。
下一步建议
- 先用示例图完成一次 2 倍试跑,把输出与原图并排对比,确认链路可用。
- 挑一个真实素材目录用默认参数批量跑一轮,记录耗时,作为你的速度基线。
- 对一张最重要的照片分别跑普通模式和
-xTTA,再决定是否把它设为你的默认工作流。
【免费下载链接】Real-ESRGAN-ncnn-vulkanNCNN implementation of Real-ESRGAN. Real-ESRGAN aims at developing Practical Algorithms for General Image Restoration.项目地址: https://gitcode.com/gh_mirrors/re/Real-ESRGAN-ncnn-vulkan
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考