学习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)
CPUlibMKLDNNPlugin.solibmklml_tiny.so, libiomp5md.soMKLDNNPlugin.dllmklml_tiny.dll, libiomp5md.dll
GPUlibclDNNPlugin.solibclDNN64.soclDNNPlugin.dllclDNN64.dll
FPGAlibdliaPlugin.solibdla_compiler_core.so, libdla_runtime_core.sodliaPlugin.dlldla_compiler_core.dll, dla_runtime_core.dll
MYRIADlibmyriadPlugin.soNAmyriadPlugin.dllNA
HDDLlibHDDLPlugin.solibbsl.so, libhddlapi.so, libmvnc-hddl.soHDDLPlugin.dllbsl.dll, hddlapi.dll, json-c.dll, libcrypto-1_1-x64.dll, libssl-1_1-x64.dll, mvnc-hddl.dll
GNAlibGNAPlugin.solibgna_api.soGNAPlugin.dllgna.dll
HETEROlibHeteroPlugin.soSame as for selected pluginsHeteroPlugin.dllSame as for selected plugins
MULTIlibMultiDevicePlugin.soSame as for selected pluginsMultiDevicePlugin.dllSame 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

  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Huo的藏经阁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值