OpenVINO开发小组
直播中

kmno4

12年用户 971经验值
私信 关注
[经验]

从Docker映像为Raspbian OpenVINO工具套件的安装过程

该英特尔® Distribution工具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™工具套件的安装过程。

更多回帖

×
20
完善资料,
赚取积分