当前位置: 首页 > news >正文

YOLOv8 onnx 部署

本文是在win10系统下进行yolov8目标检测推理的过程记录。
yolov8 已经集成到OpenCV,可以通过两种方式调用,一种是直接通过OpenCV 调用,另外一种是通过onnx runtime(ort)调用。

1、安装cuda 、opencv 等依赖库,具体可以参考

Win10环境下yolov8快速配置与测试-详细

2、安装onnx runtime 库

不同版本onnx 库的函数头文件,函数实现方式不一样,这里我们用的是1.16.0
链接
在这里插入图片描述
本文使用的是onnxruntime-win-x64-gpu-1.16.0。下载后同样解压至本地D:\software\onnxruntime-win-x64-gpu-1.16.0,并添加到环境变量。

Visual Studio配置Onnxruntime的步骤: 参考Opencv的配置方式,将D:\software\onnxruntime-win-x64-gpu-1.16.0\include添加至头文件目录,将D:\software\onnxruntime-win-x64-gpu-1.16.0\lib添加至库文件目录,将onnxruntime.lib添加至依赖项。

在运行VS项目以后,会生成Release或Debug文件夹,需要将D:\software\onnxruntime-win-x64-gpu-1.16.0\lib目录下的dll文件拷贝至Release或Debug文件夹中,否则程序会报错。

3 git

本文git 参考

4 如何基于推理自己.onnx 模型

4.1 模型转换

model.export(format='onnx', dynamic=False,opset=12)  # ort  第2、3个参数禁止修改
model.export(format="onnx", opset=12, simplify=True, dynamic=False, imgsz=640) # opencv

如果是在别的电脑上训练的.pt 转换完.onnx 之后用opencv 推理可能会遇到如下报错,此时,只需要在原有.pt 模型的基础上再训练一个epoch,再在新的.pt 模型上转换.onnx 就可以解决该问题了
在这里插入图片描述
导出onnx 后 用netron 查看网络结构,在这里我们只检测输入和输入,基本信息如下:
在这里插入图片描述

输入输出如下:
可以看到我们的

输入尺寸是1x3x640x640;

输出是1x8x8400;

其中 8是4(cx,cx,w,h)+4(4classes,我们有4个类别);
8400=80x80+40x40+20x20,是yolov8 三个不同尺寸的输出。
在这里插入图片描述

4.2 OpenCV部分代码简单解释

1、选择opencv模式
2、设置classes的类别
在这里插入图片描述
3、class 类别如下
在这里插入图片描述

4、在yolov5v8_dnn.h 这个头文件里改变classes的类别(数量要正确)。

在这里插入图片描述

http://www.lryc.cn/news/468025.html

相关文章:

  • 在文件里引用目录文件下的静态资源图片不显示
  • vue使用 jsplumb 生成流程图
  • 攻坚金融关键业务系统,OceanBase亮相2024金融科技大会
  • 《纳瓦尔宝典:财富和幸福指南》读书随笔
  • C++ | STL | 侯捷 | 学习笔记
  • C函数基础
  • html和css实现页面
  • Github_以太网开源项目verilog-ethernet代码阅读与移植(八)——移植工程分享
  • 【大模型实战篇】大模型分词算法BPE(Byte-Pair Encoding tokenization)及代码示例
  • 低功耗4G模组LCD应用示例超全教程!不会的小伙伴看这篇就够了!
  • Java while语句练习 C语言的函数递归
  • illustrator免费插件 截图识别文字插件 textOCR
  • 提升数据管理效率:ETLCloud与达梦数据库的完美集成
  • 头歌——人工智能(搜索策略)
  • gorm.io/sharding改造:赋能单表,灵活支持多分表策略(下)
  • 域渗透AD渗透攻击利用 MS14-068漏洞利用过程 以及域渗透中票据是什么 如何利用
  • C++进阶-->继承(inheritance)
  • 可视化项目 gis 资源复用思路(cesium)
  • SQL实战测试
  • Java 基础教学:基础语法-变量与常量
  • vue3使用element-plus手动更改url后is-active和菜单的focus颜色不同步问题
  • 每天五分钟深度学习框架pytorch:从底层实现一元线性回归模型
  • 编辑器加载与AB包加载组合
  • 【c++】vector中的back()函数
  • [分享] SQL在线编辑工具(好用)
  • element-ui隐藏表单必填星号
  • 自动驾驶系列—激光雷达点云数据在自动驾驶场景中的深度应用
  • C#删除dataGridView 选中行
  • K8S调度不平衡问题分析过程和解决方案
  • Python中类、继承和方法重写的使用