news 2026/5/1 3:02:42

.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/4/23 10:02:44

ImageGlass终极指南:免费开源图像查看器的5个核心优势

ImageGlass终极指南:免费开源图像查看器的5个核心优势 【免费下载链接】ImageGlass 🏞 A lightweight, versatile image viewer 项目地址: https://gitcode.com/gh_mirrors/im/ImageGlass 还在为Windows系统自带的图片查看器功能单一而烦恼吗&…

作者头像 李华
网站建设 2026/4/29 0:15:34

Open-AutoGLM实战案例:自动收集美团优惠券操作流程

Open-AutoGLM实战案例:自动收集美团优惠券操作流程 1. 引言:让AI帮你“动手”完成手机任务 你有没有这样的经历?每天打开美团、大众点评,翻来覆去地找各种满减券、限时折扣,点来点去不仅费时间,还容易漏掉…

作者头像 李华
网站建设 2026/4/25 7:44:43

【办公类-124-01】20260121Python批量修改“园园通改版后的幼儿数据缺失(出生地区县、籍贯区县)”

背景需求: 上周“园园通”(上海的幼儿数据采集平台)突然更新的“直报通”的页面 导致全部幼儿都变成需要处理的数据 点开一看“总园-中大班”幼儿信息页,原来是幼儿的“出生地区县、籍贯城市、籍贯区县”需要更新。 几百条要参考…

作者头像 李华
网站建设 2026/4/17 22:46:37

数据库迷局:select for update 锁的真相,90%的开发者都踩过坑!

一、开篇直击痛点:为什么需要 select for update 锁? 做后端开发的同学,大概率遇到过这样的场景: 电商秒杀:100 件商品,1000 人抢购,如何避免超卖? 余额支付:用户账户余额 100 元,同时发起两笔 80 元支付,如何防止余额为负? 库存扣减:多线程同时操作同一商品库存…

作者头像 李华
网站建设 2026/4/28 1:21:30

【C#程序员入门AI】2026年必知的AI生态与技术路线图

文章目录🚀 开篇先唠两句一、先搞懂:2026年C# AI生态,到底有啥?1. 核心工具三件套(必装)2. 大模型接入方式(2026主流)3. 2026新宠:AI Agent生态4. 向量与RAG(…

作者头像 李华
网站建设 2026/4/8 9:30:35

springboot_ssm842智慧家政在线预约管理系统的设计与实现ssm

目录具体实现截图智慧家政在线预约管理系统的设计与实现系统所用技术介绍写作提纲源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!具体实现截图 智慧家政在线预约管理系统的设计与实现 该系统基于SpringBoot和SSM框架开发,…

作者头像 李华