123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- #pragma once
- #include "Common.h"
- #include "ConfigModule.h"
- #include "ResourceKit.h"
- #include "AsyncProcessor.h"
- #include "SyncProcessor.h"
- /**
- * @brief AI类
- *
- * 该类用于C调用
- */
- class RuntimeEngine
- {
- public:
- /**
- * @brief 初始化AI模块
- *
- * 该函数用于初始化AI模块,包括读取配置文件和初始化模型资源。
- *
- * @param filePath 配置文件路径
- * @return 返回值为整数,表示初始化操作的结果:
- * - 如果初始化成功,返回AIStatus::StatusCode::SUCCESS。
- * - 如果读取配置文件失败,返回ConfigProcessor函数的返回值。
- * - 如果初始化模型资源失败,返回ai_model.init_resource函数的返回值。
- */
- int init(const std::string &filePath,bool is_sync);
- /**
- * @brief 处理图像帧
- *
- * 该函数用于处理图像帧,包括执行AI模型推理操作。
- *
- * @param frame_st 图像帧结构体指针,包含待处理的图像信息
- * @return 返回值为整数,表示处理操作的结果:
- * - 如果处理成功,返回AIStatus::StatusCode::SUCCESS。
- * - 如果发生错误,返回相应的错误码,具体错误码含义请参考ai_model.infer函数的注释。
- */
- int createRequest(frame_t *frame_st);
- int wait(int reqId);
- int getResult(int reqId, std::vector<BoundingBox> &bbox);
- int cleanup();
- int getAllPipelineIdNameStatus(std::vector<std::tuple<int, std::string, bool>> &uidPipilineIdNameStatusMap);
- int setPipelineStatus(int pipelineId, bool is_enable);
- int getPipelineModelConfig(const int &pipelineId, const int &model_uid, const std::string &obj_name, float &conf);
- int setPipelineModelConfig(const int &pipelineId, const int &modeUid, const std::string &key, float &value);
- // int process(frame_t *frame_st);
- /**
- * @brief 设置推理管道状态
- *
- * 该函数用于设置指定推理管道的状态,可启用或禁用推理管道,修改配置文件,并重新初始化AI模型资源。
- *
- * @param pp_name 推理管道名称
- * @param is_enable 若为true,则启用推理管道;若为false,则禁用推理管道。
- * @return 返回值为整数,表示设置操作的结果:
- * - 如果设置成功,返回AIStatus::StatusCode::SUCCESS。
- * - 如果发生错误,返回相应的错误码,具体错误码含义请参考ai_model.update_resource函数的注释。
- */
- // int set_pp_status(const std::string &pp_name, bool is_enable);
- // /**
- // * @brief 获取推理管道状态
- // *
- // * 该函数用于获取指定推理管道的状态,判断是否启用或禁用推理管道。
- // *
- // * @param pp_name 推理管道名称
- // * @param is_enable 用于存储推理管道状态的引用变量,若为true表示启用,若为false表示禁用。
- // * @return 返回值为整数,表示获取状态操作的结果:
- // * - 如果成功获取状态,返回AIStatus::StatusCode::SUCCESS。
- // * - 如果推理管道名称无效,返回AIStatus::ErrorCode::INVALID_PIPELINE_NAME。
- // * - 其他可能的错误码,请参考ConfigProcessor类的GetPipelineEnable函数的注释。
- // */
- // int get_pp_status(const std::string &pp_name, bool &is_enable);
- /**
- * @brief 获取所有推理管道名称
- *
- * 该函数用于获取所有推理管道的名称,并返回名称数组和管道数量。
- *
- * @param pipelineNames 存储推理管道名称的指针的指针,由调用方负责释放内存。
- * @param pipelineCount 用于存储推理管道数量的指针。
- * @return 返回值为整数,表示获取操作的结果:
- * - 如果成功获取推理管道名称,返回AIStatus::StatusCode::SUCCESS。
- * - 如果发生错误,返回相应的错误码,可能的错误码及其含义如下:
- * - AIStatus::ErrorCode::BAD_ALLOC: 内存分配失败。
- * - 其他可能的错误码,请参考ConfigProcessor类的GetAllPipelineName函数的注释。
- */
- // int get_pp_name(char ***pipelineNames, int *pipelineCount);
- // /**
- // * @brief 获取指定推理管道的推理结果
- // *
- // * 该函数用于获取指定推理管道的推理结果,并返回结果数组和结果数量。
- // *
- // * @param pp_name 推理管道名称
- // * @param boundingBoxes 存储推理结果的指针的指针,由调用方负责释放内存。
- // * @param size 用于存储推理结果数量的指针。
- // * @return 返回值为整数,表示获取操作的结果:
- // * - 如果成功获取推理结果,返回AIStatus::StatusCode::SUCCESS。
- // * - 如果推理管道名称无效,返回AIStatus::ErrorCode::NO_PIPELINE_ID。
- // * - 如果发生错误,返回相应的错误码,可能的错误码及其含义如下:
- // * - AIStatus::ErrorCode::BAD_ALLOC: 内存分配失败。
- // */
- // int get_pp_res(const std::string &pp_name, BoundingBox_Res **boundingBoxes, int *size);
- // /**
- // * @brief 获取所有推理结果
- // *
- // * 该函数用于获取所有推理管道的推理结果,并返回结果数组和结果数量。
- // *
- // * @param boundingBoxes 存储推理结果的指针的指针,由调用方负责释放内存。
- // * @param size 用于存储推理结果数量的指针。
- // * @return 返回值为整数,表示获取操作的结果:
- // * - 如果成功获取推理结果,返回AIStatus::StatusCode::SUCCESS。
- // * - 如果发生错误,返回相应的错误码,可能的错误码及其含义如下:
- // * - AIStatus::ErrorCode::BAD_ALLOC: 内存分配失败。
- // */
- // int get_all_res(BoundingBox_Res **boundingBoxes, int *size);
- // /**
- // * @brief 获取推理管道模型配置的置信度
- // *
- // * 该函数用于获取指定推理管道中指定模型及对象的配置置信度。
- // *
- // * @param pp_name 推理管道名称
- // * @param model_uid 模型UID
- // * @param obj_name 对象名称
- // * @param conf 用于存储配置置信度的引用变量
- // * @return 返回值为整数,表示获取操作的结果:
- // * - 如果成功获取配置置信度,返回AIStatus::StatusCode::SUCCESS。
- // * - 如果推理管道名称或模型UID无效,返回AIStatus::ErrorCode::INVALID_PIPELINE_NAME 或 AIStatus::ErrorCode::INVALID_MODEL_UID。
- // * - 如果发生错误,返回相应的错误码,可能的错误码及其含义如下:
- // * - 其他可能的错误码,请参考ConfigProcessor类的GetPipelineModelConf函数的注释。
- // */
- // int get_pp_model_conf(const std::string &pp_name,
- // const int &model_uid,
- // const std::string &obj_name,
- // float &conf);
- // /**
- // * @brief 设置推理管道模型配置的置信度
- // *
- // * 该函数用于设置指定推理管道中指定模型及对象的配置置信度,并更新AI模型资源。
- // *
- // * 例如目前有一个pipeline名字为face_detect,其是一个级联任务,这种情况下可以通过【pp_name】和【model_uid】灵活设置每个模型的置信度。
- // * @image html set_pp_model_conf.png
- // *
- // * @param pp_name 推理管道名称
- // * @param model_uid 模型UID
- // * @param obj_name 对象名称
- // * @param conf 新的配置置信度值
- // * @return 返回值为整数,表示设置操作的结果:
- // * - 如果成功设置配置置信度,返回AIStatus::StatusCode::SUCCESS。
- // * - 如果推理管道名称或模型UID无效,返回AIStatus::ErrorCode::INVALID_PIPELINE_NAME 或 AIStatus::ErrorCode::INVALID_MODEL_UID。
- // * - 如果发生错误,返回相应的错误码,可能的错误码及其含义如下:
- // * - 其他可能的错误码,请参考ConfigProcessor类的SetPipelineModelConf函数的注释。
- // */
- // int set_pp_model_conf(const std::string &pp_name,
- // const int &model_uid,
- // const std::string &obj_name,
- // float &conf);
- private:
- bool isAsync;
- ConfigModule config;
- ResourceKit resourceKit;
- AsyncProcessor asyncProcessor;
- SyncProcessor syncProcessor;
- };
|