完整教程,轻松上手!OpenVINO 能支持ARM架构了?!
点击蓝字
关注我们,让开发变得更有趣
全文字数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。
克隆 openvino_contrib 存储库
git clone --recurse-submodules --single-branch --branch=master https://github.com/openvinotoolkit/openvino_contrib.git
转到 ARM_Plugin 目录
cd openvino_contrib/modules/arm_plugin
Build Docker Image
Build 过程由/armplg_build.sh
在 armcpu_plugin 路径执行脚本,共有15步。
docker image build -t arm-plugin -f Dockerfile.RPi32 .
Build the plugin in Docker container
所有的中间结果和 build artifacts 都保存在工作路径下, 因此,我们可以挂载整个工作目录以将所有结果存储在容器外部。
mkdir build
docker container run --rm -ti -v $PWD/build:/armcpu_plugin arm-plugin
完成后如图所示
查看目录包含哪些文件
上述操作耗时近2小时,生成的 build 文件2.4GB。我们可以只导出带有 artifacts 的归档文件
OV_ARM_package.tar.gz
,比较节约时间,只有108MB,即执行下面命令:
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.运行加速
把编译生成的包
OV_ARM_package.tar.gz
拷贝到树莓派4B上 ,并解压。
我这里提前准备了优化好的IR文件,并拷贝到树莓派4B上,这样就可以直接在模型中加载。
vehicle-license-plate-detection-barrier-0106.xml
vehicle-license-plate-detection-barrier-0106.bin
转到推理引擎bin目录
cd /home/pi/deployment_tools/inference_engine/bin/armv7l
下载车辆图像
wget https://raw.githubusercontent.com/openvinotoolkit/openvino/master/scripts/demo/car_1.bmp
将 OpenCV 和 OpenVINO 库目录添加到 LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/opencv/lib/:~/deployment_tools/inference_engine/lib/armv7l/
在ARM平台上运行对象检测demo
./object_detection_sample_ssd -m ~/FP32/vehicle-license-plate-detection-barrier-0106.xml -i car_1.bmp -d CPU
查看使用ARM CPU加速推理后的输出图像
Q&A:
1.请问项目在哪里可以看到?
项目地址:
推荐使用Gitee开源版下载:
https://gitee.com/openvinotoolkit-prc/openvino
https://gitee.com/openvinotoolkit-prc/openvino_contrib
Github链接:
https://github.com/openvinotoolkit/openvino_contrib/tree/master/modules/arm_plugin
2.请问编译阶段可以在ARM平台执行吗?
由于文档没有详细说明,编译阶段我尝试在树莓派4B上build,但是发现各种莫名其妙的问题,在此建议编译在x86架构的硬件上进行。
3.请问文章所用的IR文件和编译生成的tar包哪里可以下载,可以跳过编译阶段直接用tar包进行推理吗?
IR文件和tar包我已经上传到百度云网盘,可以扫码获取。可以跳过编译阶段,直接把tar包拷贝到ARM平台加载模型进行推理。
--END--
你也许想了解(点击蓝字查看)⬇️
➡️ 「领航者联盟」发榜啦|OpenVINO 开发者界的“奥斯卡”,属于最 IN 社区人
➡️ 早餐 | 第三十期Graph Transformation(二)
➡️ OpenVINO 部署加速 Keras 训练生成的模型
➡️ OpenVINO 视觉开发与加速框架介绍
➡️ 转换和模型推理优化指南
➡️ OpenVINO 部署 Mask-RCNN 实例分割网络
➡️ OpenVINO 部署模型时如何自定义任意尺寸的支持
➡️ ROS C++ 代码规范
➡️ 快速构建 OpenVINO X Azure IoT 云边协同方案
○ 点击 “ 在看 ”,让更多人看见
点击阅读原文 跳 转 社 区 专区进行讨论!
本文分享自微信公众号 - OpenVINO 中文社区(openvinodev)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
黑客松大赛启动|“地球修复计划”火热进行中,诚邀各位极客入赛切磋!
点击蓝字 关注我们,让开发变得更有趣 无论是南极企鹅种群的追踪、热带雨林中昆虫声音的智能监测,还是利用 AI、机器学习识别和分类海洋垃圾。星辰大海之中,这些让人赞叹的技术创举,都离不开开发高手们的冲云破雾、踏浪前行。 英雄帖来袭,邀你登顶武林 极客 们,您是否想要修复地球家园却无处一展绝技? 别着急,在第52个地球日到来之际,AI 行业领军企业微软和英特尔共同发起“AI for Earth 英梦集结,微 AI 来战”主题黑客松大赛,旨在搭建技术交流互动平台,激发开发高手们点亮创意火花,突破技术界限 ,予力我们唯一的地球家园。 英特尔 OpenVINO™ 工具套件领航者联盟 即日起至6月15日,大赛报名通道全面开启,英特尔OpenVINO™工具套件领航者联盟 诚邀各位开发高手报名参赛,共同切磋技能,与同行者碰撞灵感挥洒创意,在技术江湖中策马扬鞭,亮剑决高下! 码上参赛 厚礼赠英雄,大奖等你拿 为了鼓励各位开发高手踊跃参赛打擂,我们为大家准备了丰厚的奖品,只要你敢于用技术打破想象的边界,大奖将触手可及! 早鸟福利: 天下武功,唯快不破!4月30日(含)前注册大赛,可获得总价值 2,500 ...
- 下一篇
优化技术专题-系统服务优化系列-CPU处理器鲜为人知的那些秘密
前提概要 所谓,知彼知己百战不殆,针对于计算机的优化技术来讲,最底层也不过是针对于CPU技术的优化了,但是如果要区优化程序,涉及到CPU的执行能力,那必须要了解CPU的原理和概念以及执行过程等概念,所以小编写了本片的目的就是针对于CPU的相关知识进行讲解,当你对CPU不在陌生的时候,也就是你超神的时候了,哈哈...... CPU相关的知识 本文介绍涉及到的知识点包含,多CPU、物理核、逻辑核、超线程、进程、线程、并发、并行,以及Linux查询CPU和核的信息的方法 易混淆概念 多处理器 认真辨别语境,通常是多CPU的意思;有时多是多逻辑处理器即多核的意思,好像老外常常把一个CPU里有多个核心当成多个CPU来描述。 逻辑处理器 就是逻辑核的意思,Windows 10的中文翻译了这个特别特别容易误解的词,我觉得就是可以理解为内核程序单位。 逻辑CPU 有人用了这个词表示逻辑核的意思,但是用法的根据我保持怀疑,很容易致使误解,由于我会认为,核就是核,CPU就是CPU,为何混为一谈,好像核就是CPU同样缓存。 CPU的一~四级缓存 CPU缓存(Cache Memory)的出现是弥补CPU和主存...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS关闭SELinux安全模块
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- 2048小游戏-低调大师作品
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Docker安装Oracle12C,快速搭建Oracle学习环境