Tensorflow2.3用SaveModel保存训练模型.pb等文件+opencvino转IR文件
#在Tensorflow2.3框架下训练的深度网络模型,目标用于工业部署,所以需要将训练好的模型保存,转成用于C++工业部署的文件格式,期间不断遇到问题,最终成功转换,记录下过程,避免后人踩坑。
1、tensorflow2.0框架下训练的深度学习模型保存为.pb文件
model.saved(model, "./direction") #model为模型名字,依据自己的模型来修改,"./direction"为保存路径
保存后目录下包含.pb文件和variables、assets两个文件夹,如下。此模型保存的文件为模型、参数、变量分开的模式,属于Non-Frozen Models。
--save_model--assets--variables--variables.data-00000-of-00001--variables.index--saved_model.pb
2、安装VS+openvino+Cmake
这里安装都是vs2019社区版 + openvino2020.04。28版 + Cmake3.14.0
网上很多教程,推荐参考
【OpenVINO之二:Windows环境下OpenVINO安装与配置】
【Openvino系列-环境安装(window10+vs2019)(一)】
提醒:安装openvino和Cmake最好默认安装路径,勾选设置环境变量,否则后期会出现些许问题。
*如果出现“cmake不是内部或外部命令”,检测C:\Program Files\CMake\bin是否填入了环境变量,重新添加并打开cmd再次运行即可。【OpenVINO2019R3和VS2015编译配置教程大全】
3、SaveModel模型文件在openvino下转成IR文件,用于部署
注意:采用SaveModel保存后的模型文件属于Non-Frozen Models,无法直接使用以下命令直接pb转IR,网上好多教程都使用以下例如命令,均不适用于tensorflow2.x版本SaveModel保存的模型。
python mo_tf.py --input_model xxx.pb --input_shape [1,224,224,3] --mean_value [127.5,127.5,127.5] --scale 127.5
结果都是转换失败,网上有给出解释如下:
【TF2.0 create a single pb file without additional folders or files?】
在openvino官网找到具体操作,教程如下:
- 配置环境
cd C:\Program Files (x86)\IntelSWTools\openvino\bin\
#使用setupvars.bat配置的环境变量只针对当前打开的cmd,当前如果关闭,openvino环境变量失效
#可以配置固定的环境变量,需要用记事本打开setupvars.bat按照里面的配置,配置到系统变量即可
setupvars.bat
- 配置成功出现如下结果
- 配置模型优化器
cd C:\Program Files(x86)\IntelSWTools\openvino\deployment_tools\model_optimizer
install_prerequisites_tf.bat #tensorflow框架用,其他框架执行其他文件
- 开始转换模型文件为IR格式,参考
【openvino Tensorflow Modell】
SavedModel format of TensorFlow 1.x and 2.x versions:
1.In this case, a model consists of a special directory with a .pb file and several subfolders: variables, assets, and assets.extra. For more information about the SavedModel directory, refer to the README file in the TensorFlow repository.
2.To convert such TensorFlow model:
Go to the <INSTALL_DIR>/deployment_tools/model_optimizer directory
Run the mo_tf.py script with a path to the SavedModel directory to convert a model:python3 mo_tf.py --saved_model_dir <SAVED_MODEL_DIRECTORY>
不过执行不成功,然后我重新将python3改成python,管理员身份执行命令:
python mo_tf.py --saved_model_dir <SAVED_MODEL_DIRECTORY> --output_dir <DIRECTORY> --input_shape [1,128,128,3] --mean_value [127.5,127.5,127.5] --scale 127.5 --data_type=FP32
//--save_model_dir: tensorflow2.0 SaveModel后的模型文件, --**assets** --**variables**--variables.data-00000-of-00001--variables.index --**saved_model.pb**
//--input_shape: 输入模型的张量维度
//--mean_value: 这里是归一化([0,255]-[-1,1])中的减均值
//--scale: 这里是归一化([0,255]-[-1,1])中的整除
//--data_type: 设定网络节点的精度,如FP32、FP16、U8
更改后执行成功,结果如下:
模型文件成功转成.bin/.mapping/.xml三个文件,至此成功转换。
折腾了将近四天时间,徘徊在tensorflow保存pb文件 和 pb转IR文件这两个过程, 总结:
- Tensorflow2.0框架下保存SaveModel模型,包含的.pb文件仅包含模型结构,无法直接单独用openvino转成IR文件,在保存.pb文件这一操作上花费了一两天的时间,把各种方法都使用了,还是没能成功,期间还把Tensorflow1.x的操作方法也尝试了,当然也没用。
- 一开始没有觉察openvino转换.pb文件对Tensorflow版本是由不同的操作(适应性), 经夏博提醒,转换思想,从openvino软件转tensorflow1.x和tensorflow2.x模型文件操作方法是否有区别的角度寻找解决方法,结果在官网找到解决的操作,不复杂,只是没有找到对的方法。
- 执行官网的操作命令后,仍然出现权限的问题,重新以管理员身份进入cmd后执行命令,成功。
希望对大家有所帮助!
Tensorflow2.3用SaveModel保存训练模型.pb等文件+opencvino转IR文件相关推荐
- TensorFlow2.0教程-使用keras训练模型
TensorFlow2.0教程-使用keras训练模型 Tensorflow 2.0 教程持续更新: https://blog.csdn.net/qq_31456593/article/details ...
- tensorflow2调用huggingface transformer预训练模型
tensorflow2调用huggingface transformer预训练模型 一点废话 huggingface简介 传送门 pipline 加载模型 设定训练参数 数据预处理 训练模型 结语 一 ...
- Pytorch:NLP 迁移学习、NLP中的标准数据集、NLP中的常用预训练模型、加载和使用预训练模型、huggingface的transfomers微调脚本文件
日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) run_glue.py微调脚本代码 python命令执行run ...
- Python将Pandas中Dataframe数据保存为gzip/zip文件:gzip压缩文件、zip压缩文件
Python将Pandas中Dataframe数据保存为gzip/zip文件:gzip压缩文件.zip压缩文件 目录 Python将Pandas中Dataframe数据保存为gzip/zip文件:gz ...
- R语言write.xlsx函数将数据写入Excel文件:写入Excel文件并自定义表单的名称、将数据写入Excel文件新的表单(sheet)中、将文件保存为xls文件格式(而不是xlsx)
R语言write.xlsx函数将数据写入Excel文件:写入Excel文件并自定义表单的名称.将数据写入Excel文件新的表单(sheet)中.将文件保存为xls文件格式(而不是xlsx) 目录
- R语言使用for循环绘制多个模型的DCA(Decision Curve Analysis)曲线并保存特定分辨率的DCA曲线的结果文件
R语言使用for循环绘制多个模型的DCA(Decision Curve Analysis)曲线并保存特定分辨率的DCA曲线的结果文件 目录
- python保存大列表(list)数据到文件并后续重新加载为列表(list)对象实战
python保存大列表(list)数据到文件并后续重新加载为列表(list)对象实战 笔者遇到的问题是这样的, 在做机器学习模型的时候,有的时候会使用相关性分析的方法来进行特征的筛选,去除冗余特征,降 ...
- Keras学习笔记---保存model文件和载入model文件
Keras学习笔记---保存model文件和载入model文件 保存keras的model文件和载入keras文件的方法有很多.现在分别列出,以便后面查询. keras中的模型主要包括model和we ...
- 文本编辑器实现打开文件、保存文件、文件另存为、新建文件、软件关闭的功能
文章目录 1 文本编辑器实现打开文件.保存文件.文件另存为.新建文件.软件关闭的功能 1.1 打开文件 1.2 保存文件 1.3 文件另存为 1.4 新建文件 1.5 软件关闭 1 文本编辑器实现打开 ...
最新文章
- 什么?Redis 的 QPS 是 MySQL 的 100 倍?
- jQuery 使用 jQuery UI 部件工厂编写带状态的插件(翻译)
- HDU - 5459 Jesus Is Here(思维+非线性递推)
- datetime建立索引有用吗_超全的数据库建表、SQL、索引规范
- Bootstrap进度条堆叠
- VC学习笔记:简单绘图
- linux:你不知道的echo
- mysql5.7主从复制--在线变更复制类型【转】
- TCP端口扫描[Python3.5]
- VS的QT插件下载与qt版本下载
- 雾芯科技,创新者的窘境
- 计算机如何连接网络扫描仪,windows系统下怎么共享扫描仪?
- U-DIMM、SO-DIMM、FB-DIMM、Reg-DIMM区别
- springmvc生成二维码
- python环境搭建及应用
- C语言中的* 简单记忆方法
- openCV色彩空间转换
- atthesametime啥意思_atthesametime是什么意思啊?a – 手机爱问
- 输出动物的声音JAVA_Java-动物声音
- 魔域私服服务器连接中断,魔域私服服务器中装备武器道具爆率相关算法及设置详细攻略分享...
热门文章
- js this指向哪里 JavaScript this指向
- 联网报警器红外探头的工作原理
- python 获取csv的列数_《极限挑战》弹幕及评论情感分析(Python)
- 爱德泰科普 | 一文了解如何整理机柜内的光纤跳线
- authorization权限控制_授权(Authorization)
- MinGW-w64 安装和使用
- python-简单用户登录注册界面实现
- 录制动画时AnimationClip.SetCurve的relativePath问题
- Java编程语言学习:Java语言编程的基础知识之Java的变量与数据类型、符号、运算符、数组Array总结之详细攻略
- 个人网站搭建之服务器环境搭建