跳转至主要内容
支持知识库

使用 32 位 Debian*作系统的预配置 Dockerfile 交叉编译OpenVINO™工具套件和 NCS2 插件

内容类型: 安装与设置   |   文章 ID: 000057005   |   上次审核日期: 2025 年 02 月 20 日
笔记
  • 安装过程中需要执行所有步骤。
  • 这些步骤已使用 Raspberry Pi 4* 主板和 Raspbian* Buster,32 位进行测试
  • 需要互联网连接来执行本指南中的步骤。
  • 本文已使用 OpenVINO™ 工具套件开源发行版 2022.1 版进行验证。

OpenVINO™ 工具套件可以快速部署可模拟人类视觉的应用程序和解决方案。该工具套件基于卷积神经网络 (CNN) 在英特尔®硬件上扩展计算机视觉 (CV) 工作负载,从而最大限度地提高性能。这些步骤通常遵循 如何构建 ARM CPU 插件 。但是,需要做出特定的更改才能在 Raspberry Pi 4* 上运行所有内容。本指南提供了使用交叉编译方法构建适用于 Raspbian* 32 位作系统的 OpenVINO™ 工具套件开源发行版的步骤。

单击主题以了解详细信息:

系统要求
注意 本指南假设您已在下面列出的作系统下启动并运行 Raspberry Pi* 主板。

硬件

  • Raspberry Pi* 4(Raspberry Pi* 3 Model B+ 应该可以工作。)
  • 至少一个 16 GB microSD 卡
  • 英特尔® 神经电脑棒 2
  • 以太网互联网连接或兼容的无线网络
  • 安装了 docker 容器的主机

目标作系统

  • Raspbian* Buster,32 位
设置构建环境
注意 本指南包含需要以 root 或 sudo 访问权限执行才能正确安装的命令。

确保您的设备软件是最新版本:

sudo apt update && sudo apt upgrade -y

安装 Docker 容器
注意 您可以按照 docker 官方文档的安装说明进行作
https://docs.docker.com/engine/install

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo groupadd docker
sudo usermod -aG docker ${USER}
sudo systemctl restart docker

克隆openvino_contrib存储库
注意 本文的openvino_contrib和OpenVINO工具套件版本基于 2022.1

下载源代码并修改配置文件:

git clone --recurse-submodules --single-branch --branch=2022.1 https://github.com/openvinotoolkit/openvino_contrib.git

转到arm_plugin目录:

cd openvino_contrib/modules/arm_plugin

使用编辑器工具修改Dockerfile.RPi32_buster文件的内容,如下所示:

vim dockerfiles/Dockerfile.RPi32_buster

在第 114 行中添加“RUN pip install protobuf==3.20.0”,如下图所示。

Screenshot

保存已编辑的文件。

使用编辑器工具修改 arm_cpu_plugin_build.sh 文件的内容,如下所示:

vim scripts/arm_cpu_plugin_build.sh

编辑第 77、78、79 和 136 行,并添加更改,如下所示:

77 checkSrcTree $OPENCV_HOME https://github.com/opencv/opencv.git 4.5.5-openvino-2022.1 4.x
78 checkSrcTree $OPENVINO_HOME https://github.com/openvinotoolkit/openvino.git 2022.1.0 releases/2022/1
81 checkSrcTree $OMZ_HOME https://github.com/openvinotoolkit/open_model_zoo.git 2022.1.0 releases/2022/1
136 -DENABLE_INTEL_MYRIAD=ON -DCMAKE_BUILD_TYPE=$BUILD_TYPE \

保存已编辑的文件。

Docker 容器环境中的交叉编译 OpenVINO™ 工具套件

在此步骤中,我们将运行脚本来下载和交叉编译 OpenVINO™ 工具套件和 Docker 容器环境中的其他组件(如 OpenCV*):

前往 ARM CPU 插件目录:

cd openvino_contrib/modules/arm_plugin

构建 Docker* 映像:

docker image build -t arm-plugin -f dockerfiles/Dockerfile.RPi32_buster .

在 Docker* 容器中构建插件:

构建过程由在目录中执行 /arm_cpu_plugin_build.sh 脚本执行 /arm_cpu_plugin (默认执行容器命令)。所有中间结果和构建工件都存储在工作目录中。

