个人信息:Personal Information
副教授 博士生导师 研究生导师
主要任职:CCF高性能计算专委会委员
性别:男
毕业院校:西安电子科技大学
学历:博士研究生毕业
学位:博士学位
在职信息:在岗
所在单位:人工智能学院
学科:计算机科学与技术
办公地点:西安电子科技大学网安大楼CII 1008
联系方式:陕西省西安市西沣路兴隆段266号
电子邮箱:
基于OpenVINO的人工智能系统实验(教育部产学合作协同育人项目)
发布时间:2018-11-21 点击次数:
基于OpenVINO的人工智能系统实验
(教育部产学合作协同育人项目)
一、OpenVINO简介
近年来,深度神经网络已成为机器学习领域的研究热点,并被广泛应用于语音识别、自动驾驶、图像分析等领域。然而随着训练数据集的增大和训练模型的日趋复杂,深度神经网络的训练和推理时间越来越长,因此优化深度神经网络性能成为增强其应用时效性的必要技术手段。
英特尔宣布开源OpenVINO,全称Open Visual Inference Neural network Optimization,旨在加速开发者在边缘计算设备的模型推理,适用于英特尔的CPU、GPU、FPGA。它专为计算机视觉神经网络推理而生,使用它可以使得模型在英特尔的芯片上计算更快,通过它可以直接调用超过100个目前公开的和定制化的模型,还可以帮助开发者把已经训练好的网络模型部署到目标平台之上进行推理操作。
OpenVINO深度学习部署工具套件可以帮助开发者把已经训练好的网络模型部署到目标平台之上进行推理操作。目前深度学习部署工具套件主要包括两个网元,一个网元是模型优化器,另外一个是推理引擎,如图1所示。其工作原理是通过模型优化器把开发者经过深度学习框架所开发的网络模型,针对选用的目标平台进行优化,优化结果转换成中间表示文件,生成IR文件。IR文件中包含优化以后的网络拓扑结构,以及优化之后的模型参数和模型变量。模型优化器是由Python语言编写的,不仅仅能够实现Caffe、Tensor Flow、MxNet上框架之上的模型导入,还可以根据模型进行优化。尤其是在通用处理器上做的训练结果,如果部署到资源受限的嵌入式推理平台之上,必须进行相应的优化。
图1 OpenVINO框架
二、openVINO windows版本安装
1.依赖项:Microsoft Visual Studio* with C++ 2017 或者 2015;CMake 3.4 或者更高版本;
Python 3.6.5 以及python库;intel 显卡驱动(如果使用intel GPU)
2.硬件要求:
6th-8th Generation Intel® Core;Intel Xeon v5 family;Intel Xeon v6 family;Intel Movidius Neural Compute Stick
Intel Neural Compute Stick 2
3.系统要求:64位windows10系统
4.安装
在满足以上条件之后,从intel网站https://software.intel.com/en-us/openvino-toolkit/choose-download/free-download-windows下载安装包,点击安装,设置好路径,如果满足以上条件,便可安装成功。
5.安装目录结构(windows版)
总目录:<Install_path>\intel/computer_vision_sdk_2018.x.x
总目录\documentation :保存官方文档链接地址。
开发者工具目录:总目录\deployment_tools,在开发者目录下,主要有以下几个重要目录:
model_downloader:模型下载目录,可下载intel提供的已经训练好的优化模型,调用该目录下的downloader.py python程序便可下载相应的模型。
model_optimizer:模型优化器目录,用于将训练好的模型进行优化,首次使用需要配置转换环境,打开目录下的install_prerequisites目录,按照需求配置所需环境。如果要使用模型优化器,调用目录下的mo.py python程序。
demo:demo例子目录,其中包括两个官方提供的demo,分别执行该目录下的demo_security_barrier_camera.bat和demo_squeezenet_download_convert_run.bat文件,便可执行官方demo。
intel_models:包含一些比较小的网络模型经过模型优化器优化后的中间表示文件。
inference_engine:推理引擎,包含了intel提供的满足各种功能需求推理引擎,包括图像分类,目标检测,图像分割,人脸识别等强大的功能,供开发者在各种平台上使用。如果要使用这些推理引擎的可执行文件,需要进入C:\Users\usr_name\Documents\Intel\OpenVINO\inference_engine_samples_2015目录下,使用visual studio 2015打开Samples.sln,点击生成ALL_BUILD,等待一段时间,在当前目录下的intel64\Release\目录下会产生所有编译好的intel提供的推理引擎的可执行文件。
三、OpenVINO应用
OpenVINO公开了超过100个目前公开的和定制化的模型,可直接使用其提供的推理引擎调用这些模型完成一系列神经网络算法的功能,包括图像分类,车辆检测,行人检测,人脸识别,目标检测,图像分割等功能。还可以自己订制网络模型,将自己已经训练好的模型,通过OpenVINO提供的模型优化器转换为推理引擎所需的中间表示文件,输入到相应的推理引擎,完成相应的功能。
在配置好openVINO之后,可以使用其提供的推理引擎直接对网络模型做推理。
表1 Intel部分推理引擎及功能
推理引擎 |
功能 |
Classification sample |
图像分类 |
Crossroad Camera |
行人检测、识别和身份验证 |
Interactive face detection |
人脸识别 |
Object Detection |
目标检测 |
Security Barrier Camera |
车辆检测 车牌检测 车辆识别 车牌识别 |
Image Segmentation |
图像分割 |
Smart Classroom |
人脸识别、动作检测 |
Super Resolution |
高分辨图像重建 |
以下列举一些应用实例:
1.图像分类:
使用classification_sample.exe可执行文件,
输入指令 classification_sample.exe -i <path_to_image>\cat.bmp -m <path_to_model> \alexnet_fp32.xml -nt 5 -d CPU
如果使用自己训练好的网络模型,只需将通过模型优化器优化产生的中间文件替换掉以上指令中-m的参数,输入要分类的图像,选取平台,便可在目标平台上推理得到输出,输出为分类的结果,可以控制输出置信度最高的若干个类别(由-nt参数指定)。
图2.图像分类结果
2.车辆及车辆种类和车牌检测:
使用security_barrier_camera_demo.exe可执行文件
security_barrier_camera_demo.exe -i <path_to_video>\inputVideo.mp4 -m vehicle-license-plate-detection-barrier-0106.xml -m_va vehicle-attributes-recognition-barrier-0039.xml -m_lpr license-plate-recognition-barrier-0001.xml -d CPU
输入三个网络模型,第一个用于车辆及车牌检测,第二个用于车辆分类,第三个用于车牌识别。其中第一个网络模型是必需要输入的,后续两个网络模型为可选项。使用方法与图像分类相似,输入可以是MP4格式的视频或者直接以摄像头作为输入,OpenVINO会实时显示检测结果。
图2.车辆检测结果
3.目标检测:
使用object_detection_demo.exe可执行文件
输入指令object_detection_demo.exe -i <path_to_image>\inputImage.bmp -m <path_to_model> \faster-rcnn.xml -d CPU
与图像分类相似,如果要使用自己训练好的网络模型,只需替换-m参数。适用于目标检测的网络。输入待检测图像,输出图像存放在当前路径。
图3.目标检测结果
4.图像分割:
使用segmentation_sample.exe可执行文件
输入指令segmentation_sample.exe -i <path_to_image>\inputImage.bmp -m <path_to_model> \fcn8.xml –d CPU
与图像分类相似,如果要使用自己训练好的网络模型,只需替换-m参数。适用于目标检测的网络。输入带分割图像,分割后的图像存放在当前路径。
图4.图像分割结果
OpenVINO为满足各种需求,提供了很多推理引擎供开发者直接使用,以上只是列举其中的一部分。表2罗列了一些可供上述推理引擎使用的intel提供的网络模型以及支持的硬件。
表2 部分Intel网络模型及提供支持的推理引擎和硬件
模型 |
推理引擎 |
功能 |
CPU |
GPU |
FPGA |
VPU |
face-detection-adas-0001 |
Interactive face detection |
人脸检测 |
√ |
√ |
√ |
√ |
age-gender-recognition-retail-0013 |
Interactive face detection |
年龄性别识别 |
√ |
√ |
√ |
√ |
head-pose-estimation-adas-0001 |
Interactive face detection |
头部姿态估计 |
√ |
√ |
√ |
|
emotions-recognition-retail-0003 |
Interactive face detection |
情感识别 |
√ |
√ |
√ |
√ |
facial-landmarks-35-adas-0001 |
Interactive face detection |
脸部特征点标识 |
√ |
√ |
||
vehicle-license-plate-detection-barrier-0106 |
Security barrier camera |
车辆及车牌检测 |
√ |
√ |
√ |
√ |
vehicle-attributes-recognition-barrier-0039 |
Security barrier camera |
车辆属性识别 |
√ |
√ |
√ |
√ |
license-plate-recognition-barrier-0001 |
Security barrier camera |
车牌识别 |
√ |
√ |
√ |
√ |
person-detection-retail-0001 |
Object detection |
人体检测 |
√ |
√ |
||
person-vehicle-bike-detection-crossroad-0078 |
Crossroad camera |
人体车辆自行车检测 |
√ |
√ |
√ |
√ |
person-attributes-recognition-crossroad-0031 |
Crossroad camera |
行人属性识别 |
√ |
√ |
√ |
√ |
person-reidentification-retail-0076 |
Crossroad camera |
行人重识别 |
√ |
√ |
√ |
√ |
person-reidentification-retail-0079 |
Crossroad camera |
行人重识别 |
√ |
√ |
√ |
√ |
person-reidentification-retail-0031 |
Crossroad camera/pedestrian tracker |
行人重识别 |
√ |
√ |
√ |
√ |
road-segmentation-adas-0001 |
Image segmentation |
道路检测 |
√ |
√ |
√ |
√ |
semantic-segmentation-adas-0001 |
Image segmentation |
语义分割 |
√ |
√ |
√ |
√ |
person-detection-retail-0013 |
Any SSD-based sample |
行人检测 |
√ |
√ |
√ |
√ |
face-detection-retail-0004 |
Any SSD-based sample |
人脸检测 |
√ |
√ |
√ |
√ |
face-detection-retail-0004 |
Any SSD-based sample |
人脸检测 |
√ |
√ |
√ |
√ |
pedestrian-detection-adas-0002 |
Any SSD-based sample |
行人检测 |
√ |
√ |
√ |
|
vehicle-detection-adas-0002 |
Any SSD-based sample |
车辆检测 |
√ |
√ |
√ |
√ |
pedestrian-and-vehicle-detector-adas-0001 |
Any SSD-based sample |
行人车辆检测 |
√ |
√ |
√ |
|
face-detection-retail-0004 |
Smart classroom |
人脸检测 |
√ |
√ |
||
landmarks-regression-retail-0009 |
Smart classroom |
特征点标识 |
√ |
√ |
√ |
√ |
face-reidentification-retail-0071 |
Smart classroom |
人脸重识别 |
√ |
√ |
√ |
√ |
person-detection-action-recognition-0003 |
Smart classroom |
行人检测动作识别 |
√ |
√ |
||
human-pose-estimation-001 |
Human pose estimation |
人体姿态估计 |
√ |
√ |
||
single-image-super-resolution-0034 |
Super resolution |
高分辨图像重建 |
√ |
四、OpenVINO官方资料连接
所有文档地址:https://software.intel.com/en-us/openvino-toolkit/documentation/featured
Windows系统安装指引:https://software.intel.com/en-us/articles/OpenVINO-Install-Windows
Linux系统安装指引:https://software.intel.com/en-us/articles/OpenVINO-Install-Linux
模型优化器指引:https://software.intel.com/en-us/articles/OpenVINO-ModelOptimizer
推理引擎指引:https://software.intel.com/en-us/articles/OpenVINO-InferEngine