65.9K
CodeProject 正在变化。 阅读更多。
Home

在 Intel® Distribution of OpenVINO™ Toolkit 中使用深度学习识别模型

starIconstarIconstarIconstarIconemptyStarIcon

4.00/5 (1投票)

2018 年 11 月 29 日

CPOL
viewsIcon

9741

本教程将探讨如何使用 Intel® Distribution of OpenVINO™ 工具包版本中包含的深度学习模型进行人脸检测、年龄、性别和情绪识别以及头部姿态估计。

引言

本教程将探讨如何使用 Intel® Distribution of OpenVINO™ 工具包版本中包含的深度学习模型进行人脸检测、年龄、性别和情绪识别以及头部姿态估计。本教程还演示了 Intel Distribution of OpenVINO 工具包的架构组件的使用,例如 Intel® Deep Learning Deployment Toolkit,它允许软件开发人员在用户应用程序中使用高级 C++ 库(称为 Inference Engine)来部署预训练模型。

本教程包括在 Up Squared* Grove* 物联网开发套件上构建和运行示例应用程序的说明。Up Squared* 平台预装了 Ubuntu* 16.04.4 桌面镜像和 Intel Distribution of OpenVINO 工具包。

图 1 说明了捕获的图像与 Inference Engine 和检测结果之间的关系。

图 1. 年龄、性别或情绪识别流程

要求

表 1. 要求

硬件 软件
Up Squared* Grove* 物联网开发套件 预装 Ubuntu* 16.04.4 桌面镜像
带 USB 端口的网络摄像头 Intel Distribution of OpenVINO 工具包(在 Up Squared 平台预装)。本教程同时使用了预装版本和 R3 版本 3.343。要升级或刷新您的版本,请参阅 免费下载
带 HDMI 接口和线缆的显示器  
USB 键盘和鼠标  
具有 Internet 访问的网络连接或 Up Squared* Wi-Fi 套件  

图 2. 带网络摄像头的 UP Squared

运行预装的年龄和性别识别模型

UP Squared* 板上预装了 Ubuntu* 16.04.4 桌面镜像以及 Intel Distribution of OpenVINO 工具包。表 2 描述了安装的目录结构。

表 2. Intel Distribution of OpenVINO Toolkit 中的目录和关键文件

组件 (Component) Location
根目录 /opt/intel/computer_vision_sdk/deployment_tools
Intel 模型 /opt/intel/computer_vision_sdk/deployment_tools/intel_models
setupvars.sh /opt/intel/computer_vision_sdk/bin/setupvars.sh
构建 /opt/intel/computer_vision_sdk/deployment_tools/inference_engine/samples/build
二进制 /opt/intel/computer_vision_sdk/deployment_tools/inference_engine/samples/build/intel64/Release
演示脚本 /opt/intel/computer_vision_sdk/deployment_tools/demo 包含分类和安全屏障摄像头演示脚本。

构建年龄和性别识别应用程序

  1. 更新存储库列表并安装先决软件包。

    # Update the repository list
    sudo -E apt update
    
    # Install prerequisite packages
    sudo -E apt -y install cmake libpng12-dev libcairo2-dev libpango1.0-dev libglib2.0-dev libgtk2.0-dev libgstreamer0.10-dev libswscale-dev libavcodec-dev libavformat-dev
  2. 设置环境变量。

    export ROOT_DIR=/opt/intel/computer_vision_sdk_2018.3.343/deployment_tools
    source $ROOT_DIR/../bin/setupvars.sh
  3. 如果构建目录存在,则进入构建目录。否则,创建构建目录。

    cd $ROOT_DIR/inference_engine/samples
    sudo mkdir build
    cd $ROOT_DIR/inference_engine/samples/build
  4. 生成发布版的 make 文件,不带调试信息。

    sudo cmake -DMAKE_BUILD_TYPE=Release ..
  5. 生成带调试信息的 make 文件。

    sudo cmake -DMAKE_BUILD_TYPE=Debug ..
  6. 构建交互式人脸检测示例。

    sudo make -j8 interactive_face_detection_sample
  7. 构建所有示例。

    sudo make -j8

  8. 构建将在 Release 或 Debug 目录中生成 interactive_face_detection 可执行文件。

    ls $ROOT_DIR/deployment_tools /inference_engine/samples/build/intel64/Release/interactive_face_detection_sample

