干货 | 基于 OpenVINO 的交互式人脸检测演示

干货 | 基于 OpenVINO 的交互式人脸检测演示

爱学习的OV OpenVINO 中文社区

编辑&排版:张洺瑄
内容来源:陈炳宇

Created by Openvino Technical Support

在这里插入图片描述
Copyright © Openvino community Technical Support Team. This material, including documentation and any related computer programs, is protected by copyright controlled by Openvino community Technical Support Team. All rights are reserved. Copying, including reproducing, storing, adapting or translating, any or all of this material requires the prior written consent of Openvino community Technical Support Team.

前言

本文主要针对英特Openvino提供的开源模型演示交互式人脸检测应用:展示了使用神经网络应用于面部识别的对象检测任务。该演示执行了四个并行推理过程,用于同时运行的“年龄/性别识别”,“头部姿势估计”,“情绪识别”和“面部标志检测”网络。在本应用的演示中使用以下5个预训练的模型。

涉及的模型

1. 具体的使用模型

交互式人脸检测模型设计5个预训练模型,具体如下:

  • face-detection-adas-0001,这是查找人脸的主要检测网络
  • age-gender-recognition-retail-0013,它会在第一个模型的结果之上执行,并报告检测到的每个面孔的估计年龄和性别
  • head-pose-estimation-adas-0001在第一个模型的结果之上执行,并报告以Tait-Bryan角度估计的头部姿势
  • emotions-recognition-retail-0003,它会在第一个模型的结果之上执行,并报告每个检测到的脸部的情绪
  • facial-landmarks-35-adas-0002,它是在第一个模型的结果之上执行的,并报告估计的面部标志的标准化坐标

模型使用目的和下载链接
通过OpenCV 提供视频输入支持
通过人脸检测网络可视化生成的人脸边界框
可视化每个检测到的脸部的年龄/性别,头部姿势,情感信息和面部标志位置
模型(bin文件和xml文件)下载链接(本文以FP16为例,其他格式模型应用可以参考本文)

  1. 模型使用目的和下载链接

a) 通过OpenCV 提供视频输入支持
b) 通过人脸检测网络可视化生成的人脸边界框
c) 可视化每个检测到的脸部的年龄/性别,头部姿势,情感信息和面部标志位置
d) 模型(bin文件和xml文件)下载链接(本文以FP16为例,其他格式模型应用可以参考本文)

序号模型名称
1face-detection-adas-0001
2age-gender-recognition-retail-0013
3head-pose-estimation-adas
4emotions-recognition-retail-0003
5The Godfatherfacial-landmarks-35-adas-0002
6模型百度云链接

上述模型链接:

  1. https://download.01.org/opencv/2020/openvinotoolkit/2020.2/open_model_zoo/models_bin/2/face-detection-adas-0001/FP16/
  2. https://download.01.org/opencv/2020/openvinotoolkit/2020.2/open_model_zoo/models_bin/2/age-gender-recognition-retail-0013/FP16/
  3. https://download.01.org/opencv/2020/openvinotoolkit/2020.2/open_model_zoo/models_bin/2/ head-pose-estimation-adas-0001/FP16/
  4. https://download.01.org/opencv/2020/openvinotoolkit/2020.2/open_model_zoo/models_bin/2/ emotions-recognition-retail-0003/FP16/
  5. facial-landmarks-35-adas-0002/FP16/

运行模型的方法

  1. 运行模型主要步骤

a) 该应用程序读取命令行参数,并根据推理引擎的选项最多加载五个网络。
b) 该应用程序从OpenCV VideoCapture获取帧(可以通过摄像头也可以通过视频)。
c) 该应用程序在人脸检测网络上执行推理。
d) 如果在命令行中指定了年龄/性别,头姿势,情绪和面部地标检测网络,则应用程序将同时执行四个推断。
e) 可以使用异步API新的“推断请求”。

  1. 模型参数解释

使用该-h选项运行应用程序会输出帮助信息:

