OpenVINO除了支持比较流行的Caffe等深度学习框架,还支持用户自定义网络Custom Layer层。

Custom Layer

OpenVINO的Custom Layer的实施包括Model Optimizer 和 Inference Engine两个部分

Model Optimizer的主要作用是在构建IR之前,会搜寻已知每层网络,该网络中包含输入模型拓扑,并优化该模型,最终生成IR。如果所设计的拓扑结构中包含的Layer不在已知的Layer中,该Layer将会被认为custom

Inference Engine从输入模型的IR文件中加载网络到每个具体执行的设备中。如果网络层中的拓扑结构没有在该设备的已知Layer中,Inference Engine将会报错,设备类型中支持的Layer,可以在 Support Devices

Custom Layer Extensions for the Model Optimizer

Model Optimizer的实施主要包括一下主要流程,其中Custom Layer Extractor and  Custom Layer Operation两个主要部分:

Model Optimizer首先从输入的模型中(包括模型拓扑结构及相应的参数,每层的输入和输出格式等)提取出所需要的信息,然后从每层的特点,内部链接,已经每层操作的数据了走向等各个方面进行优化,最后输出IR文件。

Custom Layer Extrator

---主要职责是定义custom layer操作 已经提取相应的参数。Layer参数被保存在每个实例中,在生成最终的IR之前需要被Layer使用。

Custom Layer Operation

---主要职责是明确cutom layer所支持的属性,从cutom layer每个实例参数中计算输出形状

Custom Layer Extensions for the Inference Engine

下图显示Inferer Enginer的cutom layer工作流程,其中Custom Layer CPU extension是在CPU上运行, Custom Layer GPU Extension是在GPU上运行:

每个设备都包括一个经过优化的lib,用来执行cutom layer的扩展操作。

Custom Layer CPU Extension:

---包括编译的共享库(.so or .dll),CPU执行cutom Layer所需要的

Custom Layer GPU Externsion:

---opencl kernl .cl文件,被GPU编译,以及一个.xml文件(稍后文章在介绍),该.xml为 GPU执行 cutom layer kernel所需要

Model Extension Generator

OpenVINO提供了一系列工具用于Custom Layer开发,其中Model Extension Gernator是重要的工具之一,主要在用在Model Optimize中,主要用于自动生成中间文件,是生成IR文件执行所必须的

工具目录在:

/opt/intel/openvino/deployment_tools/tools/extension_generator/extgen.py

运行该命令help,查看 该结果:

python3 /opt/intel/openvino/deployment_tools/tools/extension_generator/extgen.py new --help

运行结果:

usage: You can use any combination of the following arguments:Arguments to configure extension generation in the interactive modeoptional arguments:-h, --help            show this help message and exit--mo-caffe-ext        generate a Model Optimizer Caffe* extractor--mo-mxnet-ext        generate a Model Optimizer MXNet* extractor--mo-tf-ext           generate a Model Optimizer TensorFlow* extractor--mo-op               generate a Model Optimizer operation--ie-cpu-ext          generate an Inference Engine CPU extension--ie-gpu-ext          generate an Inference Engine GPU extension--output_dir OUTPUT_DIRset an output directory. If not specified, the currentdirectory is used by default.

在生成模型中一般需要指明生成哪个框架的扩展模型

Command-line Argument Description
--mo-caffe-ext 生成caffe的扩展模型,生成目录在/front/caffe
--mo-mxnet-ext 生成mxnet扩展模型,生成目录在/front/mxnet
 --mo-tf-ext  生成TensorFlow模型,生成目录在/front/tf
--mo-op 生成Model optimizer操作相关数据。生成目录在/ops
--ie-cpu-ext 生成在cpu执行的相关数据,生成目录在/cpu
--ie-gpu-ext  生成在GPU执行的相关数据,生成目录在/GPU
  --output_dir OUTPUT_DIR 设置输出目录

Extension Workflow

生产Model Optimizer所需要的custom Layer Extension数据流程如下:

Step1 :使用Model Extension Generator生成所需要的Custom Layer临时文件

Step 2: 编辑上步骤生产的Custom Layer临时文件,以适应Cumstom Layer 扩展源码

Step 3: 明确Model Optimizer 或Inference Engine需要用到的Custom layer

官网有提供custom layer例子下节再介绍

OpenVINO Custom Layer example

