Blame view

src/ai_engine_module/tricycle_manned_process.h 2.77 KB
9c03cbe4   Zhao Shuaihua   增加三轮车/货车载人 二轮车超员/...
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 "hs_det_tricycle.h"

  #include "acl/acl.h"

  #include "acl/ops/acl_dvpp.h"

  

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

9c03cbe4   Zhao Shuaihua   增加三轮车/货车载人 二轮车超员/...
15
16
17
18
19
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
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
  #define IMAGE_CROP_EXPAND_RATIO 0

  #define MAX_OBJ_BOX_COUNT 100

  

  namespace ai_engine_module

  {

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

  

          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;

          } results_data_t;

  

          class TricycleMannedProcess

          {

              /**

               * @brief

               *  1. move able

               */

          public:

              TricycleMannedProcess();

  

              ~TricycleMannedProcess();

  

              bool check_initied();

15398c62   Hu Chunming   模型路径兼容
78
              bool init(int gpu_id, string models_dir);

9c03cbe4   Zhao Shuaihua   增加三轮车/货车载人 二轮车超员/...
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
              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);

  

              TricycleMannedProcess(const TricycleMannedProcess&) = delete;

              TricycleMannedProcess& operator=(const TricycleMannedProcess&) = 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 tricycle_manned_process

  } // namespace ai_engine_module