我有一个给定的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,因此都会引发错误。
有什么想法我在这里可能做错了吗?
答案 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)
请参考以下链接
您的命令类似于:
<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失败的更多详细信息。
希望这会有所帮助。