std::map<std::string, BoxCoordinateType> gSupportedBoxCoordinateTypes = { { "RATIO", BoxCoordinateType::RATIO },
{ "PIXEL", BoxCoordinateType::PIXEL } };
-std::map<std::string, BoxDecodingType> gSupportedBoxDecodingTypes = { { "BYPASS", BoxDecodingType::BYPASS },
- { "SSD_ANCHOR", BoxDecodingType::SSD_ANCHOR },
- { "YOLO_ANCHOR", BoxDecodingType::YOLO_ANCHOR },
- { "3D", BoxDecodingType::BBOX_3D } };
+std::map<std::string, BoxDecodingType> gSupportedBoxDecodingTypes = {
+ { "BYPASS", BoxDecodingType::BYPASS },
+ { "SSD_ANCHOR", BoxDecodingType::SSD_ANCHOR },
+ { "YOLO_ANCHOR", BoxDecodingType::YOLO_ANCHOR },
+ { "3D", BoxDecodingType::BBOX_3D },
+ { "NMS", BoxDecodingType::NMS },
+};
+std::map<std::string, BoxNmsMode> gSupportedBoxNmsModes = { { "STANDARD", BoxNmsMode::STANDARD } };
std::map<std::string, ScoreType> gSupportedScoreTypes = { { "NORMAL", ScoreType::NORMAL },
{ "SIGMOID", ScoreType::SIGMOID } };
std::map<std::string, LandmarkType> gSupportedLandmarkTypes = { { "2D_SINGLE", LandmarkType::SINGLE_2D },
JsonObject *decoding_info_obj = json_object_get_object_member(object, "decoding_info");
- if (decodingBox->decodingType == BoxDecodingType::BBOX_3D) {
+ switch (decodingBox->decodingType) {
+ case BoxDecodingType::BBOX_3D: {
JsonArray *array = json_object_get_array_member(decoding_info_obj, "edges");
unsigned int elements = json_array_get_length(array);
decodingBox->edges.push_back(val);
LOGI("%d", val);
}
- }
-
- if (decodingBox->decodingType == BoxDecodingType::SSD_ANCHOR) {
+ } break;
+ case BoxDecodingType::SSD_ANCHOR: {
if (!json_object_has_member(decoding_info_obj, "anchor"))
throw InvalidOperation("anchor node is needed.");
JsonObject *nms_object = json_object_get_object_member(decoding_info_obj, "nms");
_anchorParser->ParseNmsParam(decodingBox, nms_object);
+ } break;
+ case BoxDecodingType::NMS: {
+ if (!json_object_has_member(decoding_info_obj, "nms"))
+ throw InvalidOperation("nms node is needed.");
+
+ JsonObject *nms_object = json_object_get_object_member(decoding_info_obj, "nms");
+ shared_ptr<BoxNmsParam> boxNmsParam = make_shared<BoxNmsParam>();
+
+ boxNmsParam->mode =
+ GetSupportedType<BoxNmsMode, map<string, BoxNmsMode> >(nms_object, "mode", gSupportedBoxNmsModes);
+ LOGI("nms mode : %d", static_cast<int>(boxNmsParam->mode));
+
+ boxNmsParam->iouThreshold = static_cast<float>(json_object_get_double_member(nms_object, "iou_threshold"));
+ LOGI("nms iou_threshold : %.2f", boxNmsParam->iouThreshold);
+
+ decodingBox->decodingInfoMap[BoxDecodingType::NMS] = boxNmsParam;
+ } break;
+ default:
+ break;
}
LOGI("LEAVE");