构建适用于 Raspbian* OS 和 英特尔® 神经电脑棒 2 的开源OpenVINO™工具套件
笔记 |
|
OpenVINO™工具套件可以快速部署模拟人类视觉的应用程序和解决方案。该工具套件在基于卷积神经网络 (CNN) 的英特尔®硬件中扩展计算机视觉 (CV) 工作负载,以尽可能提高性能。这些步骤通常遵循这篇关于 英特尔® 神经电脑棒 2 和开源OpenVINO™工具 套件的文章,但它们包括了让一切在您的主板上运行的特定更改。
本指南为您提供了有关为 Raspbian* OS 构建 OpenVINO™ 工具套件的开源分发并使用 英特尔® 神经电脑棒 2 (英特尔® NCS2) 的步骤。
注意 | 原始英特尔® Movidius™神经电脑棒还兼容OpenVINO™工具套件,可以将该设备用于本文章中的英特尔® 神经电脑棒 2而不是整个文章中的英特尔® 神经电脑棒 2。 |
单击 或主题以了解详细信息:
系统要求
注意 | 本指南假定您的 Raspberry Pi* 主板在下面列出的操作系统上启动和运行。 |
硬件
- Raspberry Pi* 4(Raspberry Pi* 3 B+ 型号应该正常工作。)
- 至少一个 8 GB microSD 卡
- 英特尔® 神经电脑棒 2
- 以太网互联网连接或兼容的无线网络
- 专用直流电源适配器
目标操作系统
Raspbian* Stretch,32 位
- Raspbian* Buster,32 位
设置您的构建环境
注意 | 本指南包含需要作为根或 sudo 访问正确安装才能执行的命令。 |
确保您的设备软件是最新的:
sudo apt update && sudo apt upgrade -y
该工具套件的一些依赖关系并非预构建 ARMv7 二进制文件,需要从源代码构建。与其他平台相比,这可以显著增加构建时间。准备构建工具套件需要以下步骤:
安装构建工具
sudo apt install build-essential
从源代码安装 CMake*
从 Kitware* GitHub* 发行页面中提取 CMake,提取 CMake,并输入提取的文件夹:
cd ~/
wget https://github.com/Kitware/CMake/releases/download/v3.14.4/cmake-3.14.4.tar.gz
tar xvzf cmake-3.14.4.tar.gz
cd ~/cmake-3.14.4
运行 引导 脚本以安装额外的依赖性开始构建:
./bootstrap
make -j4
sudo make install
注意 | 命令 使用的工作数量可以使用 -j 标记进行调整。建议将工作数量设为平台上核心数量。 |
您可以使用以下命令检查系统内核的数量:
grep -c ^processor /proc/cpuinfo
请注意,设置过高的数量可能会导致内存溢出、构建故障。如果时间允许,建议运行 1 到 2 个作业。
从源代码安装 OpenCV
英特尔® OpenVINO™ 工具套件借助 OpenCV* 的强大功能来加速基于视觉的推理。虽然英特尔®OpenVINO™工具套件的 CMake 流程可以下载 OpenCV*,如果没有针对支持的平台安装任何版本,则 ARMv7 平台上不存在特定版本。因此,您必须从源代码构建 OpenCV。
OpenCV 需要一些其他的依赖性。从包管理器安装以下内容:
sudo apt install git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev libatlas-base-dev python3-scipy
注意 | 建议在 OpenCV* GitHub 页面克隆存储库时指定最新和稳定的分支或标签,而不是在默认情况下直接克隆主分支。 |
从 OpenCV* GitHub 页面克隆存储库,准备构建环境并构建:
cd ~/
git clone --depth 1 --branch 4.5.2-openvino https://github.com/opencv/opencv.git
cd opencv && mkdir build && cd build
cmake –DCMAKE_BUILD_TYPE=Release –DCMAKE_INSTALL_PREFIX=/usr/local ..
make -j4
sudo make install
下载源代码和安装依赖关系
注意 | 建议在 Openvinotoolkit Git GitHub 页面克隆存储库时指定最新且稳定的分支或标签,而不是在默认情况下直接克隆主分支。 |
英特尔® OpenVINO™ 工具套件的开源版本可通过 GitHub 获得。存储库文件夹名为 openvino。
cd ~/
git clone --depth 1 --branch 2021.3 https://github.com/openvinotoolkit/openvino.git
存储库还具有必须提取的子调制程序:
cd ~/openvino
git submodule update --init --recursive
英特尔®OpenVINO™工具套件具有很多构建依赖关系。install_build_dependencies.sh 脚本为您取出。如果在尝试运行脚本时出现任何问题,您必须单独安装每个依赖项。
运行脚本以安装英特尔® OpenVINO™工具套件的依赖关系:
sh ./install_build_dependencies.sh
如果脚本成功完成,您可以准备构建该工具套件。如果此时出现故障,请确保安装任何列出的依赖关系并重试。
建筑
开始构建的第一步是告诉系统安装 OpenCV 的位置。使用以下命令:
export OpenCV_DIR=/usr/local/lib/cmake/opencv4
要构建 Python API 包装器,安装 /inference-engine/ie_bridges/python/requirements.txt 文件中列出的所有额外软件包:
cd ~/openvino/inference-engine/ie_bridges/python/
pip3 install -r requirements.txt
注意 | 使用 -DENABLE_PYTHON=ON option. To specify an exact Python version, use the following options: -DPYTHON_EXECUTABLE=`which python3.7` \ -DPYTHON_LIBRARY=/usr/lib/arm-linux-gnueabihf/libpython3.7m.so \ -DPYTHON_INCLUDE_DIR=/usr/include/python3.7 使用 -DNGRAPH_ONNX_IMPORT_ENABLE=ON option to enable the building of the nGraph ONNX importer. 使用 -DNGRAPH_PYTHON_BUILD_ENABLE=ON option to enable the nGraph binding. 使用 -DCMAKE_INSTALL_PREFIX={BASE_dir}/openvino_dist to specify the directory for the CMake building to build in: for example, -DCMAKE_INSTALL_PREFIX=/home/pi/openvino_dist |
该工具套件使用 CMake 建筑系统来指导和简化建筑流程。要同时构建用于英特尔® 神经电脑棒 2的推理引擎和 MYRIAD 插件,使用以下命令:
注意 | 运行以下命令时,请移除所有背板 (\)。后传用于通知这些命令未分开。 |
cd ~/openvino
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/home/pi/openvino_dist \
-DENABLE_MKL_DNN=OFF \
-DENABLE_CLDNN=OFF \
-DENABLE_GNA=OFF \
-DENABLE_SSE42=OFF \
-DTHREADING=SEQ \
-DENABLE_OPENCV=OFF \
-DNGRAPH_PYTHON_BUILD_ENABLE=ON \
-DNGRAPH_ONNX_IMPORT_ENABLE=ON \
-DENABLE_PYTHON=ON \
-DPYTHON_EXECUTABLE=$(which python3.7) \
-DPYTHON_LIBRARY=/usr/lib/arm-linux-gnueabihf/libpython3.7m.so \
-DPYTHON_INCLUDE_DIR=/usr/include/python3.7 \
-DCMAKE_CXX_FLAGS=-latomic 。。
make -j4
sudo make install
如果由于 OpenCV 库的问题而 发布 命令失败,请确保您已将 OpenCV 安装信息告知系统。如果构建此时完成,英特尔® OpenVINO™ 工具套件已准备就绪。应当指出,构建被放置在 ~/openvino/推理引擎/bin/armv7l/Release 文件夹中。
验证安装
成功完成推理引擎构建后,应确认所有组件已正确设置。要验证该工具套件和英特尔® 神经电脑棒 2在您的设备上的工作,请完成以下步骤:
- object_detection_sample_ssd运行示例程序,以确认所有库是否正确加载。
- 下载 经过训练的模型。
- 为 神经网络选择一个输入。
- 配置 英特尔® 神经电脑棒 2 Linux* USB 驱动程序。
- 使用所选模型和输入运行object_detection_sample_ssd。
示例应用
英特尔® OpenVINO™ 工具套件包括一些使用推理引擎和英特尔® 神经电脑棒 2的示例应用程序。其中一个程序 object_detection_sample_ssd, 它可以在以下页面找到:
~/openvino/bin/armv7l/Release
运行以下命令以测试 object_detection_sample_ssd:
cd ~/openvino/bin/armv7l/Release
./object_detection_sample_ssd -h
它应该打印一个帮助对话框,描述该计划的可用选项。
下载一个模型
该计划需要一个模型来传递信息。您可以通过以下方式获取面向 IR 格式的英特尔®OpenVINO™工具套件的模型:
- 使用模型优化器将现有模型从受支持的框架之一转换为推断引擎的 IR 格式
- 使用模型下载器工具从 Open Model Zoo 下载
- 直接从 download.01.org 下载 IR 文件
出于我们的目的,直接下载是最简单的方法。使用以下命令来获得一个 person-vehicle-bike detection 模型:
cd ~/Downloads
wget https://download.01.org/opencv/2021/openvinotoolkit/2021.2/open_model_zoo/models_bin/3/person-vehicle-bike-detection-crossroad-0078/FP16/person-vehicle-bike-detection-crossroad-0078.bin
wget https://download.01.org/opencv/2021/openvinotoolkit/2021.2/open_model_zoo/models_bin/3/person-vehicle-bike-detection-crossroad-0078/FP16/person-vehicle-bike-detection-crossroad-0078.xml
注意 | 英特尔® 神经电脑棒 2需要针对 16 位浮点格式(称为 FP16)进行优化的模型。如果您的模型与示例不同,则您可能需要使用模型优化器来将其转换为 FP16。 |
神经网络输入
最后一个项目是神经网络的输入。对于我们下载的型号,您需要一个带有 3 个颜色通道的图像。将必要的文件下载到主板上:
cd ~/Downloads
wget https://cdn.pixabay.com/photo/2018/07/06/00/33/person-3519503_960_720.jpg -O walk.jpg
配置英特尔® 神经电脑棒 2 Linux USB 驱动程序
需要添加一些 udev 规则,以使系统能够识别英特尔® NCS2 USB 设备。
注意 | 如果当前用户不是用户组的成员,请运行以下命令并重新启动设备。 |
sudo usermod -a -G users "$(whoami)"
Set up the OpenVINO™环境:
source /home/pi/openvino_dist/bin/setupvars.sh
To perform 在英特尔® 神经电脑棒 2上进行推理,运行 USB 规则 install_NCS_udev_rules.sh脚本:
sh /home/pi/openvino_dist/install_dependencies/install_NCS_udev_rules.sh
The USB driver should be installed correctly now. If the Intel® Neural Compute Stick 2 is not detected when running demos, restart your device and try again.
运行object_detection_sample_ssd
下载模型时,提供输入映像,并将英特尔® 神经电脑棒 2插入 USB 端口,使用以下命令来运行 object_detection_sample_ssd:
cd ~/openvino/bin/armv7l/Release
./object_detection_sample_ssd -i ~/Downloads/walk.jpg -m ~/Downloads/person-vehicle-bike-detection-crossroad-0078.xml -d MYRIAD
这将以选定的选项运行应用程序。 -d 标记将告知程序用于推理的设备。-MYRIAD 利用该英特尔® 神经电脑棒 2激活 MYRIAD 插件。命令成功执行后,终端将显示推理统计信息并生成图像输出。
[ INFO ] Image out_0.bmp created!
[ INFO ] Execution successful
[ INFO ] This sample is an API example, for any performance measurements please use the dedicated benchmark_app tool
使用 Raspbian* 默认图像查看程序来打开生成的图像输出:
gpicview out_0.bmp
如果应用程序在您的英特尔® NCS2上成功运行,OpenVINO™工具套件和英特尔® 神经电脑棒 2正确设置,以便在您的设备上使用。
验证绑定与 Python 的 nGraph 模块
运行object_detection_sample_ssd Python 演示:
source /home/pi/openvino_dist/bin/setupvars.sh
cd /home/pi/openvino_dist/deployment_tools/inference_engine/samples/python/object_detection_sample_ssd
python3 object_detection_sample_ssd.py -i ~/Downloads/walk.jpg -m ~/Downloads/person-vehicle-bike-detection-crossroad-0078.xml -d MYRIAD
如果应用程序在您的英特尔® NCS2上成功运行,nGraph 模块将正确绑定 Python。
环境变量
您必须更新多个环境变量,才能编译并运行OpenVINO工具套件应用程序。运行以下脚本以临时设置环境变量:
source /home/pi/openvino_dist/bin/setupvars.sh
**(可选)** 关闭 shell 时,会删除OpenVINO环境变量。作为一个选项,您可以永久设置环境变量,如下所示:
>> ~/.openvino_dist/bin/setupvars.sh“ >>
要测试您的更改 , 请打开新的终端。您将看到以下内容:
[setupvars.sh]OpenVINO环境已初始化
这完成了 Raspbian* OS 的 OpenVINO™ 工具套件的开源分发和使用 英特尔® 神经电脑棒 2 的构建程序。
相关主题 |
在 Raspberry Pi* 上构建 Open Model Zoo 演示 |
适用于 Raspberry Pi* 的工作流程 |
ncappzoo 现在支持英特尔® NCS 2 和 OpenVINO™ 工具套件 |
OpenVINO™工具套件 Open Model Zoo |
优化英特尔®神经计算模块(英特尔® NCS 2)设备的网络 |
社区论坛和技术支持 |