功能特色

  • 支持所有YOLO任务:目标检测、图片分类、实例分割、姿势估计、OBB
  • 支持多种部署方案:CPU, CUDA / TensorRT, OpenVINO, CoreML, DirectML
  • 可以批量检测图片,性能大幅优于单线程串行执行
  • 图像处理使用OpenCVSharp
  • 推理引擎:ONNX Runtime 是一个跨平台的机器学习模型加速器

示例Demo

Object Detection Image Classification 

bus_detect

det_000000270579

cls_000000063409

cls_000000000009

Instance Segmentation

res_seg_zidane

res_seg_02

Pose Estimation

res_pose_01

res_pose_02

OBB Detection

res_obb_01

res_obb_02

使用示例

1 导出模型为onnx格式

复制代码

from ultralytics import YOLO

# Load a model
model = YOLO('path/to/best.pt')

# Export the model to ONNX format
model.export(format='onnx')

复制代码

2 YoloSharpOnnx初始化

安装Nuget 包YoloSharpOnnx, OnnxRuntime, OpenCvSharp4.runtime

CPU推理

dotnet add package YoloSharpOnnx
dotnet add package OpenCvSharp4.runtime.win
dotnet add package Microsoft.ML.OnnxRuntime
using YoloSharp yolo = new YoloSharp(new ExecutionProviderCPU("yolo11n.onnx"));

CoreML推理

dotnet add package YoloSharpOnnx
dotnet add package OpenCvSharp4.runtime.osx.10.15-x64
dotnet add package Microsoft.ML.OnnxRuntime
using YoloSharp yolo = new YoloSharp(new ExecutionProviderCoreML("yolo11n.onnx"));

CUDA/TensorRT推理

dotnet add package YoloSharpOnnx
dotnet add package OpenCvSharp4.runtime.win
dotnet add package Microsoft.ML.OnnxRuntime.Gpu.Windows
using YoloSharp yolo = new YoloSharp(new ExecutionProviderCUDA("yolo11n.onnx",0));
using YoloSharp yolo = new YoloSharp(new ExecutionProviderTensorRT("yolo11n.onnx",0));

DirectML推理

dotnet add package YoloSharpOnnx
dotnet add package OpenCvSharp4.runtime.win
dotnet add package Microsoft.ML.OnnxRuntime.DirectML
using YoloSharp yolo = new YoloSharp(new ExecutionProviderDirectML("yolo11n.onnx",0));

OpenVINO Inference

dotnet add package YoloSharpOnnx
dotnet add package OpenCvSharp4.runtime.win
dotnet add package Intel.ML.OnnxRuntime.OpenVino
using YoloSharp yolo = new YoloSharp(new ExecutionProviderOpenVINO("yolo11n.onnx", IntelDeviceType.NPU));

基本的API,加载模型并进行预测

复制代码

using Mat image = Cv2.ImRead("bus.jpg");
using YoloSharp yolo = new YoloSharp(new ExecutionProviderCPU("yolo11n.onnx"));

List<DetectionResult> res = yolo.RunDetect(image);

yolo.DrawDetections(image,res);
Cv2.ImWrite("bus_res.jpg", image);

string printString = res.Summary();
Console.WriteLine(printString);

复制代码

性能测试API

复制代码

using Mat image = Cv2.ImRead("bus.jpg");
     
using YoloSharp yolo = new YoloSharp(new ExecutionProviderDirectML("yolo11n.onnx",1));
var res = yolo.RunDetectWithTime(item.FullName);

Console.WriteLine($"{res.ToString()}, {res.SpeedResult.ToString()}");

复制代码

配置参数

复制代码

using Mat image = Cv2.ImRead("bus.jpg");
using YoloSharp yolo = new YoloSharp(new ExecutionProviderCPU("yolo11n.onnx"));
yolo.YoloConfiguration.IoU = 0.4f;
yolo.YoloConfiguration.Confidence = 0.3f;
yolo.YoloConfiguration.ResizeAlgorithm = InterpolationFlags.Linear;
yolo.YoloConfiguration.ImageExtsBatch = [".jpg", ".png"];
var res = yolo.RunDetect(image);

复制代码

批量处理API

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