Alexey Kolosov
Alexey Kolosov

Reputation: 147

How to apply metadata on tflite model?

I'm trying to launch TF Object detection Android app (https://github.com/tensorflow/examples/tree/master/lite/examples/object_detection/android) with a custom model

I need to fix this issue

java.lang.AssertionError: Error occurred when initializing ObjectDetector: Input tensor has type kTfLiteFloat32: it requires specifying NormalizationOptions metadata to preprocess input images.

I found one suggestion, that I need to apply metadata on my .tflite model, so I tried to run

python tflite_convert.py \ --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" \ --allow_custom_ops \ --saved_model_dir=alexey/saved_model \ --inference_input_type=FLOAT \ --inference_type=FLOAT \ --output_file=detect.tflite

And it was done without any errors, but when I launch the app with this generated .tflite I get the same error as without applying metadata. So it seems to me that metadata was not applied

Upvotes: 1

Views: 2658

Answers (1)

Adi
Adi

Reputation: 318

I had the same error today. I solved it by running this script. It generated a tflite and json file and I put both of them in the assets/models folder.

It's a good idea to just modify the flgs in the string than use command line parameters if you are on Windows 10 (just replace where it says none with the correct path)

Upvotes: 2

Related Questions