高性能SDK套件 - C++接口
加载模型
接口定义:
Model::Model(const std::wstring& model_path, int8_t id)
- model_path,模型文件路径,要求是 wstring 格式
- id,设备id,如果有多张显卡,可以传入此参数,从0开始
样例代码:
std::wstring model_path = LR"(C:\Users\Administrator\Desktop\测试模型\det.dvt)";
auto model = dlcv::model::Model(model_path);
模型推理
注意:彩色图像的通道顺序是 RGB。
接口定义:
CppResult Model::inference_cpp(nlohmann::json& data, std::vector<cv::Mat> img_list)
- data,传入的参数,比如传入 with_mask 为 false 时,不返回 mask Mat
- img_list,图片列表,当模型支持 batch 推理时,可传入多张图,速度翻倍
数据结构定义:
struct CppObjectResult {
int category_id;
std::wstring category_name;
float score;
float area;
std::vector<double> bbox;
bool with_mask = false;
cv::Mat mask;
};
struct CppSampleResult {
std::vector<CppObjectResult> results;
};
struct CppResult {
std::vector<CppSampleResult> sample_results;
};
样例代码:
cv::Mat img = cv::imread(R"(C:\Users\Administrator\Desktop\balloon.jpg)");
std::vector<cv::Mat> img_list = { img };
auto result = model.inference_cpp(data, img_list);
返回结果解析
- sample_results,列表,每个元素是一张图片的结果。
- results,列表,每个元素是一张图片中的物体。
- area,浮点数,物体的面积。
- bbox,列表,浮点数,物体的边界框,按照 x, y, w, h 排列,(x, y) 是左上角坐标,(w, h) 是检测框的宽度和高度尺寸
- category_id,整数,物体的类别 ID。
- category_name,字符串,物体的类别名称。
- score,浮点数,物体的置信度。
- mask,对象,物体的 mask。
- height,整数,mask 的高度。
- mask_ptr,指针,mask 的指针。
- width,整数,mask 的宽度。
结果示例
内存管理
当使用 C++ 时,所有变量都会自动释放,无需手动释放。
压力测试创建模型:
压力测试推理: