在 termux 中编译 waifu2x-ncnn-vulkan
最近是真的很忙… 啊,各种东西要交,以及招新要做,还有自己的 bot 时不时要维护一下。明明期中已经过了,为什么还这么忙呢!
虽然 DDLs 压身,但总是想作死… 某🐟天天整的一些 cursed ideas 让我也产生了一点兴趣,于是便有了这篇水的文章(不是
好了,话不多说,进入正题。
更新记录
- 2020-12-07: 同步上游 CMakeList 更改,使用系统 libwebp
Why
这个 idea 确实非常 cursed,当然主要原因是 termux 的环境比较残缺。但是好处嘛…
你可以在手机上放大你的老婆!是不是很方便? 方便个鬼啊,手打命令不累吗(
How-To
首先当然是准备好你的 termux,假设一切从零开始。
[可选] 我想要一个更好看的 shell
所以我先装了 oh-my-zsh 的 termux 修改版:
1 | sh -c "$(curl -fsSL https://github.com/Cabbagec/termux-ohmyzsh/raw/master/install.sh)" |
在这一步会请求存储权限(生成软链接便于访问内部存储),并安装 git
和 zsh
。
如果你略过,则需要手动运行 pkg install git
安装 git
。
准备一些必要的软件包和库
1 | pkg install cmake python libwebp |
编译 glslang
1 | git clone https://github.com/KhronosGroup/glslang |
编译完会得到接下来要用到的一个二进制,完整路径如下:
1 | /data/data/com.termux/files/home/glslang/build/install/bin/glslangValidator |
使用略作修改的 waifu2x-ncnn-vulkan
原始修改为 tanyiok1234/waifu2x-ncnn-vulkan,我拉过来之后 merge 了一下上游的更改。
感谢原 patch 作者 @tanyiok1234 。
1 | cd ~ |
接下来准备编译,使用系统的 libvulkan.so
和刚编译的 glslangValidator
如果这两项路径不一致,请自行更改。
1 | cmake ../src -D Vulkan_LIBRARY='/system/lib64/libvulkan.so' -D GLSLANGVALIDATOR_EXECUTABLE='/data/data/com.termux/files/home/glslang/build/install/bin/glslangValidator' -D USE_SYSTEM_WEBP=ON |
如果没什么问题的话…
waifu2x-ncnn-vulkan
已经躺在当前目录里了。
不过还有个问题,需要为其配上模型才能工作。不妨编辑 .zshrc
,顺便给编译出的程序指定一个 alias
:
1 | alias waifu2x='/data/data/com.termux/files/home/waifu2x-ncnn-vulkan/build/waifu2x-ncnn-vulkan -m /data/data/com.termux/files/home/waifu2x-ncnn-vulkan/models/models-cunet' |
编辑完之后记得 source ~/.zshrc
或者重启 termux。
现在,你就可以用 waifu2x -i <input pic> -o <output pic>
来放大你的老婆了
来测试一下吧!
Device | 1267x2000 | TTA | 636x900 | TTA |
---|---|---|---|---|
Phone: Redmi K30S Ultra (SDM865, Adreno 650) |
37.255 | - | 9.715 | 113.52 |
PC: Inspiron 7590 (i7-9750H, UHD630, GTX1650) |
6.539 | 72.893 | 2.373 | 16.983 |
Result
可以看出来,其实在手机上跑 waifu2x-ncnn-vulkan
还是挺慢的…
但是,至少它工作。没带电脑的时候,还能凑活凑活。少个顺手的 GUI 也不是很方便,也许还是适合做成 Android app 吧(
题外话
生成这篇文章也让我意识到失去维护的 Inkpaper 不是那么有活力了… 又想换博客程序了,有推荐吗.jpg(死
References
在 termux 中编译 waifu2x-ncnn-vulkan
https://xyx.moe/010-Build-waifu2x-ncnn-vulkan-in-termux.html