test: Add input tensor data type support
authorInki Dae <inki.dae@samsung.com>
Tue, 10 Mar 2020 06:52:30 +0000 (15:52 +0900)
committerInki Dae <inki.dae@samsung.com>
Tue, 14 Apr 2020 00:42:19 +0000 (09:42 +0900)
This patch passes user-given input data type to
Inference framework so that each inference engine backend
can know the input tensor data type before kicking up inference.

Change-Id: I762d7f76444d5b6656b019501321ca3c90c6919a
Signed-off-by: Inki Dae <inki.dae@samsung.com>
test/testsuites/inference/inference_test_suite.c

index cb5572dafa63c86c35fe000b8331f105862de628..570b2b788cca1669ce27accc9bcaea7622492cf7 100644 (file)
@@ -241,6 +241,28 @@ int perform_configure_set_model_weights_path(mv_engine_config_h engine_cfg)
     return err;
 }
 
+int perform_configure_set_input_data_type(mv_engine_config_h engine_cfg)
+{
+    int err = MEDIA_VISION_ERROR_NONE;
+    int dataType = 0;
+    while (-1 == input_int(
+        "Input Tensor Data Type:",
+        0,
+        4,
+        &dataType)) {
+            printf("Invalid type! Try again.\n");
+    }
+
+    err = mv_engine_config_set_int_attribute(engine_cfg,
+                            MV_INFERENCE_INPUT_DATA_TYPE,
+                            (mv_inference_data_type_e)dataType);
+    if (err != MEDIA_VISION_ERROR_NONE) {
+        printf("Fail to set input tensor data type: %d\n", dataType);
+    }
+
+    return err;
+}
+
 int perform_configure_set_model_userfile_path(mv_engine_config_h engine_cfg)
 {
     int err = MEDIA_VISION_ERROR_NONE;
@@ -446,9 +468,10 @@ int perform_configuration(mv_engine_config_h *engine_cfg)
     int err = MEDIA_VISION_ERROR_NONE;
 
     int sel_opt = 0;
-    const int options[12] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 ,12};
-    const char *names[12] = { "Set Model Configuration",
+    const int options[13] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 ,12, 13};
+    const char *names[13] = { "Set Model Configuration",
                            "Set Model Weights",
+                           "Set Model Data Type",
                            "Set Model UserFile",
                            "Set Model MeanFile",
                            "Set Image Scale",
@@ -485,42 +508,46 @@ int perform_configuration(mv_engine_config_h *engine_cfg)
             sel_opt = 0;
         break;
         case 3:
-            err = perform_configure_set_model_userfile_path(handle);
+            err = perform_configure_set_input_data_type(handle);
             sel_opt = 0;
         break;
         case 4:
-            err = perform_configure_set_model_mean_value(handle);
+            err = perform_configure_set_model_userfile_path(handle);
             sel_opt = 0;
         break;
         case 5:
+            err = perform_configure_set_model_mean_value(handle);
+            sel_opt = 0;
+        break;
+        case 6:
             err = perform_configure_set_image_scale(handle);
             sel_opt = 0;
         break;
-               case 6:
+               case 7:
                        err = perform_configure_set_confidence_threshold(handle);
                        sel_opt = 0;
                break;
-        case 7:
+        case 8:
             err = perform_configure_set_backend(handle);
             sel_opt = 0;
         break;
-        case 8:
+        case 9:
             err = perform_configure_set_target(handle);
             sel_opt = 0;
         break;
-        case 9:
+        case 10:
             err = perform_configure_set_tensor_width(handle);
             sel_opt = 0;
         break;
-        case 10:
+        case 11:
             err = perform_configure_set_tensor_height(handle);
             sel_opt = 0;
         break;
-        case 11:
+        case 12:
             err = perform_configure_set_tensor_channels(handle);
             sel_opt = 0;
         break;
-        case 12:
+        case 13:
             err = MEDIA_VISION_ERROR_NONE;
         break;
         default:
@@ -558,6 +585,10 @@ int perform_tflite_mobilenetv1_config(mv_engine_config_h *engine_cfg)
                         MV_INFERENCE_MODEL_WEIGHT_FILE_PATH,
                         IC_TFLITE_WEIGHT_PATH);
 
+       mv_engine_config_set_int_attribute(handle,
+                        MV_INFERENCE_INPUT_DATA_TYPE,
+                        MV_INFERENCE_DATA_FLOAT32);
+
     mv_engine_config_set_string_attribute(handle,
                         MV_INFERENCE_MODEL_USER_FILE_PATH,
                         IC_LABEL_PATH);
@@ -632,6 +663,10 @@ int perform_armnn_mobilenetv1_config(mv_engine_config_h *engine_cfg)
                         MV_INFERENCE_MODEL_WEIGHT_FILE_PATH,
                         IC_TFLITE_WEIGHT_PATH);
 
