Increase number of detections on Tensorflow Lite's Model Maker (Android)

Issue

I’ve adapted Tensorflow Lite’s Salad Detector Colab and am able to train my own models and get them working on Android but I’m trying to count Objects and I need more than the 25 limit that is the default.
The models have a method for increasing detections so, in the above Colab, I inserted the following code:

spec = model_spec.get('efficientdet_lite4')
spec.tflite_max_detections=50

And on the Android side of things

val options = ObjectDetector.ObjectDetectorOptions.builder()
    .setMaxResults(50)
    .setScoreThreshold(10)
    .build()

The models are training fine but I’m still only able to detect 25 Objects in a single image.

Is there a problem with my models? Or are there any other settings I can change in my Android code that will increase the number of detections?

Solution

Solved this myself after Googling a different SOF question on efficientdet_lite4, I stumbled on an AHA moment.

My problem was here:

spec = model_spec.get('efficientdet_lite4')
spec.tflite_max_detections=50

I needed to change the whole spec of the model:

spec = object_detector.EfficientDetLite4Spec(
    model_name='efficientdet-lite4',
    uri='https://tfhub.dev/tensorflow/efficientdet/lite4/feature-vector/2',
    hparams='',
    model_dir=None,
    epochs=50,
    batch_size=64,
    steps_per_execution=1,
    moving_average_decay=0,
    var_freeze_expr='(efficientnet|fpn_cells|resample_p6)',
    **tflite_max_detections=50**,
    strategy=None,
    tpu=None,
    gcp_project=None,
    tpu_zone=None,
    use_xla=False,
    profile=False,
    debug=False,
    tf_random_seed=111111,
    verbose=0
)

From there I was able to train the model and things worked on the Android side of things.

This has been bugging me for a few weeks!

Answered By – MarkC

This Answer collected from stackoverflow, is licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0

Leave a Reply

(*) Required, Your email will not be published