Pytorch学习系列之九:OpenCV加载onnx模型进行推理

本文介绍了在对推理速度要求不高的情况下,如何使用OpenCV的DNN模块进行PyTorch模型的ONNX推理。首先解释了为何选择OpenCV而非其他推理套件,并详细阐述了前提条件,包括需要的OpenCV版本和已转换的ONNX模型。接着,通过代码实战部分,展示了如何处理图像预处理,以匹配网络模型的输入要求,并提供了自定义的BlobFromNormalizeRGBImage函数来实现与PyTorch预处理相同的效果。
摘要由CSDN通过智能技术生成

0. 为什么选着OpenCV进行推理

 

       按道理,使用OpenVINO推理套件(引擎)进行优化加速推理,或者其他推理套件进行推理,比如TensorRT等等。OpenVINO是英特尔推出的一款全面的工具套件,用于快速部署应用和解决方案,支持计算机视觉的CNN网络结构超过150余种。

       但引入推理套件(引擎)势必带来额外的工作量,在对推理速度要求不高的情况下,使用OpenCV自带的DNN模块已经足够满足需求了,且能做到轻量化部署,减少对第三方平台的依赖

随着版本的更迭,OpenCV的版本当前已经来到了4.5.4,其DNN模块是越来完善了。

1. 前提

# python-opencv版本:4.5.3

# 已经完成分类网络的训练,并将pytorch网络模型转换/保存为onnx文件格式。


                
OpenCV是一个广泛应用于计算机视觉和图像处理的开源库,而ONNX(Open Neural Network Exchange)是一个开放的深度学习推理框架。Python则是一种常用的编程语言。结合这三个工具,我们可以使用Python中的OpenCV库来进行ONNX模型推理。 首先,我们需要使用ONNX模型ONNX是一种跨平台、可移植的深度学习模型格式,并且支持多种深度学习框架。我们可以使用深度学习框架(如PyTorch或TensorFlow)来训练模型,并将其导出为ONNX格式。 然后,我们可以使用OpenCV库中的函数来加载ONNX模型,并进行图像推理。在OpenCV中,我们可以使用cv2.dnn模块来实现这一功能。首先,我们需要使用cv2.dnn.readNetFromONNX函数加载ONNX模型并得到一个推理网络。然后,我们可以使用该网络对输入图像进行推理,得到输出结果。 推理的过程通常涉及一些预处理和后处理的步骤。在输入图像进入推理网络之前,我们可能需要对其进行预处理,例如调整大小、归一化等。在得到输出结果后,我们可能需要执行一些后处理操作,例如解码、过滤或可视化等。在OpenCV中,我们可以使用一系列函数来执行这些步骤。 总结而言,使用Python中的OpenCV库来进行ONNX模型推理是一种高效且方便的方法。它允许我们使用ONNX模型进行图像处理和分析,并集成到应用程序中以实现各种计算机视觉和图像处理任务。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

thequitesunshine007

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值