From 6c8624d6cdd5b62cb48bf5b4f0e330600883504f Mon Sep 17 00:00:00 2001 From: Barzan Hayati Date: Mon, 25 Aug 2025 21:36:13 +0000 Subject: [PATCH] Revert imprecise face component id --- src/nv_infer_server_manager.cpp | 22 +++++++++++++--------- src/nv_infer_server_manager.hpp | 3 +-- src/nv_tracker_manager.cpp | 21 +++++++++++++-------- 3 files changed, 27 insertions(+), 19 deletions(-) diff --git a/src/nv_infer_server_manager.cpp b/src/nv_infer_server_manager.cpp index 2314d22..19f16b3 100644 --- a/src/nv_infer_server_manager.cpp +++ b/src/nv_infer_server_manager.cpp @@ -7,8 +7,10 @@ #define MAX_DISPLAY_LEN 64 #define PGIE_CLASS_ID_PERSON 0 -#define CLASS_ID_IMPRECISE_FACE 1 +#define IMPRECISE_FACE_CLASS_ID 1 #define PGIE_DETECTED_CLASS_NUM 1 +#define BODY_COMPONENT_ID 1 +#define IMPRECISE_FACE_COMPONENT_ID 2 gint NvInferServerManager::frame_number = 0; unsigned int NvInferServerManager::PGIE_NET_WIDTH = 1; @@ -321,13 +323,13 @@ void NvInferServerManager::extract_tensor_metadata( detected_persons++; } } - update_frame_with_face_body_meta(detected_persons, batch_meta, meta, data, + update_frame_with_face_body_meta(detected_persons, batch_meta, data, frame_meta); } void NvInferServerManager::update_frame_with_face_body_meta( - uint detected_persons, NvDsBatchMeta *batch_meta, NvDsInferTensorMeta *meta, - float *data, NvDsFrameMeta *frame_meta) { + uint detected_persons, NvDsBatchMeta *batch_meta, float *data, + NvDsFrameMeta *frame_meta) { for (uint index = 0; index < detected_persons; index++) { // imprecise_face_obj_meta is the imprecise face NvDsObjectMeta *imprecise_face_obj_meta = @@ -351,7 +353,8 @@ void NvInferServerManager::update_frame_with_face_body_meta( imprecise_face_obj_meta ->obj_label[sizeof(imprecise_face_obj_meta->obj_label) - 1] = '\0'; // Ensure null-termination - imprecise_face_obj_meta->unique_component_id = meta->unique_id; // 1 + imprecise_face_obj_meta->unique_component_id = + IMPRECISE_FACE_COMPONENT_ID; // meta->unique_id // imprecise_face_obj_meta->unique_component_id // Meaning: The ID of the component (PGIE, SGIE, Tracker, @@ -370,7 +373,7 @@ void NvInferServerManager::update_frame_with_face_body_meta( imprecise_face_obj_meta->confidence = data[index * 57 + 4]; // imprecise_face_obj_meta->object_id = UNTRACKED_OBJECT_ID; imprecise_face_obj_meta->class_id = - CLASS_ID_IMPRECISE_FACE; // 0 for body detection + IMPRECISE_FACE_CLASS_ID; // 0 for body detection NvOSD_RectParams &rect_params_imprecise_face = imprecise_face_obj_meta->rect_params; NvOSD_TextParams &text_params_imprecise_face = @@ -426,7 +429,8 @@ void NvInferServerManager::update_frame_with_face_body_meta( sizeof(body_obj_meta->obj_label) - 1); body_obj_meta->obj_label[sizeof(body_obj_meta->obj_label) - 1] = '\0'; // Ensure null-termination - body_obj_meta->unique_component_id = meta->unique_id; + body_obj_meta->unique_component_id = + BODY_COMPONENT_ID; // meta->unique_id; body_obj_meta->confidence = data[index * 57 + 4]; // body_obj_meta->object_id = UNTRACKED_OBJECT_ID; body_obj_meta->class_id = PGIE_CLASS_ID_PERSON; // 0 for body detection @@ -451,8 +455,8 @@ void NvInferServerManager::update_frame_with_face_body_meta( /* display_text requires heap allocated memory. */ text_params_body.display_text = g_strdup(pgie_class_str[0]); /* Display text above the left top corner of the object. */ - text_params_body.x_offset = rect_params_body.left; - text_params_body.y_offset = rect_params_body.top - 30; + text_params_body.x_offset = rect_params_body.left - 30; + text_params_body.y_offset = rect_params_body.top - 50; /* Set black background for the text. */ text_params_body.set_bg_clr = 1; text_params_body.text_bg_clr = NvOSD_ColorParams{0, 0, 0, 1}; diff --git a/src/nv_infer_server_manager.hpp b/src/nv_infer_server_manager.hpp index ecfe530..927c7b8 100644 --- a/src/nv_infer_server_manager.hpp +++ b/src/nv_infer_server_manager.hpp @@ -47,8 +47,7 @@ class NvInferServerManager { static void *set_metadata_ptr(float *); static gpointer copy_user_meta(gpointer, gpointer); static void release_user_meta(gpointer, gpointer); - static void update_frame_with_face_body_meta(uint, NvDsBatchMeta *, - NvDsInferTensorMeta *, float *, + static void update_frame_with_face_body_meta(uint, NvDsBatchMeta *, float *, NvDsFrameMeta *); static void extract_tensor_metadata(NvDsUserMeta *, NvDsInferNetworkInfo, NvDsBatchMeta *, NvDsFrameMeta *); diff --git a/src/nv_tracker_manager.cpp b/src/nv_tracker_manager.cpp index 79f4fea..55be652 100644 --- a/src/nv_tracker_manager.cpp +++ b/src/nv_tracker_manager.cpp @@ -7,9 +7,11 @@ #define GPU_ID 0 #define MAX_DISPLAY_LEN 64 #define PGIE_CLASS_ID_PERSON 0 -#define FACE_COMPONENT_ID 2 #define FACE_CLASS_ID 1 #define THRESHOLD_LANDMARKS 0.1 +#define FACE_DETECTED_CLASS_NUM 1 +#define BODY_COMPONENT_ID 1 +#define IMPRECISE_FACE_COMPONENT_ID 2 unsigned int NvTrackerManager::PGIE_NET_WIDTH = 1; unsigned int NvTrackerManager::PGIE_NET_HEIGHT = 1; @@ -20,6 +22,7 @@ FaceCandidTrace *NvTrackerManager::face_candidate_trace = new FaceCandidTrace(); // nullptr; // Definition gint NvTrackerManager::frame_number = 0; +const gchar face_class_str[FACE_DETECTED_CLASS_NUM][32] = {"FACE_TRACKER"}; NvTrackerManager::NvTrackerManager() { const auto &config = ConfigManager::get_instance().get_config(); @@ -49,7 +52,6 @@ bool NvTrackerManager::create_nv_tracker() { float NvTrackerManager::get_face_score(float *user_meta_data) { return (user_meta_data[8] + user_meta_data[11] + user_meta_data[14]) / 3; - ; } bool NvTrackerManager::check_existence(int object_id, int source_id, float area, @@ -101,6 +103,7 @@ GstPadProbeReturn NvTrackerManager::tracker_src_pad_buffer_probe( GstBuffer *buf = (GstBuffer *)info->data; guint num_rects = 0; guint person_count = 0; + guint face_count = 0; NvDsObjectMeta *obj_meta = NULL; NvDsMetaList *l_frame = NULL; NvDsMetaList *l_obj = NULL; @@ -127,12 +130,12 @@ GstPadProbeReturn NvTrackerManager::tracker_src_pad_buffer_probe( // << " score = " << obj_meta->confidence // << " object_id = " << obj_meta->object_id // << std::endl; + } else { + face_count++; + // std::cout << "obj_meta->class_id = " + // << obj_meta->class_id << std::endl; + // std::quick_exit(0); } - // else{ - // std::cout << "obj_meta->class_id = " - // << obj_meta->class_id << std::endl; - // std::quick_exit(0); - // } NvDsUserMeta *user_meta = NULL; NvDsMetaList *l_user_meta = NULL; @@ -227,7 +230,8 @@ GstPadProbeReturn NvTrackerManager::tracker_src_pad_buffer_probe( NvDsObjectMeta *face_obj = nvds_acquire_obj_meta_from_pool(batch_meta); face_obj->unique_component_id = - FACE_COMPONENT_ID; // Use a new component ID + IMPRECISE_FACE_COMPONENT_ID; // 1; // Use a new + // component ID face_obj->rect_params = *face_rect_params; face_obj->rect_params.has_bg_color = 0; @@ -249,6 +253,7 @@ GstPadProbeReturn NvTrackerManager::tracker_src_pad_buffer_probe( user_meta_data); // manager->face_score; face_obj->confidence = face_candidate->face_score; // 1.0; face_candidate->object_id = obj_meta->object_id; + face_candidate->source_id = frame_meta->source_id; bool add_status = face_candidate_trace->add(face_candidate);