Fix score array to object in meta json
authorKwanghoon Son <k.son@samsung.com>
Fri, 26 Aug 2022 04:14:31 +0000 (00:14 -0400)
committerInki Dae <inki.dae@samsung.com>
Fri, 2 Sep 2022 08:09:25 +0000 (17:09 +0900)
outputmetadata score object has array, but usage only accept 1 array
element. This change handle object instead array.
`before`
"score" : [
    {
        "name" : "some name",
...
    }
],
`after`
"score" :
    {
        "name" : "some name",
...
    }

Change-Id: I5a3ddb4c4d29ffd7f2024a40e5065222d7197fc9
Signed-off-by: Kwanghoon Son <k.son@samsung.com>
mv_machine_learning/inference/include/ScoreInfo.h

index 096a120..97e0c52 100644 (file)
@@ -102,52 +102,47 @@ public:
        int ParseScore(JsonObject *root)
        {
                LOGI("ENTER");
+               if (!json_object_has_member(root, "score")) {
+                       LOGE("member score not exists");
+                       return MEDIA_VISION_ERROR_INVALID_PARAMETER;
+               }
+               JsonObject *pObject = json_object_get_object_member(root, "score");
+
+               name = json_object_get_string_member(pObject, "name");
+               LOGI("layer: %s", name.c_str());
+
+               JsonArray *array = json_object_get_array_member(pObject, "index");
+               unsigned int elements2 = json_array_get_length(array);
+               LOGI("range dim: size[%u]", elements2);
+               for (unsigned int elem2 = 0; elem2 < elements2; ++elem2) {
+                       if (static_cast<int>(json_array_get_int_element(array, elem2)) == 1)
+                               dimInfo.SetValidIndex(elem2);
+               }
+               if (json_object_has_member(pObject, "top_number"))
+                       topNumber = static_cast<int>(
+                                       json_object_get_int_member(pObject, "top_number"));
+               LOGI("top number: %d", topNumber);
+
+               if (json_object_has_member(pObject, "threshold"))
+                       threshold = static_cast<double>(
+                                       json_object_get_double_member(pObject, "threshold"));
+               LOGI("threshold: %1.3f", threshold);
+
+               try {
+                       type = GetSupportedType(pObject, "score_type", supportedScoreTypes);
+               } catch (const std::exception &e) {
+                       LOGE("Invalid %s", e.what());
+                       return MEDIA_VISION_ERROR_INVALID_OPERATION;
+               }
+
+               if (json_object_has_member(pObject, "dequantization")) {
+                       array = json_object_get_array_member(pObject, "dequantization");
+                       JsonNode *node = json_array_get_element(array, 0);
+                       JsonObject *object = json_node_get_object(node);
 
-               JsonArray *rootArray = json_object_get_array_member(root, "score");
-               unsigned int elements = json_array_get_length(rootArray);
-
-               for (unsigned int elem = 0; elem < elements; ++elem) {
-                       JsonNode *pNode = json_array_get_element(rootArray, elem);
-                       JsonObject *pObject = json_node_get_object(pNode);
-
-                       name = json_object_get_string_member(pObject, "name");
-                       LOGI("layer: %s", name.c_str());
-
-                       JsonArray *array = json_object_get_array_member(pObject, "index");
-                       unsigned int elements2 = json_array_get_length(array);
-                       LOGI("range dim: size[%u]", elements2);
-                       for (unsigned int elem2 = 0; elem2 < elements2; ++elem2) {
-                               if (static_cast<int>(
-                                                       json_array_get_int_element(array, elem2)) == 1)
-                                       dimInfo.SetValidIndex(elem2);
-                       }
-                       if (json_object_has_member(pObject, "top_number"))
-                               topNumber = static_cast<int>(
-                                               json_object_get_int_member(pObject, "top_number"));
-                       LOGI("top number: %d", topNumber);
-
-                       if (json_object_has_member(pObject, "threshold"))
-                               threshold = static_cast<double>(
-                                               json_object_get_double_member(pObject, "threshold"));
-                       LOGI("threshold: %1.3f", threshold);
-
-                       try {
-                               type = GetSupportedType(pObject, "score_type",
-                                                                               supportedScoreTypes);
-                       } catch (const std::exception &e) {
-                               LOGE("Invalid %s", e.what());
-                               return MEDIA_VISION_ERROR_INVALID_OPERATION;
-                       }
-
-                       if (json_object_has_member(pObject, "dequantization")) {
-                               array = json_object_get_array_member(pObject, "dequantization");
-                               JsonNode *node = json_array_get_element(array, 0);
-                               JsonObject *object = json_node_get_object(node);
-
-                               deQuantization = std::make_shared<DeQuantization>(
-                                               json_object_get_double_member(object, "scale"),
-                                               json_object_get_double_member(object, "zeropoint"));
-                       }
+                       deQuantization = std::make_shared<DeQuantization>(
+                                       json_object_get_double_member(object, "scale"),
+                                       json_object_get_double_member(object, "zeropoint"));
                }
 
                LOGI("LEAVE");