最近在学习神经网络在边缘端的部署,所以在自己的电脑虚拟机中进行编译ncnn框架。首先编译ncnn需要准备g++、cmake、protobuf,opencv 安装g++
sudo apt-get install gcc-4.8 g++-4.8
在命令行当中输入如下指令,等待安装即可。
随后安装cmake
1.首先安装cmake所需的依赖
sudo apt install build-essential libssl-dev
到cmake官网下载cmake
2.随后将下载好的文件上传到虚拟机中,然后移动到指定的文件夹,使用如下命令进行加压
tar -zxvf cmake-3.22.1.tar.gz
3.随后进入到cmake文件夹中,使用如下命令进行构建
cd cmake-3.22.1
./configure --prefix=/usr/local
4.编译安装
make
sudo make install
5.将命令脚本软链到 /usr/bin/,供全局使用
sudo ln -s /usr/local/bin/* /usr/bin/
6.查看一下cmake 版本,如下图所示,安装成功
opencv安装
1.首先,到opencv的官网进行下载,这里我们选择4.5.5版本,点击source下载即可
将下载好的压缩文件上传到虚拟机中进行解压
2.安装所需依赖
apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
在执行第二条命令时,可能会出现无法定位软件包 libjasper-dev的错误,可以通过如下方式解决:
sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update # 更新软件包
随后再执行第二条命令。 3.解压下载下来的zip包
unzip opencv-4.5.5.zip
4.进入到opencv文件夹中
cd opencv-4.5.5/
5.创建一个文件夹用于编译
mkdir my_build_dir
cd my_build_dir
6.cmake一下
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
7.sudo make 等待编译
8.sudo make install 安装
9.sudo make install 执行完毕后OpenCV编译过程就结束了,接下来就需要配置一些OpenCV的编译环境首先将OpenCV的库添加到路径,从而可以让系统找到
sudo gedit /etc/ld.so.conf.d/opencv.conf
执行此命令后打开的可能是一个空白的文件,只需要在文件末尾添加
/usr/local/lib
10.执行如下命令使得刚才的配置路径生效
sudo ldconfig
11.配置bash
sudo gedit /etc/bash.bashrc
在末尾添加并保存文件
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
12.执行命令使得上述配置生效
source /etc/bash.bashrc
13.进行一下更新
sudo updatedb
到这里位置,所有有关于opencv的安装和配置都已经完成,我们可以使用一个样例程序来测试一下。 14.cd到opencv-4.5.5/samples/cpp/example_cmake目录下,按顺序执行如下命令
cmake .
make
./opencv_example
运行结果
正常情况下,可以看到打开了电脑的摄像头,桌面上显示窗口。但是我在执行的过程中报错了,解决方式如下:
1.使用“win+R”快捷键,打开win10电脑的运行端口,然后输入:services.msc,打开服务设置
2.在服务页面找到“VMUSBArbService”服务,并将其启动。
3.打开VMware,编辑虚拟机设置,在usb控制器中使用use3.0。
4.如下图所示,选择连接
Protobuf的编译安装
在安装好opencv之后,接下来就是安装Protobuf,和opencv安装的过程很像,首先我们到protobuf的github上进行下载官网
下载完成之后将其上传到虚拟机中进行解压。在解压完成之后,cd到protobuf的文件夹当中。然后安装光网的提示进行编译安装。
依次执行上述命令。即可。
./configure
make -j$(nproc) # $(nproc) ensures it uses all cores for compilation
make check
sudo make install
sudo ldconfig # refresh shared library cache.
编译安装ncnn
1.首先进入ncnn的代码仓库ncnn进行下载。
2.将下载得到ncnn-master.zip上传到虚拟机中进行解压
unzip ncnn-master.zip
3.解压完成之后,首先cd到ncnn文件夹中,依次执行如下命令即可
cd ncnn-master
mkdir -p build
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DNCNN_VULKAN=ON -DNCNN_SYSTEM_GLSLANG=ON -DNCNN_BUILD_EXAMPLES=ON ..
make -j$(nproc)
其中DNCNN_VULKAN是针对gpu的,如果想要ncnn能调用gpu做推理,那么选项需要打开。