#pragma once #include #include #include #include #include "../util/vpc_util.h" #include "../ai_platform/task_param_manager.h" #include "../ai_platform/macro_definition.h" #include "ai_engine_header.h" #include "human_car_parsing.h" #include "motor_phone_det.h" #include "acl/acl.h" #include "acl/ops/acl_dvpp.h" #define MAX_BATCH 16 #define IMAGE_CROP_EXPAND_RATIO 0 #define MAX_OBJ_BOX_COUNT 100 namespace ai_engine_module { namespace motocycle_refit_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*; /* enum class label_t { PLACEHOLDER = -1, smoke = 0, //抽烟 usephone = 1, //玩手机 call = 2, //接打电话 food = 3, // handrail = 4, //手握在车把上 hand = 5, //手悬空 };*/ enum class label_t { PLACEHOLDER = -1, smoke = 0, //抽烟 usephone = 1, //玩手机 food = 2, // handrail = 3, //手握在车把上 hand = 4, //手悬空 }; 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 MotorRefitPhoneProcess { /** * @brief * 1. move able */ public: MotorRefitPhoneProcess(); ~MotorRefitPhoneProcess(); bool check_initied(); bool init(int gpu_id, string models_dir); bool update_mstreams(const std::vector& taskIds, vector vec_det_input_images, const std::vector &det_results); std::shared_ptr get_result_by_objectid(const id_t& id, bool do_erase = true); void force_release_result(const task_id_t& task_id); MotorRefitPhoneProcess(const MotorRefitPhoneProcess&) = delete; MotorRefitPhoneProcess& operator=(const MotorRefitPhoneProcess&) = delete; private: static algorithm_type_t algor_type_; int m_devId; aclrtContext m_algorthim_ctx; bool init_; void* phone_tools_; void* hcp_tools_; task_param_manager* task_param_manager_; std::map id_to_mn_; std::map id_to_result_; }; } // namespace motocycle_refit_phone_process } // namespace ai_engine_module