遇到的问题:
E/AndroidRuntime: FATAL EXCEPTION: main Process: org.tensorflow.lite.examples.detection, PID: 14719 java.lang.AssertionError: Error occurred when initializing ObjectDetector: Mobile SSD models are expected to have exactly 4 outputs, found 8
问题描述
型号说明
使用自定义模型是
使用的预培训模型:ssd_mobilenet_v2_fpnlite_640x640_coco17_tpu-8
推理类型:FLOAT
班级数目:4
系统信息
使用的已保存模型转换命令:
1。已保存的\u Model.pb导出:
python ./exporter_main_v2.py
--input_type image_tensor
--pipeline_config_path ./models/ssd_mobilenet_v2_fpnlite_640x640_coco17_tpu-8/pipeline.config
--trained_checkpoint_dir ./models/ssd_mobilenet_v2_fpnlite_640x640_coco17_tpu-8
--output_directory exported_models/tflite
2。将保存的模型(.pb)转换为tflite
toco
--saved_model_dir ./exported-models/tflite/saved_model
--emit-select-tf-ops true
--allow_custom_ops
--graph_def_file ./exported-models/tflite/saved_model/saved_model.pb
--output_file ./exported-models/tflite/tflite/detect.tflite
--input_shapes 1,300,300,3
--input_arrays normalized_input_image_tensor
--output_arrays 'TFLite_Detection_PostProcess’,’TFLite_Detection_PostProcess:1','TFLite_Detection_PostProcess:2','TFLite_Detection_PostProcess:3'
--inference_type=FLOAT
--allow_custom_ops
备注 我试图在Google TensorFlow lite提供的示例中使用经过培训的自定义模型。只是每次我打开应用程序时,它都会返回这样一个错误,移动SSD型号预计正好有4个输出,发现8个。该模型经过培训,可以识别4个类,所有这些类都在labelmap.txt和管道配置中声明
有人知道这个错误吗?
经过进一步研究,我认为前面提到的问题是因为模型有8个张量输出,但是用Java编写的Android应用程序只能支持4个张量输出(至少Google提供的示例只支持4个张量输出)
我对不同模型上输出的张量的数量不是很确定。据我所知,不同型号的固定形状大小为640 x 640的型号可能需要4个以上的张量输出(通常为8个张量输出),这与用Java编写的Android应用程序不兼容
对于像我这样的业余用户,请在Android application中找到以下使用自定义模型的先决条件
建议的设置(假设您使用的是TensorFlow版本>;=2.3):
TensorFlow型号:SSD型号,带有320 x 320的固定形状大小调整器 (在我的例子中,SSD MobileNet v2 320x320工作得非常好) (张量输出必须为4)
Colab(非常适合模型培训和转换)
(我曾尝试在本地机器上的Linux和Windows平台上执行培训和转换,不同工具和软件包的不兼容性让我头疼。我原来是使用Colab执行培训和转换的。它功能更强大,并且与那些培训工具和脚本有很好的兼容性。)
由@lu-wang-g编写的metadata writer library
(在我的例子中,在将经过培训的模型转换为.tflite后,如果您直接将.tflite模型迁移到Android应用程序,应用程序将报告与.tflite模型的配置有关的大量问题。假设您正确地培训和转换了模型,您所需要的只是上面的元数据编写器库。它将自动根据.tflite模型为您配置元数据。然后您可以直接将模型迁移到应用程序。)
有关详细信息,请访问我的GitHub发行版:
https://github.com/tensorflow/tensorflow/issues/47595
相关问题 更多 >
编程相关推荐