跳到主要内容

高性能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++ 时,所有变量都会自动释放,无需手动释放。

压力测试创建模型:

压力测试推理: