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

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)