./interactive_face_detection_demo -h
推理引擎:
API版本… <版本>
构建… <数字>
Interactive_face_detection_demo [OPTION]
选项:
-h打印用法消息
-i“ <路径>”是必需的。视频文件的路径(指定“ cam”以用于摄像机)。
-o“ <路径>”可选。输出视频文件的路径。
-m“ <路径>”必需。具有经过训练的人脸检测模型的.xml文件的路径。
-m_ag“ <路径>”可选。具有经过训练的年龄/性别识别模型的.xml文件的路径。
-m_hp“ <路径>”可选。具有经过训练的头部姿势估计模型的.xml文件的路径。
-m_em“ <路径>”可选。具有经过训练的情绪识别模型的.xml文件的路径。
-m_lm“ <路径>”可选。具有经过训练的面部地标估计模型的.xml文件的路径。
-l“ <absolute_path>”对于CPU自定义层是必需的。使用内核实现的共享库的绝对路径。
要么
-c“ <absolute_path>”是GPU自定义内核所必需的。具有内核描述的.xml文件的绝对路径。
-d“ <设备>”可选。人脸检测网络的目标设备(可用设备列表如下所示)。默认值为CPU。使用“ -d HETERO:<逗号分隔的设备列表>”格式来指定HETERO插件。该演示将为指定的设备寻找合适的插件。
-d_ag“ <设备>”可选。年龄/性别识别网络的目标设备(可用设备列表如下所示)。默认值为CPU。使用“ -d HETERO:<逗号分隔的设备列表>”格式来指定HETERO插件。该演示将为指定的设备寻找合适的插件。
-d_hp“ <设备>”可选。头部姿势估计网络的目标设备(可用设备列表如下所示)。默认值为CPU。使用“ -d HETERO:<逗号分隔的设备列表>”格式来指定HETERO插件。该演示将为指定的设备寻找合适的插件。
-d_em“ <设备>”可选。情绪识别网络的目标设备(可用设备列表如下所示)。默认值为CPU。使用“ -d HETERO:<逗号分隔的设备列表>”格式来指定HETERO插件。该演示将为指定的设备寻找合适的插件。
-d_lm“ <设备>”可选。面部地标估计网络的目标设备(可用设备列表如下所示)。默认值为CPU。使用“ -d HETERO:<逗号分隔的设备列表>”格式来指定HETERO插件。该演示将为指定的设备寻找合适的插件。
-n_ag“ ”可选。年龄/性别识别网络最多可同时处理的面部数量(默认为16)
-n_hp“ ”可选。头部姿势估计网络的最大同时处理的面部数(默认为16)
-n_em“ ”可选。情绪识别网络可同时处理的最大脸数(默认为16)
-n_lm“ ”可选。“人脸地标估计”网络最多可同时处理的人脸数量(默认为16)
-dyn_ag可选。为年龄/性别识别网络启用动态批量大小
-dyn_hp可选。为“头姿势估计”网络启用动态批次大小
-dyn_em可选。为情绪识别网络启用动态批量大小
-dyn_lm可选。为面部地标估计网络启用动态批量
-async可选。启用异步模式
-no_wait可选。不后的按键要等待最。
-no_show可选。不显示已处理的视频。
-pc可选。启用每层性能报告
-r可选。将推断结果输出为原始值
-t可选。检测的概率阈值
-bb_enlarge_coef可选。放大/缩小检测到的面部周围的边框尺寸的系数
-dx_coef可选。使边界框沿检测轴沿Ox轴移动的系数
-dy_coef可选。沿Oy轴围绕检测到的脸部移动边界框的系数
-fps可选。播放视频的最大FPS
-loop_video可选。启用循环播放视频
-no_smooth可选。不平滑人物属性
-no_show_emotion_bar可选。不显示情绪吧
-u可选。最初显示的监视器列表。

