yolov5目标检测和QT 6.6.0 基于OpenCV加载yolov5.onnx模型文件实现目标检测

25 篇文章 1 订阅
20 篇文章 7 订阅

目录

1.加载转换为ONNX的PyTorch官方预训练目标检测模型问题讨论

2.加载转换为ONNX的yolov5官方预训练目标检测模型问题讨论

报错问题1:

报错问题2:

3.yolov5目标检测模型pt转换为ONNX模型文件

4.QT 6.6.0 基于OpenCV4.5.5加载yolov5的ONNX文件目标检测

第一步:加载模型

第二步:图像预处理(重点)

第三步:输入模型检测

第四步:坐标值转换(重点)

第五步:NMS冗余坐标框过滤(重点)

第六步:坐标相对输入图像大小映射到实际图像大小(重点)

第七步:绘制坐标框相关信息

最后可选的实时检测


B站视频讲解

B站视频讲解

QtOpenCV_ONNX源码

yolov5_onnx源码


QT初学案例教程
QT6.6.0实现打开电脑摄像头或其他的外接摄像头(实现拍照功能)
QT6.6.0实现简单的录音器
QT6.6.0实现一个简单的视频和音频播放器
QT6.6.0实现简单的视频录制(包含语音录制)器
QT6.6.0关于QMediaMetaData功能以及列子说明使用方法
QT6.6.0实现QtCamera功能(拍照,录像以及图像和视频的相关配置)
T6.6.0实现更好的视频播放器(前期改进)
QT6.6.0实现图表如饼图,柱状图,散点图以及盒图等的基本使用
QT6.6.0实现客户端Socket编程以及socket测试软件通信
QT6.6.0 实现服务端Server和多个客户端Client通信以及socket测试软件通信
QT6.6.0 实现QNetworkAccessManager的基本应用以及其拓展使用
QT6.6.0 实现服务端Server和多个客户端Client互相发送文件信息
QT6.6.0和QT6.0以下的版本实现FTP文件上传和下载(过程详解)
QT6.6.0实现QNetworkInterface网络接口,QHostAddress网络地址IP以及域名解析等相关信息查询。
QT6.6.0基于QTcpSocket和QTcpServer实现多个客户端群聊
QT6.6.0实现基于UDP协议的简单通信(过程详解)
QT 6.6.0基于UDP协议实现广播和多播机制(过程详解)
QT 6.6.0基于UDP协议实现群聊功能(过程详解)
QT 6.6.0中OpenCV两种环境的配置方法以及基本使用例子
QT 6.6.0 中基于OpenCV的图像变换以及基于鼠标点击移动事件的图像绘制
QT 6.6.0 基于OpenCV对图像进行旋转,缩放和裁剪等操作
QT 6.6.0 基于OpenCV实现图像风格的改变(add和subtract)
PyTorch 训练之后的网络模型.pth转.onnx文件并对图像进行预测
QT 6.6.0 基于OpenCV加载.pth模型文件转换之后的ONNX模型文件,并且实现图像分类
QT 6.6.0 基于OpenCV中的cv::dnn::ClassificationModel实现图像分类
目标检测
PyTorch实现一个简单的图像分类(代码详细)
PyTorch 训练之后的网络模型.pth转.onnx文件并对图像进行预测
使用pytorch实现预训练模型迁移学习中的目标检测
PyTorch加载预训练目标检测模型实现物体检测,同时将预训练模型转换为ONNX模型文件(过程详解)


        本文最初的目的是基于PyTorch官方提供的目标检测预训练模型转换为ONNX之后应用到QT中,但是在将ONNX模型文件应用到QT中存在很多问题,并且opencv官方也有针对该问题进行讨论,目前并没有得到一个可行的解决方案。因此,为了达到在QT中加载目标检测模型ONNX的目的,最终选择转换yolov5目标检测模型到ONNX,然后应用到QT中,但是还是存在很多问题,以下将会讨论这些问题。建议读者可以先去看之前的几篇相关博文。

        说实话,写这篇博文感觉很不容易,中间遇到了很多的问题,而且是目前并没有解决方案的,只能转换问题,便于解决问题,我相信读者就算去复现这篇博文的过程也不是很容易,特别是环境的问题,希望大家坚持跟着这篇博文做完所有的过程,最终将会有不小的收获。

1.加载转换为ONNX的PyTorch官方预训练目标检测模型问题讨论

注:加载FCOS_Resnet50_FPN的ONNX模型报错结果,相关opencv官方讨论OpenCV官方问题讨论 截至目前官方并没有提供一个可行的解决方案。因此,最终转向下面的方案解决问题。

2.加载转换为ONNX的yolov5官方预训练目标检测模型问题讨论

最终的库版本选择

torch==1.11.0  torchvision==0.12.0  torchaudio==0.11.0  opencv==4.5.5

qt==6.6.0(不一定是这个版本)  

报错问题1:

注:开始使用opencv==4.7.0或者更高版本报以上错误,针对以上报错,yolov5官方并没有给出可行的解决方案,建议使用4.5.5版本,这样问题好解决一点。

报错问题2:

注:使用的opencv==4.5.5报以上错误,yolov5官方讨论给出的可行解决方案链接(更改torch版本)https://github.com/ultralytics/yolov5/issues/10665

3.yolov5目标检测模型pt转换为ONNX模型文件

        写了一个对图像和实时检测的demo代码:yolov5图像和实时检测

        关于yolov5目标检测模型pt转换为ONNX模型文件,官方已经在export中提供了相关的代码,读者直接使用即可,只需要修改参数权重文件weight路径以及配置文件,opset = 11以及include参数为onnx模式,图像分辨率(默认为640 x 640)。

4.QT 6.6.0 基于OpenCV4.5.5加载yolov5的ONNX文件目标检测

第一步:加载模型

第二步:图像预处理(重点)

第三步:输入模型检测

第四步:坐标值转换(重点)

第五步:NMS冗余坐标框过滤(重点)

第六步:坐标相对输入图像大小映射到实际图像大小(重点)

第七步:绘制坐标框相关信息

最后可选的实时检测

参考代码:https://github.com/doleron/yolov5-opencv-cpp-python/blob/main/cpp/yolo.cpp

QT6.6.0加载yolov5的ONNX模型文件进行目标检测

目标检测拓展应用
两款IP Camera+YOLOV3进行目标检测(手机摄像头作为电脑摄像头使用)
使用pytorch实现预训练模型迁移学习中的目标检测
使用MobileNet_SSD进行目标检测
Opencv实现目标检测
目标检测算法(开端)
图像分类,图像识别,目标检测之间的区别
基于darknet框架+yolov3训练自己的数据集
windows平台使用CMake工具对darknet的编译以及安装过程+yolov3+图像检测+摄像头检测+视频检测+手机作为摄像头进行检测(详解)
两款IP Camera+YOLOV3进行目标检测(手机摄像头作为电脑摄像头使用)
YOLO-V3实时检测实现(opencv+python实现)——改进——>更加的易懂
YOLO-V3实时检测实现(opencv+python实现)
  • 15
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值