将yolov8权重文件转为onnx格式并在c#中使用
  TEZNKK3IfmPf 2024年05月31日 28 0

在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格式进行导出

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

 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的其他方法

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

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

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");
    }
}
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2024年05月31日 0

暂无评论

TEZNKK3IfmPf