栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

转Onnx实现(Unet的模型转Onnx)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

转Onnx实现(Unet的模型转Onnx)

主要是使用torch.onnx.export()这个方法来实现。
Unet的实现参考:
链接: 憨批的语义分割重制版6——Pytorch 搭建自己的Unet语义分割平台_Bubbliiiing的学习小课堂-CSDN博客.
这位博主写的很详细,b站还有实现视频,手把手教学!!!

Onnx转换实现代码

import onnx
import torch.onnx
from unet import Unet
unet=Unet()
print(unet)
model = torch.load('D:/PycharmProjects/test/unet-pytorch-main/model_data/Epoch19-Total_Loss0.5564-Val_Loss0.5045.pth',map_location='cpu')
unet.net.load_state_dict(model)
unet.net.eval()
print(unet.net)
print(torch.__version__)
#batch_size:1,model_image_size:3*512*512
dummy_input = torch.randn(1,3, 512, 512)  # 你模型的输入   NCHW
#关键参数 verbose=True 会使导出过程中打印出该网络的可读表示
torch.onnx.export(unet.net, dummy_input,'unetmodel.onnx',verbose=True,opset_version=11)
onnx_model = onnx.load('./unetmodel.onnx')  # load onnx model
onnx.checker.check_model(onnx_model)  # check onnx model
print(onnx.helper.printable_graph(onnx_model.graph))  # print a human readable model

注:运行出错
这是我在刚开始运行的时候出现的问题。

 完整错误信息

D:Anaconda3envssupergluelibsite-packagestorchnnfunctional.py:718: UserWarning: Named tensors and all their associated APIs are an experimental feature and subject to change. Please do not use them for anything important until they are released as stable. (Triggered internally at  ..c10/core/TensorImpl.h:1156.)
  return torch.max_pool2d(input, kernel_size, stride, padding, dilation, ceil_mode)
D:Anaconda3envssupergluelibsite-packagestorchonnxsymbolic_helper.py:375: UserWarning: You are trying to export the model with onnx:Upsample for onNX opset version 9. This operator might cause results to not match the expected results by PyTorch.
ONNX's Upsample/Resize operator did not match Pytorch's Interpolation until opset 11. Attributes to determine how to transform the input were added in onnx:Resize in opset 11 to support Pytorch's behavior (like coordinate_transformation_mode and nearest_mode).
We recommend using opset 11 and above for models using this operator. 
  "" + str(_export_onnx_opset_version) + ". "
D:Anaconda3envssupergluelibsite-packagestorchonnxsymbolic_helper.py:243: UserWarning: onNX export failed on upsample_bilinear2d because align_corners == True not supported
  warnings.warn("onNX export failed on " + op + " because " + msg + " not supported")

原因:
转换ONNX使用的版本较低,PyTorch.ONNX不支持。另外,参考源码, torch.onnx.export 默认使用 opset_version=9

解决办法:
在export中设定opset_versiond的值为11。

torch.onnx.export(unet.net, dummy_input,'unetmodel.onnx',verbose=True,opset_version=11)

paddle2.0模型转onnx_juluwangriyue的博客-CSDN博客_paddle转onnx自己开始用paddle时就是2.0版本了,所以不关心之前的版本。1、查看本地有没有安装onnx进入paddle 环境conda list或者pip list如果没有安装onnx则先安装onnx,onnx版本匹配是一个令人头疼的问题。暂且不考虑版本问题直接使用下面的命令安装。pip install onnx2、安装paddle2onnxpip install paddle2onnx3、导出onnx模型导出onnx模型的大致步骤如下:import osimport timehttps://blog.csdn.net/juluwangriyue/article/details/117076474?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-5.pc_relevant_antiscan&spm=1001.2101.3001.4242.4&utm_relevant_index=8

unet++ pytorch模型转换为onnx模型并实际测试_黄小黄的窝-CSDN博客_unet转onnx书接上回,上次在安装好openvino环境之后,以及自己在了解完其相关的处理流程之后,现在将自己的模型转换为onnx格式以便后续转换为openvino的中间件。直接上代码:import osimport cv2import onnxruntimeimport torchfrom albumentations import Composefrom albumentations.augmentations import transformsfrom torch.utils.data importhttps://blog.csdn.net/weixin_43218120/article/details/119675914?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_paycolumn_v3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_paycolumn_v3&utm_relevant_index=2

Paddle2.0:ONNX模型的导出和部署_jm_12138的博客-CSDN博客_paddle2onnx引入除了动态图转静态图的方式导出推理模型之外Paddle2.0中也正式内置了ONNX模型的导出功能本文将通过一个实例演示一下如何将Paddle模型导出为ONNX模型并在ONNXRunTime上完成模型的推理预测onNXOpen Neural Network Exchange (ONNX) ,是一个机器学习模型的开放标准,方便不同框架之间进行模型交换你可以在很多支持ONNX模型导出的框架上构建模型,然后导出ONNX模型进行预测部署Paddle2ONNX目前Paddle导出ONNXhttps://blog.csdn.net/jm_12138/article/details/112396913?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-0.pc_relevant_antiscan&spm=1001.2101.3001.4242.1&utm_relevant_index=3

Pytroch转Onnx实现(Unet的模型转Onnx)_Done___的博客-CSDN博客_unet转onnx主要是使用torch.onnx.export()这个方法来实现。Unet的实现参考:链接: https://blog.csdn.net/weixin_44791964/article/details/108866828.这位博主写的很详细,b站还有实现视频,手把手教学!!!Onnx转换实现代码import onnximport torch.onnxfrom unet import Unetunet=Unet()print(unet)model = torch.load('D:/Pychahttps://blog.csdn.net/Done___/article/details/118998164?spm=1001.2101.3001.6650.7&utm_medium=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-7.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-7.pc_relevant_default&utm_relevant_index=11

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/753190.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号