9 openvino中级实验 1 人脸识别初体验

1 说明

本实验所有代码均在ubuntu18.04 + OpenVINO 2020R3.LTS installed 环境下验证通过,若需要代码移植,请务必检查环境配置是否与本实验环境相同。

2 实验目的

1、了解OpenVINO的特性、作用及相关组件等基本知识。
2、掌握基于深度学习模型的人脸识别的基本原理。

3 实验环境

实验环境信息如下表所示。

设备名称 软件环境 硬件环境


主机	Ubuntu 18.04 OpenVINO 2020.0319桌面版	CPU:2核 内存:4G 磁盘:40G
注:系统默认的账户为用户名:root,密码:root@openlab;用户名:openlab,密码:user@openlab。

4 任务内容

1、学习OpenVINO的基本知识,包括OpenVINO的作用、特性和工作原理等。
2、基于深度学习模型进行简单的人脸识别处理。

5 实验原理

一、OpenVINO概述

OpenVINO(Open Visual Inferencing and Neural Network Optimization,开放视觉推理和神经网络优化)是英特尔基于自身现有的硬件平台开发的一种可以加快高性能计算机视觉和深度学习视觉应用开发速度的工具套件,它支持Intel CPU、GPU、FPGA和Movidius计算棒等多种设备。OpenVINO发布至今,虽然只有短短几年时间,但市场上已有数千个开发人员,数百家公司和数十款产品在使用。它广受欢迎主要有四个原因:

**

- 简单

**

OpenVINO非常简单,只需十行代码即可执行推理。并且它具有足够的灵活性,可以支持批处理异步执行等功能。

- 性能

OpenVINO有时可将推理速度提高两倍。并将内存消耗降低五倍,具体取决于硬件型号、平台等因素。接下来的实验充分体现了OpenVINO在这方面的优异表现。

- 可移植性

推理引擎允许用户在英特尔的不同平台上运行几乎相同的代码。这有助于所有英特尔平台使用相同的代码,可以节省大量时间。在新设备推出时,可以快速将原有代码移植到新设备上,实现产品的快速升级。

- 全面性

它可以充分支持客户的完整设计流程。英特尔将为他们提供所有可能需要的工具。

二、OpenVINO组件

从Intel的官方文档了解到,OpenVINO工具包包含下列组件:
1. DLDT(Deep Learning Deployment Toolkit,深度学习部署工具包)
DLDT是OpenVINO的核心,内部又包含如下内容:

深度学习模型优化器(Deep Learning Model Optimizer)

一种跨平台的命令行工具,用于导入模型并为推理引擎优化执行将要使用的模型。模型优化器会导入、转换、优化模型,这些模型在流行的框架中训练,比如 Caffe、TensorFlow、MXNet、Kaldi 和 ONNX*。

深度学习推断引擎(Deep Learning Inference Engine)
一个统一的API,可在多种硬件类型(包括英特尔® CPU、英特尔® 集成显卡、英特尔® 神经电脑棒,搭载英特尔® Movidius™ 视觉处理器(VPU)的英特尔® Vision Accelerator Design)上进行高性能推理。

推理引擎样本
一套简单的控制台应用程序,展示了如何在应用程序中使用推理引擎。

工具(Tools)
一套模型协作的工具,包括准确度检查器实用程序、训练后优化工具指南、模型下载器等。

2. 开放预训练模型(Open Model Zoo)
是Intel的计算机视觉工具箱中提供的预训练模型,用于学习和演示目的的预训练模型。这些模型已经优化过,可以直接拿来用于加速产品开发与部署。

深度学习流媒体播放器(DL Streamer)
基于GStreamer,在构建媒体分析组件图时流式加载分析框架。DL Streamer可以通过英特尔® Distribution of OpenVINO™工具套件安装程序安装。

OpenCV
为英特尔®硬件编译的OpenCV社区版本,包括用于计算机视觉的PVL库。

OpenCL
全称Open Computing Language即开放计算语言。OpenCL为异构平台提供了一个编写程序,尤其是并行程序的开放的框架标准。OpenCL所支持的异构平台可由多核CPU、GPU或其他类型的处理器组成。提供Intel驱动程序和运行时程序。

OpenVX
针对在英特尔®硬件(CPU,GPU,IPU)上运行而优化的OpenVX 。

**

三、OpenVINO工作流程

**
OpenVINO工具包的主要组件是DLDT,DLDT主要包括模型优化器和推理引擎两部分。模型优化器负责将各种格式的深度神经网络模型转换成统一的自定义格式,并在转换过程中进行模型优化;推理引擎接受经过模型优化器转换并优化的网络模型,为Intel的各种计算设备提供高性能的神经网络推理运算。使用DLDT进行神经网络模型的部署,典型工作流程如图所示。
在这里插入图片描述

1.训练一个DLDT支持的深度网络模型(Train a Model),如:TensorFlow、Caffe、MaxNet等。

2.用模型优化器(Model Optimizer)对网络模型行编译和优化(Run Model Optimizer),生成Openvino IR(Intermediate Representation,中间表示)格式的网络配置文件(.xml文件)和模型参数文件(.bin文件);

