pytorch pt转onnx 以及 simpler—onnx方法(包含tensorrt文件转换)
1.转onnx 代码
import argparse
import sys
import timesys.path.append('./') # to run '$ python *.py' files in subdirectoriesimport torch
import torch.nn as nnimport models
from models.experimental import attempt_load
from utils.activations import Hardswish, SiLU
from utils.general import set_logging, check_img_size
from utils.torch_utils import select_deviceif __name__ == '__main__':parser = argparse.ArgumentParser()parser.add_argument('--weights', type=str, default='/home/Oyj/yolov5/runs/train/best.pt', help='weights path') # from yolov5/models/parser.add_argument('--img-size', nargs='+', type=int, default=[608, 608], help='image size') # height, widthparser.add_argument('--batch-size', type=int, default=1, help='batch size')parser.add_argument('--dynamic', action='store_true', help='dynamic ONNX axes')parser.add_argument('--grid', action='store_true', help='export Detect() layer grid')parser.add_argument('--device', default='0', help='cuda device, i.e. 0 or 0,1,2,3 or cpu')opt = parser.parse_args()opt.img_size *= 2 if len(opt.img_size) == 1 else 1 # expandprint(opt)set_logging()t = time.time()# Load PyTorch modeldevice = select_device(opt.device)model = attempt_load(opt.weights, map_location=device) # load FP32 modellabels = model.names# Checksgs = int(max(model.stride)) # grid size (max stride)opt.img_size = [check_img_size(x, gs) for x in opt.img_size] # verify img_size are gs-multiples# Inputimg = torch.zeros(opt.batch_size, 3, *opt.img_size).to(device) # image size(1,3,320,192) iDetection# Update modelfor k, m in model.named_modules():m._non_persistent_buffers_set = set() # pytorch 1.6.0 compatibilityif isinstance(m, models.common.Conv): # assign export-friendly activationsif isinstance(m.act, nn.Hardswish):m.act = Hardswish()elif isinstance(m.act, nn.SiLU):m.act = SiLU()# elif isinstance(m, models.yolo.Detect):# m.forward = m.forward_export # assign forward (optional)model.model[-1].export = not opt.grid # set Detect() layer grid exporty = model(img) # dry run# TorchScript exporttry:print('\nStarting TorchScript export with torch %s...' % torch.__version__)f = opt.weights.replace('.pt', '.torchscript.pt') # filenamets = torch.jit.trace(model, img)ts.save(f)print('TorchScript export success, saved as %s' % f)except Exception as e:print('TorchScript export failure: %s' % e)# ONNX exporttry:import onnxprint('\nStarting ONNX export with onnx %s...' % onnx.__version__)f = opt.weights.replace('.pt', '.onnx') # filenametorch.onnx.export(model, img, f, verbose=False, opset_version=12, input_names=['images'],output_names=['classes', 'boxes'] if y is None else ['output'],dynamic_axes={'images': {0: 'batch', 2: 'height', 3: 'width'}, # size(1,3,640,640)'output': {0: 'batch', 2: 'y', 3: 'x'}} if opt.dynamic else None)# Checksonnx_model = onnx.load(f) # load onnx modelonnx.checker.check_model(onnx_model) # check onnx model# print(onnx.helper.printable_graph(onnx_model.graph)) # print a human readable modelprint('ONNX export success, saved as %s' % f)except Exception as e:print('ONNX export failure: %s' % e)# CoreML exporttry:import coremltools as ctprint('\nStarting CoreML export with coremltools %s...' % ct.__version__)# convert model from torchscript and apply pixel scaling as per detect.pymodel = ct.convert(ts, inputs=[ct.ImageType(name='image', shape=img.shape, scale=1 / 255.0, bias=[0, 0, 0])])f = opt.weights.replace('.pt', '.mlmodel') # filenamemodel.save(f)print('CoreML export success, saved as %s' % f)except Exception as e:print('CoreML export failure: %s' % e)# Finishprint('\nExport complete (%.2fs). Visualize with https://github.com/lutzroeder/netron.' % (time.time() - t))
2.onnx转simple_onnx
所在python解析器下pip install onnx-simplifier 安装库;
执行命令 python -m onnxsim .onnx文件 best_simple.onnx
3.onnx、simple_onnx转trt
注意:需要安装 tensorrt 库及配置环境
进入bin所在路径
运行命令 ./trtexec --onnx=.onnx文件 --saveEngine=.trt文件
pytorch pt转onnx 以及 simpler—onnx方法(包含tensorrt文件转换)相关推荐
- 把PPT转WORD形式的方法及常用文件转换
一.把 PPT 转 WORD 形式的方法 1 .利用 " 大纲 " 视图 打开 PPT 演示文稿,单击 " 大纲 " ,在左侧 " 幻灯片 / 大纲 ...
- 将训练好的pytorch模型的pth文件转换成onnx模型(亲测成功)
将训练好的pytorch模型的pth文件转换成onnx模型(亲测成功) 模型转换 声明:本文原创,未经许可严禁转载,原文地址https://blog.csdn.net/hutao1030813002/ ...
- ONNX 实时graph优化方法
ONNX 实时graph优化方法 ONNX实时提供了各种图形优化来提高模型性能.图优化本质上是图级别的转换,从小型图简化和节点消除,到更复杂的节点融合和布局优化. 图形优化根据其复杂性和功能分为几个类 ...
- PyTorch模型部署:pth转onnx跨框架部署详解+代码
文章目录 引言 基础概念 onnx:跨框架的模型表达标准 onnxruntime:部署模型的推理引擎 示例代码 0)安装onnx和onnxruntime 1)pytorch模型转onnx模型 2)on ...
- DL框架之PyTorch:深度学习框架PyTorch的简介、安装、使用方法之详细攻略
DL框架之PyTorch:PyTorch的简介.安装.使用方法之详细攻略 DL框架之PyTorch:深度学习框架PyTorch的简介.安装.使用方法之详细攻略 目录 PyTorch的简介 1.pyto ...
- 1、pth转onnx模型、onnx转tensorrt模型、python中使用tensorrt进行加速推理(全网最全,不信你打我)
本文向所有亲们介绍在python当中配置tensorrt环境.使用tensorrt环境进行推理的教程,主要分为两大部分,第一部分环境配置,第二部分前向推理. 第一部分 环境配置 第一步:检查你的系统类 ...
- onnx文件及其结构、正确导出onnx、onnx读取、onnx创建、onnx修改、onnx解析器
一.onnx基本概念 1.ONNX的本质,是一种Protobuf格式文件,ONNX文件其实就是Protobuf序列化过后储存的东西.其定义是protobuf语法,语法类似json. 2.Protobu ...
- 编译ONNX模型Compile ONNX Models
编译ONNX模型Compile ONNX Models 本文是一篇介绍如何使用Relay部署ONNX模型的说明. 首先,必须安装ONNX包. 一个快速的解决方案是安装protobuf编译器,然后 pi ...
- 【ONNX】yolov5 onnx修改
什么是ONNX ONNX(Open Neural Network Exchange)简称ONNX 微软和FaceBook提出用来表示深度学习模型的开放格式. ONNX定义了一组和环境.平台无关的标准格 ...
最新文章
- 浅谈C/C++中的static和extern关键字
- 好奇了好久的「对象」,就这?
- 与其雇人杀虫不如购买杀虫剂
- anaconda学python的教程_初学 Python 者自学 Anaconda 的正确姿势是什么?
- paip.提升性能----数据库连接池以及线程池以及对象池
- 期刊论文格式是什么样的,如何排版?
- 最简单的非线性动力系统
- get请求和post请求参数中文乱码的解决办法
- mtk协议与qc协议_通用充电器快充协议QC2.0,QC3.0,MTK PE,PE+,充电识别
- 【Android】【架构】【美团猫眼模块化】
- 个人收集的mac破解软件免费下载(不断更新中)
- parent.layer.open打开的页面向上个页面传值
- _stdcall是什么?
- matlab 正负数,matlab判断函数值正负程序
- 毕设模块之一:最新版 微博网络爬虫(可登录版)
- 粒子群优化算法改进之多子群合作粒子群优化算法
- binlog redo log undo log
- 2015 上海网赛 HDU5469 树分治
- 2020届c++工程师求职准备——计划篇(2019.03.05.)
- 神州八号明日清晨发射