mirror of
https://github.com/PaddlePaddle/FastDeploy.git
synced 2026-04-23 00:17:25 +08:00
3.4 KiB
3.4 KiB
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): 输入数据, 注意需为HWC,RGB格式
- topk(int): 取前top的分类
返回结果
- result(ClassifyResult):结构体包含
label_ids和scores两个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; }