在选项列表为空的情况下运行应用程序会产生上面给出的用法消息和错误消息。
注意:在使用经过训练的模型运行演示之前,请确保下载openvino模型推理引擎格式( .xml + * .bin)。*

  1. 模型结果输出
    a) 打开命令行窗口,设置环境变量并测试是否可以成功导入opencv
    cd “C:\Program Files (x86)\IntelSWTools\openvino\bin” setupvars.bat python import cv2
    b) 找到安装路径下的interactive_face_detection_demo目录
    C:\Users\xxx\Documents\Intel\OpenVINO\omz_demos_build\intel64\Release\interactive_face_detection_demo.exe
    c) 确保5个pre-trained模型下载成功
    face-detection-adas-0001l
    age-gender-recognition-retail-0013
    head-pose-estimation-adas-0001
    emotions-recognition-retail-0003
    facial-landmarks-35-adas-0002
    d) 理解参数,创建face-age-emotion-head.bat,并Run bat文件
    C:\Users\xxx\Documents\Intel\OpenVINO\omz_demos_build\intel64\Release\interactive_face_detection_demo.exe ^
    -m C:\mydownload\intel\face-detection-retail-0004\FP16\face-detection-retail-0004.xml ^
    -m_ag C:\mydownload\intel\age-gender-recognition-retail-0013\FP16\age-gender-recognition-retail-0013.xml ^
    -m_em C:\mydownload\intel\emotions-recognition-retail-0003\FP16\emotions-recognition-retail-0003.xml ^
    -m_lm C:\mydownload\intel\facial-landmarks-35-adas-0002\FP16\facial-landmarks-35-adas-0002.xml ^
    -m_hp C:\mydownload\intel\head-pose-estimation-adas-0001\FP16\head-pose-estimation-adas-0001.xml ^#-i “cam” ^(使用摄像头)
    -i C:\Temp\sample-videos-master\fbb.avi ^(使用视频文件)
    -d CPU ^-d_ag CPU ^-d_em CPU ^
    -d_lm MYRIAD ^(如果有,使用intel 2代神经计算棒)
    -d_hp CPU ^
    e) 结果输出(以在CPU推断为例)

在这里插入图片描述

在这里插入图片描述

原文发布于2020-07-02:干货 | 基于 OpenVINO 的交互式人脸检测演示

关注我们,让开发变得更有趣~👇

在这里插入图片描述

