【模型部署】人脸检测模型DBFace C++ ONNXRuntime推理部署(1)
创始人
2024-05-03 07:55:09
0

系列文章目录

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


文章目录

  • 系列文章目录
  • 1 ONNX模型表示
  • 2 模型转换
  • 3 Python环境下的推理
  • 参考资料

上一篇博客中简单介绍了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可视化工具

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
修复 爱普生 EPSON L4... L4151 L4153 L4156 L4158 L4163 L4165 L4166 L4168 L4...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...