【模型部署】人脸检测模型DBFace C++ ONNXRuntime推理部署(1)

系列文章目录

【模型部署】人脸检测模型DBFace C++ ONNXRuntime推理部署(0)
【模型部署】人脸检测模型DBFace C++ ONNXRuntime推理部署(1)
【模型部署】人脸检测模型DBFace C++ ONNXRuntime推理部署(2)


上一篇博客中简单介绍了ONNXRuntime推理引擎和DBFace检测模型,这篇博客中将展示如何使用其Python API进行初步验证及推理部署。

1 ONNX模型表示

ONNX(Open Neural Network Exchage)是一个开源机器学习模型数据的存储标准,支持不同的人工智能框架,从而将其训练好的模型转为ONNX中间表示,便于ONNXRuntime进行推理部署。本系列博客均使用Pytorch所训练的模型。

在这里插入图片描述

2 模型转换

Pytorch支持ONNX模型转换,仅需调用torch.onnx.export()即可完成模型转换,并且支持模型中的绝大部分算子,从而能够避免很多自己手写算子的麻烦。具体的算子版本支持情况可以查阅官方文档
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

模型转换完成后,可以使用NETRON工具可视化ONNX模型的输入输出以及算子节点信息,观察模型算子及运算分支是否转换正确。NETRON的可视化节点可以点击查看算子详情,如下图所示。

在这里插入图片描述

3 Python环境下的推理

经过NETRON可视化验证后的模型不一定能得到预想的正确结果,所以我们需要在Python环境下进行推理,确保ONNX模型能得到与Pytorch模型一致的结果。这里需要用到ONNXRuntime的Python API读取并运行模型。
在这里插入图片描述
在这里插入图片描述
onnxruntime.InferenceSession用于获取一个 ONNX Runtime 推理器,其参数是用于推理的 ONNX 模型文件。InferenceSession的 run 方法用于模型推理,其第一个参数为输出张量名的列表,第二个参数为输入值的字典。

在这里插入图片描述
这一语句是比较Pytorch推理结果和ONNXRuntime推理结果的差异,如果该值大于1e-5则报错,说明模型转换失败,推理结果的精度存在偏差,当然你也可以自己设定np.allclose()的精确度参数。

可视化Python ONNXRuntime的推理结果如下,下一篇博客中将介绍如何使用ONNXRuntime的C++ API进行推理,从而大幅提高推理速度,基本达到实际应用需求。

在这里插入图片描述

参考资料

  1. ONNX官方算子支持查询文档
  2. Pytorch对ONNX的算子支持查询文档
  3. ONNX对python的api文档
  4. NETRON可视化工具
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值