ubuntu18 pytorch模型转onnx

.pt/.pth转onnx踩的坑 小记 收到一个.pt的人脸关键点模型,需要将其转为onnx,很简单的一步,但闹出了乌龙,经过小小折腾解决后将过程记录一下。 阅读详情

转换

torch.onnx.export(model, args, f, export_params=True, verbose=False, input_names=None, 
output_names=None,do_constant_folding=True,dynamic_axes=None,opset_version=9)

常用参数:
    1.model:torch.nn.model
        要导出的模型
    2.args:tuple or tensor
        模型的输入参数。注意tuple的最后参数为dict要小心,详见pytorch文档。
        输入参数只需满足shape正确,为什么要输入参数呢?因为后面torch.jit.trace要用到,先按下不表。
    3.f:file object or string
        转换输出的模型的位置,如'yolov4.onnx'
    4.export_params:bool,default=True
        true表示导出trained model,否则untrained model。默认即可
    5.verbose:bool,default=False
        true表示打印调试信息
    6.input_names:list of string,default=None
        指定输入节点名称
    7.output_names:list of string,default=None
        指定输出节点名称
    8.do_constant_folding:bool,default=True
        是否使用常量折叠,默认即可
    9.dynamic_axes:dict<string, dict<int, string>> or dict<string, list(int)>,default=None
        有时模型的输入输出是可变的,如RNN,或者输入输出图片的batch是可变的,
        这时我们通过dynamic_axes来指定输入tensor的哪些参数可变。
        如input的shape为(b,3,h,w)其中b、h、w可变
          output的shape为(b,c,5)其中b、c可变
        有几种方式实现:
        1)仅list(int)
            dynamic_axes={'input':[0,2,3],'output':[0,1]}
        2)仅dict<int, string>
            dynamic_axes={'input':{0:'batch',2:'height',3:'width'},'output':{0:'batch',1:'c'}}
        3)mixed
            dynamic_axes={'input':{0:'batch',2:'height',3:'width'},'output':[0,1]}
     10.opset_version:int,default=9
        指定onnx的opset版本,版本过低的话,不支持upsample等操作。

例子:

1.单输入输出

import torch
import torch.nn as nn
import onnx
import numpy as np
class Model(nn.Module):
    def __init__(self):
        super(Model,self).__init__()
        self.conv1=nn.Conv2d(3,3, kernel_size=3, stride=2,padding=1)
    def forward(self,x,y):
        result1=self.conv1(x)
        result2=self.conv1(y)
        return result1,result2

model=Model()
model.eval() # 若存在batchnorm、dropout层则一定要eval()!!!!再export

input_names = ["input"]
output_names = ["output"]

input=torch.randn((1,3,12,12))

# 单输入单输出
torch.onnx.export(model,input,'model.onnx',export_params=True, verbose=False, opset_version=10,input_names=input_names,output_names=output_names)
# 如果需要指定input和output的batch可变,可以添加dynamic_axes,如下:
#torch.onnx.export(model,input,'model.onnx',export_params=True, verbose=False, opset_version=10,input_names=input_names,output_names=output_names,dynamic_axes={'input':[0],'output':[0]} )

2.多输入输出

import torch
import torch.nn as nn
import onnx
import numpy as np
class Model(nn.Module):
    def __init__(self):
        super(Model,self).__init__()
        self.conv1=nn.Conv2d(3,3, kernel_size=3, stride=2,padding=1)
    def forward(self,x,y):
        result1=self.conv1(x)
        result2=self.conv1(y)
        return result1,result2

model=Model()
model.eval() # 若存在batchnorm、dropout层则一定要eval()!!!!再export

input_names = ["input_0","input_1","input2"]
output_names = ["output_0","output_1"]

input0=torch.randn((1,3,12,12))
input1=torch.randn((1,3,6,6))
input2=torch.randn(3)

# 多输入使用(input0,input1,input2)方式会报错,改成[input0,input1,input2]
#torch.onnx.export(model,(input0,input1,input2),'model.onnx',export_params=True, verbose=False, opset_version=10,input_names=input_names,output_names=output_names)
torch.onnx.export(model,[input0,input1,input2],'model.onnx',export_params=True, verbose=False, opset_version=10,input_names=input_names,output_names=output_names)
# 如果需要指定input_0和output_0的batch可变,可以添加dynamic_axes,如下:
#torch.onnx.export(model,[input0,input1,input2],'model.onnx',export_params=True, verbose=False, opset_version=10,input_names=input_names,output_names=output_names,dynamic_axes={'input_0':[0],'output_0':[0]} )

参考:

https://zhuanlan.zhihu.com/p/422290231

pytorch模型转caffe模型(pytorch->onnx->caffe) 笔记目录前言一.pytorch转onnx1.修改yolov5/models/export.py2.在yolov5的目录下运行3.简化onnx模型二.onnx转caffe1.yolov5网络层优化2.ubuntu服务器环境搭建①安装库②安装caffe的源码③修改caffe/Makefile.config这个文件④修改caffe/Makefile文件⑤添加Upsample层和permute层⑥编译caffe源码⑦pycaffe安装⑧caffe环境测试⑨onnx转caffe学习时间 前言 这里主要用ubuntu 阅读详情

