Blame view

src/ai_engine_module/traffic_light_process.h 4.67 KB
fa818303   Zhao Shuaihua   增加闯红灯功能(特定场景);优化货...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
  #pragma once

  #include <deque>

  #include <map>

  #include <vector>

  #include <memory>

  #include "../util/vpc_util.h"

  #include "../ai_platform/task_param_manager.h"

  #include "../ai_platform/macro_definition.h"

  #include "ai_engine_header.h"

  #include "traffic_light_det.h"

  #include "acl/acl.h"

  #include "acl/ops/acl_dvpp.h"

  

  #define MAX_BATCH 20

  #define IMAGE_CROP_EXPAND_RATIO 0

  #define MAX_OBJ_BOX_COUNT 100

  #define MAX_LANE_NUM 100

b17e0e69   Zhao Shuaihua   闯红灯增加场景自适应、轨迹约束;逆...
18
19
  #define PRECISION 1e-8

  #define Pi 3.14159265358979

fa818303   Zhao Shuaihua   增加闯红灯功能(特定场景);优化货...
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
  

  namespace ai_engine_module

  {

      namespace traffic_light_process

      {

          // typedef long id_t;

          using id_t = obj_key_t;

          using task_id_t = std::string;

          using algor_param_type = algor_config_param_manned_incident*;

  

          enum class label_t {

              PLACEHOLDER = -1,

              red = 0,        //直行红灯

              green = 1,      //直行绿灯

              yellow = 2,     //直行黄灯

              wred = 3,       //转向红灯

              wgreen = 4,     //转向绿灯

              wyellow = 5,    //转向黄灯

              pred = 6,       //行人红灯

              pyellow = 7,    //行人黄灯

              pgreen = 8,     //行人绿灯

              bred = 9,       //自行车红灯

              byellow = 10,   //自行车黄灯

              bgreen = 11,    //自行车绿灯

              no = 12,        //灭灯

          };

  

b17e0e69   Zhao Shuaihua   闯红灯增加场景自适应、轨迹约束;逆...
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
          enum class seg_label_t {

              PLACEHOLDER = -1,

              background = 0,             //背景

              vehicle_lanes = 1,          //机动车道

              nonvehicle_lanes = 2,       //非机动车道

              emerg_lanes = 3,            //应急车道

              guide_line = 4,             //导流线

              crosswalk = 5,              //人行横道

              no_parking_area = 6,        //禁停区域

              interestion_area = 7,       //十字路口区域

              yellow_solidline = 8,       //黄实线

              white_solidline = 9,        //白实线

              white_dottedline = 10,      //虚线

              yellow_dottedline = 11,     //黄虚线

          };

  

fa818303   Zhao Shuaihua   增加闯红灯功能(特定场景);优化货...
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
          typedef struct input_data_wrap_t

          {

              id_t id;

              long objId;

              std::string taskId;

              box_t box;

          } input_data_wrap_t;

  

          typedef struct tr_point {

              float x, y;

          }tr_point;

  

  

          typedef struct mn_frame_t

          {

              uint m_frame;

              uint n_frame;

  

              // explicit

              mn_frame_t(uint m = 0, uint n = 0)

                  : m_frame(m)

                  , n_frame(n)

              {}

  

              void reset()

              {

                  m_frame = 0;

                  n_frame = 0;

              }

  

          } mn_frame_t;

  

  

          typedef struct results_data_t 

          {

              box_t box;

              acldvppPicDesc* origin_img_desc{nullptr};

              acldvppPicDesc* roi_img_desc{nullptr};

              id_t id;

              long objId;

              std::string taskId;

              algorithm_type_t algor_type;

          } results_data_t;

  

          class TrafficLightProcess

          {

              /**

               * @brief

               *  1. move able

               */

          public:

              TrafficLightProcess();

  

              ~TrafficLightProcess();

  

              bool check_initied();

              bool init(int gpu_id, string models_dir);

b17e0e69   Zhao Shuaihua   闯红灯增加场景自适应、轨迹约束;逆...
120
121
              // bool update_mstreams(const std::vector<task_id_t>& taskIds, vector<sy_img> src_interest_imgs, vector<DeviceMemory*> vec_det_input_images, const std::vector<onelevel_det_result> &det_results); 

              bool update_mstreams(const std::vector<task_id_t>& taskIds, vector<sy_img> src_interest_imgs, vector<DeviceMemory*> vec_det_input_images, const vector<vector<vector<int>>>& traffic_region, const vector<vector<int>>& labels, map<OBJ_KEY, OBJ_INDEX> &m_total_obj_info, const std::vector<onelevel_det_result> &det_results); 

fa818303   Zhao Shuaihua   增加闯红灯功能(特定场景);优化货...
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
              std::shared_ptr<results_data_t> get_result_by_objectid(const id_t& id, bool do_erase = true);

  

              void force_release_result(const task_id_t& task_id);

  

              TrafficLightProcess(const TrafficLightProcess&) = delete;

              TrafficLightProcess& operator=(const TrafficLightProcess&) = delete;

  

          private:

              static algorithm_type_t algor_type_;

              int m_devId; 

              aclrtContext m_algorthim_ctx;

  

              bool init_;

              void* tools_;

              task_param_manager* task_param_manager_;

              std::map<id_t, mn_frame_t> id_to_mn_;

              std::map<id_t, results_data_t> id_to_result_;

          };

      }  // namespace traffic_light_process

  } // namespace ai_engine_module