From d1221b3100c2a01d1744306ffacbb86ccb2077cf Mon Sep 17 00:00:00 2001 From: Zhao Shuaihua Date: Fri, 17 Nov 2023 06:25:09 +0000 Subject: [PATCH] 优化显存占用,暂不缓存报警时刻的抓拍图 --- src/ai_engine_module/motocycle_hs_process.cpp | 2 ++ src/ai_engine_module/motocycle_phone_process.cpp | 2 ++ src/ai_engine_module/motocycle_refit_phone_process.cpp | 2 ++ src/ai_engine_module/motocycle_refit_process.cpp | 2 ++ src/ai_engine_module/road_seg_correlation_algor.cpp | 2 ++ src/ai_engine_module/traffic_light_process.cpp | 2 ++ src/ai_engine_module/tricycle_manned_process.cpp | 4 ++++ src/ai_engine_module/truck_manned_process.cpp | 4 ++++ src/ai_platform/MultiSourceProcess.cpp | 2 +- src/demo/demo.cpp | 10 +++++----- 10 files changed, 26 insertions(+), 6 deletions(-) diff --git a/src/ai_engine_module/motocycle_hs_process.cpp b/src/ai_engine_module/motocycle_hs_process.cpp index 6994ed9..c8e5fcd 100644 --- a/src/ai_engine_module/motocycle_hs_process.cpp +++ b/src/ai_engine_module/motocycle_hs_process.cpp @@ -351,6 +351,7 @@ namespace ai_engine_module result.taskId = det_result.taskId; result.objId = det_result.objId; result.algor_type = algor_type; +#if 0 /*暂不保存报警时刻的抓拍图,有需要再启用*/ // 原图 vpc_img_info src_img_info = VPCUtil::vpc_devMem2vpcImg(src_img); result.origin_img_desc = src_img_info.pic_desc; @@ -376,6 +377,7 @@ namespace ai_engine_module acldvppSetPicDescSize(vpcInputDesc_, nBufferSize); result.roi_img_desc = vpcInputDesc_; //需复制 +#endif } id_to_result_.emplace(obj_key, std::move(result)); } diff --git a/src/ai_engine_module/motocycle_phone_process.cpp b/src/ai_engine_module/motocycle_phone_process.cpp index 3902811..4783bb0 100644 --- a/src/ai_engine_module/motocycle_phone_process.cpp +++ b/src/ai_engine_module/motocycle_phone_process.cpp @@ -346,6 +346,7 @@ namespace ai_engine_module result.taskId = det_result.taskId; result.objId = det_result.objId; result.algor_type = algor_type; +#if 0 /*暂不保存报警时刻的抓拍图,有需要再启用*/ // 原图 vpc_img_info src_img_info = VPCUtil::vpc_devMem2vpcImg(src_img); result.origin_img_desc = src_img_info.pic_desc; @@ -371,6 +372,7 @@ namespace ai_engine_module acldvppSetPicDescSize(vpcInputDesc_, nBufferSize); result.roi_img_desc = vpcInputDesc_; //需复制 +#endif } id_to_result_.emplace(obj_key, std::move(result)); } diff --git a/src/ai_engine_module/motocycle_refit_phone_process.cpp b/src/ai_engine_module/motocycle_refit_phone_process.cpp index 8fe8615..b59fd5e 100644 --- a/src/ai_engine_module/motocycle_refit_phone_process.cpp +++ b/src/ai_engine_module/motocycle_refit_phone_process.cpp @@ -366,6 +366,7 @@ namespace ai_engine_module result.taskId = det_result.taskId; result.objId = det_result.objId; result.algor_type = algor_type; +#if 0 /*暂不保存报警时刻的抓拍图,有需要再启用*/ // 原图 vpc_img_info src_img_info = VPCUtil::vpc_devMem2vpcImg(src_img); result.origin_img_desc = src_img_info.pic_desc; @@ -391,6 +392,7 @@ namespace ai_engine_module acldvppSetPicDescSize(vpcInputDesc_, nBufferSize); result.roi_img_desc = vpcInputDesc_; //需复制 +#endif } id_to_result_.emplace(obj_key, std::move(result)); } diff --git a/src/ai_engine_module/motocycle_refit_process.cpp b/src/ai_engine_module/motocycle_refit_process.cpp index 7cec619..a16a0a8 100644 --- a/src/ai_engine_module/motocycle_refit_process.cpp +++ b/src/ai_engine_module/motocycle_refit_process.cpp @@ -342,6 +342,7 @@ namespace ai_engine_module result.taskId = det_result.taskId; result.objId = det_result.objId; result.algor_type = algor_type; +#if 0 /*暂不保存报警时刻的抓拍图,有需要再启用*/ // 原图 vpc_img_info src_img_info = VPCUtil::vpc_devMem2vpcImg(src_img); result.origin_img_desc = src_img_info.pic_desc; @@ -367,6 +368,7 @@ namespace ai_engine_module acldvppSetPicDescSize(vpcInputDesc_, nBufferSize); result.roi_img_desc = vpcInputDesc_; //需复制 +#endif } id_to_result_.emplace(obj_key, std::move(result)); } diff --git a/src/ai_engine_module/road_seg_correlation_algor.cpp b/src/ai_engine_module/road_seg_correlation_algor.cpp index 472b834..e8bc017 100644 --- a/src/ai_engine_module/road_seg_correlation_algor.cpp +++ b/src/ai_engine_module/road_seg_correlation_algor.cpp @@ -901,6 +901,7 @@ namespace ai_engine_module result.taskId = det_result.taskId; result.objId = det_result.objId; result.algor_type = algor_type; +#if 0 /*暂不保存报警时刻的抓拍图,有需要再启用*/ // 原图 vpc_img_info src_img_info = VPCUtil::vpc_devMem2vpcImg(src_img); result.origin_img_desc = src_img_info.pic_desc; @@ -926,6 +927,7 @@ namespace ai_engine_module acldvppSetPicDescSize(vpcInputDesc_, nBufferSize); result.roi_img_desc = vpcInputDesc_; //需复制 +#endif } id_to_result_.emplace(obj_key, std::move(result)); } diff --git a/src/ai_engine_module/traffic_light_process.cpp b/src/ai_engine_module/traffic_light_process.cpp index d0dcc65..4d74f32 100644 --- a/src/ai_engine_module/traffic_light_process.cpp +++ b/src/ai_engine_module/traffic_light_process.cpp @@ -611,6 +611,7 @@ namespace ai_engine_module result.taskId = det_result.taskId; result.objId = det_result.objId; result.algor_type = algor_type; +#if 0 /*暂不保存报警时刻的抓拍图,有需要再启用*/ // 原图 vpc_img_info src_img_info = VPCUtil::vpc_devMem2vpcImg(src_img); result.origin_img_desc = src_img_info.pic_desc; @@ -636,6 +637,7 @@ namespace ai_engine_module acldvppSetPicDescSize(vpcInputDesc_, nBufferSize); result.roi_img_desc = vpcInputDesc_; //需复制 +#endif } id_to_result_.emplace(obj_key, std::move(result)); } diff --git a/src/ai_engine_module/tricycle_manned_process.cpp b/src/ai_engine_module/tricycle_manned_process.cpp index 65ae125..1cf5d53 100644 --- a/src/ai_engine_module/tricycle_manned_process.cpp +++ b/src/ai_engine_module/tricycle_manned_process.cpp @@ -255,11 +255,15 @@ namespace ai_engine_module result.box = det_result.box; result.taskId = det_result.taskId; result.objId = det_result.objId; +#if 0 /*暂不保存报警时刻的抓拍图,有需要再启用*/ // 原图 vpc_img_info src_img_info = VPCUtil::vpc_devMem2vpcImg(src_img); result.origin_img_desc = src_img_info.pic_desc; // 抠图 result.roi_img_desc = flattened_vpc_imgs[n].pic_desc; +#else + VPCUtil::vpc_img_release(flattened_vpc_imgs[n]); +#endif } id_to_result_.emplace(obj_key, std::move(result)); goto _continue; diff --git a/src/ai_engine_module/truck_manned_process.cpp b/src/ai_engine_module/truck_manned_process.cpp index aee56b1..7f34d8f 100644 --- a/src/ai_engine_module/truck_manned_process.cpp +++ b/src/ai_engine_module/truck_manned_process.cpp @@ -478,11 +478,15 @@ namespace ai_engine_module result.box = det_result.box; result.taskId = det_result.taskId; result.objId = det_result.objId; +#if 0 /*暂不保存报警时刻的抓拍图,有需要再启用*/ // 原图 vpc_img_info src_img_info = VPCUtil::vpc_devMem2vpcImg(src_img); result.origin_img_desc = src_img_info.pic_desc; // 抠图 result.roi_img_desc = flattened_vpc_imgs[n].pic_desc; +#else + VPCUtil::vpc_img_release(flattened_vpc_imgs[n]); +#endif } id_to_result_.emplace(obj_key, std::move(result)); goto _continue; diff --git a/src/ai_platform/MultiSourceProcess.cpp b/src/ai_platform/MultiSourceProcess.cpp index 24682ff..9d7427c 100755 --- a/src/ai_platform/MultiSourceProcess.cpp +++ b/src/ai_platform/MultiSourceProcess.cpp @@ -1727,7 +1727,7 @@ void CMultiSourceProcess::village_snapshot(vector& vpt_interest_task_id, std::string video_folder = "", result_folder = "", result_folder_little = ""; //要求各事件使用同一个视频保存地址,否则会被最后一个事件的地址覆盖 auto task_other_params = m_task_param_manager->get_task_other_param(task_id); std::vector algorithm_types; - bool save_single_algor_pic = false; // 是否保存单算法的报警图片 + bool save_single_algor_pic = false; // 是否保存单算法的报警图片(若设置为true需先去掉算法内部注释!!!) if (task_param_ptr->nonmotor_vehicle_algors.find(algorithm_type_t::TRICYCLE_MANNED) != task_param_ptr->nonmotor_vehicle_algors.end()) { const auto &algor_other_params = task_other_params->find(algorithm_type_t::TRICYCLE_MANNED); diff --git a/src/demo/demo.cpp b/src/demo/demo.cpp index ef37edf..79a6a2e 100755 --- a/src/demo/demo.cpp +++ b/src/demo/demo.cpp @@ -1155,11 +1155,11 @@ void test_gpu(int gpuID){ switch (ch) { case 'a': - createTask(handle, algor_vec3, 4, false); - createTask(handle, algor_vec3, 5, false); - createTask(handle, algor_vec3, 6, false); - createTask(handle, algor_vec3, 7, false); - createTask(handle, algor_vec3, 8, false); + createTask(handle, algor_vec2, 4, false); + createTask(handle, algor_vec2, 5, false); + createTask(handle, algor_vec2, 6, false); + createTask(handle, algor_vec2, 7, false); + createTask(handle, algor_vec2, 8, false); break; case 'c': close_all_task(handle); -- libgit2 0.21.4