OpenVINO 2019 R2.0 Custom Layer Implementation for linux(1)相关推荐

  1. OpenVINO 2019 R2.0 Custom Layer Implementation for linux(2)

    在上节主要是讲述了OpenVINO 整个custom layer流程,官网中给出了基于CPU和GPU整个实现用例过程,用例链接 该用例主要是在custom layer中实现一下公式: 整个流程主要如下 ...

  2. OpenVINO Inference Engine之custom Layer自定义算法(VPU版本)

    OpenVINO不仅支持广泛的已知深度学习架构(Caff,TensorFlow等),还支持用户自定义CNN 算法,拥有良好的可扩展性.要使用用户自定义功能就要使用到Inference Engine K ...

  3. TensorRT Samples: MNIST(Plugin, add a custom layer)

    关于TensorRT的介绍可以参考:http://blog.csdn.net/fengbingchun/article/details/78469551 以下是参考TensorRT 2.1.2中的sa ...

  4. mysql+server+80_Windows Server 2019 IIS10.0+PHP(FastCGI)+MySQL环境搭建教程

    准备篇 一.环境说明: 操作系统:Windows Server 2019 PHP版本:php 7.3.11 MySQL版本:MySQL 8.0.18.0 二.相关软件下载: 1.PHP下载地址: ht ...

  5. caffe 添加自定义层(custom layer)

    在<剖析Caffe源码之Layer>可以知道layer是所有层的基类,由此类派生出各种不同的不同的层,其如下图所示: 由此扩展出了各种不同的层,基本能满足要求,但是有时候在搭建拓扑网络时, ...

  6. php7 iis10 mysql_Windows Server 2019 IIS10.0+PHP(FastCGI)+MySQL环境搭建教程

    准备篇 一.环境说明: 操作系统:Windows Server 2019 PHP版本:php 7.3.11 MySQL版本:MySQL 8.0.18.0 二.相关软件下载: 1.PHP下载地址: ht ...

  7. iis10 php,Windows Server 2019 IIS10.0+PHP(FastCGI)+MySQL环境搭建教程

    准备篇 一.环境说明: 操作系统:Windows Server 2019 PHP版本:php 7.3.11 MySQL版本:MySQL 8.0.18.0 二.相关软件下载: 1.PHP下载地址: ht ...

  8. 【keras】Input 0 of layer conv2d is incompatible with the layer. expected ndim=4, found ndim=3

    在构建卷积神经网络时,遇到了这个错误 ValueError: Input 0 of layer conv2d is incompatible with the layer: expected ndim ...

  9. Adobe Photoshop CC 2019 20.0.6软件免费下载及安装教程

    Adobe Photoshop CC 2019 20.0.6免费下载最新版本的Windows.在上传之前,程序和所有文件都会被手动检查和安装,程序运行正常,没有任何问题.它是完全脱机安装程序独立设置的 ...

最新文章

  1. (Mirage系列之六)在Mirage里使用Collection
  2. 基于单例模式的日志输出(C++)
  3. 2018年HBase生态社群画像 +最全资料汇总下载
  4. RDKit:运用RDKit计算USRCAT(形状相似性)
  5. MVC中执行成功弹出对话框
  6. Python剑指offer:数组中重复的数字
  7. Andriod --- JetPack (七):Room + ViewModel + LiveData 增删改查实例
  8. ERROR in multi ./src/main.js dist/bundle.js
  9. html 轮播图的鼠标事件,这是图片轮播的代码 html+css,怎么加上鼠标悬停移出继续功能?...
  10. ubuntu16.04下ROS操作系统学习笔记(七 )机器语音-语音听写-科大讯飞SDK调用
  11. 图说丨京东《技术重构社会供应链——未来科技趋势白皮书》
  12. Digester简介和使用
  13. Typora、Markdown 字体样式
  14. 计算机专业人员有补贴吗,2020年各地软考证书申领补贴需要什么条件
  15. linux filp open,诚意请教一个filp_open的问题。
  16. js 使用tel标签实现拨打电话
  17. 汇编综合实验--学生管理系统
  18. MySQL入门学习:组合查询
  19. 低代码行业风涌云起,他们靠什么跻身全球第一阵营?
  20. PostgreSQL备机checkpoint

热门文章

  1. joa-framework 工作流快速开发框架(jeecg官方工作流版本) 发布
  2. 那些相似的CRM之间究竟有无区别
  3. IOS开发UI篇—导航控制器属性和基本使用
  4. tmpfs——Linux的一种虚拟内存文件系统
  5. 想要写好的程序应该远离计算机
  6. CCNA笔记-各种路由器的接口
  7. asp.net中验证码的实现
  8. visual c++ 技术资料(网络收集)
  9. VS 2005竟然会突然失踪
  10. 洛谷 P1008 [NOIP1998 普及组] 三连击