Real-ESRGAN
Real-ESRGAN copied to clipboard
realesrgan-ncnn-vulkan cant work if use 'full_path_to_binary/realesrgan-ncnn-vulkan' instead of './realesrgan-ncnn-vulkan'
I am using M1 Max Macbook pro
enter following cmd in terminal, it shows error and cant work properly
/Users/username/Desktop/realesrgan/realesrgan-ncnn-vulkan -i /Users/username/Desktop/Untitled.png -o /Users/username/Desktop/Untitled-x4.png
I must cd to binary working directory first, then use './realesrgan-ncnnn-vulkan', it works properly
cd /Users/username/Desktop/realesrgan/
# step1
./realesrgan-ncnn-vulkan -i /Users/username/Desktop/Untitled.png -o /Users/username/Desktop/Untitled-x4.png
# step2
How to solve this bug?
终端输入/Users/username/Desktop/realesrgan/realesrgan-ncnn-vulkan
后回车,是可以启动realesrgan-ncnn-vulkan
进程跳出--help
信息,但输入/Users/username/Desktop/realesrgan/realesrgan-ncnn-vulkan -i /Users/username/Desktop/Untitled.png -o /Users/username/Desktop/Untitled-x4.png
却会报错,无法放大图像,必须先cd /Users/username/Desktop/realesrgan/
再./realesrgan-ncnn-vulkan -i /Users/username/Desktop/Untitled.png -o /Users/username/Desktop/Untitled-x4.png
才能正常运行放大图像。
同样的方法,用waifu2x-ncnn-vulkan测试,终端输入/Users/username/Desktop/realesrgan/waifu2x-ncnn-vulkan -i /Users/username/Desktop/Untitled.png -o /Users/username/Desktop/Untitled-x4.png
是可以正常运行放大图像的。
迫切希望作者能尽快修正realesrgan-ncnn-vulkan
的上述问题,谢谢作者!
这个问题是因为 realesrgan-ncnn-vulkan
尝试在工作路径 ($PWD
, %CD%
) 读取预训练模型,而通常做法应该在标准路径(平台标准软件安装路径、用户数据路径,或兜底到可执行文件所在路径)读取应用程序安装随附的数据。
临时解决方案是运行 realesrgan-ncnn-vulkan
时同时提供模型完整路径,使用 -m
参数:
/usr/local/RealESRGAN/realesrgan-ncnn-vulkan -m /usr/local/RealESRGAN/models -i ... -o ...
模型完整路径默认应该在 realesrgan-ncnn-vulkan
所在文件夹拼接上 /models
。如果你把 realesrgan-ncnn-vulkan
放在了 $PATH
,UNIX 下使用 which
、Windows 下使用 where
能够获得 realesrgan-ncnn-vulkan
可执行文件,然后获取其父文件夹并拼接上 /models
作为 -m
参数即可。
Edit: 备用解决方法是像楼上一样 cd
到 realesrgan-ncnn-vulkan
所在文件夹(因为 cd
改变了工作路径),但建议使用 pushd
替代 cd
,等运行完后 popd
即可回到原来终端或脚本的工作路径。
另外,建议作者友好地处理并报告异常。如果模型未找到(models
丢失,或 -m
、-n
参数有误),输出调试信息并以错误码退出,而不是触发 [1] 3515 segmentation fault realesrgan-ncnn-vulkan
。否则看起来像是个粗心导致的编程错误,并不能让调用者明白是参数有误。