3.调用推理引擎(Inference Engine)进行网络运算,其结果和应用程序(User Application)进行交互。

四、人脸识别实验流程

1.第一步是获取一个可执行面部检测的深度学习模型。该模型可以检测输入图像中的面部信息。

2.然后需要定义哪个设备来运行推理,如CPU集成显卡,FPGA或其他。

3.下一步是读取图像。

4.接下来对图像进行推理准备,主要是调整其大小,以适合深度学习神经网络的输入维度。

5.然后运行推理并获得结果。

6.然后在检测到的面部上画框。

7.最后将图像保存到文件中。

代码实现如下图所示。

操作步骤

步骤1

登录实验平台,进入实验环境并打开终端。

步骤2

执行命令su,输入root用户密码root@openlab,切换到root目录。

步骤3

执行命令cd ~/51openlab/01/exercise-1/,进入exercise-1目录。

步骤4

执行如下命令,初始化OpenVINO工具套件。


# source /opt/intel/openvino/bin/setupvars.sh

步骤5

执行eog faces.jpg命令,查看需要识别的图片,如下图所示。
在这里插入图片描述

步骤6

执行vi face-detection.py命令,查看人脸识别的相关脚本,具体如下所示。



# Copyright (C) 2018-2020 Intel Corporation
# SPDX-License-Identifier : Apache-2.0
#

import cv2 as cv

# Load the model
net = cv.dnn.readNet('face-detection-adas-0001.xml', 'face-detection-adas-0001.bin')

# Specify target device (CPU)
net.setPreferableTarget(cv.dnn.DNN_TARGET_CPU)

# Read an image
frame = cv.imread('faces.jpg')

# Prepare input blob 
blob = cv.dnn.blobFromImage(frame, size=(672, 384), ddepth=cv.CV_8U)

#perform inference (face detection)
net.setInput(blob)
out = net.forward()

# Draw detected faces on the frame
for detection in out.reshape(-1, 7):

    confidence = float(detection[2])

    xmin = int(detection[3] * frame.shape[1])
    ymin = int(detection[4] * frame.shape[0])
    xmax = int(detection[5] * frame.shape[1])
    ymax = int(detection[6] * frame.shape[0])

    if confidence > 0.5:
        cv.rectangle(frame, (xmin, ymin), (xmax, ymax), color=(0, 255, 0))

# Save the frame to an image file
cv.imwrite('out.png', frame)

步骤7

执行python3 face-detection.py命令,运行脚本。

步骤8

执行eog out.png命令查看输出结果,如下图所示。
在这里插入图片描述

由上图可知,有些面部比较远,或者被其它面部所遮挡,所以并非所有的面部都被检测到。任务二介绍如何识别更多的人脸。

6 实操情况

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
VINO思维导图
https://download.csdn.net/download/weixin_44498127/85030595
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
  • 打赏
    打赏
  • 1
    评论
<p> <span></span> </p> <p> 手把手讲授如何搭建成功OpenVINO框架,并且使用预训练模型快速开发超分辨率、道路分割、汽车识别、人脸识别、人体姿态和行人车辆分析。得益于OpenVINO框架的强大能力,这些例子都能够基于CPU达到实时帧率。<br /> 课程的亮点在于在调通Demo的基础上更进一步:一是在讲Demo的时候,对相关领域问题进行分析(比如介绍什么是超分辨率,有什么作用)、预训练模型的来龙去脉(来自那篇论文,用什么训练的)、如何去查看不同模型的输入输出参数、如何编写对应的接口参数进行详细讲解;二是基本上对所有的代码进行重构,也就是能够让例子独立出来,并且给出了带有较详细注释的代码;三是注重实际运用,将Demo进一步和实时视频处理框架融合,形成能够独立运行的程序,方便模型落地部署;四是重难点突出、注重总结归纳,对OpenVINO基本框架,特别是能够提高视频处理速度的异步机制和能够直接部署解决实际问题的骨骼模型着重讲解,帮助学习理解;五是整个课程准备精细,每一课都避免千篇一律,前一课有对后一课的预告,后一课有对前一课的难点回顾,避免学习过程中出现突兀;六是在适当的时候拓展衍生,不仅讲OpenVINO解决图像处理问题,而且还补充图像处理的软硬选择、如何在手机上开发图像处理程序等内容,帮助拓展视野,增强对行业现状的了解。<br /><br /> 基本提纲:<br /> 1、课程综述、环境配置<br /> 2、OpenVINO范例-超分辨率(super_resolution_demo)<br /> 3、OpenVINO范例-道路分割(segmentation_demo)<br /> 4、OpenVINO范例-汽车识别(security_barrier_camera_demo)<br /> 5、OpenVINO范例-人脸识别(interactive_face_detection_demo)<br /> 6、OpenVINO范例-人体姿态分析(human_pose_estimation_demo)<br /> 7、OpenVINO范例-行人车辆分析(pedestrian_tracker_demo)<br /> 8、NCS和GOMFCTEMPLATE<br /> 9、课程小结,资源分享 </p>

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:创作都市 设计师:CSDN官方博客 返回首页
评论 1

打赏作者

THE ORDER

你的鼓励是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值