写点什么

基于树莓派和 OpenVINO 的边缘计算

发布于: 2021 年 04 月 08 日

前期准备

硬件的选购

  1. 树莓派 4B(Raspberry Pi),8G 内存版本的机器

  2. 一个 32G 的 SD 卡

  3. 配套的电源线以及其他组件,例如外壳等

  4. 神经计算棒二代(ntel® Neural Compute Stick 2,简称 NCS2)(选购)

软件

  1. Python3.7.x

  2. VSCode(我个人比较喜欢使用这个编辑器)

  3. OpenVINO 最新版本

https://storage.openvinotoolkit.org/repositories/openvino/packages/2021.3/

  1. 针对树莓派 CPU 优化的插件

https://github.com/openvinotoolkit/openvino_contrib/tree/master/modules/arm_plugin

  1. OpenVINO 的 Demo 仓库

https://github.com/openvinotoolkit/open_model_zoo/tree/master/demos

OpenVINO 安装

先登录到树莓派系统


1. 安装外部依赖项 cmake

sudo apt install cmake
复制代码



输入 Y,回车确定,等待安装完成。

2. 下载和处理 OpenVINO 包

在官网下载好安装包

https://storage.openvinotoolkit.org/repositories/openvino/packages/2021.3/


我选择的是树莓派的版本

https://storage.openvinotoolkit.org/repositories/openvino/packages/2021.3/l_openvino_toolkit_runtime_raspbian_p_2021.3.394.tgz

我们需要将下载好的软件包发送到树莓派中的 Downloads 文件夹中,你也可以选择其他文件夹。

我们这里使用之前介绍的 VNC 软件进行软件的传送


点击“传送图标”


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

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

 wget https://storage.openvinotoolkit.org/repositories/openvino/packages/2021.3/l_openvino_toolkit_runtime_raspbian_p_2021.3.394.tgz
复制代码



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

cd Downloads
复制代码

创建 openvino 文件夹

 sudo mkdir -p /opt/intel/openvino
复制代码



解压压缩包

sudo tar -xf l_openvino_toolkit_runtime_raspbian_p_2021.3.394.tgz --strip 1 -C /opt/intel/openvino
复制代码



3. 设置环境

修改 setupvars.sh 文件

sed -i "s|<INSTALLDIR>|$(pwd)/inference_engine_vpu_arm|" inference_engine_vpu_arm/bin/setupvars.sh
复制代码

设置永久的环境变量

echo "source /opt/intel/openvino/bin/setupvars.sh" >> ~/.bashrc
复制代码


设置好之后,我们新开一个 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. 安装依赖库

sudo apt-get updatesudo apt-get install -y git cmake  scons build-essential
复制代码

这里的 cmake 我们之前已经安装过了

2. 下载 openvino_contrib

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




物体检测示例

1. 在 Home 目录,创建 build 目录

mkdir ~/build && cd ~/build
复制代码


2. 编译示例代码

cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-march=armv7-a" /opt/intel/openvino/deployment_tools/inference_engine/samples/cpp
复制代码



make -j2 object_detection_sample_ssd
复制代码


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

3. 下载权重文件和模型文件

wget --no-check-certificate https://download.01.org/opencv/2019/open_model_zoo/R1/models_bin/face-detection-adas-0001/FP16/face-detection-adas-0001.bin
复制代码



wget --no-check-certificate https://download.01.org/opencv/2019/open_model_zoo/R1/models_bin/face-detection-adas-0001/FP16/face-detection-adas-0001.xml
复制代码



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

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


1. 进入示例文件夹

cd Downloads/inference_engine_vpu_arm/deployment_tools/inference_engine/samples
复制代码


2. 创建 build 目录并进入

mkdir build && cd 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 文件夹中


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

cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-march=armv7-a"
复制代码


4. 编译对象检测示例

当我运行“make -j2 object_detection_sample_ssd”会报一下错误

因此需要添加一些 USB 规则,并插入神经计算棒

4.1 配置 USB

我们新开一个窗口,将 Linux 用户添加到 users 组

sudo usermod -a -G users "$(whoami)"
复制代码


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

sh /opt/intel/openvino/install_dependencies/install_NCS_udev_rules.sh
复制代码



将计算棒插入 3.0 接口

完成后,我们再次执行

make -j2 object_detection_sample_ssd
复制代码

下载英特尔预先训练好的人脸检测模型

wget --no-check-certificate https://download.01.org/opencv/2021/openvinotoolkit/2021.2/open_model_zoo/models_bin/3/face-detection-adas-0001/FP16/face-detection-adas-0001.binwget --no-check-certificate https://download.01.org/opencv/2021/openvinotoolkit/2021.2/open_model_zoo/models_bin/3/face-detection-adas-0001/FP16/face-detection-adas-0001.xml
复制代码


接下来就是找一张图片,来看看能否运行成功啦,我在桌面准备了一张照片


未完待续

发布于: 2021 年 04 月 08 日阅读数: 43
用户头像

一个日语专业的程序猿。 2017.09.10 加入

【坐标】无锡 【软件技能】Java,C#,Python 【爱好】炉石传说 【称号】InfoQ年度人气作者,Intel OpenVINO领航者联盟成员 【B站】https://space.bilibili.com/397260706/ 【个人站】www.it-worker.club

评论

发布
暂无评论
基于树莓派和OpenVINO的边缘计算