微信号:openvinodev
B站:OpenVINO 中文社区

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Spark Streaming 和 Flink 都是流处理框架,但在一些方面有所不同。 1. 数据处理模型 Spark Streaming 基于批处理模型,将流数据分成一批批进行处理。而 Flink 则是基于流处理模型,可以实时处理数据流。 2. 窗口处理 Spark Streaming 的窗口处理是基于时间的,即将一段时间内的数据作为一个窗口进行处理。而 Flink 的窗口处理可以基于时间和数据量,可以更加灵活地进行窗口处理。 3. 状态管理 Spark Streaming 的状态管理是基于 RDD 的,需要将状态存储在内存中。而 Flink 的状态管理是基于内存和磁盘的,可以更加灵活地管理状态。 4. 容错性 Flink 的容错性比 Spark Streaming 更加强大,可以在节点故障时快速恢复,而 Spark Streaming 则需要重新计算整个批次的数据。 总的来说,Flink 在流处理方面更加强大和灵活,而 Spark Streaming 则更适合批处理和数据仓库等场景。 ### 回答2: Spark Streaming 和 Flink 都是流处理框架,它们都支持低延迟的流处理和高吞吐量的批处理。但是,它们在处理数据流的方式和性能上有许多不同之处。下面是它们的详细比较: 1. 处理模型 Spark Streaming 采用离散化流处理模型(DPM),将长周期的数据流划分为离散化的小批量,每个批次的数据被存储在 RDD 中进行处理,因此 Spark Streaming 具有较好的容错性和可靠性。而 Flink 采用连续流处理模型(CPM),能够在其流处理过程中进行事件时间处理和状态管理,因此 Flink 更适合处理需要精确时间戳和状态管理的应用场景。 2. 数据延迟 Spark Streaming 在处理数据流时会有一定的延迟,主要是由于对数据进行缓存和离散化处理的原因。而 Flink 的数据延迟比 Spark Streaming 更低,因为 Flink 的数据处理和计算过程是实时进行的,不需要缓存和离散化处理。 3. 机器资源和负载均衡 Spark Streaming 采用了 Spark 的机器资源调度和负载均衡机制,它们之间具有相同的容错和资源管理特性。而 Flink 使用 Yarn 和 Mesos 等分布式计算框架进行机器资源调度和负载均衡,因此 Flink 在大规模集群上的性能表现更好。 4. 数据窗口处理 Spark Streaming 提供了滑动、翻转和窗口操作等灵活的数据窗口处理功能,可以使用户更好地控制数据处理的逻辑。而 Flink 也提供了滚动窗口和滑动窗口处理功能,但相对于 Spark Streaming 更加灵活,可以在事件时间和处理时间上进行窗口处理,并且支持增量聚合和全量聚合两种方式。 5. 集成生态系统 Spark Streaming 作为 Apache Spark 的一部分,可以充分利用 Spark 的分布式计算和批处理生态系统,并且支持许多不同类型的数据源,包括Kafka、Flume和HDFS等。而 Flink 提供了完整的流处理生态系统,包括流SQL查询、流机器学习和流图形处理等功能,能够灵活地适应不同的业务场景。 总之,Spark Streaming 和 Flink 都是出色的流处理框架,在不同的场景下都能够发挥出很好的性能。选择哪种框架取决于实际需求和业务场景。 ### 回答3: Spark Streaming和Flink都是流处理引擎,但它们的设计和实现方式有所不同。在下面的对比中,我们将比较这两种流处理引擎的主要特点和差异。 1. 处理模型 Spark Streaming采用离散流处理模型,即将数据按时间间隔分割成一批一批数据进行处理。这种方式可以使得Spark Streaming具有高吞吐量和低延迟,但也会导致数据处理的粒度比较粗,难以应对大量实时事件的高吞吐量。 相比之下,Flink采用连续流处理模型,即数据的处理是连续的、实时的。与Spark Streaming不同,Flink的流处理引擎能够应对各种不同的实时场景。Flink的实时流处理能力更强,因此在某些特定的场景下,它的性能可能比Spark Streaming更好。 2. 窗口计算 Spark Streaming内置了许多的窗口计算支持,如滑动窗口、滚动窗口,但支持的窗口计算的灵活性较低,只适合于一些简单的窗口计算。而Flink的窗口计算支持非常灵活,可以支持任意窗口大小或滑动跨度。 3. 数据库支持 在处理大数据时,存储和读取数据是非常重要的。Spark Streaming通常使用HDFS作为其数据存储底层的系统。而Flink支持许多不同的数据存储形式,包括HDFS,以及许多其他开源和商业的数据存储,如Kafka、Cassandra和Elasticsearch等。 4. 处理性能 Spark Streaming的性能比Flink慢一些,尤其是在特定的情况下,例如在处理高吞吐量的数据时,在某些情况下可能受制于分批处理的架构。Flink通过其流处理模型和不同的调度器和优化器来支持更高效的实时数据处理。 5. 生态系统 Spark有着庞大的生态系统,具有成熟的ML库、图处理库、SQL框架等等。而Flink的生态系统相对较小,但它正在不断地发展壮大。 6. 规模性 Spark Streaming适用于规模小且不太复杂的项目。而Flink可扩展性更好,适用于更大、更复杂的项目。Flink也可以处理无限制的数据流。 综上所述,Spark Streaming和Flink都是流处理引擎,它们有各自的优缺点。在选择使用哪一个流处理引擎时,需要根据实际业务场景和需求进行选择。如果你的业务场景较为复杂,需要处理海量数据并且需要比较灵活的窗口计算支持,那么Flink可能是更好的选择;如果你只需要简单的流处理和一些通用的窗口计算,Spark Streaming是更为简单的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值