1

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

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

4

3 回答 3

0

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

本 OpenVINO 指南的“使用 TensorFlow*-特定转换参数”中,您会发现

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

其中的一些示例包括这个 Openvino 问题/答案,以及“模型优化器内部的高级主题”部分的模型优化器指南中的更多内容。

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

此外,这可能是一个错字或版本问题,但该--tensorflow_object_detection_api_pipeline论点是正式的--tensorflow_object_detection_api_pipeline_config(正如@Bhargavi 所提到的)。

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

于 2019-03-01T17:50:34.570 回答
0

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

于 2019-03-01T17:46:05.080 回答
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 DEBUG 以查看有关 MO 失败的更多详细信息。

希望这可以帮助。

于 2019-05-31T09:05:48.520 回答