全文字数625,预计阅读4min
1.扩展模块的介绍
OpenVINO诞生至今,其功能越来越强,模块也越来越多。为了保证发布版本的稳定性,Github上新增了openvino_contrib代码库用来开发扩展模块,功能稳定后再合并到OpenVINO库中。扩展模块中的每个模块都是解耦的,可以独立编译使用。主要包括三部分:arm_plugin、java_api、mo_pytorch。本文主要介绍 arm_plugin 模块的使用。arm_plugin使用 OpenVINO API 在 ARM CPU 上启用深度神经网络推理。该插件使用 ARM Compute Library 作为后端。
2.支持的平台
OpenVINO ARM CPU 插件在以下平台上受支持和验证:
| 硬件 |
系统 |
| 树莓派4B |
Debian 10.3 (32-bit) |
| 树莓派4B |
Ubuntu 18.04 (64-bit) |
3.编译构建
github 文档提供了三种方法(文档链接见文章末尾Q&A)。我这里使用了第一种交叉编译的方式,在 ubuntu18.04 系统上 Build Dockerfile 来构建 OpenVINO、OpenCV 和 ARM CPU Plugin。
git clone --recurse-submodules --single-branch --branch=master https:
cd openvino_contrib/modules/arm_plugin
Build 过程由/armplg_build.sh在 armcpu_plugin 路径执行脚本,共有15步。
docker image build -t arm-plugin -f Dockerfile.RPi32 .
![]()
所有的中间结果和 build artifacts 都保存在工作路径下, 因此,我们可以挂载整个工作目录以将所有结果存储在容器外部。
mkdir builddocker container run --rm -ti -v $PWD/build:/armcpu_plugin arm-plugin
完成后如图所示
![]()
查看目录包含哪些文件
![]()
docker container run --rm -ti --tmpfs /armcpu_plugin:rw -v $PWD:/remote \ arm-plugin sh -c "sh /armplg_build.sh && cp ./OV_ARM_package.tar.gz /remote"
![]()
4.运行加速
![]()
vehicle-license-plate-detection-barrier-0106.xmlvehicle-license-plate-detection-barrier-0106.bin
cd /home/pi/deployment_tools/inference_engine/bin/armv7l
wget https://raw.githubusercontent.com/openvinotoolkit/openvino/master/scripts/demo/car_1.bmp
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/opencv/lib/:~/deployment_tools/inference_engine/lib/armv7l/
![]()
./object_detection_sample_ssd -m ~/FP32/vehicle-license-plate-detection-barrier-0106.xml -i car_1.bmp -d CPU
![]()
![]()
Q&A: