C 做目标检测怎么入门最快?10 分钟跑通 YoloDotNet 实战指南
C# 做目标检测怎么入门最快10 分钟跑通 YoloDotNet 实战指南【免费下载链接】YoloDotNetYoloDotNet - A C# .NET 8.0 project for Classification, Object Detection, OBB Detection, Segmentation and Pose Estimation in both images and live video streams.项目地址: https://gitcode.com/gh_mirrors/yo/YoloDotNetYoloDotNet 是一个基于 C# .NET 8.0 的开源目标检测库无需 Python 环境、不依赖 OpenCV就能在图片和实时视频流上完成目标检测、分割、姿态估计等任务。本文从一个真实场景出发带你 10 分钟跑通第一次目标检测。先验收成果一张图能圈出什么想象一下你拍下一张街景照片几秒钟后照片里每个人的位置都被方框圈了出来旁边还标注着类别和置信度——这就是 YoloDotNet 的目标检测效果。跑通后程序会在桌面生成YoloDotNet_Results文件夹处理好的图片就保存在里面。是不是心动了下面我们从零开始一步步把这件事做成。环境体检.NET 8 装好了吗约 1 分钟YoloDotNet 要求 .NET 8.0 SDK。打开终端先确认一下版本dotnet --version如果输出了 8.0 及以上版本✅ 直接进入下一步。如果版本过低或提示找不到命令请先安装 .NET 8 SDK 再回来。⚠️ 踩坑提醒YoloDotNet 依赖 .NET 8.0 的现代 API用老版本 SDK 还原时会直接报编译错误别在版本上省时间。拿到代码和模型克隆仓库约 1 分钟项目仓库自带完整的 Demo 项目和预训练模型一条命令拿全git clone https://gitcode.com/gh_mirrors/yo/YoloDotNet cd YoloDotNet预训练模型都在 test/assets/Models/ 目录下yolov8s.onnx、yolov11s.onnx、yolov9s.onnx等开箱即用。所谓模型本质上就是一个 ONNX 文件推理引擎读它、执行任务。 小知识YoloDotNet 的推理基于 ONNX Runtime图片处理用 SkiaSharp所以全程没有任何 Python 运行时纯 .NET 环境就能跑。还原依赖让 Demo 和模型对接起来约 1 分钟我们先用目标检测 Demo 开刀。进入对应目录并还原 NuGet 依赖cd Demo/ObjectDetectionDemo dotnet restore这条命令会把YoloDotNet核心库和 CPU 执行提供者等依赖全部下载到位。如果你网络较慢稍等片刻即可。跑起来执行第一次目标检测约 2 分钟依赖还原完成后直接运行dotnet run程序会自动加载默认模型、处理测试图片并在终端打印类似下面的结果Loaded ONNX Model: object detection (yolo v11) Inference Results: 4 objects person (98.12%) person (96.55%) ... 到这一步你的第一次目标检测已经成功了输出图片会自动保存到桌面YoloDotNet_Results文件夹。⚠️ 踩坑提醒Demo 默认使用CudaExecutionProvider需要 NVIDIA GPU。没有独立显卡的朋友把Program.cs里的执行提供者换成CpuExecutionProvider即可CPU 跑小图完全够用。拆开看核心代码其实只有 4 行约 2 分钟跑通之后你肯定想搞清楚原理。打开Demo/ObjectDetectionDemo/Program.cs骨架其实非常简单using var yolo new Yolo(new YoloOptions { ExecutionProvider new CpuExecutionProvider(yolov8s.onnx) }); using var image SKBitmap.Decode(people.jpg); var results yolo.RunObjectDetection(image, confidence: 0.25, iou: 0.7); image.Draw(results).Save(result.jpg);逐行翻译成人话代码作用new Yolo(...)加载模型初始化推理引擎SKBitmap.Decode(...)读取本地图片RunObjectDetection(...)执行目标检测返回结果列表Draw(...).Save(...)把方框画到图上并保存先给结论创建 Yolo 实例 → 读取图片 → 调用方法 → 保存结果这就是 YoloDotNet 的全部使用流程。分类、分割、姿态估计的调用方式完全一致只是换方法名而已。换张图、换个模型试着检不同场景约 1 分钟把上面的图片路径换成你自己的照片比如using var image SKBitmap.Decode(C:\\MyPhotos\\crosswalk.jpg);图片想换就换。想换模型也只需改一行路径。仓库里的模型都经过验证可按需选用模型任务特点yolov8s.onnx / yolov11s.onnx目标检测通用首选速度与精度均衡yolov10s.onnx目标检测免 NMS 后处理更简洁yolov8s-seg.onnx实例分割像素级轮廓yolov8s-pose.onnx姿态估计人体关键点yolov8s-cls.onnx图像分类整图分类 提示想导出自己的 YOLO 模型yolov5u~v12用opset17导出yolov26用opset18细节可参考 README.md。调参让检测结果更准、更稳约 1 分钟RunObjectDetection的三个参数决定了检出质量调参是最快的优化手段confidence置信度阈值默认 0.2阈值越高留下的框越少、越可靠误检多就往上调。iou交并比阈值默认 0.7控制重叠框的合并力度框太密集就调高。roi感兴趣区域只检测图片的某个局部既能聚焦又能提速。例如想更严格地过滤误检var results yolo.RunObjectDetection(image, confidence: 0.5, iou: 0.7);⚠️ 特别提醒YOLOv10 和 YOLOv26 的后处理在模型内部完成ioU 参数会被忽略调了也不会生效别在这上面纠结。进阶让目标检测跑进视频流约 2 分钟图片只是热身YoloDotNet 的真正亮点是实时视频流检测。以VideoStreamDemo为例流程是配置 → 回调 → 启动yolo.InitializeVideo(new VideoOptions { VideoInput test/assets/Media/walking.mp4, VideoOutput output.mp4 }); yolo.OnVideoFrameReceived (frame, index) { var results yolo.RunObjectDetection(frame); frame.Draw(results); // 在帧上绘制检测框 }; yolo.StartVideoProcessing();每一帧图像都会被自动送入回调你在回调里调用一次目标检测并绘制结果即可。它甚至支持 RTMP/HTTP 直播流或者直接接摄像头。⚠️ 踩坑提醒视频功能依赖 FFmpeg请先安装 FFmpeg 并把ffmpeg、ffprobe加入系统 PATH否则启动时会直接抛异常。下一步还能玩什么10 分钟跑通目标检测只是起点。YoloDotNet 还内置了分类RunClassification、实例分割RunSegmentation、姿态估计RunPoseEstimation、旋转框检测RunObbDetection四种任务API 调用方式与目标检测如出一辙NVIDIA 用户还可以切换到 CUDA/TensorRT 提供者享受数倍于 CPU 的推理速度。想继续探索可以试试这些方向换一张交叉路口图看看密集行人检测的表现用SortTracker给检测目标加跟踪轨迹做实时人流统计对照 AccuracyAndConfiguration.md 调优精度与性能的平衡翻阅 Demo/ 下的其他示例从 BatchDemo 到 WebcamDemo 一应俱全更多完整用法和 API 说明见 官方文档 与 更新日志。写到这里你的下一个目标检测项目就从今天这张图开始吧。【免费下载链接】YoloDotNetYoloDotNet - A C# .NET 8.0 project for Classification, Object Detection, OBB Detection, Segmentation and Pose Estimation in both images and live video streams.项目地址: https://gitcode.com/gh_mirrors/yo/YoloDotNet创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考