相关推荐

pytorch模型tensorrt加速之-pth转onnx转trt,在推理trt模型测试模型速度

首先需要安装两个必要的包tensorrt和torch2trt,tensorrt的话要在官网下载tar压缩包,建议下载tar包安装

pyswt的博客 7492

yolo模型转换:pytorch -> onnx -> caffe

第一步:pytorch转onnx(pytorch版yolov3-9.0开始提供脚本export.py) (1)设置onnx算子版本(按需) 修改代码: torch.onnx.export(model, img, f, verbose=False, opset_version=12, input_names=['images'], 为: torch.onnx.export(model, img, f, verbose=True, opset_version=9, input_names=['im

ynzzxc的博客 5503

pytorch保存onnx模型

pytorch保存onnx模型 因为一些原因,需要用pytorch去创建、训练和保存模型。pytorch保存的模型通常为pth、pt、pkl的格式,但这种类型的模型不能在其他框架(tensorflow)下直接加载,因此需要将模型保存为其他格式的。在网上进行相应的学习后,总结出一下两点: pytorch可以直接将模型保存为onnx的,并且可以通过onnx转换为其他格式的模型(pb); pytorc...

CFH1021的博客 5926

Pytorch与Onnx模型的保存、转换与操作

Pytorch与Onnx模型的转换与操作

ZhengrongYue的博客 4776

pytorch模型(pth,pkl)转ncnn(中介onnx)(附搭建ncnn教程)

pytorch模型(pth,pkl)转ncnn(中介onnx)(附搭建ncnn教程) 文章目录pytorch模型(pth,pkl)转ncnn(中介onnx)(附搭建ncnn教程)部署ncnn在windows上部署ncnn(基于VS2019)在Ubuntu18.04上部署ncnnpytorch模型转onnx(以TDnet为例)onnx转ncnn 部署ncnn pytorch转ncnn是要在电脑上部署好ncnn环境,下图为可部署ncnn的平台 在windows上部署ncnn(基于VS2019) 一.安装VS2

qq_50444970的博客 5123

(ubuntu 18.04 cuda 10.2 pytorch onnx→tensorrt) 使用tensorrt加载并运行onnx模型

2021.4 ubuntu 18.04 cuda 10.2 pytorch onnx→tensorrt使用tensorrt加载并运行onnx模型0. TensorRT介绍1. 安装tensorrt、pycuda1.1 安装tensorrt1.2 安装pycuda2. 将pytorch模型转化为onnx模型3. tensorrt调用onnx模型进行预测4. 注意事项 0. TensorRT介绍 https://docs.nvidia.com/deeplearning/tensorrt/developer-gu

heiha1232的博客 1112

pt权重转onnx记录

pt权重转onnx记录

悠悠小船长的博客 1522

第二步:pytorch模型转onnx模型步骤和可能遇到的问题

一、本地(win10)环境 cuda11.0 + python3.7.4 + pytorch1.7.1 + onnx1.9.0 二、可能出现的问题 1. pytorch与tensorrt版本对应问题 pytorch转onnx模型是为了后续导入tensorrt做准备,所以要考虑pytorch与tensorrt版本对应的问题。由于服务器的环境是cuda10.1 + tensorrt7.0.0.11,所以要先把pytorch模型从1.7.1降到1.4.0。以efficientnet_b1为例,先在pytorch1

yx903520的博客 1万+

将pt文件转换成onnx文件

将pt文件转化为onnx文件

A1983Z的博客 3351

rk3588推理pytorch模型

pytorch模型在rk3588上的推理过程

qq_36497369的博客 4981

PyTorch系列学习——ubuntu18.04下配置ONNX

1 前言 下午配置了一下ONNX插件,踩了很多坑,折腾到晚上。作简单记录。 2 第一个坑——设置ONNX_ML环境变量 ONNX官方教程安装https://github.com/onnx/onnx#linux-and-macos要求在安装ONNX之前要先设置ONNX_ML=1,一开始以为是要在.bashrc配置文件中设置,经试验,无效。事实上是这样的: 在安装ONNX的命令前添加ONNX_ML=1,该命令就变成了: ONNX_ML=1 pip install onnx 该问题解决。 3 numpy版本问

高自强的博客 3382

tensorrt 部署yolov5s (v1.0)

环境:ubuntu18.01 tensorrt6.0.1.5 yolov5s opencv3.4.7 (提前编译好的)cuda10.1 pytorch1.6 yolov5 项目:https://github.com/ultralytics/yolov5 tensorrt 项目:https://github.com/wang-xinyu/tensorrtx 安装tensorrt https://blog.csdn.net/mathlxj/article/details/107810548 首先...

xingtianyao的博客 2387

onnx 转 tensorrt 的几种方法

onnx转tensoorrt的几种方法总结

ywfwyht的博客 3225

ubuntu18一文学会Pytorch端到端网络部署Tensorrt模型推理

本文主要以Pytorch-Unet和antipodal robotic grasping为例,讲解了如何在上述网络中部署tensorrt。通过部署这两种网络,可以举一反三学会所有端到端网络的部署方式。

Stay_Foo_lish的博客 2547

YOLOv4模型转换 | Darknet2ONNX | Pytorch2ONNX | ❤️ONNX2TensorRT 推理❤️ |【yolov4 模型转换】

文章目录Darknet2ONNXPytorch2ONNX简单解析【转换得到 特定 batch_size 的 onnx】示例转换命令如下ONNX2TensorRT 【待更新】 git clone https://github.com/Tianxiaomo/pytorch-YOLOv4.git cd pytorch-YOLOv4/ mkdir weights Darknet2ONNX # 激活一个适配环境 conda activate tf25 # cmd 参数解析 python demo_d

专注于AI领域前沿技术学习与分享:目标检测、图像修复、超分重建、AI工程化 1726

DDR4协议规范之(一)DDR4结构和寻址

DDR4 SDRAM结构和寻址DDR4 SDRAM的封装和寻址新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 DDR4 SDRAM的封装和寻址 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习

YJFeiii的博客 3万+

一文看懂pytorch转换ONNX再转换TenserRT

pytorch转换ONNX再转换TenserRT

xian0710830114的专栏 3962

基于 Python Flask 的智能个人财务系统

4.财务分析与报告:自动生成财务分析报告,提供图表展示(如饼图、柱状图)帮助用户了解收支状况和财务趋势。9.管理员管理功能:提供管理员模块,允许管理员查看用户财务数据、生成统计报告,并进行用户管理与权限控制。5.资产管理:用户可以记录并追踪个人资产(如房产、车辆、投资等),系统提供资产价值增减情况和趋势分析。3.预算制定与管理:用户根据收入设定每月预算,系统自动对比实际支出与预算差异,实时提醒预算完成情况。6.信用卡管理:提供信用卡账单记录与管理功能,提醒用户信用卡还款日期,避免逾期,帮助管理信用卡消费。

weixin_68689665的博客 424

pth转onnx模型、onnx转tensorrt模型、python中使用tensorrt进行加速推理(全网最全,不信你打我)

本文向所有亲们介绍在python当中配置tensorrt环境、使用tensorrt环境进行推理的教程,主要分为两大部分,第一部分环境配置,第二部分前向推理。

qq_15060477的博客 6317

CoMP 协同多点传输技术

CoMP CoMP是什么 解决什么问题 有什么缺点 CoMP(Coordinated Multiple Points)协同多点传输,通信术语,LTE-A的重要技术之一。 CoMP传输是指地理位置上分离的多个传输点,协同参与为一个终端的数据(PDSCH)传输或者联合接收一个终端发送的数据(PUSCH),参与协作的多个传输点通常指不同小区的基站。CoMP技术将边缘用户置于几个基站的同频率上,几...

ilean_J的博客 2万+

H无穷控制学习笔记——加权灵敏度H无穷控制问题

一、加权灵敏度H无穷问题 系统结构如上图所示。被控对象P的状态空间方程为(Ap,Bp,Cp,DpA_p,B_p,C_p,D_pAp​,Bp​,Cp​,Dp​),加权函数W1的状态空间方程为(A1,B1,C1,D1A_1,B_1,C_1,D_1A1​,B1​,C1​,D1​),加权函数W2的状态空间方程为(A2,B2,C2,D2A_2,B_2,C_2,D_2A2​,B2​,C2​,D2​),加权函数W3的状态空间方程为(A3,B3,C3,D3A_3,B_3,C_3,D_3A3​,B3​,C3​,D3​)。

一饮丶一啄的博客 4347

实战指南:Pytorch模型转ONNX再转OM在Atlas 200DK的完整部署流程

本文详细介绍了将PyTorch模型转换为ONNX格式,再转换为OM格式并在华为Atlas 200DK开发板上完成部署的完整实战流程。内容涵盖环境配置、模型转换、推理优化及常见问题解决方案,重点解析了Pytorch到ONNX再到OM的转换技巧与昇腾310B处理器的适配要点,为边缘AI部署提供实用指南。

pz89012345的博客 764

Nginx下ModSecurity模块安装详细教程

本文提供了在Nginx 1.28.0上安装ModSecurity v3的完整教程。首先需安装编译依赖,然后从源码编译安装ModSecurity库并设置优化参数。接着编译Nginx动态模块并配置加载。核心配置包括设置规则引擎、日志路径及性能优化参数。安装OWASP核心规则集后,在Nginx站点配置中启用ModSecurity。最后测试规则有效性并给出性能优化建议,如规则排除、精简规则集等。整个过程包含详细的命令和配置示例,确保安全防护功能正常运作。

深山技术宅的博客 1781
上一篇: ffmpeg C++推流
下一篇: VS2019 编译.cu文件
我是谁??
博客等级 码龄11年 242粉丝 183原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值