self.onnx_session = onnxruntime.InferenceSession(onnx_path)
self.input_name = self.get_input_name(self.onnx_session)
self.output_name = self.get_output_name(self.onnx_session)
print("input_name:{}".format(self.input_name))
print("output_name:{}".format(self.output_name))
def get_output_name(self, onnx_session):
output_name = onnx_session.get_outputs()[0].name
:param onnx_session:
:return:
output_name = []
for node in onnx_session.get_outputs():
output_name.append(node.name)
return output_name
def get_input_name(self, onnx_session):
input_name = onnx_session.get_inputs()[0].name
:param onnx_session:
:return:
input_name = []
for node in onnx_session.get_inputs():
input_name.append(node.name)
return input_name
def get_input_feed(self, input_name, image_tensor):
input_feed={self.input_name: image_tensor}
:param input_name:
:param image_tensor:
:return:
input_feed = {}
for name in input_name:
input_feed[name] = image_tensor
return input_feed
def forward(self, image_tensor):
image_tensor = image.transpose(2, 0, 1)
image_tensor = image_tensor[np.newaxis, :]
onnx_session.run([output_name], {input_name: x})
:param image_tensor:
:return:
# 输入数据的类型必须与模型一致,以下三种写法都是可以的
# scores, boxes = self.onnx_session.run(None, {self.input_name: image_tensor})
# scores, boxes = self.onnx_session.run(self.output_name, input_feed={self.input_name: image_tensor})
input_feed = self.get_input_feed(self.input_name, image_tensor)
scores, boxes = self.onnx_session.run(self.output_name, input_feed=input_feed)
return scores, boxes
onnx模型推理(python)以下ONNX一个检测模型的推理过程,其他模型稍微修改即可# -*-coding: utf-8 -*-import os, syssys.path.append(os.getcwd())import onnxruntimeimport onnxclass ONNXModel(): def __init__(self, onnx_path): """ :param onnx_path: """
使用
python
实现基于
onnx
runtime
推理
框架的深度学习
模型
的
推理
功能。 可以将
onnx
模型
转换为大多数主流的深度学习
推理
框架
模型
,因此您可以在部署
模型
之前测试
onnx
模型
是否正确。
注意:此处的
模型
由pytorch 1.6训练,并由
onnx
1.8.1转换
onnx
== 1.8.1
onnx
runtime == 1.7.0或
onnx
runtime-gpu == 1.3.0
opencv-
python
== 4.2.0.32
该演示以main_xxx_.py格式命名。您可以使用以下示例运行代码。
python
main_pose_.py --det_model_path weights/yolov5s.
onnx
\
--pose_model_path data/det/zidane.jpg \
本篇幅介绍pytorch
模型
转
ONNX
模型
一、pytorch
模型
保存/加载
有两种方式可用于保存/加载pytorch
模型
1)文件中保存
模型
结构和权重参数 2)文件只保留
模型
权重.
1、文件中保存
模型
结构和权重参数
1)pytorch
模型
保存
import torch
torch.save(selfmodel,"save.pt")
2)pytorch
模型
加载
import torch
torc...
scikit学习
模型
转换
模型
python
3 converter/convert_basic.py models/scaler.pkl models/scaler.
onnx
python
3 converter/convert_basic.py models/clf.pkl models/clf.
onnx
在没有ZipMap运算符的情况下转换RandomForestClassifier
模型
python
3 converter/convert_basic.py models/clf.pkl models
https://edu.csdn.net/course/detail/36074
Python
实战量化交易理财系统
https://edu.csdn.net/course/detail/35475
定义
模型
结构
首先使用 PyTorch 定义一个简单的网络
模型
:
class ConvBnReluBlock(nn.Module):
def \_\_init\_\_(self) -> None:
super().__init__()
代码主要来自 https://github.com/MTlab/
onnx
2caffe和 https://github.com/205418367/
onnx
2caffe,感谢他们的贡献。
onnx
到 Caffe
我们可以将
onnx
操作转换为 caffe 层,它不仅来自 ,还来自许多其他 caffe 修改分支,如 ssd-caffe,并且仅支持
onnx
opset_version=9。
通过
ONNX
将 pytorch 转换为 Caffe
此工具通过将
模型
转换为 Caffe
模型
仅用于
推理
通过
ONNX
将 tensorflow 转换为 Caffe
你可以使用这个 repo 。
其他用于 caffe bt
ONNX
的深度学习框架
caffe(支持
python
)
pytorch(如果要转换
onnx
,则可选)
我们建议使用 protobuf
tensorflow保存
模型
转成
onnx
文件
参考:https://github.com/
onnx
/tensorflow-
onnx
的getting started部分
这里为了使得转化过程最简化tensorflow保存
模型
时使用save_model保存
from tensorflow.saved_model import simple_save
import shutil
save_path = ...
# 将
模型
转换为.
onnx
格式
torch.
onnx
.export(model, dummy_input, 'model.
onnx
', input_names=['input'], output_names=['output'])
# 加载.
onnx
模型
ort_session = ort.InferenceSession('model.
onnx
')
# 运行
推理
ort_inputs = {ort_session.get_inputs()[].name: dummy_input.numpy()}
ort_outputs = ort_session.run(None, ort_inputs)
# 打印输出得分
print(ort_outputs)
请注意,此代码仅用于演示目的,实际使用中可能需要进行更多的调整和优化。