[转载]C#简单使用Yolov5的Onnx格式模型进行目标检测

方案

1、创建一个C# DotNet 8 控制台项目[可千万注意不要选了DotNetFramework框架哦],命名为TestNugetCpuOnnx,并生成解决方案,产生bin目录

2、 在Nuget中安装我的包BingLing.Yolov5Onnx.Cpu 

由于这个是可以跨平台调用的,我并没有把运行时一起打包过去,我当前示例的系统是windows,因此我还需要安装EmguCv.runtime.windows

3、准备好我们的onnx文件和一个json格式的配置文件 ,如果你没有的话,可以到我的码云里下载

【BingLing.Yolov5Onnx.Cpu: C#使用cpu使用 yolov5 模型的onnx格式文件进行推理,简化你的编码 (gitee.com)】

下载完毕后将其中的yolov5s.onnx,以及yolov5_onnx.json这两个文件一起放到bin/Debug/net8.0这个目录下。值得一提的是,你还需要准备一张图片,修改名字为down.jpeg也放到这个目录下,如果找不到,直接从我的博客下也行。

4、 修改Program.cs代码内容为如下

using BingLing.Yolov5Onnx.Cpu;
using Emgu.CV.Structure;
using Emgu.CV;
using System.Collections.Concurrent;
 
namespace TestNugetCpuOnnx
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Yolov5Onnx yolov5Onnx = new("yolov5_onnx.json");
            Mat mat = new("down.jpeg");
            MCvScalar color = new(255, 0, 0);
            ConcurrentDictionary<int, List<Prediction>> dictionary = yolov5Onnx.DetectAllOut(mat);
 
            foreach (List<Prediction> predictions in dictionary.Values)
            {
                foreach (var prediction in predictions)
                {
                    int x = (int)((prediction.X - prediction.Width / 2));
                    int y = (int)((prediction.Y - prediction.Height / 2));
                    int width = (int)(prediction.Width);
                    int height = (int)(prediction.Height);
                    CvInvoke.Rectangle(mat, new System.Drawing.Rectangle(x, y, width, height), color);
                    CvInvoke.PutText(mat, $"k:{prediction.Kind}", new System.Drawing.Point(x, y + 20), Emgu.CV.CvEnum.FontFace.HersheyDuplex, 1, color);
                    CvInvoke.PutText(mat, $"c:{prediction.Confidence:0.00}", new System.Drawing.Point(x, y + 50), Emgu.CV.CvEnum.FontFace.HersheyDuplex, 1, color);
                }
            }
            CvInvoke.Imshow("mat", mat);
            CvInvoke.WaitKey(0);
            CvInvoke.DestroyAllWindows();
        }
    }
}

5、运行程序,查看结果,其中k为kind,c为confidence 

6、安装EmguCv.runtime.ubuntu在linux系统下运行结果

注意发布成linux可执行程序,发布方法前面博客已经论述过,这里不再重复 

原文链接

C#简单使用Yolov5的Onnx格式模型进行目标检测 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLOv8是一个用于目标检测的深度学习模型,而ONNX Runtime是用于运行ONNX模型的高性能推理引擎。YOLOv8 ONNX Runtime C的意思是将YOLOv8模型使用ONNX Runtime C库进行推理。 YOLOv8模型目标检测任务中广泛应用的一种模型,它具有精度高、速度快的优点。ONNX Runtime是一个由微软开发的轻量级高性能推理引擎,它支持多种硬件平台和操作系统,并能够实现快速、高效的模型推理。通过将YOLOv8模型转化为ONNX模型,并使用ONNX Runtime C库进行推理,可以在不同的平台上实现高性能的目标检测任务。 使用YOLOv8 ONNX Runtime C的流程大致如下: 1. 将YOLOv8模型转化为ONNX模型。可以使用工具将训练好的YOLOv8模型转化为ONNX格式,以便在ONNX Runtime中运行。 2. 使用ONNX Runtime C库加载和初始化ONNX模型。在C语言中,可以调用相应的函数加载和初始化ONNX模型,准备进行推理。 3. 输入图像数据。传递待检测的图像数据作为输入,以便进行目标检测。 4. 进行推理。调用ONNX Runtime C库提供的推理函数,对输入图像进行目标检测,并获得检测结果。 5. 处理和使用检测结果。根据需求,对检测结果进行后续处理或者使用,如绘制边界框、计算物体分类概率等。 6. 释放资源。完成目标检测任务后,及时释放ONNX Runtime C库占用的资源。 通过使用YOLOv8 ONNX Runtime C,我们可以在嵌入式设备、移动设备、桌面计算机等多个平台上高效地进行目标检测任务。这种结合利用了YOLOv8和ONNX Runtime的优势,可以在满足实时检测需求的同时,保证检测的准确性和性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值