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

将yolov8权重文件转为onnx格式并在c#中使用

yolo模型转ONNX

在yolov8中,我们将训练结果的.pt权重文件转换为onnx格式只需要使用ultralytics库中的YOLO类,使用pip安装ultralytics库,然后执行下面python代码

from ultralytics import YOLO# 加载YOLOv8模型
model = YOLO("best.pt")# 将模型导出为ONNX格式
success = model.export(format="onnx", simplify=True)# 检查是否成功导出
assert success

 此程序就会加载当前根目录下的best.pt并转换为ONNX格式进行导出

 C#中使用ONNX

创建一个.NET 8.0的项目,因为自己写比较繁琐,我们直接使用封装好的Nuget包YoloDotNet

地址:NuGet Gallery | YoloDotNet 1.2.0

安装Nuget包命令

NuGet\Install-Package YoloDotNet -Version 1.2.0

这个包比较大,安装时间可能有点久,耐心等待!!!

 安装完成后,我们通过如下代码读取ONNX文件,下面代码中创建yolo实例有两个构造函数的参数,第一个就是onnx文件的地址,第二个就是你是否使用GPU来进行识别,如果你的电脑有装英伟达的GPU并且按照了cuda,就设置为true。我的电脑没有,所有只能使用cpu来跑,因此我设置为false

new Yolo(@"D:\best.onnx", false);

 然后就是读取你的图片,调用yolo的RunObjectDetection,将图片作为第一个参数,第二个参数就是识别的阈值

using var image = Image.Load<Rgba32>(@"D:\testphoto\1.jpg");
var results = yolo.RunObjectDetection(image, 0.3); 

 如果你的模型不是目标检测,而是图像分类或者其他,可以使用yolo的其他方法

 然后就是将识别图片结果保存本地了,下面是示例的所有代码

class Program
{public static void Main(string[] args){using var yolo = new Yolo(@"D:\best.onnx", false);using var image = Image.Load<Rgba32>(@"D:\testphoto\1.jpg");var results = yolo.RunObjectDetection(image, 0.3); image.Draw(results);image.Save(@"D:\testphoto\2.jpg");}
}

 下图是我识别出的结果

 这个模型是我上一篇博客中使用python网络爬虫爬取的400多张皮卡丘图片继续标注后,训练出来的模型,我已经将原图和标注文件已经上面演示的.pt权重文件和onnx文件都上传到资源中,有需要的可自取👇

 https://download.csdn.net/download/weixin_65243968/88856521

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

相关文章:

  • 在Spring Boot启动时禁止自动配置数据源相关的组件、@SpringBootApplication
  • 程序人生:不积跬步无以致千里
  • 通过二叉树例题深入理解递归问题
  • 【Android 协程常见用法】
  • python 进程笔记一 (概念+示例代码)
  • 各中间件数据库默认访问端口总结
  • 鲲鹏arm64架构下安装KubeSphere
  • python 函数-02-返回值注释格式
  • 【前端素材】推荐优质后台管理系统Upcube平台模板(附源码)
  • 可视化 RAG 数据 — 用于检索增强生成的 EDA
  • 数学建模论文、代码百度网盘链接
  • mysql 迁移-data目录拷贝方式
  • 学习 LangChain 的 Passing data through
  • C# OpenVINO PaddleSeg实时人像抠图PP-MattingV2
  • 【Android 11】AOSP Settings WIFI随机MAC地址功能
  • dmrman备份还原
  • 网页403错误(Spring Security报异常 Encoded password does not look like BCrypt)
  • 单细胞多组学整合与对齐的计算方法
  • 33.openeuler OECA认证模拟题16
  • javaScript数组去重的几种实现方式——适用非引用数据去重
  • Nexus Repository Manager
  • Python世界之运算符
  • 蓝桥杯倒计时47天!DFS基础——图的遍历
  • 体验LobeChat搭建私人聊天应用
  • ClickHouse 指南(三)最佳实践 -- 主键稀疏索引
  • 【Nginx】Nginx配置反向代理 和 https
  • ChatGPT第七讲
  • Chapter 2 of Effective C++ (构造/析构/赋值运算)
  • Android学习笔记 service启动方式
  • Redis 工具类 与 Redis 布隆过滤器