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

GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