Search code examples
android-studiotensorflowtensorflow-liteobject-detection-api

Integrate tflite model with tensorflow object-detection example code


I have a tflite model which I procured by converting my TFmodel( MobileNet Single Shot Detector (v2) ).

I have successfully converted my model into tflite format using the code below.

!tflite_convert \
  --input_shape=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 \
  --graph_def_file=/content/models/research/fine_tuned_model/tflite/tflite_graph.pb \
  --output_file="/content/models/research/fine_tuned_model/final_model.tflite"

And have tried to integrate it into the object-detection code which is provided by the tensorflow team.But the output is not visible.

The Steps taken from my end for integrating were as follows: 1.Commenting the below line from build.gradle(app)

apply from:'download_model.gradle'
  1. I added my tflite model in the assets folder and modified the label.txt with my own labels.
  2. In the Detector Activity,
private static final boolean TF_OD_API_IS_QUANTIZED = true;

I have set the above boolean to false

and reduced the probability to 0.2

 private static final float MINIMUM_CONFIDENCE_TF_OD_API = 0.5f;

But it didn't worked.

The github link to the object-detection code :- https://github.com/tensorflow/examples/blob/master/lite/examples/object_detection/android

Also ,please also let know how to test the working of the tflite model using the test images.

These are the values after debugging the model

[[[ 0.15021165  0.45557776  0.99523586  1.009417  ]
  [ 0.4825344   0.18693507  0.9941584   0.83610606]
  [ 0.36018616  0.612343    1.0781565   1.1020089 ]
  [ 0.47380492  0.03632754  0.99250865  0.5964786 ]
  [ 0.15898478  0.12117874  0.94728076  0.8854655 ]
  [ 0.44774154  0.41910237  0.9966481   0.9704595 ]
  [ 0.06241751 -0.02005028  0.93670964  0.3915068 ]
  [ 0.1917564   0.00806974  1.0165613   0.5287838 ]
  [ 0.20279509  0.738887    0.95690674  1.0022873 ]
  [ 0.7434618   0.07342905  0.9969055   0.6412263 ]]]

Solution

  • First train your model . Better use a trained model . After training the model get the tflite graphs and convert them to tflite model using Bazel(Better use Ubuntu). Then get the Tensorflow/examples and open the object detection android folder on your Android Studio . Remove the metadata code from the tflite interpreter class , since it demands it and there is no official way declared by the officials to make it happen . And then you can make it work .