【问题标题】:Trying to get a openVino IR from a frozen TF model试图从冻结的 TF 模型中获取 openVino IR
【发布时间】:2019-02-27 12:26:21
【问题描述】:

我有一个给定的 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。

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

【问题讨论】:

    标签: tensorflow raspberry-pi intel openvino


    【解决方案1】:

    Tensorflow 模型可能有点棘手,尤其是当您在模型库中修改那些已经相当复杂的模型时。对于您的场景,我想提几点:

    this OpenVINO guide,在“Using TensorFlow*-Specific Conversion Parameters”中,你会发现

    使用 TensorFlow* 生成的模型通常没有完全定义的形状(在某些维度中包含 -1)。有必要使用命令行参数 --input_shape 或 -b 为输入传递显式形状,以仅覆盖批量维度。如果 shape 已完全定义,则无需指定 -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】:

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

      【讨论】:

        【解决方案3】:

        请参考以下链接

        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 DEBUG 查看 MO 失败的更多详细信息。

        希望这会有所帮助。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-07-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多