Commit e0e42d5c703ca14d83b1fe108dc14c57546a5677
1 parent
9d9fd3be
添加时间限制:用于农村违法分析;修复一处显存泄露bug
Showing
3 changed files
with
137 additions
and
116 deletions
.gitignore
@@ -4,11 +4,4 @@ bin/logs/* | @@ -4,11 +4,4 @@ bin/logs/* | ||
4 | bin/res/* | 4 | bin/res/* |
5 | bin/vpt_proj | 5 | bin/vpt_proj |
6 | bin/libvpt_ascend.so | 6 | bin/libvpt_ascend.so |
7 | -<<<<<<< HEAD | ||
8 | -<<<<<<< HEAD | ||
9 | data/* | 7 | data/* |
10 | -======= | ||
11 | ->>>>>>> c4e50858604d927a3467ae4d0c3b3c63b4a35afb | ||
12 | -======= | ||
13 | -data/* | ||
14 | ->>>>>>> 9b8c645d9558a9e4f16f1a218ebdaf7a29d04864 |
src/ai_platform/MultiSourceProcess.cpp
@@ -82,131 +82,135 @@ CMultiSourceProcess::~CMultiSourceProcess(){ | @@ -82,131 +82,135 @@ CMultiSourceProcess::~CMultiSourceProcess(){ | ||
82 | } | 82 | } |
83 | 83 | ||
84 | int CMultiSourceProcess::InitAlgorthim(tsl_aiplatform_param vptParam){ | 84 | int CMultiSourceProcess::InitAlgorthim(tsl_aiplatform_param vptParam){ |
85 | + if (CheckTime()) { | ||
86 | + set_default_logger(LogLevel(vptParam.log_level), "multi_source_process", vptParam.log_path, vptParam.log_mem, vptParam.log_mem); | ||
87 | + LOG_INFO("编译时间:{} {}", __DATE__, __TIME__); | ||
85 | 88 | ||
86 | - set_default_logger(LogLevel(vptParam.log_level), "multi_source_process", vptParam.log_path, vptParam.log_mem, vptParam.log_mem); | ||
87 | - LOG_INFO("编译时间:{} {}", __DATE__, __TIME__); | 89 | + SourceSingleton::getInstance(); |
88 | 90 | ||
89 | - SourceSingleton::getInstance(); | 91 | + skip_frame_ = 5; |
92 | + m_batch_size = 20; | ||
90 | 93 | ||
91 | - skip_frame_ = 5; | ||
92 | - m_batch_size = 20; | 94 | + m_devId = vptParam.gpuid; |
93 | 95 | ||
94 | - m_devId = vptParam.gpuid; | 96 | + string models_dir = vptParam.models_dir; |
95 | 97 | ||
96 | - string models_dir = vptParam.models_dir; | 98 | + VPTProcess_PARAM vparam; |
99 | + vparam.gpuid = m_devId; | ||
100 | + vparam.max_batch = m_batch_size; | ||
101 | + vparam.threshold = 0.4; | ||
102 | + vparam.model_dir = models_dir; | ||
97 | 103 | ||
98 | - VPTProcess_PARAM vparam; | ||
99 | - vparam.gpuid = m_devId; | ||
100 | - vparam.max_batch = m_batch_size; | ||
101 | - vparam.threshold = 0.4; | ||
102 | - vparam.model_dir = models_dir; | 104 | + aclrtSetDevice(m_devId); |
103 | 105 | ||
104 | - aclrtSetDevice(m_devId); | ||
105 | - | ||
106 | - int ret = vpt_process.init(vparam); | ||
107 | - if (ret < 0){ | ||
108 | - return ret; | ||
109 | - } | 106 | + int ret = vpt_process.init(vparam); |
107 | + if (ret < 0){ | ||
108 | + return ret; | ||
109 | + } | ||
110 | 110 | ||
111 | - //三轮车头肩检测 | ||
112 | - if (!tricycle_manned_.init(vptParam.gpuid, models_dir)) { | ||
113 | - LOG_FATAL("Init tricycle_hs failed"); | ||
114 | - return -1; | ||
115 | - } | 111 | + //三轮车头肩检测 |
112 | + if (!tricycle_manned_.init(vptParam.gpuid, models_dir)) { | ||
113 | + LOG_FATAL("Init tricycle_hs failed"); | ||
114 | + return -1; | ||
115 | + } | ||
116 | 116 | ||
117 | - //货车头肩检测 | ||
118 | - if (!truck_manned_.init(vptParam.gpuid, models_dir)) { | ||
119 | - LOG_FATAL("Init truck_hs failed"); | ||
120 | - return -1; | ||
121 | - } | 117 | + //货车头肩检测 |
118 | + if (!truck_manned_.init(vptParam.gpuid, models_dir)) { | ||
119 | + LOG_FATAL("Init truck_hs failed"); | ||
120 | + return -1; | ||
121 | + } | ||
122 | 122 | ||
123 | - //二轮车头肩检测 | ||
124 | - if (!motor_hsprocess_.init(vptParam.gpuid, models_dir)) { | ||
125 | - LOG_FATAL("Init motor_hs failed"); | ||
126 | - return -1; | ||
127 | - } | 123 | + //二轮车头肩检测 |
124 | + if (!motor_hsprocess_.init(vptParam.gpuid, models_dir)) { | ||
125 | + LOG_FATAL("Init motor_hs failed"); | ||
126 | + return -1; | ||
127 | + } | ||
128 | 128 | ||
129 | - #ifdef WITH_FACE_DET_SS | ||
130 | - // 人脸检测初始化 | ||
131 | - facedet_ai_engine_param fd_param; | ||
132 | - char model_path_yolov5s[100]; | ||
133 | - strcpy(model_path_yolov5s, (models_dir + "/models/face_detect/face_det_yolov5s_310p.om").c_str()); | ||
134 | - fd_param.sdk_param.det_modelNames = model_path_yolov5s; | ||
135 | - char model_path_ldmk[100]; | ||
136 | - strcpy(model_path_ldmk, (models_dir + "/models/face_detect/face_ldmk_310p.om").c_str()); | ||
137 | - fd_param.sdk_param.ldmk_modelNames = model_path_ldmk; | ||
138 | - char model_path_pose[100]; | ||
139 | - strcpy(model_path_pose, (models_dir + "/models/face_detect/face_pose_310p.om").c_str()); | ||
140 | - fd_param.sdk_param.pose_modelNames = model_path_pose; | ||
141 | - char model_path_score[100]; | ||
142 | - strcpy(model_path_score, (models_dir + "/models/face_detect/face_score_310p.om").c_str()); | ||
143 | - fd_param.sdk_param.score_modelNames = model_path_score; | ||
144 | - char model_path_fuzzy[100]; | ||
145 | - strcpy(model_path_fuzzy, (models_dir + "/models/face_detect/face_fuzzy_310p.om").c_str()); | ||
146 | - fd_param.sdk_param.fuzzy_modelNames = model_path_fuzzy; | ||
147 | - char model_path_occlusion[100]; | ||
148 | - strcpy(model_path_occlusion, (models_dir + "/models/face_detect/face_occlusion_310p.om").c_str()); | ||
149 | - fd_param.sdk_param.occlusion_modelNames = model_path_occlusion; | ||
150 | - fd_param.sdk_param.thresld = 0.6; | ||
151 | - fd_param.sdk_param.devId = m_devId; | ||
152 | - fd_param.sdk_param.auth_license = "sy_tongtu_aiplatform_sdk_2023"; | ||
153 | - fd_param.sdk_param.facial_fea_point_config = SY_CONFIG_OPEN; //是否启动关键点检测 | ||
154 | - fd_param.sdk_param.pose_config = SY_CONFIG_OPEN; //是否启动姿态角 | ||
155 | - fd_param.sdk_param.quality_config = SY_CONFIG_OPEN; //是否启动质量检测 | ||
156 | - fd_param.sdk_param.score_config = SY_CONFIG_OPEN; //是否启动人脸置信度 //SY_CONFIG_OPEN SY_CONFIG_CLOSE | ||
157 | - fd_param.sdk_param.max_result_count = 50; | ||
158 | - ret = m_face_det_ai_engine.init_ai_engine(fd_param); | ||
159 | - if (ret < 0 ) { | ||
160 | - LOG_FATAL("Init face detection failed"); | ||
161 | - return ret; | ||
162 | - } | ||
163 | -#endif | 129 | + #ifdef WITH_FACE_DET_SS |
130 | + // 人脸检测初始化 | ||
131 | + facedet_ai_engine_param fd_param; | ||
132 | + char model_path_yolov5s[100]; | ||
133 | + strcpy(model_path_yolov5s, (models_dir + "/models/face_detect/face_det_yolov5s_310p.om").c_str()); | ||
134 | + fd_param.sdk_param.det_modelNames = model_path_yolov5s; | ||
135 | + char model_path_ldmk[100]; | ||
136 | + strcpy(model_path_ldmk, (models_dir + "/models/face_detect/face_ldmk_310p.om").c_str()); | ||
137 | + fd_param.sdk_param.ldmk_modelNames = model_path_ldmk; | ||
138 | + char model_path_pose[100]; | ||
139 | + strcpy(model_path_pose, (models_dir + "/models/face_detect/face_pose_310p.om").c_str()); | ||
140 | + fd_param.sdk_param.pose_modelNames = model_path_pose; | ||
141 | + char model_path_score[100]; | ||
142 | + strcpy(model_path_score, (models_dir + "/models/face_detect/face_score_310p.om").c_str()); | ||
143 | + fd_param.sdk_param.score_modelNames = model_path_score; | ||
144 | + char model_path_fuzzy[100]; | ||
145 | + strcpy(model_path_fuzzy, (models_dir + "/models/face_detect/face_fuzzy_310p.om").c_str()); | ||
146 | + fd_param.sdk_param.fuzzy_modelNames = model_path_fuzzy; | ||
147 | + char model_path_occlusion[100]; | ||
148 | + strcpy(model_path_occlusion, (models_dir + "/models/face_detect/face_occlusion_310p.om").c_str()); | ||
149 | + fd_param.sdk_param.occlusion_modelNames = model_path_occlusion; | ||
150 | + fd_param.sdk_param.thresld = 0.6; | ||
151 | + fd_param.sdk_param.devId = m_devId; | ||
152 | + fd_param.sdk_param.auth_license = "sy_tongtu_aiplatform_sdk_2023"; | ||
153 | + fd_param.sdk_param.facial_fea_point_config = SY_CONFIG_OPEN; //是否启动关键点检测 | ||
154 | + fd_param.sdk_param.pose_config = SY_CONFIG_OPEN; //是否启动姿态角 | ||
155 | + fd_param.sdk_param.quality_config = SY_CONFIG_OPEN; //是否启动质量检测 | ||
156 | + fd_param.sdk_param.score_config = SY_CONFIG_OPEN; //是否启动人脸置信度 //SY_CONFIG_OPEN SY_CONFIG_CLOSE | ||
157 | + fd_param.sdk_param.max_result_count = 50; | ||
158 | + ret = m_face_det_ai_engine.init_ai_engine(fd_param); | ||
159 | + if (ret < 0 ) { | ||
160 | + LOG_FATAL("Init face detection failed"); | ||
161 | + return ret; | ||
162 | + } | ||
163 | + #endif | ||
164 | 164 | ||
165 | - m_task_param_manager = task_param_manager::getInstance(); | ||
166 | - m_snapshot_reprocessing = new snapshot_reprocessing(m_devId); | ||
167 | - m_save_snapshot_reprocessing = new save_snapshot_reprocessing(m_devId); | 165 | + m_task_param_manager = task_param_manager::getInstance(); |
166 | + m_snapshot_reprocessing = new snapshot_reprocessing(m_devId); | ||
167 | + m_save_snapshot_reprocessing = new save_snapshot_reprocessing(m_devId); | ||
168 | 168 | ||
169 | -#ifdef POST_USE_RABBITMQ | ||
170 | - mq_manager_ = new mq::Manager(); | ||
171 | -#endif | 169 | + #ifdef POST_USE_RABBITMQ |
170 | + mq_manager_ = new mq::Manager(); | ||
171 | + #endif | ||
172 | 172 | ||
173 | - VPCUtil* pVpcUtil = VPCUtil::getInstance(); | ||
174 | - pVpcUtil->init(m_devId); | 173 | + VPCUtil* pVpcUtil = VPCUtil::getInstance(); |
174 | + pVpcUtil->init(m_devId); | ||
175 | 175 | ||
176 | - m_pAlgorthimThread = new thread([](void* arg) { | ||
177 | - CMultiSourceProcess* process = (CMultiSourceProcess*)arg ; | ||
178 | - process->algorthim_process_thread(); | ||
179 | - return (void*)0; | ||
180 | - } | ||
181 | - , this); | 176 | + m_pAlgorthimThread = new thread([](void* arg) { |
177 | + CMultiSourceProcess* process = (CMultiSourceProcess*)arg ; | ||
178 | + process->algorthim_process_thread(); | ||
179 | + return (void*)0; | ||
180 | + } | ||
181 | + , this); | ||
182 | 182 | ||
183 | - m_recode_thread = new thread([](void* arg) { | ||
184 | - CMultiSourceProcess* process = (CMultiSourceProcess*)arg ; | ||
185 | - process->recode_thread(); | ||
186 | - return (void*)0; | 183 | + m_recode_thread = new thread([](void* arg) { |
184 | + CMultiSourceProcess* process = (CMultiSourceProcess*)arg ; | ||
185 | + process->recode_thread(); | ||
186 | + return (void*)0; | ||
187 | + } | ||
188 | + , this); | ||
189 | + | ||
190 | + | ||
191 | + m_timing_snapshot_thread = new std::thread( | ||
192 | + [](void* arg) | ||
193 | + { | ||
194 | + CMultiSourceProcess* _this=(CMultiSourceProcess*)arg; | ||
195 | + if(_this != nullptr){ | ||
196 | + _this->timing_snapshot_thread(); | ||
197 | + }else{ | ||
198 | + LOG_ERROR("定时抓拍线程启动失败 !"); | ||
199 | + } | ||
200 | + return (void*)0; | ||
201 | + }, this); | ||
202 | + | ||
203 | + if(nullptr == m_timing_snapshot_thread){ | ||
204 | + LOG_ERROR("定时抓拍线程启动失败 !"); | ||
187 | } | 205 | } |
188 | - , this); | ||
189 | 206 | ||
207 | + LOG_INFO("InitAlgorthim succeed !"); | ||
190 | 208 | ||
191 | - m_timing_snapshot_thread = new std::thread( | ||
192 | - [](void* arg) | ||
193 | - { | ||
194 | - CMultiSourceProcess* _this=(CMultiSourceProcess*)arg; | ||
195 | - if(_this != nullptr){ | ||
196 | - _this->timing_snapshot_thread(); | ||
197 | - }else{ | ||
198 | - LOG_ERROR("定时抓拍线程启动失败 !"); | ||
199 | - } | ||
200 | - return (void*)0; | ||
201 | - }, this); | ||
202 | - | ||
203 | - if(nullptr == m_timing_snapshot_thread){ | ||
204 | - LOG_ERROR("定时抓拍线程启动失败 !"); | 209 | + return 0; |
210 | + } | ||
211 | + else { | ||
212 | + return AUTHOR_ERROR; | ||
205 | } | 213 | } |
206 | - | ||
207 | - LOG_INFO("InitAlgorthim succeed !"); | ||
208 | - | ||
209 | - return 0; | ||
210 | } | 214 | } |
211 | 215 | ||
212 | #ifdef POST_USE_RABBITMQ | 216 | #ifdef POST_USE_RABBITMQ |
@@ -632,6 +636,11 @@ int CMultiSourceProcess::algorthim_process_thread(){ | @@ -632,6 +636,11 @@ int CMultiSourceProcess::algorthim_process_thread(){ | ||
632 | ACL_CALL(aclrtCreateContext(&ctx, m_devId), ACL_ERROR_NONE, 1); | 636 | ACL_CALL(aclrtCreateContext(&ctx, m_devId), ACL_ERROR_NONE, 1); |
633 | 637 | ||
634 | while (true){ | 638 | while (true){ |
639 | + if (!CheckTime()) { | ||
640 | + LOG_FATAL("authority failed!"); | ||
641 | + break; | ||
642 | + } | ||
643 | + | ||
635 | if(m_bfinish){ | 644 | if(m_bfinish){ |
636 | break; | 645 | break; |
637 | } | 646 | } |
@@ -1356,13 +1365,13 @@ void CMultiSourceProcess::manned_snapshot(vector<string>& vpt_interest_task_id, | @@ -1356,13 +1365,13 @@ void CMultiSourceProcess::manned_snapshot(vector<string>& vpt_interest_task_id, | ||
1356 | 1365 | ||
1357 | map<OBJ_KEY, OBJ_VALUE> _total_snapshot_info = m_snapshot_reprocessing->get_total_village_snapshot_info(); | 1366 | map<OBJ_KEY, OBJ_VALUE> _total_snapshot_info = m_snapshot_reprocessing->get_total_village_snapshot_info(); |
1358 | if(_total_snapshot_info.size() <= 0){ | 1367 | if(_total_snapshot_info.size() <= 0){ |
1359 | - return; | 1368 | + continue; |
1360 | } | 1369 | } |
1361 | 1370 | ||
1362 | LOG_DEBUG("_total_snapshot_info size: {}", _total_snapshot_info.size()); | 1371 | LOG_DEBUG("_total_snapshot_info size: {}", _total_snapshot_info.size()); |
1363 | auto it = _total_snapshot_info.find(obj_key); | 1372 | auto it = _total_snapshot_info.find(obj_key); |
1364 | if (it == _total_snapshot_info.end()) { | 1373 | if (it == _total_snapshot_info.end()) { |
1365 | - return; | 1374 | + continue; |
1366 | } | 1375 | } |
1367 | 1376 | ||
1368 | 1377 | ||
@@ -1433,12 +1442,11 @@ void CMultiSourceProcess::manned_snapshot(vector<string>& vpt_interest_task_id, | @@ -1433,12 +1442,11 @@ void CMultiSourceProcess::manned_snapshot(vector<string>& vpt_interest_task_id, | ||
1433 | else { | 1442 | else { |
1434 | // 删除记录,同时释放显存 | 1443 | // 删除记录,同时释放显存 |
1435 | m_snapshot_reprocessing->release_village_finished_locus_snapshot(obj_key.video_id, obj_key.obj_id, true); | 1444 | m_snapshot_reprocessing->release_village_finished_locus_snapshot(obj_key.video_id, obj_key.obj_id, true); |
1436 | - return; | ||
1437 | } | 1445 | } |
1438 | 1446 | ||
1439 | - | ||
1440 | } | 1447 | } |
1441 | } | 1448 | } |
1449 | + | ||
1442 | } | 1450 | } |
1443 | 1451 | ||
1444 | 1452 | ||
@@ -1706,4 +1714,23 @@ int CMultiSourceProcess::recode_thread() { | @@ -1706,4 +1714,23 @@ int CMultiSourceProcess::recode_thread() { | ||
1706 | } | 1714 | } |
1707 | 1715 | ||
1708 | LOG_INFO("recode_thread end."); | 1716 | LOG_INFO("recode_thread end."); |
1717 | +} | ||
1718 | + | ||
1719 | +bool CMultiSourceProcess::CheckTime() { | ||
1720 | + struct tm* info; | ||
1721 | + int nYear, nMonth, nDay; | ||
1722 | + time_t raw; | ||
1723 | + time(&raw); | ||
1724 | + info = localtime(&raw); | ||
1725 | + nYear = info->tm_year + 1900; | ||
1726 | + nMonth = info->tm_mon + 1; | ||
1727 | + nDay = info->tm_mday; | ||
1728 | + if ((nYear == 2023 && nMonth <= 9) || (nYear == 2023 && nMonth <= 10 && nDay <= 8)) | ||
1729 | + { | ||
1730 | + return true; | ||
1731 | + } | ||
1732 | + else | ||
1733 | + { | ||
1734 | + return false; | ||
1735 | + } | ||
1709 | } | 1736 | } |
1710 | \ No newline at end of file | 1737 | \ No newline at end of file |
src/ai_platform/MultiSourceProcess.h