关于Pytorch导出ONNX格式模型的Tips

科技   2024-11-30 22:05   江苏  

点击上方蓝字关注我们

微信公众号:OpenCV学堂

关注获取更多计算机视觉与深度学习知识

错误信息

昨天有个课程学员跟我反馈说YOLOv5导出的ONNX格式模型,OpenCV DNN无法读取的问题,我以为是它使用的OpenCV版本不是4.7以后的,当他告诉我使用的OpenCV DNN版本是4.10.x时候,我实在无法想出是什么问题,于是今天请他把模型文件跟代码都发我了,我直接运行了一下,发现的确会有读取错误,错误信息如下:



发现的确是无法加载,但是我用本地的我之前导出来的YOLOv5的模型,发现加载没有问题,没有错误,于是我意识到肯定导出的ONNX格式的模型文件有相关的差异,用Netron打开以后对比信息如下:


对比发现只有这两个地方不一样,查找官方资料说法如下:

意思是导出的模型不是JIT模式,但是我不知道main graph是怎么导出来的,是不是Pytorch2.4已经支持这种模式导出了,

导出ONNX

从Pytorch导出ONNX格式模型都是基于JIT模式(推理模式)如果模型不是JIT模式,Pytorch的ONNX导出函数会先内部把模型转换为JIT模式,然后再导出ONNX格式模型。这个就是Pytorch导出ONNX格式的Tracing and Scripting过程,官方的解释原文如下:


代码示例:


OpenCV4系统化学习


深度学习系统化学习

推荐阅读

OpenCV4.8+YOLOv8对象检测C++推理演示

ZXING+OpenCV打造开源条码检测应用

攻略 | 学习深度学习只需要三个月的好方法

三行代码实现 TensorRT8.6 C++ 深度学习模型部署

实战 | YOLOv8+OpenCV 实现DM码定位检测与解析

对象检测边界框损失 – 从IOU到ProbIOU

初学者必看 | 学习深度学习的五个误区

OpenCV学堂
三本书《Java数字图像处理-编程技巧与应用实践》、《OpenCV Android开发实战》、《OpenCV4应用开发-入门、进阶与工程化实践》作者。OpenCV实验大师平台 软件作者,OpenCV开发专家、OpenCV研习社创始人。
 最新文章