Commit 10667f7cf930d79a1dc63424322e9c5ac0da470c
1 parent
bb2c60a8
违法载人判断的优化
Showing
5 changed files
with
48 additions
and
39 deletions
src/PicAnalysis.cpp
... | ... | @@ -36,14 +36,14 @@ int PicAnalysis::init(VillageParam param) { |
36 | 36 | return -1; |
37 | 37 | } |
38 | 38 | |
39 | - // head_tail_param ht_param; | |
40 | - // ht_param.devId = dev_id; | |
41 | - // ht_param.max_batch = 16; | |
42 | - // ht_param.sdk_path = param.sdk_path; | |
43 | - // ret = m_head_tail_algorithm.init(ht_param); | |
44 | - // if(0 != ret){ | |
45 | - // return -1; | |
46 | - // } | |
39 | + head_tail_param ht_param; | |
40 | + ht_param.devId = dev_id; | |
41 | + ht_param.max_batch = 16; | |
42 | + ht_param.sdk_root = param.sdk_path; | |
43 | + ret = m_head_tail_algorithm.init(ht_param); | |
44 | + if(0 != ret){ | |
45 | + return -1; | |
46 | + } | |
47 | 47 | |
48 | 48 | ret = m_clothes_algorithm.init(dev_id, param.sdk_path); |
49 | 49 | if(0 != ret){ |
... | ... | @@ -157,6 +157,7 @@ vector<AnalysisResult> PicAnalysis::va_result2AnalysisResult(va_result* result, |
157 | 157 | info.type = result_info.type ; |
158 | 158 | info.vpt_type = result_info.vpt_type ; |
159 | 159 | |
160 | + | |
160 | 161 | auto pendant_result = result_info.vehicle_pendant_det_res; |
161 | 162 | for (size_t j = 0; j < pendant_result.count; j++) |
162 | 163 | { |
... | ... | @@ -243,7 +244,7 @@ vector<AnalysisResult> PicAnalysis::analysis_img(vector<sy_img> vec_img){ |
243 | 244 | } |
244 | 245 | |
245 | 246 | // 行人 |
246 | - if (6 == shot_type) | |
247 | + if (0 == result_info.vpt_type) | |
247 | 248 | { |
248 | 249 | ImageData* human_data = m_crop_util.crop(src, vehicle_rect.left_, vehicle_rect.top_, vehicle_rect.left_ + vehicle_rect.width_, vehicle_rect.top_ + vehicle_rect.height_); |
249 | 250 | |
... | ... | @@ -262,20 +263,39 @@ vector<AnalysisResult> PicAnalysis::analysis_img(vector<sy_img> vec_img){ |
262 | 263 | |
263 | 264 | delete human_data; |
264 | 265 | human_data = nullptr; |
265 | - } else if(1 == shot_type) { | |
266 | - // 车尾,判断是否 货车尾部货厢载人 | |
267 | - if(result_info.vpt_type == 6 || result_info.vpt_type == 7){ | |
268 | - if(result_info.manned_res.hs_count > 0){ | |
269 | - result_info.truck_manned = 1; | |
270 | - } | |
271 | - } | |
266 | + } else if(result_info.vpt_type == 1 || result_info.vpt_type == 2 || result_info.vpt_type == 3){ | |
267 | + if(result_info.manned_res.hs_count >= 3){ | |
268 | + // 摩托车、三轮车载人 | |
269 | + result_info.motor_manned = 1; | |
270 | + } | |
272 | 271 | } else { |
273 | - if(result_info.vpt_type == 1 || result_info.vpt_type == 2 || result_info.vpt_type == 3){ | |
274 | - if(result_info.manned_res.hs_count >= 3){ | |
275 | - // 摩托车、三轮车载人 | |
276 | - result_info.motor_manned = 1; | |
277 | - } | |
272 | + ImageData* vehicle_data = m_crop_util.crop(src, vehicle_rect.left_, vehicle_rect.top_, vehicle_rect.left_ + vehicle_rect.width_, vehicle_rect.top_ + vehicle_rect.height_); | |
273 | + | |
274 | + sy_img img; | |
275 | + img.w_ = vehicle_data->alignWidth; | |
276 | + img.h_ = vehicle_data->alignHeight; | |
277 | + img.data_ = vehicle_data->data_naked; | |
278 | + | |
279 | + vector<sy_img> vec_vehicle_img; | |
280 | + vec_vehicle_img.push_back(img); | |
281 | + | |
282 | + vector<HeadTailResult> head_tail_result; | |
283 | + ret = m_head_tail_algorithm.detect(vec_vehicle_img, head_tail_result); | |
284 | + if (0 != ret) { | |
285 | + LOG_ERROR("m_head_tail_algorithm failed!"); | |
286 | + head_tail_result.clear(); | |
287 | + } else { | |
288 | + auto one_ht_result = head_tail_result[0]; | |
289 | + | |
290 | + if(result_info.vpt_type == 6 || result_info.vpt_type == 7){ | |
291 | + if (one_ht_result.cls == 0 && result_info.manned_res.hs_count > 0) | |
292 | + { // 车尾,判断是否 货车尾部货厢载人 | |
293 | + result_info.truck_manned = 1; | |
294 | + } | |
295 | + } | |
278 | 296 | } |
297 | + | |
298 | + | |
279 | 299 | } |
280 | 300 | |
281 | 301 | // 司乘 |
... | ... | @@ -318,10 +338,6 @@ vector<AnalysisResult> PicAnalysis::analysis_img(vector<sy_img> vec_img){ |
318 | 338 | // 摩托车 |
319 | 339 | if(shot_type==2)//摩托车 |
320 | 340 | { |
321 | - //摩托车驾驶人是否戴安全帽 | |
322 | - // analysis_result.motor_helmeted = result_info.mta_res.motor_driver_helmeted.status; | |
323 | - // float score=result_info.mta_res.motor_driver_helmeted.confidence; | |
324 | - | |
325 | 341 | ImageData* motor_data = m_crop_util.crop(src, vehicle_rect.left_, vehicle_rect.top_, vehicle_rect.left_ + vehicle_rect.width_, vehicle_rect.top_ + vehicle_rect.height_); |
326 | 342 | |
327 | 343 | sy_img img; |
... | ... | @@ -378,13 +394,6 @@ vector<AnalysisResult> PicAnalysis::analysis_img(vector<sy_img> vec_img){ |
378 | 394 | } |
379 | 395 | } |
380 | 396 | |
381 | - // vector<HeadTailResult> head_tail_result; | |
382 | - // ret = m_head_tail_algorithm.detect(vec_img, head_tail_result); | |
383 | - // if (0 != ret) { | |
384 | - // LOG_ERROR("m_head_tail_algorithm failed!"); | |
385 | - // head_tail_result.clear(); | |
386 | - // } | |
387 | - | |
388 | 397 | LOG_INFO("analysis finished!"); |
389 | 398 | |
390 | 399 | return vec_result; | ... | ... |
src/ai_engine_module/VehicleAnalysis.cpp
... | ... | @@ -19,8 +19,8 @@ int VehicleAnalysis::init(int devId, std::string sdk_root, int max_batch_size) { |
19 | 19 | param.vehicle_motor_tricycle_analysis_config= SY_CONFIG_OPEN; //8.摩托车分析 |
20 | 20 | param.vehicle_manned_config= SY_CONFIG_OPEN; //8.开启载人分析 |
21 | 21 | param.vehicle_illegal_config= SY_CONFIG_OPEN; //7.开启车违规 |
22 | - param.vehicle_color_config= SY_CONFIG_CLOSE; //3.开启车颜色识别 | |
23 | - param.vehicle_feature_config= SY_CONFIG_CLOSE; //8.开启车辆特征提取 | |
22 | + param.vehicle_color_config= SY_CONFIG_OPEN; //3.开启车颜色识别 | |
23 | + param.vehicle_feature_config= SY_CONFIG_OPEN; //8.开启车辆特征提取 | |
24 | 24 | |
25 | 25 | param.gpuid=devId; |
26 | 26 | ... | ... |
src/ai_engine_module/VehicleHeadTail.h
src/common/sy_errorinfo.h
src/village_inc.h
... | ... | @@ -28,10 +28,10 @@ struct VillageParam { |
28 | 28 | typedef struct pendant_info |
29 | 29 | { |
30 | 30 | sy_rect rect; |
31 | - int index; //���� 0-driver 1-face 2-belt 3-sunshield 4-tag 5-decoration 6-napkinbox 7-zhuanjt 8-callPhone 9-sunRoof 10-holder 11-smoke | |
32 | - float confidence; | |
31 | + int index{-1}; //���� 0-driver 1-face 2-belt 3-sunshield 4-tag 5-decoration 6-napkinbox 7-zhuanjt 8-callPhone 9-sunRoof 10-holder 11-smoke | |
32 | + float confidence{0.0}; | |
33 | 33 | int driver_copilot_info; |
34 | - int iColor; // "棕", "橙", "灰", "白", "粉", "紫", "红", "绿", "蓝", "银", "青", "黄", "黑", ,"多色", "其他" | |
34 | + int iColor{14}; // "棕", "橙", "灰", "白", "粉", "紫", "红", "绿", "蓝", "银", "青", "黄", "黑", ,"多色", "其他" | |
35 | 35 | } pendant_info; |
36 | 36 | |
37 | 37 | typedef struct VehicleInfo { | ... | ... |