首页 > 解决方案 > 将模型优化器用于 tensorflow slim 模型

问题描述

我的目标是使用英特尔 OpenVINO 优化器推断 tensorflow slim 模型。使用开放的 vino 文档幻灯片进行推理,使用tf slim 文档进行模型训练。

这是一个多类分类问题。我从头开始训练了 tf slim mobilnet_v2 模型(使用 sript train_image_classifier.py)。在测试集上对训练模型的评估给出了相对较好的结果(使用脚本 eval_image_classifier.py)

评估/准确度[0.8017]评估/召回_5[0.9993]

但是,没有保存单个.ckpt文件(即使在 train_image_classifier.py 运行结束时有类似“model.ckpt is saved to checkpoint_dir”之类的消息),而是有 3 个文件(.ckpt-180000.data-00000-of-00001, .ckpt-180000.index, .ckpt-180000.meta)。

OpenVINO 模型优化器需要一个检查点文件。

根据文档,我使用以下参数调用mo_tf.py :

python mo_tf.py --input_model D:/model/mobilenet_v2_224.pb --input_checkpoint D:/model/model.ckpt-180000 -b 1

它给出了错误(如果通过 --input_checkpoint D:/model/model.ckpt 则相同):

[ ERROR ]  The value for command line parameter "input_checkpoint" must be existing file/directory,  but "D:/model/model.ckpt-180000" does not exist.

错误信息很清楚,磁盘上没有这样的文件。但据我所知,大多数 tf 实用程序在后台将 .ckpt-????.meta 转换为 .ckpt。

试图打电话:

python mo_tf.py --input_model D:/model/mobilenet_v2_224.pb --input_meta_graph D:/model/model.ckpt-180000.meta -b 1

原因:

[ ERROR ]  Unknown configuration of input model parameters

对我来说,将图形转换为 OpenVINO 中间表示的方式并不重要,只需要达到该结果即可。

非常感谢。

编辑

我设法在 tf slim 模型的冻结图上运行 OpenVINO 模型优化器。但是我仍然不知道为什么我之前的尝试(基于文档)失败了。

标签: tensorflowtf-slimtensorflow-sliminference-engineopenvino

解决方案


您可以尝试将模型转换为冻结格式 (.pb),然后使用 OpenVINO 转换模型。

.ckpt-meta 有元图。没有变量值的计算图结构。您可以在 tensorboard 中观察到的那个。

.ckpt-data 具有变量值,没有骨架或结构。要恢复模型,我们需要元文件和数据文件。

.pb 文件保存整个图形(元+数据)

根据 OpenVINO 的文档:

在 Python* 代码中定义网络时,您必须创建推理图文件。通常,图表以允许模型训练的形式构建。这意味着所有可训练的参数都表示为图中的变量。要将图形与模型优化器一起使用,它应该被冻结。 https://software.intel.com/en-us/articles/OpenVINO-Using-TensorFlow

OpenVINO 通过转换以冻结形式传递的加权图来优化模型。


推荐阅读