+       mv_engine_config_set_int_attribute(handle,
+                        MV_INFERENCE_INPUT_DATA_TYPE,
+                        MV_INFERENCE_DATA_FLOAT32);
+
     mv_engine_config_set_string_attribute(handle,
                         MV_INFERENCE_MODEL_USER_FILE_PATH,
                         IC_LABEL_PATH);
@@ -706,6 +741,10 @@ int perform_opencv_caffe_squeezenet_config(mv_engine_config_h *engine_cfg)
                         MV_INFERENCE_MODEL_WEIGHT_FILE_PATH,
                         IC_OPENCV_WEIGHT_CAFFE_PATH);
 
+       mv_engine_config_set_int_attribute(handle,
+                        MV_INFERENCE_INPUT_DATA_TYPE,
+                        MV_INFERENCE_DATA_FLOAT32);
+
     mv_engine_config_set_string_attribute(handle,
                         MV_INFERENCE_MODEL_CONFIGURATION_FILE_PATH,
                         IC_OPENCV_CONFIG_CAFFE_PATH);
@@ -1027,6 +1066,10 @@ int perform_tflite_mobilenetv1ssd_config(mv_engine_config_h *engine_cfg)
                         MV_INFERENCE_MODEL_WEIGHT_FILE_PATH,
                         OD_TFLITE_WEIGHT_PATH);
 
+       mv_engine_config_set_int_attribute(handle,
+                        MV_INFERENCE_INPUT_DATA_TYPE,
+                        MV_INFERENCE_DATA_FLOAT32);
+
     mv_engine_config_set_string_attribute(handle,
                         MV_INFERENCE_MODEL_USER_FILE_PATH,
                         OD_LABEL_PATH);
@@ -1101,6 +1144,10 @@ int perform_armnn_mobilenetv1ssd_config(mv_engine_config_h *engine_cfg)
                         MV_INFERENCE_MODEL_WEIGHT_FILE_PATH,
                         OD_TFLITE_WEIGHT_PATH);
 
+       mv_engine_config_set_int_attribute(handle,
+                        MV_INFERENCE_INPUT_DATA_TYPE,
+                        MV_INFERENCE_DATA_FLOAT32);
+
     mv_engine_config_set_string_attribute(handle,
                         MV_INFERENCE_MODEL_USER_FILE_PATH,
                         OD_LABEL_PATH);
@@ -1400,6 +1447,10 @@ int perform_tflite_mobilenetv1ssd_face(mv_engine_config_h *engine_cfg)
                         MV_INFERENCE_MODEL_WEIGHT_FILE_PATH,
                         FD_TFLITE_WEIGHT_PATH);
 
+       mv_engine_config_set_int_attribute(handle,
+                        MV_INFERENCE_INPUT_DATA_TYPE,
+                        MV_INFERENCE_DATA_FLOAT32);
+
     mv_engine_config_set_double_attribute(handle,
                         MV_INFERENCE_MODEL_MEAN_VALUE,
                         127.5);
@@ -1472,6 +1523,10 @@ int perform_armnn_mobilenetv1ssd_face(mv_engine_config_h *engine_cfg)
                         MV_INFERENCE_MODEL_WEIGHT_FILE_PATH,
                         FD_TFLITE_WEIGHT_PATH);
 
+       mv_engine_config_set_int_attribute(handle,
+                        MV_INFERENCE_INPUT_DATA_TYPE,
+                        MV_INFERENCE_DATA_FLOAT32);
+
     mv_engine_config_set_double_attribute(handle,
                         MV_INFERENCE_MODEL_MEAN_VALUE,
                         127.5);
@@ -1761,6 +1816,10 @@ int perform_tflite_TweakCNN(mv_engine_config_h *engine_cfg)
                         MV_INFERENCE_MODEL_WEIGHT_FILE_PATH,
                         FLD_TFLITE_WEIGHT_PATH);
 
+       mv_engine_config_set_int_attribute(handle,
+                        MV_INFERENCE_INPUT_DATA_TYPE,
+                        MV_INFERENCE_DATA_FLOAT32);
+
     mv_engine_config_set_double_attribute(handle,
                         MV_INFERENCE_MODEL_MEAN_VALUE,
                         0.0);
@@ -2032,6 +2091,10 @@ int perform_armnn_pose_estimation_detection(mv_engine_config_h *engine_cfg)
                         MV_INFERENCE_MODEL_WEIGHT_FILE_PATH,
                         PE_TFLITE_WEIGHT_PATH);
 
+       mv_engine_config_set_int_attribute(handle,
+                        MV_INFERENCE_INPUT_DATA_TYPE,
+                        MV_INFERENCE_DATA_FLOAT32);
+
     mv_engine_config_set_double_attribute(handle,
                         MV_INFERENCE_MODEL_MEAN_VALUE,
                         0.0);