官网:NCNN官方文档
On Debian, Ubuntu or Raspberry Pi OS, you can install all required dependencies using:
首先安装NCNN的依赖项,根据官网安装以下依赖项。
sudo apt install build-essential git cmake libprotobuf-dev protobuf-compiler libvulkan-dev vulkan-utils libopencv-dev
然后开始安装NCNN,从github下载ncnn包:
git clone --depth=1 https://github.com/Tencent/ncnn.git
cd到下载好的ncnn包的位置,如(cd /home/user-linux/ncnn),创建build文件夹并进入该文件夹。
cd ncnn
mkdir build
cd build
如果不编译vulkan,设置DNCNN_VULKAN=OFF,一般来说不用,如果要编译vulkan还需要下载libvulkan-dev vulkan-utils(虽然官网直接全包含了),如果你的硬件设备支持GPU可以考虑下载vulka,不然就设置DNCNN_VULKAN=OFF就行。
cmake -DNCNN_VULKAN=OFF ..
开始编译和install。
make -j8
make install
ncnn 的文件都安装在 build 下的 install 里面了,如果需要复制到 /usr/local执行以下指令,一般手动安装的都会做这么一个操作,方便后面的调用。(容易找到位置)
sudo mkdir /usr/local/lib/ncnn
sudo cp -r install/include/ncnn /usr/local/include/ncnn
sudo cp -r install/lib/libncnn.a /usr/local/lib/ncnn/libncnn.a
至此,ncnn的安装已经完成。测试NCNN是否可用:
cd ../examples
../build/examples/squeezenet ../images/256-ncnn.png
# 得到输出
532 = 0.165951
920 = 0.094098
716 = 0.062193
cd ../benchmark
../build/benchmark/benchncnn 10 $(nproc) 0 0
# 输出
loop_count = 10
num_threads = 8
powersave = 0
gpu_device = 0
cooling_down = 1
squeezenet min = 2.89 max = 3.19 avg = 2.98
squeezenet_int8 min = 5.37 max = 8.72 avg = 5.93
mobilenet min = 3.75 max = 4.26 avg = 3.91
mobilenet_int8 min = 5.91 max = 6.08 avg = 5.98
mobilenet_v2 min = 3.51 max = 4.31 avg = 3.83
mobilenet_v3 min = 3.09 max = 3.70 avg = 3.22
shufflenet min = 3.03 max = 3.26 avg = 3.10
shufflenet_v2 min = 2.51 max = 2.81 avg = 2.59
mnasnet min = 3.42 max = 3.90 avg = 3.66
proxylessnasnet min = 3.73 max = 4.26 avg = 3.88
efficientnet_b0 min = 5.86 max = 10.86 avg = 6.76
efficientnetv2_b0 min = 6.66 max = 7.58 avg = 7.00
regnety_400m min = 7.83 max = 12.75 avg = 8.52
blazeface min = 0.89 max = 0.96 avg = 0.91
googlenet min = 10.47 max = 11.00 avg = 10.85
googlenet_int8 min = 19.94 max = 20.60 avg = 20.11
resnet18 min = 8.22 max = 28.34 avg = 10.50
resnet18_int8 min = 18.58 max = 53.93 avg = 22.29
alexnet min = 8.48 max = 41.33 avg = 14.13
vgg16 min = 46.46 max = 54.78 avg = 49.38
vgg16_int8 min = 48.13 max = 61.21 avg = 50.25
resnet50 min = 19.17 max = 20.06 avg = 19.43
...
在安装NCNN的时候安装依赖项是会安装Opencv,但是版本比较低,可用通过以下命令查看当前opencv版本。
pkg-config --modversion opencv
这里想自己从source装一个Opencv 3.x版本以上的Opencv。首先前往Opencv官网下载对应版本的Releases - OpenCV,如我下载的是3.4.3的版本。下载后解压。
进入opencv-3.4.3文件夹,建立build文件夹,进入build文件夹。
cd /home/maser-linux/Downloads/opencv-3.4.3
mkdir build
cd build
进行cmake,编译和install。大概5-10分钟。
sudo cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
sudo make -j8
sudo make install
安装完opencv需要配置环境。用nano打开/etc/ld.so.conf,
在文件中加上一行 /usr/loacal/lib,
其中/user/loacal
是opencv安装路径也就是makefile中指定的安装路径。即上面CMAKE_INSTALL_PREFIX=/usr/local。
运行下面语句刷新库链接配置。
sudo ldconfig
然后修改bash.bashrc文件并更新。
sudo gedit /etc/bash.bashrc
# 输入
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
source /etc/bash.bashrc
在命令行中输入如下命令:说明Opencv3.4.3安装完成。
pkg-config opencv --modversion
顺便一提,如果是安装的opencv4,查看版本应该是:
pkg-config --modversion opencv4