从 Tensorflow 对象检测 API 动物园模型导出错误的冻结图
Posted
技术标签:
【中文标题】从 Tensorflow 对象检测 API 动物园模型导出错误的冻结图【英文标题】:Wrong frozen graph export from Tensorflow Object Detection API zoo model 【发布时间】:2019-08-05 19:30:17 【问题描述】:我正在使用 Tensorflow 对象检测 API 项目 (https://github.com/tensorflow/models/tree/r1.12.0/research/object_detection) 处理 Mask R CNN 模型。我坚持使用 r1.12.0 版本(但这不是必须的,但我认为它不会影响我的问题。)我的计划是修改模型的一些“静态”部分并再次将其导出为冻结图格式。
作为第一步,我打算使用 export_inference_graph.py
脚本 (https://github.com/tensorflow/models/blob/r1.12.0/research/object_detection/export_inference_graph.py) 从检查点文件和 pipeline.config
重新生成冻结图。我下载了 inception V2 模型 (http://download.tensorflow.org/models/object_detection/mask_rcnn_inception_v2_coco_2018_01_28.tar.gz) 并使用 Tensorflow 1.12.0 执行了脚本。它完成了这项工作并创建了一个冻结图。
问题是,如果我将原始冻结图与生成的图进行比较,它们是不同的。如果我使用 Tensorboard 将它们可视化,它们之间就会有明显的差异。一些节点丢失,一些节点不同等等。
我也尝试过其他模型(普通 Fast R CNN),我总是遇到同样的问题。
这怎么可能?我应该如何使用检查点文件和pipeline.config
文件重新生成与最初附加的完全相同的冻结图?
【问题讨论】:
【参考方案1】:据我了解,您生成冻结图的步骤很好。
关于冻结图的一件事是可以对其进行优化,例如将一些层融合在一起。优化可能会导致您的冻结图看起来不同,因为可以执行或根本不执行不同的优化。但是不同的冻结图并不一定意味着该图是错误生成的。
Here 是关于优化冻结图以制作更快的服务模型的教程。只是在这里列出来表明有几个优化选项。
这里What does freezing a graph in TensorFlow mean? 是另一个与此问题有关的问题。
【讨论】:
以上是关于从 Tensorflow 对象检测 API 动物园模型导出错误的冻结图的主要内容,如果未能解决你的问题,请参考以下文章
Tensorflow Object Detection API 中的 mAP(平均精度)
如何从代码运行 tensorflow 对象检测 api (model_main_tf2)?