该英特尔® Distribu
tion工具OpenVINO™可快速部署模拟人类视觉的应用和解决方案。该工具包在基于卷积神经网络 (CNN) 的英特尔®硬件上扩展了计算机视觉 (CV) 工作负载,从而最大限度地提高了性能。英特尔英特尔® Distribution工具OpenVINO™工具套件还包括英特尔®深度学习部署工具套件。
本指南为用户提供了创建 Docker* 映像的步骤,以安装适用于 Raspbian* 操作系统OpenVINO™工具套件。
系统要求
目标操作系统
- Raspbian* Stretch,32 位
- Raspbian* Buster,32 位
主机操作系统
- Raspbian* Stretch,32 位
- Raspbian* Buster,32 位
硬件
- 带 ARM* ARMv7-A CPU 架构的 Raspberry Pi* 主板。检查 uname -m 返回 armv7l.
- Raspberry Pi* 3 型号 B+
- Raspberry Pi* 4 型号 B
- 视觉处理单元 (VPU英特尔® Movidius™之一:
- 英特尔® Movidius™神经电脑棒
- 英特尔® Neural Compute Stick 2
软件
注意 | 使用自动化 的便利脚本 来安装 Docker*,因为目前这是为 Raspbian* 安装此工具包的唯一方法。查找 更多信息。
|
为神经电脑棒或英特尔® Movidius™构建 Docker* 英特尔® Neural Compute Stick 2
构建映像
要构建 Docker* 映像,您需要创建一个 Dockerfile,其中包含创建一个工具套件安装映像OpenVINO™变量和命令。
使用下面的示例作为模板创建 Dockerfile。
- 创建或转到要在那里创建 Docker* 映像的目录。本文档创建一个 ~/docker 目录。mkdir ~/docker && cd ~/docker
- 下载 Dockerfile 模板 (ZIP) 从本指南中,或者使用下面的模板内容创建您自己的 Dockerfile。vi Dockerfile
FROM balenalib/rpi-raspbian:latest
ARG DOWNLOAD_LINK=https://download.01.org/opencv/2020/openvinotoolkit/2020.3/l_openvino_toolkit_runtime_raspbian_p_2020.3.220.tgz
ARG INSTALL_DIR=/opt/intel/openvino
ARG BIN_FILE=https://download.01.org/opencv/2019/open_model_zoo/R3/20190905_163000_models_bin/person-vehicle-bike-detection-crossroad-0078/FP16/person-vehicle-bike-detection-crossroad-0078.bin
ARG WEIGHTS_FILE=https://download.01.org/opencv/2019/open_model_zoo/R3/20190905_163000_models_bin/person-vehicle-bike-detection-crossroad-0078/FP16/person-vehicle-bike-detection-crossroad-0078.xml
ARG IMAGE_FILE=https://cdn.pixabay.com/photo/2018/07/06/00/33/person-3519503_960_720.jpg
RUN apt-get update && apt-get install -y --no-install-recommends \
apt-utils \
automake \
cmake \
cpio \
gcc \
g++ \
libatlas-base-dev \
libstdc++6 \
libtool \
libusb-1.0.0-dev \
lsb-release \
make \
python3-pip \
python3-numpy \
python3-scipy \
libgtk-3-0 \
pkg-config \
libavcodec-dev \
libavformat-dev \
libswscale-dev \
sudo \
udev \
unzip \
vim \
wget && \
rm -rf /var/lib/apt/lists/*
RUN mkdir -p $INSTALL_DIR && cd $INSTALL_DIR && \
wget -c $DOWNLOAD_LINK && \
tar xf l_openvino_toolkit_runtime_raspbian_p*.tgz --strip 1 -C $INSTALL_DIR
# add USB rules
RUN sudo usermod -a -G users "$(whoami)" && \
/bin/bash -c "source $INSTALL_DIR/bin/setupvars.sh && \
sh $INSTALL_DIR/install_dependencies/install_NCS_udev_rules.sh"
# build Object Detection sample
RUN echo "source /opt/intel/openvino/bin/setupvars.sh" >> ~/.bashrc && \
mkdir /root/Downloads && \
cd $INSTALL_DIR/deployment_tools/inference_engine/samples/c/ && \
/bin/bash -c "source $INSTALL_DIR/bin/setupvars.sh && \
./build_samples.sh && \
wget --no-check-certificate $BIN_FILE -O /root/Downloads/person-vehicle-bike-detection-crossroad-0078.bin && \
wget --no-check-certificate $WEIGHTS_FILE -O /root/Downloads/person-vehicle-bike-detection-crossroad-0078.xml && \
wget --no-check-certificate $IMAGE_FILE -O /root/Downloads/walk.jpg "
RUN echo "import cv2 as cv\n\
# Load the model.\n\
net = cv.dnn.readNet('person-vehicle-bike-detection-crossroad-0078.xml',\
'person-vehicle-bike-detection-crossroad-0078.bin')\n\
# Specify target device.\n\
net.setPreferableTarget(cv.dnn.DNN_TARGET_MYRIAD)\n\
# Read an image.\n\
frame = cv.imread('walk.jpg')\n\
if frame is None:\n\
raise Exception('Image not found!')\n\
# Prepare input blob and perform an inference.\n\
blob = cv.dnn.blobFromImage(frame, size=(1024, 1024), ddepth=cv.CV_8U)\n\
net.setInput(blob)\n\
out = net.forward()\n\
# Draw detected faces on the frame.\n\
for detection in out.reshape(-1, 7):\n\
confidence = float(detection[2])\n\
xmin = int(detection[3] * frame.shape[1])\n\
ymin = int(detection[4] * frame.shape[0])\n\
xmax = int(detection[5] * frame.shape[1])\n\
ymax = int(detection[6] * frame.shape[0])\n\
if confidence > 0.5:\n\
cv.rectangle(frame, (xmin, ymin), (xmax, ymax), color=(0, 255, 0))\n\
# Save the frame to an image file.\n\
cv.imwrite('out.png', frame)\n\
print('Detection results in out.png')" >> /root/Downloads/openvino_fd_myriad.py
注意 | 您需要将上述模板OpenVINO™变量中的 OpenVINO™ DOWNLOAD_LINK 工具套件包的直接链接替换为最新版本。您可以从 英特尔OpenVINO 开源技术中心 复制用于 Raspbian* 操作系统包的®工具套件的链接。选择最新版本,右键单击 URL,然后按 Copy 链接地址。
|
- 要构建用于神经计算英特尔® Movidius™或英特尔® Neural Compute Stick 2的 Docker* 图像,运行以下命令:docker build . -t
(for example, docker build . -t openvino-rpi)
运行和测试 Docker* 映像
已知限制:
- 该英特尔® Movidius™神经计算棒设备在执行过程中更改其供应商 ID 和 DeviceID,每次查找主机系统作为一个全新的设备。这意味着无法按正常方式安装。
- UDEV 事件在默认情况下不会转发到容器,因此它并不意识到设备重新连接。
- 每个主机仅支持一台设备。
运行对象检测示例
该应用程序输出一个图像 (
out_0.bmp), 任何检测到的人被封装在矩形中。
- 使用以下选项在神经电脑棒或英特尔® Movidius™运行英特尔® Neural Compute Stick 2。要以交互和特权模式运行此容器,启用 Docker 网络配置作为主机,然后将所有设备挂载到该容器:docker run -it --privileged -v /dev:/dev --network=host
(for example, docker run -it --privileged -v /dev:/dev --network=host openvino-rpi)
- 使用以下命令运行对象检测示例。转到内部版本样本目录:cd /root/inference_engine_c_samples_build/armv7l/Release/
- 使用模型规格和输入图像路径运行示例:./object_detection_sample_ssd_c -m ~/Downloads/person-vehicle-bike-detection-crossroad-0078.xml -i ~/Downloads/walk.jpg -d MYRIAD
使用 OpenCV* API 运行面部检测模型的推理
- 导航至openvino_fd_myriad.py script位于:cd /root/Downloads
- 运行脚本:python3 openvino_fd_myriad.py
在此脚本中,OpenCV* 从中间表示 (IR) 格式加载人车-单车检测模型和图像。然后,它运行推理,将图像与检测结果保存为 out.png 。
这完成了从 Docker* 映像为 Raspbian* OpenVINO™工具套件的安装过程。