YoloDotNet快速上手指南:零基础用C跑通图像目标检测
2026/9/6 22:44:06 网站建设 项目流程

YoloDotNet快速上手指南:零基础用C#跑通图像目标检测

【免费下载链接】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

YoloDotNet 是一个基于 C# .NET 8.0 的开源计算机视觉库,原生支持图像分类、目标检测、OBB 旋转框检测、图像分割与姿态估计,同时也能处理实时视频流。本文是一份面向纯新手的 YoloDotNet 快速上手教程,不要求任何机器学习背景,跟着操作就能在十几分钟内完成第一次目标检测。无论你最终是想写桌面工具、Web 服务,还是做视频监控,这份 YoloDotNet 入门指南都能帮你走通全流程。

先回答新手最关心的三个问题

它到底能做什么?

一句话概括:给它一张图片(或一段视频),它就能告诉你里面有什么、在哪里。具体来说,你可以用它完成这些任务:

  • 目标检测:框出图片里的行人、车辆、动物等物体(最常用)
  • 图像分类:判断整张图片属于哪个类别
  • 图像分割:把物体轮廓精确到像素级抠出来
  • 姿态估计:识别画面里人物的关键点(关节、手脚)
  • OBB 检测:对倾斜物体输出带角度的旋转检测框

我不会 Python 也能用吗?

完全没问题。YoloDotNet 整个推理链路都是纯 .NET 实现,不需要 Python 运行时,也不依赖 OpenCV 这类重型框架,底层基于 ONNX Runtime 和 SkiaSharp。只要你熟悉基本的 C#,甚至只要会抄代码改路径,都能上手。

上手要花多久?

说句实在话:环境正常的话,从零到跑出第一张带框的图片,通常不超过十分钟。别急,核心就三步——准备环境、拿到项目、跑一个 demo。

动手前,先把环境备齐

老规矩,先确认你的电脑上有 .NET 8 SDK。在终端里敲下面这条命令,作用是检查 .NET 版本是否满足要求

dotnet --version

如果输出了类似8.x.x的版本号,说明环境没问题;如果提示找不到命令,需要先去安装 .NET 8 SDK 再回来。

另外建议装好 Git,后面拉取代码要用。Windows 的 WSL、macOS 和主流 Linux 发行版都能运行本教程的全部命令。

拿到代码和模型:仓库自带现成的 Demo

YoloDotNet 项目非常贴心,仓库里已经内置了多个可直接运行的演示程序,并且预置了yolov8s.onnxyolo11s.onnx等现成的模型文件,你不用自己训练模型,也不用去下载大文件。

先克隆仓库,这条命令的作用是把项目源码下载到本地当前目录

git clone https://gitcode.com/gh_mirrors/yo/YoloDotNet

然后进入目标检测演示目录,执行还原依赖(作用是把项目引用的 NuGet 包全部拉取到位):

cd YoloDotNet/Demo/ObjectDetectionDemo dotnet restore

整个仓库的项目结构可以参考 README.md 来了解,测试模型放在test/assets/Models/目录下,测试图片则在test/assets/Media/

跑第一个检测:一条命令见证奇迹

接下来就是最激动人心的时刻,直接运行:

dotnet run

程序会自动加载模型、处理内置测试图片,并把标注好的结果图片保存到桌面上的YoloDotNet_Results文件夹。你会在终端里看到类似这样的输出:

Loaded ONNX Model: ObjectDetection (YOLOv26) Inference Results: 8 objects person (92.14%) person (87.56%) bus (76.30%) ...

每一行代表检测到的一个物体及其置信度。打开结果图片,你会看到画面里每个物体都被画上了带标签和置信度的彩色检测框。

用 YoloDotNet 检测繁忙路口,行人等目标被逐一识别并标记出来

📌 小提示:演示默认使用 CUDA 执行提供程序,如果你的电脑没有 NVIDIA 显卡,把ObjectDetectionDemo里的CudaExecutionProvider换成CpuExecutionProvider即可,效果一样,只是速度慢一些。

别人代码看不懂?逐行拆解这个 Demo

跑通之后,我们来读懂它到底做了什么。打开Demo/ObjectDetectionDemo/Program.cs,核心逻辑其实只有四块:

① 初始化 Yolo 实例,配置模型路径、硬件方案和图像预处理方式:

using var yolo = new Yolo(new YoloOptions { ExecutionProvider = new CpuExecutionProvider("yolov8s.onnx"), ImageResize = ImageResize.Proportional });

② 加载测试图片,YoloDotNet 使用 SkiaSharp 的SKBitmap作为图像载体:

using var image = SKBitmap.Decode("people.jpg");

③ 执行检测,这是整个库最核心的一行调用。confidence是置信度阈值,iou是交并比阈值,用来去除重叠框:

var results = yolo.RunObjectDetection(image, confidence: 0.25, iou: 0.7);

④ 把结果画到图上并保存

