Openvino_ARM源码编译+nano_detect树莓派部署实测

        目前openvino在树莓派上的部署形式是和NCS组合在一起使用,树莓派无法单独使用,今年5月Github上开源了openvino在ARM上独立运行的源码编译方法,以实现openvino在树莓派的独立部署。 参考openvino_ARM编译方法 ,折腾一番后,在安装Ubuntu18.04的树莓派4B上实现了openvino加速工具的部署,并基于该加速工具测试了目标检测方法nano_detect,分享给后来之人。 

        一 、openvino交叉编译

        首先给出github的交叉编译教程:Github-openvino交叉编译教程,目前支持的软硬件搭配如下图所示,硬件系统是树莓派4B,操作系统Debian32位和Ubuntu64位。

                                Openvino_ARM源码编译+nano_detect树莓派部署实测_第1张图片

        我选择了Ubuntu18.04作为操作系统进行编译, 编译是在自己的x86-64主机上做的,步骤如下:

(1)安装docker

sudo apt-get install docker

(2)clone代码仓

git clone --recurse-submodules --single-branch --branch=master https://github.com/openvinotoolkit/openvino_contrib.git 

 (3)创建docker镜像

cd openvino_contrib/modules/arm_plugin
docker image build -t arm-plugin -f Dockerfile.RPi64_bionic .

(4)arm架构openvino交叉编译

mkdir build
docker container run --rm -ti -v $PWD/build:/armcpu_plugin arm-plugin

第四步时间较长,得个把小时,等着就行,直到生成如下所示的文件

Openvino_ARM源码编译+nano_detect树莓派部署实测_第2张图片

        编译完成的文件夹如上图所示,除了armcpu_package和OV_ARM压缩包,其他文件夹都是从github上下载下来的,可以独立下载再执行交叉编译,下载方法这里有:Github Project子库git方法。

        我们需要的就是OV_ARM压缩包,把这个文件夹拷贝到树莓派4B上进行解压,得到需要的各个库文件,与官方提供的openvino差别不大,至此,交叉编译完成。

二、openvino在树莓派4B部署及nano_detect测试

(1)树莓派4B配置openvino和主机端配置方法相同,核心就是添加环境变量,添加方法如下:

sudo vi ~/.bashrc
source ../bin/setupvars.sh
source ../opencv/setupvars.sh

 配置完成后开始测试nano_detect,nano_det GitHub开源链接如下Github:Nano_Detect,没接触过的去了解一下,令人膜拜的目标检测算法。

在开源代码里添加推理时间获取代码并进行推理,设置推理次数20次,计算平均值,基于openvino的nano_detect推理时间如下所示,平均推理时间330ms。

Openvino_ARM源码编译+nano_detect树莓派部署实测_第3张图片

(2)彩蛋(nuhui大佬yyds)

基于ncnn的nano_det在树莓派4B部署方法如下图所示,平均推理时间147ms。

Openvino_ARM源码编译+nano_detect树莓派部署实测_第4张图片

 三、感悟总结

(1)PC端Intel芯片2.6GHz主频推理速度16ms,但到了ARM上只有330ms,可以看到推理速度掉速比较大,猜测是由于Intel指令集和arm指令集的差异导致的,无法最大程度使用树莓派4B。

(2)后期做一些openvnio自带库的推理,看看速度如何,但官网给的样例推理速度也不快,提速空间不大,整体有点小失落,折腾了两三天速度不尽人意。

(3)nihui大佬,yyds。PC端Intel芯片2.6GHz主频推理速度27ms,树莓派4B达到147ms。

你可能感兴趣的