/* * @Author: yangzilong * @Date: 2021-11-25 10:42:54 * @Last Modified by: yangzilong * @Email: yangzilong@objecteye.com * @Description: */ #pragma once #include #include #include "include.h" #include "takeway_member.h" #define MAX_BATCH 20 #define IMAGE_CROP_EXPAND_RATIO 0 #define MAX_OBJ_BOX_COUNT 100 namespace ai_engine_module { namespace takeaway_member_classification { // typedef long id_t; using id_t = obj_key_t; using task_id_t = std::string; using algor_param_type = algor_config_param_takeaway_member_classification*; 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 result_data_t { box_t box; sy_img ori_img; sy_img roi_img; id_t id; long objId; int category; std::string taskId; } result_data_t; class TakeawayMemberCls { /** * @brief * 1. move able */ public: TakeawayMemberCls(); ~TakeawayMemberCls(); bool check_initied(); bool init(int gpu_id, char* trt_serialize_file = "./serialize_file/takeaway_member_cls"); bool update_mstreams(const std::set& taskIds, const sy_img* det_input_images, const std::vector& det_result); bool update_mstreams2(const std::vector& taskIds, const sy_img* det_input_images, const std::vector& det_result); 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); TakeawayMemberCls(const TakeawayMemberCls&) = delete; TakeawayMemberCls& operator=(const TakeawayMemberCls&) = delete; private: static algorithm_type_t algor_type_; bool init_; void* tools_; task_param_manager* task_param_manager_; std::map id_to_mn_; std::map id_to_result_; }; } // namespace takeaway_member_clasiication } // namespace ai_engine_module