image.Draw(results); image.Save("result.jpg");

看到没有?真正的核心 API 就一个RunObjectDetection方法,返回的是List<ObjectDetection>,每个元素包含类别名、置信度和边界框坐标。库的整体 API 都集中在 Yolo.cs 里,按需查阅即可。

换图、换模型、换参数:让检测更合你心意

跑通 demo 只是开始,接下来你可以做三件小事,把工具调成你自己的样子。

换一张测试图片

Program.cs里的图片路径换成test/assets/Media/下任意一张,或者干脆换成你自己的照片,重新dotnet run就行。比如换上街景图,看看车辆和行人识别效果:

街道场景下的车辆与行人检测,适合测试检测模型的泛化能力

换一个模型

test/assets/Models/里准备了多个版本的模型。想体验不同速度与精度的取舍,只需改一行:

// 可选:yolov8s.onnx、yolov9s.onnx、yolov10s.onnx、yolo11s.onnx、yolov12s.onnx new CpuExecutionProvider("yolo11s.onnx")

调一调置信度阈值

  • confidence(默认 0.2):提高它可以减少误检,只保留高把握的框;调低它能召回更多弱目标
  • iou(默认 0.7):控制重叠框的合并力度,值越大越不容易合并

比如想更保守地筛选结果,可以这样写:

var results = yolo.RunObjectDetection(image, confidence: 0.5, iou: 0.7);

⚠️ 注意:检测精度跟图片缩放方式(Proportional保留比例补边 /Stretched直接拉伸)关系密切,缩放方式必须和模型训练时保持一致。想深入理解这块,建议读一下 AccuracyAndConfiguration.md,里面讲得很清楚。

不满足于图片?视频流也不在话下

YoloDotNet 的另一大卖点是对视频流的支持。你可以处理本地视频文件、RTMP 直播流,甚至直接读摄像头。上手方式同样简单:

var videoOptions = new VideoOptions { VideoInput = "test.mp4", // 本地视频或直播流地址 VideoOutput = "output.mp4" // 处理结果输出 }; yolo.InitializeVideo(videoOptions); // 每一帧解码后都会触发这个回调 yolo.OnVideoFrameReceived = (frame, frameIndex) => { var results = yolo.RunObjectDetection(frame); frame.Draw(results); }; yolo.StartVideoProcessing();

📌 提示:视频处理依赖 FFmpeg,需要先把 FFmpeg 和 FFprobe 装好并加入系统 PATH。完整的视频检测示例可以看 Demo/VideoStreamDemo/,它还演示了如何用 SortTracker 做多目标跟踪、绘制运动轨迹。仓库里的crosswalk.jpg这种路口图片,也很适合拿来测试你的监控类场景。

从目标检测走向更多玩法

如果你发现目标检测不过瘾,YoloDotNet 的其他能力也都配有现成 demo,换一个入口方法即可:

能力调用方法对应 Demo
图像分类RunClassificationDemo/ClassificationDemo/
图像分割RunSegmentationDemo/SegmentationDemo/
姿态估计RunPoseEstimationDemo/PoseEstimationDemo/
旋转框检测RunObbDetectionDemo/OBBDetectionDemo/

比如把模型换成yolov8s-cls.onnx,再调用RunClassification,就能对蜂鸟这样的特写图片做分类识别:

配合分类模型,YoloDotNet 同样能对单张图片完成内容识别

各个方法的完整参数说明都在 Yolo.cs 里,照着注释用就行。

收尾:遇到报错先别慌

新手最容易卡住的几个问题,这里提前给你打好预防针:

  1. 模型加载失败:九成是路径写错了。先确认模型文件确实存在于test/assets/Models/,且路径拼写无误
  2. 提示找不到 CUDA / GPU 相关错误:说明当前机器没有可用的 NVIDIA 环境,改用CpuExecutionProvider最省事
  3. 视频相关报错:检查 FFmpeg 是否安装、是否已加入 PATH
  4. 结果偏差大:优先检查ImageResize是否与模型要求一致,再考虑调阈值

接下来,你可以试试这三条进阶路线

到这里,你已经完成了 YoloDotNet 的首次目标检测,算是正式入门了。如果还想继续深入,推荐三条路线按兴趣自取:

  • 性能进阶:有 NVIDIA 显卡的同学,试试 Demo/TensorRTDemo/,开启 TensorRT 后推理速度还能再上一个台阶;没有 GPU 的可以用test/YoloDotNet.Benchmarks/里的基准测试对比不同采样参数的耗时
  • 实时应用:把视频流 demo 和摄像头结合起来,做一个能实时跟踪行人的监控小工具,配合 SortTracker 还能画出运动轨迹
  • 工程化落地:将检测结果通过ToJson()导出为 JSON,或接入自己的 Web API,把视觉能力真正放进产品里

以上就是完整的 YoloDotNet 安装教程与入门路线。从一条dotnet run到读懂核心 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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询