在 termux 中编译 waifu2x-ncnn-vulkan

折腾

最近是真的很忙… 啊,各种东西要交,以及招新要做,还有自己的 bot 时不时要维护一下。明明期中已经过了,为什么还这么忙呢!

好了,话不多说,进入正题。

Why

这个 idea 确实非常 cursed,当然主要原因是 termux 的环境比较残缺。但是好处嘛…

你可以在手机上放大你的老婆!是不是很方便? 方便个鬼啊,手打命令不累吗(

How-To

首先当然是准备好你的 termux,假设一切从零开始。

(可选)我想要一个更好看的 shell

所以我先装了 oh-my-zsh 的 termux 修改版

sh -c "$(curl -fsSL https://github.com/Cabbagec/termux-ohmyzsh/raw/master/install.sh)"

在这一步会请求存储权限(生成软链接便于访问内部存储),并安装 gitzsh

如果你略过,则需要手动运行 pkg install git 安装 git

准备一些必要的软件包和库

pkg install cmake python libwebp

编译 glslang

git clone https://github.com/KhronosGroup/glslang
cd glslang
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$(pwd)/install" ../
make -j4 install

编译完会得到接下来要用到的一个二进制,完整路径如下:

/data/data/com.termux/files/home/glslang/build/install/bin/glslangValidator

使用略作修改的 waifu2x-ncnn-vulkan

原始修改为 tanyiok1234/waifu2x-ncnn-vulkan,我拉过来之后 merge 了一下上游的更改。

感谢原 patch 作者 @tanyiok1234 。

cd ~
git clone https://github.com/Skimige/waifu2x-ncnn-vulkan
cd waifu2x-ncnn-vulkan
git submodule update --init --recursive
mkdir build && cd build

接下来准备编译,使用系统的 libvulkan.so 和刚编译的 glslangValidator

如果这两项路径不一致,请自行更改。

cmake ../src -D Vulkan_LIBRARY='/system/lib64/libvulkan.so' -D GLSLANGVALIDATOR_EXECUTABLE='/data/data/com.termux/files/home/glslang/build/install/bin/glslangValidator'
cmake --build . -j 4

如果没什么问题的话…

waifu2x-ncnn-vulkan 已经躺在当前目录里了。

不过还有个问题,需要为其配上模型才能工作。不妨编辑 .zshrc ,顺便给编译出的程序指定一个 alias

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

[1] 知乎 - Termux 编译 Waifu2x/Srmd-ncnn-vulkan - 太亦desu

星野みなと
斗转星移,云卷云舒。