使用SWIG实现的SRMD ncnn Vulkan Python的Python FFI
项目描述
SRMD ncnn Vulkan Python
srmd-ncnn-vulkan 是nihui的SRMD转换器ncnn实现。在Intel / AMD / Nvidia上运行速度快,使用Vulkan API。
此项目是nihui项目的Python包装器。
srmd-ncnn-vulkan-python使用SWIG包装了 srmd-ncnn-vulkan项目,以便更容易将srmd-ncnn-vulkan与现有的Python项目集成。
此项目仅包装了原始SRMD类。因此,除了核心放大和去噪功能之外的其他功能,如多线程加载和保存等,均不可用。当然,自动瓷砖大小和预填充设置已实现,所以请放心。
下载
现在提供linux x64、Windows x64和MacOS x64版本。对于其他平台,您可能需要自行编译。MacOS ARM64构建不可用的原因是它需要ARM Python Dev Libs,我不知道如何在GitHub的MacOS x64 VM上获得它。此外,我没有Mac。
构建
首先,您需要在您的平台上安装Python、Python开发包(Visual Studio中的Python原生开发库)、Vulkan SDK和SWIG。然后
Linux
- 安装依赖项:cmake、Vulkan SDK、SWIG和python-dev
Debian、Ubuntu和其他类似Debian的发行版
apt-get install cmake libvulkan-dev swig python3-dev
Arch发行版
pacman -S base-devel cmake vulkan-headers vulkan-icd-loader swig python
- 使用CMake构建
git clone https://github.com/ArchieMeng/srmd-ncnn-vulkan-python.git
cd srmd-ncnn-vulkan-python
git submodule update --init --recursive
cmake -B build src
cd build
make
Windows
我使用Visual Studio 2019和msvc v142构建了Windows上的此项目。
安装visual studio,打开项目目录,然后构建。任务完成。
Windows上唯一的问题是,您不能使用Windows版的CMake生成Visual Studio解决方案文件并进行构建。这将导致库在加载时崩溃。
唯一的方法是使用Visual Studio以目录方式打开项目,并在Visual Studio中构建它。
- 安装依赖项:cmake、Vulkan SDK、SWIG和python-dev
- 从https://vulkan.lunarg.com/sdk/home下载Vulkan SDK
- 从http://www.swig.org/download.html下载SWIG
- 从官方网站或Visual Studio安装Python及其开发库(Python开发环境和Python原生开发库组件)
- 使用cmake构建项目。可以参考Linux构建方法,也可以在Visual Studio中直接进行。
Mac OS X
- 安装依赖项:cmake、Vulkan SDK、SWIG和python-dev
- 从https://vulkan.lunarg.com/sdk/home下载Vulkan SDK
- 如果您已安装homebrew,运行以下命令获取SWIG
brew install swig
- 我猜Mac中的Python开发库是预装的。如果没有,可以谷歌一下。
- 使用CMake构建
- 您可以通过传递-DUSE_STATIC_MOLTENVK=ON选项来避免在MacOS上链接Vulkan加载器库
git clone https://github.com/ArchieMeng/srmd-ncnn-vulkan-python.git
cd srmd-ncnn-vulkan-python
git submodule update --init --recursive
cmake -B build src
cd build
make
用法
示例程序
from PIL import Image
from srmd_ncnn_vulkan import Srmd
im = Image.open("0.jpg")
upscaler = Srmd(gpuid=0)
out_im = upscaler.process(im)
out_im.save("1.png")
原始SRMD项目
其他使用的开源代码
- https://github.com/Tencent/ncnn 用于所有平台上的快速神经网络推理
- https://github.com/nothings/stb 用于Linux / MacOS上的图像解码和编码
- https://github.com/tronkko/dirent 用于Windows中列出目录中的文件
项目详情
srmd-ncnn-vulkan-python-1.0.2.tar.gz的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 3c7f71cbba2b6310c4b14c2b11dae7737582ac004893f8c9cc3f7c305c7bbe49 |
|
MD5 | 4b15de628ecb13248470fd683416c404 |
|
BLAKE2b-256 | 1d25a626ad22548228cc72ad12f8b00bca017998783b6c3bbd4f62a253815707 |