【PaddleInferenceSharp】基于C#和Paddle Inference 部署PaddlePaddle模型

在这里插入图片描述

1. 项目介绍

  Paddle Inference 是飞桨的原生推理库, 提供服务器端的高性能推理能力,直接基于飞桨的训练算子,因此它支持飞桨训练出的所有模型的推理;Paddle Inference 功能特性丰富,性能优异,针对不同平台不同的应用场景进行了深度的适配优化,做到高吞吐、低时延,保证了飞桨模型在服务器端即训即用,快速部署。

  但由于Paddle Inference目前只提供了Python、C++、C、Go语言方法接口,C#无法直接使用。近几年以来 ,C#语言快速发展,并跻身于编程语言排行榜前几名的位置,为了能够在C#语言中调用Paddle Inference模型推理库,根据C++动态链接库的原理,推出PaddleInferenceSharp,实现直接在C#平台调用Paddle Inference部署深度学习模型。其实现原理可以参考下图:

在这里插入图片描述

2.项目环境配置

 为了防止复现代码出现问题,列出以下代码开发环境,可以根据自己需求设置。

  • 操作系统:Windows 11
  • CUDA:11.4
  • cuDNN:8.2.4
  • TensorRT:8.4.0.6
  • OpenCV:4.5.5
  • Visual Studio:2022
  • C#框架:.NET 6.0
  • OpenCvSharp:OpenCvSharp4

 此处最重要的是需要安装Paddle Inference C++版,具体安装方式可以参考下面的连接:Paddle Inference C++ 依赖库安装(Windows)。对于其他依赖项安装可以参考以下链接:NVIDIA TensorR 安装 (Windows C++)OpenCV C++安装和配置

3.项目下载方式

 项目所使用的源码均已经在Github和Gitee上开源,

Github:

git clone https://github.com/guojin-yan/PaddleInferenceSharp.git

Gitee:

git clone https://gitee.com/guojin-yan/PaddleInferenceSharp.git

4. PaddleInfer类

4.1 API 方法

序号API参数解释说明
1方法PaddleInfer()构造函数,初始化推理核心,读取本地模型
参数string model_path静态图模型文件
string params_path模型配置文件信息,默认为空
2方法void set_divice()设置推理设备支持 CPU、GPU、ONNX runtime、oneDNN
参数Divice divice设备名称选择
int num 对于CPU、ONNX runtime代表线程数,默认为10;
对于GPU代表显卡编号,默认为0;
对于oneDNN代表cache数量,默认为1
ulong memory_init_size显存分配空间(在使用GPU时作用),默认为500
int workspace_size显存工作空间(在使用GPU时作用),默认为30
3方法List <string> get_input_names()获取输入节点名字
4方法void set_input_shape()设置输入节点形状根据节点维度设置
参数int[] input_shape形状数组
string input_name节点名称
5方法void load_input_data()设置图片/普通输入数据方法重载
参数string input_name输入节点名称
float[] input_data输入数据
参数string input_name输入节点名称
byte[] image_data图片数据
ulong image_size图片长度
int type数据处理类型:
type == 0: 均值方差归一化、直接缩放
type == 1: 普通归一化、直接缩放
type == 2: 均值方差归一化、仿射变换
6方法void infer()模型推理
7方法List <string> get_output_names()获取输出节点名字
8方法List <int> get_shape()获取指定节点形状
参数string node_name节点名称
9方法void T[] read_infer_result <T>()读取推理结果数据支持读取Float32、Int32、Int64格式数据
参数string output_name输出节点名
int data_size输出数据长度
10方法void delet()删除内存地址

4.2 枚举

序号枚举名枚举变量含义
1Divice
设备名称
CPU使用CPU推理
GPU使用GPU推理
ONNX_runtime使用ONNX_runtime推理
oneDNN使用oneDNN推理

 关于上述方法的使用,后续会更新县官的案例教程以及详细的技术文档,敬请期待。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

椒颜皮皮虾྅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值