学习OpenVINO笔记之Inference Engine
Inference Engine是OpenVINO具体实施单元,支持CPU,GPU,FPGA,Movidius,GNA等因特尔开发的硬件平台,并提供可操作API,API为C++接口,也支持python.
Inference Engine lib
Inference Engine最核心的的lib为:
linux: libinference_engine.so
window OS: inference_engine.dll
主要提供API中的功能,是对各种功能进行抽象,和具体硬件平台无关
除了上述lib之外,为了将上述功能在具体硬件实现,还得需要具体硬件lib(相当于驱动层),各个平台上名字不一样,具体版本也不太一样,本文学习的主要是R2版本
平台 | lib(linux) | 依赖lib(linux) | DLL(window) | 依赖DLL(window) |
CPU | libMKLDNNPlugin.so |
libmklml_tiny.so , libiomp5md.so
|
MKLDNNPlugin.dll |
mklml_tiny.dll , libiomp5md.dll
|
GPU | libclDNNPlugin.so | libclDNN64.so | clDNNPlugin.dll | clDNN64.dll |
FPGA | libdliaPlugin.so |
libdla_compiler_core.so , libdla_runtime_core.so
|
dliaPlugin.dll |
dla_compiler_core.dll , dla_runtime_core.dll
|
MYRIAD | libmyriadPlugin.so | NA | myriadPlugin.dll | NA |
HDDL | libHDDLPlugin.so |
libbsl.so , libhddlapi.so , libmvnc-hddl.so
|
HDDLPlugin.dll |
bsl.dll , hddlapi.dll , json-c.dll , libcrypto-1_1-x64.dll , libssl-1_1-x64.dll , mvnc-hddl.dll
|
GNA | libGNAPlugin.so | libgna_api.so | GNAPlugin.dll | gna.dll |
HETERO | libHeteroPlugin.so | Same as for selected plugins | HeteroPlugin.dll | Same as for selected plugins |
MULTI | libMultiDevicePlugin.so | Same as for selected plugins | MultiDevicePlugin.dll | Same as for selected plugins |
linux可以通过设置LD_LIBRARY_PATH 相关lib路径,也可以通过bin/setupvars.sh
设置
windows 可以通过设置PATH 相关lib路径,也可以通过bin/setupvars.bat
设置
libinference_engine.so主要包含(注意R1版本和R2版本有很大不同):
读取CNN网络
(InferenceEngine::CNNNetReader)
维护CNN网络信息
(InferenceEngine::CNNNetwork)
创建Inference Engine Core object(InferenceEngine::Core)
运行网络,根据输入输出相关数据(InferenceEngine::ExecutableNetwork and InferenceEngine::InferRequest)
Inference Engine API
Inference Engine一般API工作流程:
1:读取IR. 使用InferenceEngine::CNNNetReader读取IR到InferenceEngine::CNNNetwork
2:准备输入输出格式。加载完网络之后,需要明确输入输出
InferenceEngine::CNNNetwork::getInputsInfo()
InferenceEngine::CNNNetwork::getOutputsInfo()
3:创建core object. Core是指定到具体设备运行的类,是核心功能
创建InferenceEngine::Core
设置相关InferenceEngine::Core::SetConfig
相关扩展
InferenceEngine::Core::AddExtension
4:编译和加载网络到设备
InferenceEngine::Core::LoadNetwork()
5:设置输出。 InferenceEngine::InferRequest
6:执行。
同步执行InferenceEngine::InferRequest::Infer()
异步执行InferenceEngine::InferRequest::StartAsync(),
异步时可以使用InferenceEngine::InferRequest::Wait()进行等待完成
7:获取输出结果
InferenceEngine::IInferRequest::GetBlob()
参考资料
https://docs.openvinotoolkit.org/2019_R2/_docs_IE_DG_inference_engine_intro.html
学习OpenVINO笔记之Inference Engine相关推荐
- 学习OpenVINO笔记之Inference Engine Device Query API
Device Query API是OpenVINO在R2版本时整合引入新的API,主要可以用来查询不同设备属性和配置参数,可以让开发者更加了解设备配置,使用起来更加方便.R2 API与 R1版本相比较 ...
- OpenVINO Inference Engine之GetAvailableDevices
在<学习OpenVINO笔记之Inference Engine Device Query API>中的查询设备用例中,有使用到查看当前有哪些设备可以上线接口GetAvailableDevi ...
- OpenVINO Inference Engine之custom Layer自定义算法(VPU版本)
OpenVINO不仅支持广泛的已知深度学习架构(Caff,TensorFlow等),还支持用户自定义CNN 算法,拥有良好的可扩展性.要使用用户自定义功能就要使用到Inference Engine K ...
- JointDNN: An Effificient Training and Inference Engine for Intelligent Mobile Cloud Computing Servic
题目:JointDNN: An Effificient Training and Inference Engine for Intelligent Mobile Cloud Computing Ser ...
- [深度学习] OpenVINO开发:C++ API推理步骤实现
使用C++ API实现推理步骤: 创建Core对象,加载推理引擎Core,该引擎需要从当前路径加载plugins.xml文件: Core ie; 读取IR文件 (.xml and .bin files ...
- 学习SpringBoot笔记以及错误记录
学习SpringBoot笔记以及错误记录 <1>. 启动类(SpringBootApplication)放错位置 错误场景:MainApplication类不应放在默认的src.main. ...
- 虚幻引擎的数学知识学习教程 Math for Unreal Engine (Early Preview)
通过做真实世界的 Unreal Engine项目来学习数学 你会学到什么 理解游戏开发对数学的基本需求 将数学直接应用到用例中,而不是钻研理论(用我们的示例项目进行实践) 正确编辑短视频,节省您的时间 ...
- python神经结构二层_《python深度学习》笔记---8.3、神经风格迁移
<python深度学习>笔记---8.3.神经风格迁移 一.总结 一句话总结: 神经风格迁移是指将参考图像的风格应用于目标图像,同时保留目标图像的内容. 1."神经风格迁移是指将 ...
- tensorflow学习函数笔记
为什么80%的码农都做不了架构师?>>> [TensorFlow教程资源](https://my.oschina.net/u/3787228/blog/1794868](htt ...
最新文章
- ICRA2022 | AutoPlace:车载单片毫米波雷达场景识别
- FRM-40212: set_item_property:ITEM_IS_VALID
- GroovyQ | 关注Groovy社区动态,分享Groovy开发经验。
- eplan模板_EPLAN之3D箱柜清单自动生成
- windows网络编程第二版 第三章 Internet Protocol 读书笔记
- ASP.NET 3.5核心编程学习笔记(17):基于数据源的数据绑定
- 大数据之-hadoop知识体系架构---大数据之hadoop工作笔记0001
- [家里蹲大学数学杂志]第413期插值不等式
- 不同浏览器CSS隐藏元素滚动条
- 谷歌爆苹果 Image I/O 存重大漏洞,无辜用户躺枪
- (转)json+flexgrid+jbox组合运用页面刷新jsp
- Linux学习笔记1 - Linux系统简介
- [HTML+CSS]电商网站模板
- 实现Codeblock支持C99标准
- 传统推荐模型——协同过滤
- 终于,字节跳动要取消大小周了,我 1.7 万人的票圈都快炸了!
- 计算机 学院派,总校计算机学院派老师来校召开“2+2”联合培养班学生见面会...
- java读取zip文件损坏_java – 如何检查生成的zip文件是否损坏?
- 2022年的第一个夕阳
- 微信小程序实现首页图片多种排版布局!
热门文章
- 微信公众平台开发教程第22篇-如何保证access_token长期有效
- TCP/IP入门(3) --传输层
- 记录hiveonspark:Execution Error, return code 30041 from org.apache.hadoop.hive.ql.exec.spark.SparkTask
- Mac安装与配置idea及tomcat
- 关于如何在项目接口保证幂等性的一点思考
- 学习react的心路历程(一)
- [Usaco2005 nov]Grazing on the Run 边跑边吃草 BZOJ1742
- 高性能业务架构解决方案(LVS+Keepalived)
- Spring Ioc 源码分析(一)- XML 解析
- Spring boot学习整理