个人使用的是vs2015和openvino2019R3版本,openvino尽量使用2019R3以后的版本,因为API更加简洁,话不多说开始教程。
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下载安装
官网要求环境如下:
https://docs.openvinotoolkit.org/latest/_docs_install_guides_installing_openvino_windows.html
安装路径尽量选用默认安装,我安装是在c盘新建intel文件夹,安装在这个目录下面。然后进入该目录完成初始化操作(setupvars.bat)。C:\intel\openvino_2019.3.379\bin
在C:\intel\openvino_2019.3.379\deployment_tools\demo 运行demo测试是否安装成功。进入该目录执行bat,首先会download该模型相应的权重和模型。
如果出现“cmake不是内部或外部命令”
检测C:\Program Files\CMake\bin是否填入了环境变量,重新添加并打开cmd再次运行即可。出现相关结果则安装成功。
编译openvino的demo获得cpu拓展模块支持,执行下面步骤:
上述操作之后在目录C:\Users\Administrator\Documents\Intel\OpenVINO\inference_engine_samples_build\intel64\Release会生成cpu_extension.lib和cpu_extension.dll
需要注意的是在步骤2实际操作过程中执行build_samples_msvc.bat,我测试了两次都出现错误----“vswhere tool is not found”:
解决方法:
微软vs官网下载build_tools并安装,包很小,安装很快;然后在执行语句命令后面加上后缀 VS2015 :build_samples_msvc.bat VS2015 指定安装即可解决;
步骤2完成界面
编译之后openvino的配置和Opencv配置一样基本如下:
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
另外,需要注意的是,openvino下载自带对应版本的opencv,最好配置使用openvino自带版本的opencv。最后重启vs2015即可。
vnet结构和unet类似,主要是有卷积,转置卷积和concat连接几部分组成,输入常规的网络结构,所以openvino是支持这些结构的模型。
对Tensorflow框架openvino2019R3版本具体支持的结构官方文档链接:
https://docs.openvinotoolkit.org/latest/_docs_MO_DG_prepare_model_Supported_Frameworks_Layers.html
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
三通道模型转化:
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++进行具体的解析即可。
解析过程涉及的API:
https://docs.openvinotoolkit.org/latest/_docs_IE_DG_Memory_primitives.html
https://docs.openvinotoolkit.org/latest/_docs_IE_DG_Migration_CoreAPI.html