c#版YOLOv9视觉检测框架 基于onnxRuntime实现的YOLOv c#版 1、c#基于onnxRuntime实现 2、支持YoloV8,支持最新v9c,v9e模型 3、支持:分类、检测、分割(实例分割/语义分割)、动作、OBB旋转、关键点(动作预测/自由关键点预测) 4、支持CPU、GPU检测 5、支持集成显卡、Nvidia显卡、amd显卡的推理 6、使用电脑无需配置cuda和cudnn,无环境GPU推理 7、自带绘制图形函数,可直接返回推理结果图片 8、毫秒级推理,基本几十毫秒内出结果,几行代码即可调用,自动识别模型,无需设置任何模型参数 9、封装类中含有大量注释,从预处理到后处理,轻松学会整个推理过程 C#版 不同于python版本; 使用C#版 yolo8的源码都是封装好的,新手也可直接可以调用。 而C#版除了核心推理,剩下的所有代码都要自己写,从加载模型、到预处理、后处理,c#yolo学习资料几乎没有,这是最痛苦的。

在计算机视觉领域,YOLO系列一直是备受瞩目的目标检测框架。今天咱们来唠唠基于OnnxRuntime实现的C#版YOLOv9视觉检测框架,这可是个挺有意思的玩意儿。

一、C#基于OnnxRuntime实现

OnnxRuntime为C#实现YOLOv9提供了坚实的基础。在代码层面,咱们得先引入OnnxRuntime的相关库。比如在一个典型的C#项目里,你可以通过NuGet包管理器来安装Microsoft.ML.OnnxRuntime包。

using Microsoft.ML.OnnxRuntime;
using Microsoft.ML.OnnxRuntime.Tensors;

这里导入的命名空间,Microsoft.ML.OnnxRuntime是OnnxRuntime的核心命名空间,提供了运行Onnx模型所需的各种类和方法。Microsoft.ML.OnnxRuntime.Tensors则是处理张量数据的命名空间,在YOLOv9的推理过程中,数据的输入和输出很多时候是以张量形式存在的。

二、强大的模型支持

这个框架可不简单,它不仅支持YoloV8,还对最新的v9c,v9e模型提供支持。不管是小模型v9c追求速度,还是大模型v9e追求精度,都能轻松驾驭。

三、丰富的任务支持

  1. 分类、检测、分割:无论是简单的图像分类,到复杂的检测任务,甚至是实例分割和语义分割,这个框架都能搞定。比如说在检测任务中,代码里会涉及到对模型输出的边界框信息进行解析。
// 假设这里得到了模型输出的张量outputTensor
var boxes = new List<Rectangle>();
// 解析张量数据,提取边界框信息
for (int i = 0; i < outputTensor.Dimensions[1]; i++)
{
    float x1 = outputTensor[0, i, 0];
    float y1 = outputTensor[0, i, 1];
    float x2 = outputTensor[0, i, 2];
    float y2 = outputTensor[0, i, 3];
    boxes.Add(new Rectangle((int)x1, (int)y1, (int)(x2 - x1), (int)(y2 - y1)));
}

这里简单示意了从模型输出张量里提取边界框信息,然后转化为Rectangle对象的过程,实际应用中还会涉及到更多的后处理操作,比如非极大值抑制(NMS)来去除重复的边界框。

  1. 动作、OBB旋转、关键点:对于动作识别、OBB旋转目标检测以及关键点预测,框架同样支持。以关键点预测为例,模型输出的可能是一系列关键点的坐标信息,我们在代码里要把这些坐标信息转化为可视化的点或者线条。

四、硬件支持多样化

  1. CPU、GPU检测:不管你电脑是靠CPU运算,还是想用GPU加速,这个框架都支持。在使用GPU时,OnnxRuntime会自动利用GPU的并行计算能力来加速推理。
  2. 多种显卡支持:无论是集成显卡,还是Nvidia、AMD的独立显卡,都能用于推理。这就很友好了,不管你是轻薄本的集显用户,还是游戏本的独显玩家,都能愉快使用。
  3. 无CUDA和CUDNN的GPU推理:更赞的是,使用电脑无需配置cuda和cudnn就能进行无环境GPU推理。对于很多不想折腾复杂CUDA环境的小伙伴来说,这简直是福音。

五、便捷的绘图与快速推理

  1. 自带绘制图形函数:框架自带绘制图形函数,能直接返回推理结果图片。在代码里可能就像下面这样简单调用。
using System.Drawing;
// 假设已经有了推理结果的边界框信息boxes和对应的类别信息labels
Bitmap resultImage = DrawResults(sourceImage, boxes, labels);

这里DrawResults函数就是框架自带的绘制函数,它接受原始图像、边界框信息和类别信息,返回绘制好检测结果的图像。

  1. 毫秒级推理:推理速度相当快,基本几十毫秒内就能出结果。而且调用非常简单,几行代码即可。它还能自动识别模型,无需手动设置任何模型参数。
using var session = new InferenceSession(modelPath);
var inputTensor = new DenseTensor<float>(inputData, inputShape);
var inputs = new List<NamedOnnxValue> { NamedOnnxValue.CreateFromTensor("input", inputTensor) };
using var result = session.Run(inputs);

这里短短几行代码,就完成了模型的加载(new InferenceSession(modelPath))、输入数据的准备(new DenseTensor(inputData, inputShape))以及模型的推理(session.Run(inputs))。

六、学习曲线与代码封装

C#版和Python版可不一样。Python版yolo8源码大多封装好了,新手拿来就能用。但C#版除了核心推理,从加载模型、预处理到后处理,很多代码都得自己写。而且C#版yolo的学习资料少得可怜,这确实让人头疼。不过好在这个框架的封装类里含有大量注释,从预处理到后处理,跟着这些注释,也能轻松学会整个推理过程。

c#版YOLOv9视觉检测框架 基于onnxRuntime实现的YOLOv c#版 1、c#基于onnxRuntime实现 2、支持YoloV8,支持最新v9c,v9e模型 3、支持:分类、检测、分割(实例分割/语义分割)、动作、OBB旋转、关键点(动作预测/自由关键点预测) 4、支持CPU、GPU检测 5、支持集成显卡、Nvidia显卡、amd显卡的推理 6、使用电脑无需配置cuda和cudnn,无环境GPU推理 7、自带绘制图形函数,可直接返回推理结果图片 8、毫秒级推理,基本几十毫秒内出结果,几行代码即可调用,自动识别模型,无需设置任何模型参数 9、封装类中含有大量注释,从预处理到后处理,轻松学会整个推理过程 C#版 不同于python版本; 使用C#版 yolo8的源码都是封装好的,新手也可直接可以调用。 而C#版除了核心推理,剩下的所有代码都要自己写,从加载模型、到预处理、后处理,c#yolo学习资料几乎没有,这是最痛苦的。

总的来说,C#版YOLOv9视觉检测框架虽然在学习和代码编写上有点挑战,但它强大的功能、多样的硬件支持以及便捷的使用方式,还是非常值得咱们去探索一番的。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