OpenVINO2019R3和VS2015编译配置教程大全

1. 声明:

     个人使用的是vs2015和openvino2019R3版本,openvino尽量使用2019R3以后的版本,因为API更加简洁,话不多说开始教程。

OpenVINO2019R3和VS2015编译配置教程大全_第1张图片

 

2. 简介

     Openvino是intel公司开发的一款将多种深度学习模型部署于cpu,gpu,fpga等多种平台的软件。它支持tensorflow caffe mxnet等模型的转换,将这些模型的权重与网络结构通过模型优化器转换成 .xml 与 .bin文件,避免了开发人员为了同一个业务需求,在不同平台多次开发,多次部署,使用openvino,只需一次开发,就可以将模型部署在多个平台。
1.Openvino支持的硬件:
第六代至第十代智能英特尔® 酷睿™ 处理器
 英特尔® 至强® v5 产品家族
 英特尔® 至强® v6 产品家族
 英特尔® Movidius™ 神经计算棒
 英特尔® 神经计算棒 2
 采用英特尔® Movidius™ VPU 的英特尔® 视觉加速器设计
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200223175914352.png)![在这里插入图片描述](https://img-blog.csdnimg.cn/20200223175907638.png)

Openvino下载安装

2.1安装环境:

 

  • Microsoft Windows* 10 64 位
  • Visual studio 2015
  • CMake 3.4 或更高版本(64 位)
  • Python 3.6.5(64 位)
  • OpenVINO2019R03
  • 通常安装vs2015和cmake3.7以上,python3.6或3.7,

官网要求环境如下:
 https://docs.openvinotoolkit.org/latest/_docs_install_guides_installing_openvino_windows.html
OpenVINO2019R3和VS2015编译配置教程大全_第2张图片

OpenVINO2019R3和VS2015编译配置教程大全_第3张图片

2.2 初始化


     安装路径尽量选用默认安装,我安装是在c盘新建intel文件夹,安装在这个目录下面。然后进入该目录完成初始化操作(setupvars.bat)。C:\intel\openvino_2019.3.379\bin
OpenVINO2019R3和VS2015编译配置教程大全_第4张图片

2.3测试demo


      在C:\intel\openvino_2019.3.379\deployment_tools\demo 运行demo测试是否安装成功。进入该目录执行bat,首先会download该模型相应的权重和模型。

OpenVINO2019R3和VS2015编译配置教程大全_第5张图片


如果出现“cmake不是内部或外部命令”
检测C:\Program Files\CMake\bin是否填入了环境变量,重新添加并打开cmd再次运行即可。出现相关结果则安装成功。

OpenVINO2019R3和VS2015编译配置教程大全_第6张图片

3.Cpu拓展dll编译

编译openvino的demo获得cpu拓展模块支持,执行下面步骤:

  • 1.首先进入目录:C:\intel\openvino_2019.3.379\deployment_tools\inference_engine\samples
  • 2.然后运行:build_samples_msvc.bat
  • 3.进入C:\Users\Administrator\Documents\Intel\OpenVINO\inference_engine_samples_build
  • 4.打开Samples.sln分别生成release和debug解决方案。

上述操作之后在目录C:\Users\Administrator\Documents\Intel\OpenVINO\inference_engine_samples_build\intel64\Release会生成cpu_extension.lib和cpu_extension.dll
OpenVINO2019R3和VS2015编译配置教程大全_第7张图片
 

需要注意的是在步骤2实际操作过程中执行build_samples_msvc.bat,我测试了两次都出现错误----“vswhere tool is not found”:

解决方法:
      微软vs官网下载build_tools并安装,包很小,安装很快;然后在执行语句命令后面加上后缀 VS2015 :build_samples_msvc.bat VS2015 指定安装即可解决;
步骤2完成界面

OpenVINO2019R3和VS2015编译配置教程大全_第8张图片


步骤4编译最终生成界面OpenVINO2019R3和VS2015编译配置教程大全_第9张图片

OpenVINO2019R3和VS2015编译配置教程大全_第10张图片

4.VS配置Openvino

编译之后openvino的配置和Opencv配置一样基本如下:


4.1包含目录

OpenVINO2019R3和VS2015编译配置教程大全_第11张图片

4.2库目录
OpenVINO2019R3和VS2015编译配置教程大全_第12张图片


4.3依赖项目录

OpenVINO2019R3和VS2015编译配置教程大全_第13张图片

4.4添加环境变量


C:\intel\openvino_2019.3.379\deployment_tools\inference_engine\bin\intel64\Debug
C:\intel\openvino_2019.3.379\deployment_tools\inference_engine\bin\intel64\Release
C:\Users\Administrator\Documents\Intel\OpenVINO\inference_engine_samples_build\intel64\Release
C:\intel\openvino_2019.3.379\opencv\bin

OpenVINO2019R3和VS2015编译配置教程大全_第14张图片

另外,需要注意的是,openvino下载自带对应版本的opencv,最好配置使用openvino自带版本的opencv。最后重启vs2015即可。


 5.Keras模型转化Openvino模型(应用)

5.1 openvino支持的网络结构


     vnet结构和unet类似,主要是有卷积,转置卷积和concat连接几部分组成,输入常规的网络结构,所以openvino是支持这些结构的模型。
对Tensorflow框架openvino2019R3版本具体支持的结构官方文档链接:
https://docs.openvinotoolkit.org/latest/_docs_MO_DG_prepare_model_Supported_Frameworks_Layers.html

5.2 TF模型的IR转化

     Openvino目的就是为了在边缘设备上Cpu或者vpu等硬件上进行部署深度学习模型并进行加速推理,所以提供了model optimizer模块优化器。通过优化器将AI模型转化为openvino支持的中间模型。
在执行model optimizer时非常重要,该模块是重点,实际存在坑较多。这一步做不好,后面使用inference engine会出现2种情况,第一种 inference无法运行,第二种inference可以运行,但是得出的结果不正确。
官网提供的mo_tf.py负责转换tf模型,mo.py负责转换多种模型。进入目录C:\intel\openvino_2019.3.379\deployment_tools\model_optimizer;对tensorflow的pb模型在执行mo_tf.py模型转化操作如下:
1.因为openvino安装在c盘,使用管理员模式打开cmd运行命令
2.python mo.py --input_model new_tensor_model.pb --input_shape=[1,256,256,3]  --scale_values [255,255,255] --mean_values [0,0,0]  --data_type FP32   --model_name new_tensor_model
解释下该命令,官网给的IR转化命令如下:
python mo_tf.py --input_model .pb --output_dir
该命令不含这么多参数,然而现实是残酷的,如果不带--input_shape=[1,256,256,3]等参数测试发现会转化出错,直接运行mo_tf.py转化过程得到的都是各种各样的ERROR。
参考连接:https://www.jianshu.com/p/f4ad7b242d45
          https://blog.csdn.net/weixin_40272441/article/details/87875349
     通常我们训练时候数据输入会经过预处理,比方说归一化和裁剪resize,然后在输入网络训练。但有些人喜欢把预处理部分写进拓扑结构里了,训练时候直接输入读取原始数据。这种情况下得到的模型 pb文件里会有预处理相关的node,这些node也会直接转化到xml文件中。
     另一种情况是pb文件的拓扑结构没有包含预处理部分,由于拓扑结构中没有预处理部分,虽然pb转IR的时候也可以成功,但是无法推理。这个时候就需要用到相关参数--scale、 --scale_values,、--mean_values。当mean value和scale value被同时指定时,数据先减去mean value,再除以scale value。
如果在pb文件中,输入没有明确的尺寸的话,需要加入--input_shape参数指定shape,比如[1,128,128,3]。对于batch size不定的情况,再调用mo_tf.py后面加上-b。这两个参数不能同时使用。一句话不指定input-shape就要指定batch大小,使用参数-b,目前测试了下面第一种。
python mo_tf.py --input_model .pb --input_shape [1,256,256, 3]
python mo_tf.py --input_model .pb -b 1 --reverse_input_channels参数
单通道vnet模型转化:
python mo_tf.py --input_model new_tensor_model.pb --input_shape=[1,256,256,1]  --scale_values [255.0] --mean_values [0]  --data_type FP32   --model_name new_tensor_modelOpenVINO2019R3和VS2015编译配置教程大全_第15张图片

三通道模型转化:
python mo_tf.py --input_model new_tensor_model.pb --input_shape=[1,256,256,3]  --scale_values [255.0,255.0,255.0] --mean_values [0,0,0]  --data_type FP32   --model_name new_tensor_model


之后就会在指定目录下生成对应的bin和xml文件,然后c++进行具体的解析即可。
OpenVINO2019R3和VS2015编译配置教程大全_第16张图片
解析过程涉及的API:
https://docs.openvinotoolkit.org/latest/_docs_IE_DG_Memory_primitives.html
https://docs.openvinotoolkit.org/latest/_docs_IE_DG_Migration_CoreAPI.html

你可能感兴趣的:(openvino)