Files
FastDeploy/docs/usage/vision/ppcls.md
T
jiangjiajun 9d87046d78 first commit
2022-07-05 09:30:15 +00:00

3.4 KiB
Raw Blame History

PaddleClas分类模型推理

PaddleClas模型导出参考PaddleClas

Python API说明

Model类

fastdeploy.vision.ppcls.Model(model_file, params_file, config_file, runtime_option=None, model_format=fastdeploy.Frontend.PADDLE)

参数

  • model_file(str): 模型文件,如resnet50/inference.pdmodel
  • params_file(str): 参数文件,如resnet50/inference.pdiparams
  • config_file(str): 配置文件,来源于PaddleClas提供的推理配置文件,如inference_cls.yaml
  • runtime_option(fd.RuntimeOption): 后端推理的配置, 默认为None,即采用默认配置
  • model_format(fd.Frontend): 模型格式说明,PaddleClas的模型格式均为Frontend.PADDLE

predict接口

Model.predict(image_data, topk=1)

参数

  • image_data(np.ndarray): 输入数据, 注意需为HWCRGB格式
  • topk(int): 取前top的分类

返回结果

  • result(ClassifyResult):结构体包含label_idsscores两个list成员变量,表示类别,和各类别对应的置信度

示例

import fastdeploy.vision as vis
import cv2
model = vis.ppcls.Model("resnet50/inference.pdmodel", "resnet50/inference.pdiparams", "resnet50/inference_cls.yaml")
im = cv2.imread("test.jpeg")
result = model.predict(im, topk=5)
print(result.label_ids[0], result.scores[0])

C++ API说明

需添加头文件#include "fastdeploy/vision.h"

Model类

fastdeploy::vision::ppcls::Model(
                    const std::string& model_file,
                    const std::string& params_file,
                    const std::string& config_file,
                    const RuntimeOption& custom_option = RuntimeOption(),
                    const Frontend& model_format = Frontend::PADDLE)

参数

  • model_file: 模型文件,如resnet50/inference.pdmodel
  • params_file: 参数文件,如resnet50/inference.pdiparams
  • config_file: 配置文件,来源于PaddleClas提供的推理配置文件,如inference_cls.yaml
  • runtime_option: 后端推理的配置, 不设置的情况下,采用默认配置
  • model_format: 模型格式说明,PaddleClas的模型格式均为Frontend.PADDLE

Predict接口

bool Model::Predict(cv::Mat* im, ClassifyResult* result, int topk = 1)

参数

  • im: 输入图像数据,须为HWC,RGB格式(注意传入的im在预处理过程中会被修改)
  • result: 分类结果
  • topk: 取分类结果前topk

返回结果

true或false,表示预测成功与否

示例

#include "fastdeploy/vision.h"

int main() {
  typedef vis = fastdeploy::vision;
  auto model = vis::ppcls::Model("resnet50/inference.pdmodel", "resnet50/inference.pdiparams", "resnet50/inference_cls.yaml");

  if (!model.Initialized()) {
    std::cerr << "Initialize failed." << std::endl;
    return -1;
  }

  cv::Mat im = cv::imread("test.jpeg");

  vis::ClassifyResult res;
  if (!model.Predict(&im, &res, 5)) {
    std::cerr << "Prediction failed." << std::endl;
    return -1;
  }

  std::cout << res.label_ids[0] << " " << res.scores[0] << std::endl;
  return 0;
}