从冻结图到 tflite 模型的模型转换过程中 "input_tensor_name" 应该是什么?

What should be the "input_tensor_name" during model conversion from frozen graph to tflite model?

我使用 Deeplab 官方 Github 页面上提供的 python 脚本,用我自己的数据集训练了一个语义分割模型。 训练和测试都很顺利

然后我使用 export_model.py 和以下命令将我的模型导出到冻结图:

python3 export_model.py \
   --model_variant="xception_65" \
   --crop_size=354 \
   --crop_size=354 \
   --atrous_rates=6 \
   --atrous_rates=12 \
   --atrous_rates=18 \
   --output_stride=16 \
   --checkpoint_path=model.ckpt-1000 \
   --export_path=frozen_inference_graph_354X354.pb

这也成功了。现在我想使用 convert_to_tflite.py 将我的冻结图转换为 tflite。该脚本有 2 个我不理解的输入参数: "input_tensor_name" 和 "output_tensor_name" 。我应该将值保留为“output_tensor_name”的默认值“ArgMax:0”吗? “input_tensor_name”的值应该是多少?

python3 convert_to_tflite.py \
   --quantized_graph_def_path=frozen_inference_graph_354X354.pb \
   --output_tflite_path=model.tflite \
   --input_tensor_name="?" \
   --output_tensor_name="?"

我找不到与此相关的任何文档。提前致谢!

您需要查看文档,特别是 quantize markdown 文档。

在该文档中,您可以找到有效的 --input_tensor_name=MobilenetV2/MobilenetV2/input:0

您需要通过修改参数 --quantize_delay_step

使用文档中显示的策略之一来训练量化感知模型

为了进行训练,您可能至少需要 tensorflow==1.15.3。参见 this issue

如果您执行以上所有操作,您的冻结图将具有指定名称的有效输入张量。您可以通过使用 Netron 搜索特定节点名称来检查。最后,使用 convert_to_tflite.py 脚本

创建 tflite 模型