Blame view

src/ai_engine_module/VehicleAnalysis.cpp 5.25 KB
eac85cd5   Hu Chunming   调通va
1
2
  #include "VehicleAnalysis.h"
  
5a4c4dc0   Hu Chunming   va库代码移到本项目中
3
4
  #include "VehicleAnalysisDevice.h"
  
eac85cd5   Hu Chunming   调通va
5
6
  
  VehicleAnalysis::VehicleAnalysis() {
eac85cd5   Hu Chunming   调通va
7
8
9
10
11
12
13
      cout << va_get_version() << endl;
  }
  
  VehicleAnalysis::~VehicleAnalysis() {
      release();
  }
  
d708ccb3   Hu Chunming   增加日志
14
15
16
  int VehicleAnalysis::init(VehicleAnalysisParam tParam) {
  
      va_param param;
eac85cd5   Hu Chunming   调通va
17
18
19
20
21
22
23
  	param.vehicle_detect_config= SY_CONFIG_OPEN;  //1.开启车检测 SY_CONFIG_CLOSE  SY_CONFIG_OPEN
      param.vehicle_recg_config= SY_CONFIG_OPEN;     //4.开启车型识别
  	param.vehicle_recg_supplement_config= SY_CONFIG_OPEN;     //4.开启车型识别补充识别
      param.vehicle_plate_det_recg_config= SY_CONFIG_OPEN; //5.开启车牌检测识别	
      param.vehicle_pendant_det_config= SY_CONFIG_OPEN; //6.开启车属性检测识别
      param.vehicle_motor_tricycle_analysis_config= SY_CONFIG_OPEN;  //8.摩托车分析	
      param.vehicle_manned_config= SY_CONFIG_OPEN;  //8.开启载人分析	
bb2c60a8   Hu Chunming   修复 vehicle_illega...
24
      param.vehicle_illegal_config= SY_CONFIG_OPEN;  //7.开启车违规
10667f7c   Hu Chunming   违法载人判断的优化
25
26
  	param.vehicle_color_config= SY_CONFIG_OPEN;  //3.开启车颜色识别
  	param.vehicle_feature_config= SY_CONFIG_OPEN;  //8.开启车辆特征提取
eac85cd5   Hu Chunming   调通va
27
  	
d708ccb3   Hu Chunming   增加日志
28
  	param.gpuid=tParam.devId;
eac85cd5   Hu Chunming   调通va
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
  		
  	//车检测参数	
  	//param.vehicle_det_param.process_min_l = 720;// 720;
  	//param.vehicle_det_param.process_max_l = 1280;//1280;	
  	//param.vehicle_det_param.thresld=0.3;
  	//param.min_obj_size=200;  //最小目标	
  	param.vehicle_det_thresld=0.4;
  	
  	//车牌检测参数
  	//param.vehicle_plate_det_param.process_min_l=320;
  	//param.vehicle_plate_det_param.process_max_l=320;	
  	//param.vehicle_plate_det_param.thresld=0.4;
  	param.vehicle_plate_det_thresld=0.5;
  	
  	//车属性检测参数
  	//param.vehicle_attribute_det_param.process_min_l=360;
  	//param.vehicle_attribute_det_param.process_max_l=640;	
  	//param.vehicle_attribute_det_param.thresld=0.3;
  	param.vehicle_attribute_det_thresld=0.5;
  	
  	//logo检测参数
  	//param.vehicle_logo_det_param.process_min_l=512;
  	//param.vehicle_logo_det_param.process_max_l=512;	
  	//param.vehicle_logo_det_param.thresld=0.1;
  	param.vehicle_logo_det_thresld=0.1;	
  	
  	//车颜色阈值
  	param.vc_thresld = 0.5;
  	
d708ccb3   Hu Chunming   增加日志
58
59
      string dbPath = tParam.sdk_root + "/models/vehicle_analysis/db/vr_h0725x210605_r191230.db";
      string models_path = tParam.sdk_root + "/models/vehicle_analysis/";
eac85cd5   Hu Chunming   调通va
60
  	//车型参数
581a68a4   Hu Chunming   修正parse_road无返回值导...
61
62
  	param.dbPath= (char*)dbPath.data();	
  	param.models_Path= (char*)models_path.data();	//所有模型的地址
eac85cd5   Hu Chunming   调通va
63
  
e3062370   Hu Chunming   优化日志
64
      LOG_INFO("va_init start");
15756629   Hu Chunming   添加clothes算法
65
      // 内部有 ctx
eac85cd5   Hu Chunming   调通va
66
67
68
69
70
      int ret = va_init(&m_handle, param);
      if (ret != 0) {
          return -1;
  	}
  
e3062370   Hu Chunming   优化日志
71
      LOG_INFO("va_init success");
eac85cd5   Hu Chunming   调通va
72
73
74
      return 0;
  }
  
