From 18b50a2f2e0bd308c9183163caa071a44c941731 Mon Sep 17 00:00:00 2001 From: iabdalkader Date: Thu, 17 Feb 2022 21:14:00 +0200 Subject: [PATCH] py_tf.c: Fix output scaling for uint8/int8. --- src/lib/libtf/models/person_detection.txt | 2 +- src/omv/modules/py_tf.c | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/lib/libtf/models/person_detection.txt b/src/lib/libtf/models/person_detection.txt index e1ac48e22..011e2c189 100644 --- a/src/lib/libtf/models/person_detection.txt +++ b/src/lib/libtf/models/person_detection.txt @@ -1,2 +1,2 @@ -person no_person +person diff --git a/src/omv/modules/py_tf.c b/src/omv/modules/py_tf.c index bbeda145d..a04d47aee 100644 --- a/src/omv/modules/py_tf.c +++ b/src/omv/modules/py_tf.c @@ -21,7 +21,6 @@ #include "ff_wrapper.h" #include "py_tf.h" #include "libtf_builtin_models.h" - #define GRAYSCALE_RANGE ((COLOR_GRAYSCALE_MAX) - (COLOR_GRAYSCALE_MIN)) #define GRAYSCALE_MID (((GRAYSCALE_RANGE) + 1) / 2) @@ -391,10 +390,15 @@ STATIC void py_tf_classify_output_data_callback(void *callback_data, ((mp_obj_list_t *) arg->out)->items[i] = mp_obj_new_float(((float *) model_output)[i]); } + } else if (params->output_datatype == LIBTF_DATATYPE_INT8) { + for (int i = 0, ii = params->output_channels; i < ii; i++) { + ((mp_obj_list_t *) arg->out)->items[i] = + mp_obj_new_float( ((float) (((int8_t *) model_output)[i] - params->output_zero_point)) * params->output_scale); + } } else { for (int i = 0, ii = params->output_channels; i < ii; i++) { ((mp_obj_list_t *) arg->out)->items[i] = - mp_obj_new_float((((uint8_t *) model_output)[i] - params->output_zero_point) * params->output_scale); + mp_obj_new_float( ((float) (((uint8_t *) model_output)[i] - params->output_zero_point)) * params->output_scale); } } }