高性能神经网络推理框架 ncnn 极简脚本编译安装——适用于Linux下root用户快速极简安装

Posted 墨理学AI

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了高性能神经网络推理框架 ncnn 极简脚本编译安装——适用于Linux下root用户快速极简安装相关的知识,希望对你有一定的参考价值。

  • 🥇 版权: 本文由【墨理学AI】原创、在CSDN首发、各位大佬、开打开打


👋 认识 ncnn


ncnn 是一个为手机端极致优化的高性能神经网络前向计算框架。

ncnn 从设计之初深刻考虑手机端的部署和使用。

无第三方依赖,跨平台,据称 手机端 cpu 的速度快于目前所有已知的开源框架。

基于 ncnn,开发者能够将深度学习算法轻松移植到手机端高效执行,开发出人工智能 APP.

更多不同大厂商推出的深度学习模型推理部署框架,各位可移步下方博文进行了解


模型推理框架一览 | 模型部署不得不了解的罗马【模型部署框架】


📘 下载


  • 下载方式一
git clone https://github.com/Tencent/ncnn.git
  • 下载方式二

下载 zip,然后 copy 到服务器

unzip ncnn-master.zip 

📔 安装准备


基础 C++ 环境即可、Linux 环境通常具备

sudo 可快速安装相关依赖

sudo apt install build-essential git cmake libprotobuf-dev protobuf-compiler libvulkan-dev vulkan-utils libopencv-dev

VULKAN 解压安装、export 环境变量

wget https://sdk.lunarg.com/sdk/download/1.2.189.0/linux/vulkansdk-linux-x86_64-1.2.189.0.tar.gz?Human=true -O vulkansdk-linux-x86_64-1.2.189.0.tar.gz
tar -xf vulkansdk-linux-x86_64-1.2.189.0.tar.gz

export VULKAN_SDK=$(pwd)/1.2.189.0/x86_64


📗 make、make -j 、 make install 一个脚本即可完成安装


🟣 简单分析

ncnn 支持多种平台、安卓端、ios端、以及特定类型的开发板

ncnn-master/build.sh


该脚本下,包含各个平台的编译安装指令,我们可以根据自己平台选择性安装即可

🔴 指定 install 路径为 build/install 即可

自定义,撰写的一个 Linux(Ubuntu、centOS)下编译安装脚本如下

set -uex

BUILD_DIR="build"

if [ $# == 1 ]; then
	if [ $1 == "1" ]; then
		rm -rf ${BUILD_DIR}
	fi
fi


if [ ! -d ${BUILD_DIR} ]; then
	mkdir -p ${BUILD_DIR}
fi

pushd ${BUILD_DIR}

rm -rf *
cmake -DCMAKE_INSTALL_PREFIX=./install ..
make -j

make install

popd  # ${BUILD_DIR}


🔵 tree install 查看安装的库和头文件效果如下

我们看一看,make install 安装了什么

cd build

tree install
  • bin 目录下,是相关 可执行 ncnn 工具
  • include 目录下,是相关头文件
  • lib 目录下,是静态库
tree install

install
├── bin
│   ├── caffe2ncnn
│   ├── darknet2ncnn
│   ├── mxnet2ncnn
│   ├── ncnn2int8
│   ├── ncnn2mem
│   ├── ncnn2table
│   ├── ncnnmerge
│   ├── ncnnoptimize
│   └── onnx2ncnn
├── include
│   └── ncnn
│       ├── allocator.h
│       ├── benchmark.h
│       ├── blob.h
│       ├── c_api.h
│       ├── command.h
│       ├── cpu.h
│       ├── datareader.h
│       ├── gpu.h
│       ├── layer.h
│       ├── layer_shader_type_enum.h
│       ├── layer_shader_type.h
│       ├── layer_type_enum.h
│       ├── layer_type.h
│       ├── mat.h
│       ├── modelbin.h
│       ├── ncnn_export.h
│       ├── net.h
│       ├── option.h
│       ├── paramdict.h
│       ├── pipelinecache.h
│       ├── pipeline.h
│       ├── platform.h
│       ├── simpleocv.h
│       ├── simpleomp.h
│       ├── simplestl.h
│       └── vulkan_header_fix.h
└── lib
    ├── cmake
    │   └── ncnn
    │       ├── ncnn.cmake
    │       ├── ncnnConfig.cmake
    │       └── ncnn-release.cmake
    └── libncnn.a

6 directories, 39 files

如果是其他项目需要,那么只需 copy install 目录下的这些文件即可开始使用 ncnn


📙 ncnn 相关博文推荐


本博文是 ncnn 脚本方式、极简安装的整理,如果本博文脚本直接运行安装失败,单独步骤安装分析,适用于普通用户的安装方式可参考如下博文


ncnn 普通用户 逐步编译安装教程 | 示例运行【 onnx2ncnn | caffe2ncnn | mxnet2ncnn | darknet2ncnn 】

博主关于 ncnn 的入门博文,总结如下,仅供参考


以上是关于高性能神经网络推理框架 ncnn 极简脚本编译安装——适用于Linux下root用户快速极简安装的主要内容,如果未能解决你的问题,请参考以下文章

嵌入式AIubuntu 安装 ncnn

NCNN的INT8量化使用方式

NCNN验证YOLOV4模型输入数据归一化系数

腾讯开源深度学习框架ncnn,主打移动端

模型推理ncnn 模型转换及量化流程

模型推理Tengine 模型转换及量化