news 2026/2/27 5:21:38

.NET 10 也能跑 YOLO?用 YoloSharp 轻松实现目标检测

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
.NET 10 也能跑 YOLO?用 YoloSharp 轻松实现目标检测

前言

工业视觉、智能安防、零售分析等场景中,目标检测早已不是"高大上"的专属技术,而是逐渐成为日常开发的一部分。然而,对于 .NET 开发来说,想要在 C# 项目中快速接入 YOLO 模型却并不容易——要么依赖 Python 服务做胶水调用,要么陷入复杂的 C++ 封装或跨平台部署难题。

有没有一种方式,能让我们像调用普通类库一样,在 WPF、WinForms 或 ASP.NET 应用中直接运行 YOLO?

本文推荐一个项目它不追求大而全,而是聚焦于"开箱即用、简洁高效",让 C# 开发也能轻松驾驭前沿的计算机视觉。

项目介绍

YoloSharp 是一个基于 ONNX Runtime 的轻量级目标检测库,专为 .NET 平台设计。

它将主流 YOLO 系列模型(如 YOLO26、YOLO12 等)封装成直观的 C# API,开发者只需加载 ONNX 模型文件和一张 Bitmap 图像,即可获得结构化的检测结果。

项目目前专注于目标检测任务,输入仅支持 System.Drawing.Bitmap,源码结构清晰、依赖明确,便于集成到各类 Windows 桌面或服务端应用中。

项目功能

1、支持 CPU 和 GPU 推理,通过构造函数传入 GPU ID 即可启用 CUDA 加速;

2、兼容多种 YOLO 模型导出的 ONNX 格式,包括 YOLO26、YOLO12 等主流变体;
3、提供完整的图像预处理流程,自动完成 RGB 提取、归一化、张量转换;

4、内置非极大值抑制(NMS)算法,有效过滤重叠框;

5、输出标准化的 BoundingBox 结构,包含类别索引、置信度、坐标与尺寸;

6、支持自定义置信度阈值(默认 0.3)和 IoU 阈值(默认 0.45),灵活适配不同场景。

项目特点

1、API 极简:核心检测仅需两步——初始化 Yolo 对象,调用 Detect 方法;

2、零外部依赖:除 ONNX Runtime 和 System.Drawing 外无其他第三方库;

3、源码透明:所有图像处理、后处理逻辑均开放,便于调试与定制;

4、性能优先:预处理使用原生 byte 数组操作,避免频繁内存分配;

5、环境灵活:可根据本地是否安装 CUDA 自由切换 CPU/GPU 模式。

项目技术

YoloSharp 基于 Microsoft.ML.OnnxRuntime 构建推理引擎,利用其跨平台、高性能的特性执行模型前向计算。

图像处理模块通过 LockBits 直接读取 Bitmap 的 RGB24 数据,避免 GDI+ 的性能瓶颈。

后处理部分实现了标准的 NMS 流程,并通过 Helper 类提供 IoU 计算、张量转换等工具方法。

整个项目采用分层设计:YoloSharp.Core 定义接口与数据模型,YoloSharp.Bitmap 实现图像适配,YoloSharp 主项目整合推理逻辑,结构清晰,易于扩展。

项目示例

使用示例如下:

using YoloSharp; using System.Drawing; var yolo = new Yolo("model.onnx"); // CPU 模式 // var yolo = new Yolo("model.onnx", 0); // GPU 模式,使用 GPU 0 usingvar bitmap = new Bitmap("image.jpg"); var input = new Input(); var tensor = input.Detection(yolo, bitmap); var results = yolo.Detect(tensor, bitmap.Width, bitmap.Height); if (results != null) { foreach (var box in results) { Console.WriteLine($"类别: {yolo.Names[box.Index]}, 置信度: {box.Confidence:F2}, 位置: ({box.X}, {box.Y}, {box.Width}, {box.Height})"); } }

注意:由于 ML 框架对 GPU 环境有特定要求(如 CUDA 版本),建议根据本地环境调整 ONNX Runtime 的运行时包(如 Microsoft.ML.OnnxRuntime.Gpu)。

项目效果

以 YOLO26 模型为例,在 RTX 3060 GPU 上处理 640×640 图像,端到端耗时约 35ms;在 i7-12700K CPU 上约为 120ms。检测结果准确,边界框位置与官方 Python 实现基本一致。

更重要的是,集成过程极其顺畅——只需将模型文件放入项目目录,几行代码即可完成从图像加载到结果输出的全流程,大幅降低 .NET 开发使用深度学习模型的门槛。

项目源码

项目采用标准 .NET 解决方案结构:

yolo-sharp/ ├── src/ │ ├── YoloSharp/ # 核心检测类 │ ├── YoloSharp.Bitmap/ # Bitmap 图像处理 │ └── YoloSharp.Core/ # 核心接口和模型 │ └── Model/ # BoundingBox 等数据类 ├── test/ # 控制台测试项目 └── YoloSharp.sln # Visual Studio 解决方案

GitHub:https://github.com/Eviav/YoloSharp

总结

项目是一个精准解决"C# 如何跑 YOLO"的实用工具。它没有花哨的功能,却把核心体验做到位:简单、可控、高效。

对于需要在 .NET 生态中嵌入目标检测能力的开发来说,无论是做工业质检、智能监控,还是学习,YoloSharp 都提供了一条低摩擦的路径。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/27 3:04:19

高精度中文ASR落地实践|利用Paraformer与ngram_lm优化识别

高精度中文ASR落地实践|利用Paraformer与ngram_lm优化识别 在语音交互日益普及的今天,自动语音识别(ASR)已成为智能客服、会议记录、字幕生成等场景的核心技术。然而,面对嘈杂环境、专业术语或口音差异,通…

作者头像 李华
网站建设 2026/2/11 6:15:36

FIND_IN_SET()方法

一、基础用法说明 FIND_IN_SET(str, strlist) 函数的作用是:在 strlist(逗号分隔的字符串)中查找 str 的位置,返回值是数字(找到则返回位置,从1开始;没找到返回0)。 结合 MyBatis 的…

作者头像 李华
网站建设 2026/2/26 19:25:31

基于ASP.NET的医院预约挂号管理系统源码文档部署文档代码讲解等

课题介绍 本课题针对传统医院挂号排队耗时久、号源管控混乱、诊疗信息不同步等痛点,设计并实现基于ASP.NET框架的医院预约挂号管理系统,构建医疗挂号全流程数字化管控平台。系统以SQL Server为数据存储核心,结合HTML、CSS、JavaScript及Ajax技…

作者头像 李华
网站建设 2026/2/18 1:48:56

基于微信小程序的实验室排课系统【源码+文档+调试】

🔥🔥作者: 米罗老师 🔥🔥个人简介:混迹java圈十余年,精通Java、小程序、数据库等。 🔥🔥各类成品Java毕设 。javaweb,ssm,springboot等项目&#…

作者头像 李华
网站建设 2026/2/23 5:55:26

springboot_ssm845股票基金分析系统的设计与实现ssm

目录 具体实现截图摘要内容 系统所用技术介绍写作提纲源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式! 具体实现截图 摘要内容 基于SpringBoot和SSM框架的股票基金分析系统旨在为投资者提供高效、便捷的数据分析与决策支持工具。系统整…

作者头像 李华
网站建设 2026/2/26 20:51:58

springboot_ssm849的网上报名系统SSM

目录具体实现截图摘要系统所用技术介绍写作提纲源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!具体实现截图 摘要 网上报名系统基于SpringBootSSM框架开发,整合了Spring、SpringMVC和MyBatis技术,实现高效、稳…

作者头像 李华