运行年龄和性别识别应用程序

运行应用程序并使用 -h 显示所有可用选项。

cd $ROOT_DIR/inference_engine/samples/build/intel64/Release$ ./interactive_face_detection_sample -h
InferenceEngine: 
	API version ............ 1.0
	Build .................. 10478

interactive_face_detection [OPTION]
Options:

    -h                         Print a usage message.
    -i "<path>"                Optional. Path to an video file. Default value is "cam" to work with camera.
    -m "<path>"                Required. Path to an .xml file with a trained face detection model.
    -m_ag "<path>"             Optional. Path to an .xml file with a trained age gender model.
    -m_hp "<path>"             Optional. Path to an .xml file with a trained head pose model.
      -l "<absolute_path>"     Required for MKLDNN (CPU)-targeted custom layers.Absolute path to a shared library with the kernels impl.
          Or
      -c "<absolute_path>"     Required for clDNN (GPU)-targeted custom kernels.Absolute path to the xml file with the kernels desc.
    -d "<device>"              Specify the target device for Face Detection (CPU, GPU, FPGA, or MYRYAD. Sample will look for a suitable plugin for device specified.
    -d_ag "<device>"           Specify the target device for Age Gender Detection (CPU, GPU, FPGA, or MYRYAD. Sample will look for a suitable plugin for device specified.
    -d_hp "<device>"           Specify the target device for Head Pose Detection (CPU, GPU, FPGA, or MYRYAD. Sample will look for a suitable plugin for device specified.
    -n_ag "<num>"              Specify number of maximum simultaneously processed faces for Age Gender Detection ( default is 16).
    -n_hp "<num>"              Specify number of maximum simultaneously processed faces for Head Pose Detection ( default is 16).
    -no_wait                   No wait for key press in the end.
    -no_show                   No show processed video.
    -pc                        Enables per-layer performance report.
    -r                         Inference results as raw values.
    -t                         Probability threshold for detections.

交互式人脸检测应用程序使用三个模型

  • 训练后人脸检测模型的 .xml 文件路径
  • 训练后年龄性别模型的 .xml 文件路径
  • 训练后头部姿态模型的 .xml 文件路径

该应用程序支持 -i 的两种选项:网络摄像头流或视频文件路径。

使用网络摄像头运行应用程序

  1. 将网络摄像头插入 UP Squared 板的 USB 端口。打开 Ubuntu 控制台并列出视频设备。

    ls -ltrh /dev/video*
  2. 如果系统上没有 /dev/video 文件,请确保网络摄像头已插入 USB。

    crw-rw----+ 1 root video 81, 0 Sep 27 12:48 /dev/video0
  3. 使用摄像头运行交互式人脸检测应用程序。

    ./interactive_face_detection_sample -d CPU -d_ag CPU -d_hp CPU -i cam -m "$ROOT_DIR/intel_models/face-detection-adas-0001/FP32/face-detection-adas-0001.xml" -m_ag "$ROOT_DIR/intel_models/age-gender-recognition-retail-0013/FP32/age-gender-recognition-retail-0013.xml" -m_hp "$ROOT_DIR/intel_models/head-pose-estimation-adas-0001/FP32/head-pose-estimation-adas-0001.xml"

使用视频文件路径运行应用程序

该应用程序接受预录制视频文件。本示例使用 预录制视频

./interactive_face_detection_sample -d CPU -d_ag CPU -d_hp CPU -i /home/upsquared/head-pose-face-detection-female-and-male.mp4 -m "$ROOT_DIR/intel_models/face-detection-adas-0001/FP32/face-detection-adas-0001.xml" -m_ag "$ROOT_DIR/intel_models/age-gender-recognition-retail-0013/FP32/age-gender-recognition-retail-0013.xml" -m_hp "$ROOT_DIR/intel_models/head-pose-estimation-adas-0001/FP32/head-pose-estimation-adas-0001.xml"

解释检测结果

该应用程序使用 OpenCV* 显示网络摄像头或预录制视频的视觉结果。视觉结果包括

  • 每个检测到的人脸周围的边界框
  • 一个多色轴,跟踪边界框的中心
  • 边界框左上角的文本,指示性别和估计年龄
  • 渲染人脸检测、年龄和性别检测以及头部姿态所需的时间

图 3. 年龄性别识别结果

浮点误差

CPU 只能运行单精度浮点数(FP32)模型。

错误:插件不支持 F16

如果发生错误,请更改模型路径以指向 FP32。

运行演示脚本

分类和安全屏障摄像头演示脚本位于 /opt/intel/computer_vision_sdk/deployment_tools/demo。请参阅 README.txt 以获取有关如何使用演示脚本和创建自己的年龄、性别和情绪演示脚本的说明。

在 Intel Distribution of OpenVINO Toolkit R3 中运行年龄、性别和情绪识别模型

下载 Intel Distribution of OpenVINO Toolkit R3。请遵循 Linux* 的安装说明。安装将创建表 3 中的目录结构。

表 3. Intel Distribution of OpenVINO Toolkit R3 中的目录和关键文件

组件 (Component) Location
根目录 /opt/intel/computer_vision_sdk_2018.3.343/deployment_tools
Intel 模型 /opt/intel/ computer_vision_sdk_2018.3.343/deployment_tools/intel_models
setupvars.sh /opt/intel/ computer_vision_sdk_2018.3.343/bin/setupvars.sh
构建 /home/upsquared/inference_engine_samples
二进制 /home/upsquared/inference_engine_samples/intel64/Release
演示脚本 /opt/intel/ computer_vision_sdk_2018.3.343/deployment_tools/demo

构建 Intel 年龄、性别和情绪识别应用程序

  1. 更新存储库列表并安装先决软件包。

    # Update the repository list
    sudo -E apt update
    
    # Install prerequisite packages
    sudo -E apt -y install build-essential cmake libpng12-dev libcairo2-dev libpango1.0-dev libglib2.0-dev libgtk2.0-dev libswscale-dev libavcodec-dev libavformat-dev libgstreamer1.0-0 gstreamer1.0-plugins-base
    
  2. 设置环境变量。

    export ROOT_DIR=/opt/intel/computer_vision_sdk_2018.3.343/deployment_tools
    	source $ROOT_DIR/../bin/setupvars.sh
  3. 如果构建目录存在,则进入构建目录。否则,创建构建目录。

    cd $ROOT_DIR/inference_engine/samples
    sudo mkdir build
    cd $ROOT_DIR/inference_engine/samples/build
  4. 生成发布版的 make 文件,不带调试信息。

    sudo cmake -DMAKE_BUILD_TYPE=Release ..
  5. 生成带调试信息的 make 文件。

    sudo cmake -DMAKE_BUILD_TYPE=Debug ..
  6. 构建交互式人脸检测示例。

    sudo make -j8 interactive_face_detection_sample
  7. 构建所有示例。

    sudo make -j8
  8. 构建将在 Release 或 Debug 目录中生成 interactive_face_detection 可执行文件。

    ls $ROOT_DIR/deployment_tools /inference_engine/samples/build/intel64/Release/interactive_face_detection_sample

运行 Intel 年龄、性别和情绪识别应用程序

运行应用程序并使用 -h 显示所有可用选项。

cd ~/inference_engine_samples/intel64/Release$ ./interactive_face_detection_sample -h
InferenceEngine: 
	API version ............ 1.2
	Build .................. 13911

interactive_face_detection [OPTION]
Options:

    -h                         Print a usage message.
    -i "<path>"                Optional. Path to an video file. Default value is "cam" to work with camera.
    -m "<path>"                Required. Path to an .xml file with a trained face detection model.
    -m_ag "<path>"             Optional. Path to an .xml file with a trained age gender model.
    -m_hp "<path>"             Optional. Path to an .xml file with a trained head pose model.
    -m_em "<path>"             Optional. Path to an .xml file with a trained emotions model.
      -l "<absolute_path>"     Required for MKLDNN (CPU)-targeted custom layers.Absolute path to a shared library with the kernels impl.
          Or
      -c "<absolute_path>"     Required for clDNN (GPU)-targeted custom kernels.Absolute path to the xml file with the kernels desc.
    -d "<device>"              Specify the target device for Face Detection (CPU, GPU, FPGA, or MYRIAD). Sample will look for a suitable plugin for device specified.
    -d_ag "<device>"           Specify the target device for Age Gender Detection (CPU, GPU, FPGA, or MYRIAD). Sample will look for a suitable plugin for device specified.
    -d_hp "<device>"           Specify the target device for Head Pose Detection (CPU, GPU, FPGA, or MYRIAD). Sample will look for a suitable plugin for device specified.
    -d_em "<device>"           Specify the target device for Emotions Detection (CPU, GPU, FPGA, or MYRIAD). Sample will look for a suitable plugin for device specified.
    -n_ag "<num>"              Specify number of maximum simultaneously processed faces for Age Gender Detection (default is 16).
    -n_hp "<num>"              Specify number of maximum simultaneously processed faces for Head Pose Detection (default is 16).
    -n_em "<num>"              Specify number of maximum simultaneously processed faces for Emotions Detection (default is 16).
    -dyn_ag                    Enable dynamic batch size for AgeGender net.
    -dyn_hp                    Enable dynamic batch size for HeadPose net.
    -dyn_em                    Enable dynamic batch size for Emotions net.
    -async                     Enable asynchronous mode
    -no_wait                   No wait for key press in the end.
    -no_show                   No show processed video.
    -pc                        Enables per-layer performance report.
    -r                         Inference results as raw values.
    -t                         Probability threshold for detections.The interactive face detection application will use three models:

交互式人脸检测应用程序使用三个模型

  • 训练后人脸检测模型的 .xml 文件路径
  • 训练后年龄和性别模型的 .xml 文件路径
  • 训练后情绪识别模型的 .xml 文件路径

该应用程序有两个 -i 选项:网络摄像头或视频文件路径。

使用网络摄像头运行应用程序

  1. 将网络摄像头插入 UP Squared 板的 USB 端口,打开 Ubuntu 控制台并列出视频设备。

    ls -ltrh /dev/video*
  2. 如果系统上没有 /dev/video 文件,请确保网络摄像头已插入 USB。

    crw-rw----+ 1 root video 81, 0 Sep 27 12:48 /dev/video0
  3. 使用摄像头运行情绪识别应用程序。

    ./interactive_face_detection_sample -d CPU -d_em CPU -dyn_em  -i cam -m "$ROOT_DIR/intel_models/face-detection-adas-0001/FP32/face-detection-adas-0001.xml" -m_ag "$ROOT_DIR/intel_models/age-gender-recognition-retail-0013/FP32/age-gender-recognition-retail-0013.xml" -m_em "$ROOT_DIR/intel_models/emotions-recognition-retail-0003/FP32/emotions-recognition-retail-0003.xml"

使用视频文件路径运行应用程序

该应用程序接受预录制视频文件。本示例使用 预录制视频

./interactive_face_detection_sample -d CPU -d_em CPU -dyn_em  -i /home/upsquared/head-pose-face-detection-female-and-male.mp4 -m "$ROOT_DIR/intel_models/face-detection-adas-0001/FP32/face-detection-adas-0001.xml" -m_ag "$ROOT_DIR/intel_models/age-gender-recognition-retail-0013/FP32/age-gender-recognition-retail-0013.xml" -m_em "$ROOT_DIR/intel_models/emotions-recognition-retail-0003/FP32/emotions-recognition-retail-0003.xml"

解释检测结果

该应用程序使用 OpenCV* 显示网络摄像头或预录制视频的视觉结果。视觉结果包括

  • 每个检测到的人脸周围的边界框
  • 边界框顶部的文本指示每个检测到的人脸的性别、年龄和情绪信息,例如中性、快乐、悲伤、惊讶或愤怒
  • 渲染图像、人脸、年龄、性别和情绪所需的时间

图 4. 情绪识别结果

浮点误差

CPU 只能运行单精度浮点数(FP32)模型。

错误:插件不支持 F16

如果发生错误,请更改模型路径以指向 FP32。

运行 Intel 演示脚本

分类和安全屏障摄像头演示脚本位于 /opt/intel/ computer_vision_sdk_2018.3.343/deployment_tools/demo。请参阅 README.txt 以获取有关如何使用演示脚本和创建自己的年龄、性别和情绪演示脚本的说明。

摘要

本教程介绍了如何运行使用 Inference Engine 模型的年龄、性别和情绪识别 Intel 模型。尝试在 UP Squared* 板上运行 /opt/intel/ computer_vision_sdk_2018.3.343/deployment_tools/intel_models 中提供的其他预训练模型。

了解更多

主要参考资料

关于作者

Nancy Le 是 Intel 公司 Core & Visual Computing Group 的一名软件工程师,致力于为物联网或 IoT 项目提供 Intel Atom® 处理器支持。

© . All rights reserved.