52516fb9   Hu Chunming   添加授权代码;
75
  vector<AnalysisResult> VehicleAnalysis::detect(vector<sy_img> vec_img) {
eac85cd5   Hu Chunming   调通va
76
  			
20396d5c   Hu Chunming   添加车头车尾算法
77
      int batch_size = vec_img.size();
eac85cd5   Hu Chunming   调通va
78
79
      
      va_result *result=new va_result[batch_size];
b3012672   Hu Chunming   天啊及hp,road_seg子sd...
80
  
d708ccb3   Hu Chunming   增加日志
81
      LOG_INFO("va_batch start");
eac85cd5   Hu Chunming   调通va
82
      
d708ccb3   Hu Chunming   增加日志
83
      int ret = va_batch(m_handle, vec_img.data(), batch_size, result);
eac85cd5   Hu Chunming   调通va
84
  
52516fb9   Hu Chunming   添加授权代码;
85
86
87
88
89
      auto vec_result = va_result2AnalysisResult(result, batch_size);
  
      delete[] result;
      result = nullptr;
  
d708ccb3   Hu Chunming   增加日志
90
      LOG_INFO("va_batch end:{}", ret);
eac85cd5   Hu Chunming   调通va
91
  
52516fb9   Hu Chunming   添加授权代码;
92
      return vec_result;  
b3012672   Hu Chunming   天啊及hp,road_seg子sd...
93
94
95
96
97
98
99
100
  }
  
  void VehicleAnalysis::release(){
      if (m_handle) {
          va_release(&m_handle);
      }
  }
  
52516fb9   Hu Chunming   添加授权代码;
101
102
103
104
105
  vector<AnalysisResult> VehicleAnalysis::va_result2AnalysisResult(va_result* result, int batchsize) {
  
      vector<AnalysisResult> vec_result;
  
      for (int b = 0; b < batchsize; b++)
eac85cd5   Hu Chunming   调通va
106
      {
52516fb9   Hu Chunming   添加授权代码;
107
108
          vector<VehicleInfo> vec_info;
          for(int c=0;c<result[b].count;c++)
eac85cd5   Hu Chunming   调通va
109
          {
52516fb9   Hu Chunming   添加授权代码;
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
              vehicle_info result_info = result[b].info[c];
  
              VehicleInfo info;
              info.vehicle_detect_res         = result_info.vehicle_detect_res        ;	 
              info.vehicle_win_detect_res     = result_info.vehicle_win_detect_res    ; 	
              info.vehicle_body_detect_res    = result_info.vehicle_body_detect_res   ;	
              info.vehicle_color_res          = result_info.vehicle_color_res         ;
              info.vehicle_recg_res           = result_info.vehicle_recg_res          ;  
              info.vehicle_plate_det_recg_res = result_info.vehicle_plate_det_recg_res;	 
              info.vehicle_illegal_det_res    = result_info.vehicle_illegal_det_res   ; 	
              info.vehicle_fea_res            = result_info.vehicle_fea_res           ;   	
              info.mta_res                    = result_info.mta_res                   ;   
              info.manned_res	 	            = result_info.manned_res	 	        ;  
              info.type                       = result_info.type                      ;         
              info.vpt_type                   = result_info.vpt_type                  ;
  
  
              auto pendant_result = result_info.vehicle_pendant_det_res;
              for (size_t j = 0; j < pendant_result.count; j++)
              {
                  auto pendant_det_info = pendant_result.vpd_res[j];
  
                  pendant_info one_pendant_info;
                  one_pendant_info.rect = pendant_det_info.rect;
                  one_pendant_info.index = pendant_det_info.index;
                  one_pendant_info.confidence = pendant_det_info.confidence;
                  one_pendant_info.driver_copilot_info = pendant_det_info.driver_copilot_info;
                  info.vehicle_pendant_det_res.push_back(one_pendant_info);
              }
  
              vec_info.push_back(info);
eac85cd5   Hu Chunming   调通va
141
          }
eac85cd5   Hu Chunming   调通va
142
  
52516fb9   Hu Chunming   添加授权代码;
143
144
145
          AnalysisResult one_result;
          one_result.info = vec_info;
          vec_result.push_back(one_result);
eac85cd5   Hu Chunming   调通va
146
      }
52516fb9   Hu Chunming   添加授权代码;
147
148
149
  
      return vec_result;
  }