基于树莓派和 OpenVINO 的边缘计算
前期准备
硬件的选购
树莓派 4B(Raspberry Pi),8G 内存版本的机器
一个 32G 的 SD 卡
配套的电源线以及其他组件,例如外壳等
神经计算棒二代(ntel® Neural Compute Stick 2,简称 NCS2)(选购)
软件
Python3.7.x
VSCode(我个人比较喜欢使用这个编辑器)
OpenVINO 最新版本
https://storage.openvinotoolkit.org/repositories/openvino/packages/2021.3/
针对树莓派 CPU 优化的插件
https://github.com/openvinotoolkit/openvino_contrib/tree/master/modules/arm_plugin
OpenVINO 的 Demo 仓库
https://github.com/openvinotoolkit/open_model_zoo/tree/master/demos
OpenVINO 安装
先登录到树莓派系统

1. 安装外部依赖项 cmake

输入 Y,回车确定,等待安装完成。
2. 下载和处理 OpenVINO 包
在官网下载好安装包
https://storage.openvinotoolkit.org/repositories/openvino/packages/2021.3/

我选择的是树莓派的版本
我们需要将下载好的软件包发送到树莓派中的 Downloads 文件夹中,你也可以选择其他文件夹。
我们这里使用之前介绍的 VNC 软件进行软件的传送

点击“传送图标”

选择“发送文件”,它默认是发送到桌面,传送完成后我们把它移动到 Downloads 文件夹中。

当然我们也可以通过 wget 命令来下载:

我们通过下面的命令,切换到 Downloads 文件夹中
创建 openvino 文件夹

解压压缩包

3. 设置环境
修改 setupvars.sh 文件
设置永久的环境变量

设置好之后,我们新开一个 ssh 链接窗口,会看到终端的开始处多了一串内容“[setupvars.sh] OpenVINO environment initialized”

在没有使用神经计算棒的情况下,我们的基本配置到此就算完成了。接下来我们一起运行一个模型来看看看看效果吧!
添加 ARM 版本 CPU 的插件
OpenVINO 在安装时,默认带了一些已经训练好的模型,我只要拿过来调用一下,就能轻松的看到效果。
在最新版本的 OpenVINO 中对 ARM CPU 进行了优化,接下来我们安装一下这个插件:
GitHub 地址:https://github.com/openvinotoolkit/openvino_contrib/tree/master/modules/arm_plugin
1. 安装依赖库
这里的 cmake 我们之前已经安装过了

2. 下载 openvino_contrib


物体检测示例
1. 在 Home 目录,创建 build 目录

2. 编译示例代码


到此为止,我们用于物体检测的执行文件就完成了,但是这还不够,我们还需要下载学习后的模型和权重文件。
3. 下载权重文件和模型文件



这样我们就完成了所有文件的下载。为了方便操作,我们链接 VNC Viewer 上传一张人脸的照片

这张图片来自 B 站的一个截图

1. 进入示例文件夹

2. 创建 build 目录并进入

3. 构建对象检测样本
将 CMakeLists.txt 复制到“/home/pi/Downloads/inference_engine_vpu_arm/deployment_tools/inference_engine/samples”文件夹中
CMakeLists.txt 位于/home/pi/Downloads/inference_engine_vpu_arm/opencv/samples 文件夹中

然后运行如下代码进行构建

4. 编译对象检测示例
当我运行“make -j2 object_detection_sample_ssd”会报一下错误

因此需要添加一些 USB 规则,并插入神经计算棒
4.1 配置 USB
我们新开一个窗口,将 Linux 用户添加到 users 组

4.2 安装运行计算棒的 USB 规则

将计算棒插入 3.0 接口

完成后,我们再次执行
下载英特尔预先训练好的人脸检测模型

接下来就是找一张图片,来看看能否运行成功啦,我在桌面准备了一张照片
未完待续
版权声明: 本文为 InfoQ 作者【IT蜗壳-Tango】的原创文章。
原文链接:【http://xie.infoq.cn/article/c6615c714c738aef81eacd9a5】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论