Blame view

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

b5aaf53a   Zhao Shuaihua   雨棚模型升级
10
11
  // #include "human_car_parsing.h"

  #include "motor_rainshed_cls.h"

c5fce6ce   Zhao Shuaihua   增加二轮车玩手机505、加装雨棚5...
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
  #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

  

  namespace ai_engine_module

  {

      namespace motocycle_refit_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,

b5aaf53a   Zhao Shuaihua   雨棚模型升级
30
31
              norefit = 1, //无雨棚

              refit = 0,   //有雨棚

c5fce6ce   Zhao Shuaihua   增加二轮车玩手机505、加装雨棚5...
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
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
          };

  

          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 MotorRefitProcess

          {

              /**

               * @brief

               *  1. move able

               */

          public:

              MotorRefitProcess();

  

              ~MotorRefitProcess();

  

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

  

              MotorRefitProcess(const MotorRefitProcess&) = delete;

              MotorRefitProcess& operator=(const MotorRefitProcess&) = 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_refit_process

  } // namespace ai_engine_module