IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Pytorch分类模型转onnx以及onnx模型推理 -> 正文阅读

[Python知识库]Pytorch分类模型转onnx以及onnx模型推理

Pytorch分类模型转onnx以及onnx模型推理
将MobileNetV2的pytorch模型转换为ONNX模型,并用onnxruntime进行测试_cumtchw-程序员秘密
Onnx模型推理(Python),onnx,python

基本概念

onnx

Open Neural Network Exchange (ONNX)是微软和Facebook携手开发的开放式神经网络交换工具。为人工智能模型(包括深度学习和传统ML)提供了一种开源格式。它定义了一个可扩展的计算图模型,以及内置运算符和标准数据类型。目前主要关注推断所需的功能。

ONNX之于机器学习模型就像JPEG之于图像或MPEG之于视频。你可以使用pytorch,tensorflow或者其他深度学习的框架来训练你的模型,最后都可以转成onnx模型. ONNX就想是不同模型之间的桥梁

ONNX Runtime

ONNX Runtime 是将 ONNX 模型部署到生产环境的跨平台高性能运行引擎,主要对模型图应用了大量的图优化,然后基于可用的特定于硬件的加速器将其划分为子图(并行处理)。

通过其可扩展的Execution Providers (EP) 框架与不同的硬件加速库协同工作,以在硬件平台上以最佳方式执行 ONNX 模型。

该接口使 AP 应用程序开发人员能够灵活地在云和边缘的不同环境中部署他们的 ONNX 模型,并通过利用平台的计算能力来优化执行

  • onnx runtime支持CPU和GPU,而tensorRT仅仅支持NVIDIAGPU。
  • onnx runtime在CPU上的加速效果很明显,而在GPU上的加速表现一般,不如tensorRT。(具体在CPU和GPU上的加速情况参见:https://blog.csdn.net/ltochange/article/details/120432092)

在这里插入图片描述

pytorch模型转ONNX模型(支持批处理)

pytorch模型转ONNX模型(支持批处理)

pytorch转onnx部署+一些小坑坑

torch.onnx.export的时候输入的data是个tensor!
诡异的是,使用onnxruntime.run的时候,如果输入的input是torch格式,就会报错RuntimeError: Input must be a list of dictionaries or a single numpy array for input ‘input.1’.
大概意思就是让你输入个numpy或者dictionary的格式。
输入的图像经过letterbox后构造成[1, 3, 640, 640]后在转个numpy就妥了。

MODNet:实时人像抠图模型-onnx python部署

在部署onnx时,将要推理的图像做简单的前处理,如果采用pytorch的transform则还需要安装pytorch,导致软件过大。此时,应该自己实现图像预处理程序。如normalize和resize

  • def normalize(self, im, mean=[0.5, 0.5, 0.5], std=[0.5, 0.5, 0.5]):
    im = im.astype(np.float32, copy=False) / 255.0
    im -= mean
    im /= std
    return im
  • def resize(self, im, target_size=608, interp=cv2.INTER_LINEAR):
    if isinstance(target_size, list) or isinstance(target_size, tuple):
    w = target_size[0]
    h = target_size[1]
    else:
    w = target_size
    h = target_size
    im = cv2.resize(im, (w, h), interpolation=interp)
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-03-30 18:19:14  更:2022-03-30 18:21:19 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 20:04:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码