Blame view

src/ai_engine_module/motocycle_phone_process.h 3.38 KB
c5fce6ce   Zhao Shuaihua   增加二轮车玩手机505、加装雨棚5...
1
2
3
4
5
6
7
8
9
10
11
12
13
  #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 "motor_phone_det.h"

  #include "acl/acl.h"

  #include "acl/ops/acl_dvpp.h"

  

d51ea997   Zhao Shuaihua   升级玩手机、雨棚模型;模型批处理;...
14
  #define MAX_BATCH 16

c5fce6ce   Zhao Shuaihua   增加二轮车玩手机505、加装雨棚5...
15
16
17
18
19
20
21
22
23
24
25
  #define IMAGE_CROP_EXPAND_RATIO 0

  #define MAX_OBJ_BOX_COUNT 100

  

  namespace ai_engine_module

  {

      namespace motocycle_phone_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*;

d51ea997   Zhao Shuaihua   升级玩手机、雨棚模型;模型批处理;...
26
          /*

c5fce6ce   Zhao Shuaihua   增加二轮车玩手机505、加装雨棚5...
27
28
29
30
31
32
33
34
          enum class label_t {

              PLACEHOLDER = -1,

              smoke = 0,      //抽烟

              usephone = 1,   //玩手机

              call = 2,       //接打电话

              food = 3,       //

              handrail = 4,   //手握在车把上

              hand = 5,       //手悬空

d51ea997   Zhao Shuaihua   升级玩手机、雨棚模型;模型批处理;...
35
36
37
38
39
40
41
42
43
          };*/

  

          enum class label_t {

              PLACEHOLDER = -1,

              smoke = 0,      //抽烟

              usephone = 1,   //玩手机

              food = 2,       //

              handrail = 3,   //手握在车把上

              hand = 4,       //手悬空

c5fce6ce   Zhao Shuaihua   增加二轮车玩手机505、加装雨棚5...
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
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
120
          };

  

          typedef struct input_data_wrap_t

          {

              id_t id;

              long objId;

              std::string taskId;

              box_t box;

          } input_data_wrap_t;

  

  

          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 MotorPhoneProcess

          {

              /**

               * @brief

               *  1. move able

               */

          public:

              MotorPhoneProcess();

  

              ~MotorPhoneProcess();

  

              bool check_initied();

              bool init(int gpu_id, string models_dir);

              bool update_mstreams(const std::vector<task_id_t>& taskIds, vector<DeviceMemory*> vec_det_input_images, const std::vector<onelevel_det_result> &det_results); 

              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);

  

              MotorPhoneProcess(const MotorPhoneProcess&) = delete;

              MotorPhoneProcess& operator=(const MotorPhoneProcess&) = 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 motocycle_phone_process

  } // namespace ai_engine_module