ncnn
是由腾讯开发一个跨平台的神经网络前向计算框架,为手机端推理提供了极致优化的高性能。其源码编译可参考官方教程Building。这里记录一下编译安装流程(Windows/Linux)。
一、安装所需依赖
- git
- g++
- cmake
- Protobuf
- GLslang
- Vulkan(可选,GPU推理)
- opencv (可选,编译例子需要)
其中git、g++、cmake是编译所需的工具。Protobuf(protocol buffers)是一种语言无关、平台无关、可扩展的序列化结构数据的方法,它可用于(数据)通信协议、数据存储等。GLslang(GLSL - OpenGL Shading Language)是一个以C语言为基础的高阶着色语言,它是由 OpenGL ARB 所建立,提供开发者对绘图管线更多的直接控制,而无需使用汇编语言或硬件规格语言。Vulkan是一个低开销、跨平台的二维、三维图形与计算的应用程序接口(API)。
二、编译安装Protobuf
2.1 下载
下载Protobuf-3.11.2: https://github.com/google/protobuf/archive/v3.11.2.zip 。
下载后解压。
2.2 编译安装
我windows安装了Visual Studio 2019,因此直接用其自带的cmake,也可以单独安装cmake,然后利用cmake.gui。
在开始菜单找到Visual Studio 2019然后找到x64 Native Tools Command Prompt for VS 2019
右击,点击更多,以管理员身份运行以下命令,如果是Linux则安装cmake后,先安装
sudo apt install libprotobuf-dev protobuf-compiler
然后直接打开命令行窗口运行以下命令。以下命令是安装Release版本,如果安装Debug版本需把以下命令中的Release修改为Debug
cd <protobuf-root-dir>
mkdir build
cd build
cmake -A x64 -DCMAKE_INSTALL_PREFIX=%cd%/install -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_MSVC_STATIC_RUNTIME=OFF ../cmake
cmake --build . --config Release -j 2
cmake --build . --config Release --target install
三、编译安装vulkan
3.1 下载
进入官网:https://vulkan.lunarg.com/sdk/home 下载相应版本
3.2 编译安装
windows下载相应的exe文件直接进行安装即可,另外还需安装vulkan_intel驱动和vulkan_NVIDIA驱动。vulkan_intel驱动在 https://downloadcenter.intel.com/zh-cn/product/80939/- 找到与本机相应的驱动。安装vulkan_NVIDIA驱动先在 https://developer.nvidia.com/vulkan-driver 中选择显卡对应的驱动。
windows下修改CMakeLists.txt,相应的更改为vulkan的安装路径
Linux下则先安装
sudo apt install libvulkan-dev vulkan-utils
四、编译安装openCV
参考 https://www.cnblogs.com/xiaxuexiaoab/p/15894993.html
五、编译安装ncnn
前面步骤执行完后,可安装ncnn,执行以下命令进行安装。注意如果编译Release,则对应的依赖如:Protobuf也需要编译成Release版本
cd <ncnn-root-dir>
mkdir -p build
cd build
cmake -A x64 -DCMAKE_INSTALL_PREFIX=%cd%/install -DProtobuf_INCLUDE_DIR=<protobuf-root-dir>/build/install/include -DProtobuf_LIBRARIES=<protobuf-root-dir>/build/install/lib/libprotobuf.lib -DProtobuf_PROTOC_EXECUTABLE=<protobuf-root-dir>/build/install/bin/protoc.exe -DNCNN_VULKAN=ON ..
cmake --build . --config Release -j 2
cmake --build . --config Release --target install