这款基于 Core ML 的开源二次元神器,可以深入学习一下
waifu2x (https://github.com/nagadomi/waifu2x) 是一个用于动漫风格图像的图像缩放和图像降噪程序,也支持处理普通图片。
waifu2x的核心是一个用于超分辨率成像的卷积神经网络(SRCNN)。它使用了NVIDIA CUDA技术,但也能使用OpenCL和Vulkan来执行演算。
区别于传统的插值拉伸等放大方法,waifu2x采用了经过训练的深度卷积神经网络进行图像放大,针对性地解决了其他放大方法在放大动漫风格图片时常出现的线条锐利度降低、色块纯净度变差等缺陷,对于动漫风格图片有着强于其他放大方法的表现。
而我们今天推荐的开源库是 waifu2x 的 Core ML 实现版本(https://github.com/imxieyi/waifu2x-ios) 。该项目的目标是在没有网络的情况下直接在 iOS 设备上运行 waifu2x 模型。
这个开源库对系统的基本要求是:
XCode 9+
iOS 11+
macOS 10.15+ (for Mac Catalyst)
它支持图片格式和视频格式。
对于图片格式而言,具有 RGB 颜色空间的图像效果很好。其他的应在处理之前转换为 RGB,否则输出图像将被破坏。Alpha 通道使用双三次插值进行缩放。通常在 GPU 上运行。如果图像太大,Metal 无法处理,它会自动回退到 CPU,这会非常慢。
基于 Metal Performance Shaders 的视频支持也包含在这个 repo 中。模型直接从 Core ML 模型加载(参见 CoreML-MPS)。它旨在通过 Mac Catalyst 在具有强大离散 GPU 的 macOS 上运行。在 iOS 设备上运行它会显着降低电池寿命并导致散热问题。很可能它会立即崩溃。iOS 和 macOS 上的内置视频解码器非常有限。如果您的视频不起作用,可以使用 ffmpeg 转换为支持的格式:
ffmpeg -i -c:v libx264 -preset ultrafast -pix_fmt yuv420p -c:a aac -f mp4
至于模型,这个存储库包含从 waifu2x-caffe 转换的所有模型。如果您想深入了解 Core ML,建议自己转换它们。可以将预训练模型转换为 Core ML 格式,然后将它们导入 XCode。预训练模型可以从 waifu2x-caffe 获得。可以使用 MobileNet-CoreML 中描述的相同方法。不过不应在 python 脚本中指定任何输入和输出层。
这个库还给出了一些设备上的性能基准测试:
有兴趣的读者可以测试一下,不过特别提醒,waifu2x-ios 特别声明不对设备造成的任何损坏负责。