mobilenet cpu 加速_系列 | OpenVINO视觉加速库使用二

99d97670a5c2faaa99e09aa7bc19ea49.gif

点击上方蓝字关注我们

关注:OpenCV干货与教程第一时间送达!

欢迎星标或者置顶【OpenCV学堂】

概述

95b4a62bbbbcb531bd441e253348738d.png

OpenVINO中模型优化器(Model Optimizer)支持tensorflow/Caffe模型转换为OpenVINO的中间层表示IR(intermediate representation),从而实现对模型的压缩与优化,方便推断引擎更快的加载与执行这些模型。以tensorflow对象检测框架支持的SSD MobileNet v2版本的模型为例,实现从tensorflow的pb文件到IR格式的bin与xml文件生成。全部的过程可以分为三个部分,下面一一解析!

Tensorflow层支持

模型优化器对各种深度学习框架模型的支持并非是100%的,以tensorflow为例,只有下面这些层构建的模型才可以被模型优化器转换为中间层IR(.xml与.bin文件),R5版本支持的层列表如下:

a2c95b10567b43900595db9b525c12d5.png

注意:上述支持层构建的tensorflow模型才可以被转换成IR模型!

特别值得赞扬的是模型优化器在R4版本中开始支持原生的tensorflow与基于tensorflow对象检测框架预训练与迁移学习两种方式生成的tensorflow模型。

转换脚本运行

在使用转换脚本之前,首先需要安装tensorflow支持,如果之前电脑上已经安装了tensorflow可以跳过此步!完整的从tensorflow模型到中间层IR转换步骤可以分为如下几步:

01

配置模型优化器依赖

主要是要安装tensorflow框架支持

// 如果已经安装可以跳过此步

02

导出PB文件或者冻结预测图

如果不知道如何操作可以看我们公众号以前的文章即可,文章链接如下:

Tensorflow如何导出与使用预测图

tensorflow模型导出与OpenCV DNN中使用

03

使用模型优化器生成脚本生成IR文件

xml文件-描述网络拓扑结构
bin文件-包含权重参数的二进制文件

打开cmd命令行,首先到openvino安装好的模型优化器目录下

/deployment_tools/model_optimizer

里面有很多转换模型的脚本,其中mo_tf.py是支持把tensorflow模型转换为IR,脚本运行命令行如下:

python mo_tf.py --input_model .pb --log_level DEBUG

默认生成的模型会在/deployment_tools/model_optimizer该目录下面。其中

--input_model表示tensorflow模型的pb文件路径
--log_level表示输出调试信息
--output_dir声明IR输出保持路径
--reverse_input_channels表示交换R与B通道顺序

上述的运行脚本与参数只能支持tensorflow本身的导出PB文件,对tensorflow对象检测框架中的预训练模型与自定义训练生成的模型无法正确生成IR。Tensorflow object detection API训练出来的模型必须通过下面的命令行参数才可以正确生成IR

--input_model 
预训练的模型(二进制的bp文件路径)
--tensorflow_use_custom_operations_config
用来替换来自对象检测框架模型网络结构的子图配置与匹配文件,必须跟模型一一对应.

当前支持的模型配置json文件包括如下:ssd_v2_support

--tensorflow_object_detection_api_pipeline_config
来自对象检测框架导出模型时候config文件,描述模型的结构与训练相关信息。
--input_shape
模型的输入数据,相当于对象检测网络中image_tensor的四维数据

以对象检测网络中SSD MobileNet V2版本为例,执行如下脚本即可转换为IR模型:

python mo_tf.py /
--input_model D:\tensorflow\ssd_mobilenet_v2_coco_2018_03_29\frozen_inference_graph.pb /
--tensorflow_use_custom_operations_config extensions/front/tf/ssd_v2_support.json /
--output="detection_boxes,detection_scores,num_detections" /
--tensorflow_object_detection_api_pipeline_config D:\tensorflow\ssd_mobilenet_v2_coco_2018_03_29\pipeline.config /
--data_type FP32

 其中

--data_type 表示数据类型, 支持FP16 FP32 half float四种格式

选择FP16或者half模型压缩后大小大概是原来的二分之左右,这样模型可以在受限的嵌入式设备上运行。运行命令行,会生成SSD MobileNet V2版本的xml与bin文件

6bfcf9b528605e730757939cb9fc9961.png

运行输出与结果:

998f7d06e0f3d0b5da97c9b1d10b7a88.png

使用IR模型

转换为IR的模型同样可以在OpenCV DNN中使用,完成对象检测,演示代码如下:

string binModel = 

运行结果如下:

6fbc74c6e1cb2f1115b74ea1c08b57f9.png

如此成功解锁tensorflow模型到OpenVINO中间层模型压缩与优化输出IR文件,并通过OpenCV DNN 加载IR文件实现模型使用IE加速预测。记得点【在看】

往期回顾

使用OpenVINO ToolKit 实时推断

系列 | OpenVINO视觉加速库使用一

Tensorflow如何导出与使用预测图

用Tensorflow Object Detection API实现对象检测

Windows下安装Tensorflow Object Detection API

金舟不能凌阳侯之波

玉马不任骋千里之迹

【扫码关注我们】

db03f48c8f09e5e84a0c0498db50a960.png

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值