试图从冻结的TF模型中获取openVino IR

时间:2019-02-27 12:26:22

标签: tensorflow raspberry-pi intel openvino

我有一个给定的inceptionV2模型,我想使用NCS2进行rPi的开发。例子很好用。现在,给出的模型是基于ssd_inceptionv2演示构建的,我知道该模型有效,因为我已经能够将该演示的冻结的pb转换为IR bin和xml文件,并成功在pi上运行它们。但是,当我尝试将给定模型转换为IR时,它将失败。更具体地说,它以不同的方式失败,具体取决于我如何尝试对其进行转换。

给定的模型具有冻结的.pb文件,检查点文件和.pbtxt。将我正在使用的命令转换为.pb文件:

python3 /opt/intel/computer_vision_sdk/deployment_tools/model_optimizer/mo_tf.py 
  --input_model frozengraph.pb 
  --tensorflow_use_custom_operations_config /opt/intel/computer_vision_sdk/deployment_tools/model_optimizer/extensions/front/tf/ssd_v2_support.json 
  --tensorflow_object_detection_api_pipeline "PATH"/pipeline.config 
  --reverse_input_channels 
  --data_type FP16

这给出了输入形状错误,我用--input_shape [1,299,299,3]进行了纠正,但这只会导致错误:

  

无法推断节点的形状或值

     

“后处理器/ BatchMultiClassNonMaxSuppression / MultiClassNonMaxSuppression / SortByField / TopKV2”

因此,我尝试重新冻结模型并在graph.pbtxt上运行转换。对于这两种方法,由于节点数分别为0和1,因此都会引发错误。

有什么想法我在这里可能做错了吗?

3 个答案:

答案 0 :(得分:0)

假设您能够使用冻结的图检测对象,请尝试将命令行参数更改为 tensorflow_object_detection_api_pipeline_config ,并尝试使用哪个 pipeline.config 文件来尝试一次。 ?如果使用的是 pipeline.config 文件,该文件是与自定义模型的冻结图形一起生成的,则应该能够创建IR文件。

答案 1 :(得分:0)

Tensorflow模型可能有点棘手,特别是在模型动物园中修改它们时,它们已经非常复杂。在您的情况下,我想说几件事:

this OpenVINO guide的“ 使用TensorFlow *特定转换参数”处,您会发现

  

使用TensorFlow *生成的模型通常没有完全定义的形状(某些尺寸包含-1)。必须使用命令行参数--input_shape或-b为输入传递显式形状,以仅覆盖批处理尺寸。如果完全定义了形状,则无需指定-b或--input_shape选项。

其中的一些示例包括this Openvino issue/answer,以及“ 有关模型优化器内部的高级主题”部分的Model Optimizer's guide中的更多示例。

作为记录,我能够在不指定--input_shape参数的情况下,从模型动物园转换微调的 faster_rcnn_inception_v2 ,所以它实际上取决于您的模型。

另外,这可能是拼写错误或版本问题,但是--tensorflow_object_detection_api_pipeline参数是正式的--tensorflow_object_detection_api_pipeline_config(如@Bhargavi所述)。

最后,调试转换命令的一种好方法是使用--log_level DEBUG参数查看完整的输出。

答案 2 :(得分:0)

请参考以下链接

http://docs.openvinotoolkit.org/R5/_docs_MO_DG_prepare_model_convert_model_tf_specific_Convert_Object_Detection_API_Models.html

您的命令类似于:

<INSTALL_DIR>/deployment_tools/model_optimizer/mo_tf.py --input_model=/tmp/ssd_inception_v2_coco_2018_01_28/frozen_inference_graph.pb --tensorflow_use_custom_operations_config <INSTALL_DIR>/deployment_tools/model_optimizer/extensions/front/tf/ssd_v2_support.json --tensorflow_object_detection_api_pipeline_config /tmp/ssd_inception_v2_coco_2018_01_28/pipeline.config --reverse_input_channels

请仔细阅读文档中“自定义输入形状”部分。请添加
--log_level调试以查看有关MO失败的更多详细信息。

希望这会有所帮助。