因此,可以挂载整个工作目录以将所有结果存储在容器之外:

mkdir build

docker container run --rm -ti -v $PWD/build:/arm_cpu_plugin arm-plugin

注意

有一些环境变量控制 /arm_cpu_plugin_build.sh 脚本执行。

  • BUILD_JOBS 控制用于同时编译的线程数
  • BUILD_TYPE 控制 调试 / 发布 配置(默认为发布)
  • UPDATE_SOURCES 控制源检索
    • 干净 - 如果已加载,则不要重新加载源。只需清理构建文件夹(默认)
    • reload - 删除所有加载的源并再次检索它们
    • 检查 - 不重新加载或清理源
  • WITH_OMZ_DEMO 构建C++ Open Model Zoo 演示(默认开启)

构建文件夹中,生成OV_ARM_package.tar.gz

ls build

OV_ARM_package.tar.gz 传输到目标设备(Raspberry Pi 4* 32 位 Buster)
有多种方法可以将包传输到目标设备 (Raspberry Pi 4*)、安全复制到目标设备、将包复制到 U 盘并传输。
本文将介绍如何在主机上挂载 U 盘,并将生成包复制到挂载的拇指驱动器。

将 USB 拇指驱动器插入系统 USB 端口,然后使用以下命令检查设备启动;

sudo fdisk -l

验证设备启动后,将设备启动(例如 /dev/sda)安装到 /mnt中;

sudo mount /dev/sda /mnt

接下来,将OpenVINO包复制到 U 盘;

sudo cp -rf build/OV_ARM_package.tar.gz /mnt/

验证构建包

完成交叉编译后,成功将 OV_ARM_package.tar.gz 复制到目标设备(Raspberry Pi 4*)。

安装编译工具

sudo apt update
sudo apt install cmake -y

解压缩 OV_ARM_package.tar.gzpackage

mkdir ~/openvino_dist/
tar -xvzf OV_ARM_package.tar.gz -C ~/openvino_dist/

设置变量的来源

source ~/openvino_dist/setupvars.sh

编译示例代码

cd ~/openvino_dist/samples/cpp
./build_samples.sh

要验证该工具套件以及英特尔® 神经电脑棒 2和 ARM* 插件是否在您的设备上工作,请完成以下步骤:

  1. 运行 样本应用程序 hello_query_device 以确认所有库已正确加载。
  2. 下载 预训练模型。
  3. 选择 神经网络的输入(即图像文件)。
  4. 配置 英特尔® 神经电脑棒 2 Linux* USB 驱动程序。
  5. 使用所选模型和输入运行 benchmark_app

应用示例

英特尔® OpenVINO™ 工具包包括使用推理引擎和英特尔® 神经电脑棒 2的示例应用程序。其中一个应用程序是 hello_query_device,可以在以下目录中找到:

~/inference_engine_cpp_samples_build/armv7l/Release

运行以下命令以测试 hello_query_device:

cd ~/inference_engine_cpp_samples_build/armv7l/Release

./hello_query_device

它应该会打印一个对话框,描述系统上存在的可用于推理的设备。

下载模型

应用需要一个模型来传递输入。您可以通过以下方式获得 IR 格式的英特尔 OpenVINO™ 工具套件模型®:

  • 使用模型优化器将推理引擎的 IR 格式的现有模型从其中一个支持的框架转换为 IR 格式。注意:模型优化器软件包不适用于 Raspberry Pi*。
  • 使用 模型下载器 工具从 Open Model Zoo 下载。仅使用公共预训练模型。
  • 直接从 storage.openvinotookit.org 下载 IR 文件

就我们的目的而言,直接下载是最容易的。使用以下命令来抓取一个 person-vehicle-bike(行人-车辆-自行车)检测模型:

wget https://storage.openvinotoolkit.org/repositories/open_model_zoo/2022.1/models_bin/3/person-vehicle-bike-detection-crossroad-0078/FP16/person-vehicle-bike-detection-crossroad-0078.bin -O ~/Downloads/person-vehicle-bike-detection-crossroad-0078.bin

