YoloDotNet

YoloDotNet YoloDotNet NET 8

2 分钟阅读

YoloDotNet

YoloDotNet 是一个基于 .NET 8 的 C# 实现,用于实时检测图像和视频中的物体。它利用了 ML.NET 和 ONNX runtime,并支持通过 CUDA 进行 GPU 加速。

YoloDotNet 支持的功能:
  • 分类 (Classification) : 对图像进行分类。
  • 物体检测 (Object Detection) : 在单个图像中检测多个物体。
  • 旋转边界框检测 (OBB Detection) : 类似于一般的物体检测,但使用旋转边界框。
  • 分割 (Segmentation) : 使用像素掩码分割检测到的物体。
  • 姿态估计 (Pose Estimation) : 识别图像中特定关键点的位置。
使用场景:
  1. 实时监控 : 在视频流中,实时检测和跟踪物体,例如监控摄像头中的人员和车辆。
  2. 图像分类 : 对静态图像进行分类,可以用于图像库管理或内容识别。
  3. 自动驾驶 : 检测道路上的车辆、行人和其他障碍物。
  4. 无人机监控 : 从无人机拍摄的图像中检测和分类感兴趣的物体,如建筑、车辆等。
  5. 工业自动化 : 在生产线中检测和识别产品的状态和位置。
  6. 姿态评估 : 在运动或医疗应用中,用于分析人体姿态。
安装和使用:
  1. 安装 YoloDotNet 包 :

dotnet add package YoloDotNet

  1. 安装 CUDA(可选) :
  • 下载安装 CUDA v11.8
  • 下载并解压 cuDNN v8.9.7,将 bin 文件夹中的 DLL 复制到 CUDA bin 文件夹。
  • 将 CUDA bin 文件夹路径添加到环境变量 Path 中。
  1. 导出 Yolov8 模型为 ONNX 格式 :
  • 参考 Ultralytics 的文档导出模型。
  1. 示例 - 图像推理 :

using YoloDotNet; using SixLabors.ImageSharp; using SixLabors.ImageSharp.PixelFormats;

// 加载 ONNX 模型 using var yolo = new Yolo(@“path\to\your_model.onnx”);

// 加载图像 using var image = Image.Load(@“path\to\image.jpg”);

// 执行分类操作 var results = yolo.RunClassification(image, 5);

image.Draw(results); image.Save(@“path\to\save\image.jpg”);

  1. 示例 - 视频推理 :
  • 下载 FFmpeg,并将其添加到环境变量 Path 中。

using SixLabors.ImageSharp; using YoloDotNet;

// 加载 ONNX 模型 using var yolo = new Yolo(@“path\to\your_model.onnx”);

// 视频选项 var options = new VideoOptions { VideoFile = @“path\to\video.mp4”, OutputDir = @“path\to\output\folder” };

// 执行分类操作 var results = yolo.RunClassification(options, 5);

YoloDotNet 提供了强大的图像和视频分析功能,适用于各种计算机视觉应用。其可定制性和 GPU 加速支持使其成为处理大规模图像和视频数据的理想选择。