wget https://storage.openvinotoolkit.org/repositories/open_model_zoo/2022.1/models_bin/3/person-vehicle-bike-detection-crossroad-0078/FP16/person-vehicle-bike-detection-crossroad-0078.xml -O ~/Downloads/person-vehicle-bike-detection-crossroad-0078.xml

注意 英特尔® 神经电脑棒 2要求使用已针对 16 位浮点格式(称为 FP16)进行优化的模型。如果与示例不同,您的模型可能需要在单独的计算机上使用模型优化器转换为 FP16,因为 Raspberry Pi* 不支持模型优化器。

神经网络输入

需要的最后一项是神经网络的输入。对于我们下载的模型,您需要一张带有三个颜色通道的图像。将必要的文件下载到您的主板:

wget https://cdn.pixabay.com/photo/2018/07/06/00/33/person-3519503_960_720.jpg -O ~/Downloads/person.jpg

配置 英特尔® 神经电脑棒 2 Linux USB 驱动程序

必须添加一些 udev 规则,以允许系统识别英特尔® NCS2 USB 设备。

注意 如果当前用户不是用户组的成员,请运行以下命令并重新启动设备。

sudo usermod -a -G users "$(whoami)"

设置OpenVINO™环境:

source /home/pi/openvino_dist/setupvars.sh

要在英特尔® 神经电脑棒 2上执行推理,请通过运行 install_NCS_udev_rules.sh 脚本来安装 USB 规则:

sh /home/pi/openvino_dist/install_dependencies/install_NCS_udev_rules.sh

USB 驱动程序现在应该已经正确安装。如果在运行演示时未检测到英特尔® 神经电脑棒 2,请重新启动设备并重试。

运行 benchmark_app

当模型下载完毕,输入图像可用,英特尔® 神经电脑棒 2插入 USB 端口时,用以下命令运行 benchmark_app

cd ~/inference_engine_cpp_samples_build/armv7l/Release

./benchmark_app -i ~/Downloads/person.jpg -m ~/Downloads/person-vehicle-bike-detection-crossroad-0078.xml -d MYRIAD

这将使用所选选项运行应用程序。 -d 标志告诉程序要用于推理的设备。指定 MYRIAD 将利用 英特尔® 神经电脑棒 2 激活 MYRIAD 插件。命令成功执行后,终端将显示用于推理的统计信息。您还可以使用 CPU 插件在树莓派 4* 设备的 ARM CPU 上运行推理,参考 ARM* 插件作设置规范 以获取作支持,因为本示例中使用的模型不受 ARM* 插件支持。

[ INFO ] First inference took 410.75 ms
[Step 11/11] Dumping statistics report
[ INFO ] Count: 388 iterations
[ INFO ] Duration: 60681.72 ms
[ INFO ] Latency:
[ INFO ] Median: 622.99 ms
[ INFO ] Average: 623.40 ms
[ INFO ] Min: 444.03 ms
[ INFO ] Max: 868.18 ms
[ INFO ] Throughput: 6.39 FPS


如果应用程序在您的英特尔® NCS2上成功运行,则OpenVINO™工具包和英特尔® 神经电脑棒 2已正确设置,以便在您的设备上使用。

环境变量

您必须在编译和运行OpenVINO工具套件应用程序之前更新一些环境变量。运行以下脚本来临时设置环境变量:

source /home/pi/openvino_dist/setupvars.sh

**(可选)**:关闭命令行界面时,将删除OpenVINO™环境变量。作为另一种选项,您可以按照下列步骤永久设置环境变量:

echo "source /home/pi/openvino_dist/setupvars.sh" >> ~/.bashrc

要测试您的变更,打开一个新的命令行终端。将会出现下列信息:

[setupvars.sh] OpenVINO environment initialized

这样就完成了面向 Raspbian* OS 的 OpenVINO™ 工具套件开源发布以及与 英特尔® 神经电脑棒 2 和 ARM* 插件配合使用的交叉编译和构建过程。

相关产品

本文适用于 2 产品。

免责声明

本页面上的内容是原始英文内容的人工翻译与计算机翻译的组合。我们提供此内容是为了您的便利并且仅供参考,未必完整或准确。如果本页面的英文版与翻译版之间存在任何冲突,应以英文版为准。 查看此页面的英语版本。