YoloDotNet

GitHub
752 139 简单 1 次阅读 3天前MIT开发框架视频图像
AI 解读 由 AI 自动生成,仅供参考

YoloDotNet 是一款专为 .NET 生态打造的高性能计算机视觉库,支持在图片和实时视频流中快速执行分类、目标检测、旋转框检测、图像分割及姿态估计等任务。它主要解决了开发者在 .NET 环境中集成 YOLO 模型时依赖 Python 运行时、预处理逻辑不透明以及运行效率难以掌控的痛点。

通过完全基于 C# 和 .NET 8 构建,YoloDotNet 摒弃了沉重的 OpenCV 依赖和隐藏的“魔法”操作,确保推理过程完全可控、可预测且跨平台兼容(Windows、Linux、macOS)。其独特亮点在于原生支持多种主流 YOLO 系列模型(从 YOLOv5u 到最新的 YOLOv26、YOLO-World 等)及 RT-DETR,并提供对 CPU、CUDA、TensorRT、OpenVINO 等多种硬件加速后端的精细控制。此外,最新版本还新增了感兴趣区域(ROI)推理、轮廓点提取及便捷的 JSON/YOLO 格式数据导出功能。

这款工具非常适合需要构建桌面应用、后端服务或实时视觉流水线的 .NET 开发者使用。如果你追求纯 .NET 技术栈、需要生产级的稳定性,并希望在不引入 Python 环境的前提下实现低延迟、确定性的 AI 推理,YoloDotNet 将是理想的选择。

使用场景

某智能仓储团队正在开发一套运行在 Windows 工业工控机上的实时包裹分拣系统,需要精准识别传送带上包裹的类别、位置及旋转角度。

没有 YoloDotNet 时

  • 架构臃肿复杂:团队被迫在 C# 主程序中嵌入 Python 运行时来调用 PyTorch 模型,导致部署包体积巨大且环境配置极易出错。
  • 延迟不可控:图像数据需在 .NET 与 Python 进程间频繁序列化传输,造成明显的推理延迟,无法满足高速传送带的实时性要求。
  • 功能支持缺失:现有的 .NET 视觉库难以原生支持带角度检测(OBB),无法准确判断倾斜包裹的姿态,导致机械臂抓取失败率高。
  • 维护成本高昂:依赖隐式的预处理逻辑和重型框架(如 OpenCV 的完整绑定),使得内存占用波动大,长期运行容易出现内存泄漏。

使用 YoloDotNet 后

  • 纯 .NET 轻量化部署:直接基于 .NET 8 和 ONNX Runtime 运行,彻底移除 Python 依赖,将部署包体积缩小 60%,实现“开箱即用”。
  • 极致低延迟推理:利用 YoloDotNet 的零拷贝内存管理和原生预处理,推理端到端延迟降低至毫秒级,完美匹配高速分拣节奏。
  • 原生支持多任务检测:轻松调用 OBB 检测和姿态估计功能,精准识别倾斜包裹的角度坐标,机械臂抓取成功率提升至 99%。
  • 确定性资源管控:通过显式配置执行后端(如 DirectML 或 CUDA)和内存策略,系统在高负载下连续运行数周依然稳定,无内存泄漏风险。

YoloDotNet 让 .NET 开发者无需妥协于跨语言调用的性能损耗,真正实现了生产级、高性能且完全可控的原生计算机视觉应用落地。

运行环境要求

操作系统
  • Windows
  • Linux
  • macOS
GPU
  • 非必需
  • 若需加速,支持 NVIDIA GPU (CUDA/TensorRT)、Intel GPU (OpenVINO)、Apple Silicon (CoreML) 或 Windows DirectML
  • 具体显卡型号、显存大小及 CUDA 版本取决于所选的 ONNX Runtime 执行提供程序,文中未明确指定最低要求
内存

未说明

依赖
notes1. 纯 .NET 实现,无需 Python 环境或脚本。2. 必须安装且仅能安装一个执行提供程序包(如 CPU 或 CUDA),混合安装会导致冲突。3. 模型需为 ONNX 格式:YOLOv5u-v12 需 opset=17,YOLOv26 需 opset=18。4. 用户需自行准备模型文件并注意 Ultralytics 模型的 AGPL-3.0 或商业许可限制。5. 支持多种视觉任务(检测、分割、姿态估计等)及 ROI 区域推理。
python不需要 (No Python runtime)
.NET 8
ONNX Runtime
SkiaSharp
YoloDotNet (核心包)
YoloDotNet.ExecutionProvider (CPU/Cuda/OpenVino/CoreML/DirectML 任选其一)
YoloDotNet hero image

快速开始

YoloDotNet v4.2 🚀

面向 .NET 的极速、生产就绪的 YOLO 推理

YoloDotNet 是一个模块化、轻量级的 C# 库,用于在 .NET 中实现实时计算机视觉和基于 YOLO 的推理。

它为现代 YOLO 模型系列(从 YOLOv5uYOLOv26YOLO-WorldYOLO-ERT-DETR)提供高性能推理,并对执行、内存和预处理进行显式控制。

YoloDotNet 基于 .NET 8ONNX RuntimeSkiaSharp 构建,有意避免使用 OpenCV 等重量级计算机视觉框架。
没有 Python 运行时、隐藏的预处理或隐式行为——只有在 Windows、Linux 和 macOS 上实现快速、可预测推理所需的组件。

无需 Python,没有魔法,只有高效、确定性的 YOLO——专为 .NET 打造。

⭐ 为什么选择 YoloDotNet?

YOLOv5u YOLOv8-v26 YOLO-RT-DETR YOLO-World YOLO-E

YoloDotNet 专为需要以下特性的开发者设计:

  • 纯 .NET — 无 Python 运行时,无脚本
  • 真正的性能 — 支持 CPU、CUDA / TensorRT、OpenVINO、CoreML、DirectML
  • 明确的配置 — 可预测的精度和内存使用
  • 生产就绪 — 引擎缓存、长时间运行稳定性
  • 多任务支持 — 目标检测、定向边界框检测、分割、姿态估计、分类

非常适合需要确定性行为和完全控制的 桌面应用、后端服务和实时视觉流水线

🆕 v4.2 新特性

  • 新增 感兴趣区域 (ROI) 支持,允许在图像或视频流的选定区域上运行推理
    (适用于监控、区域监测以及性能优先的流水线)
  • 新增在分割对象上绘制边缘的选项,以提高视觉清晰度
  • 新增用于 JSON 导出 的辅助方法:
    • ToJson() — 将推理结果转换为 JSON
    • SaveJson() — 将推理结果直接保存为 JSON 文件
  • 新增用于 YOLO 格式标注 的辅助方法:
    • ToYoloFormat() — 将结果转换为 YOLO 注释格式
    • SaveYoloFormat() — 将结果保存为 YOLO 兼容的训练数据
  • 新增 GetContourPoints() 辅助方法,用于从分割对象中提取 有序轮廓点
  • 更新了 YOLOv26 推理执行,使其与其他任务保持一致,从而提升 一致性及整体执行效率

📖 完整发布历史:CHANGELOG.md

[!TIP] 查看演示
演示项目中提供了展示 YoloDotNet 功能的实用、可运行示例:
👉 浏览演示文件夹

🚀 快速入门

💡 ONNX 模型导出要求

  • 对于 YOLOv26 模型,请使用 opset=18 导出
  • 对于 YOLOv5u–YOLOv12,请使用 opset=17 导出

[!IMPORTANT] 使用正确的 opset 可确保与 ONNX Runtime 的最佳兼容性和性能。
有关如何将模型导出为 ONNX 的更多信息,请参阅 https://docs.ultralytics.com/modes/export/

导出命令示例(Ultralytics CLI):

# 对于 YOLOv5u–YOLOv12(opset 17)
yolo export model=yolov8n.pt format=onnx opset=17

# 对于 YOLOv26(opset 18)
yolo export model=yolo26n.pt format=onnx opset=18

[!WARNING] 模型许可说明:
YoloDotNet 采用 MIT 许可证,但 大多数 Ultralytics YOLO 模型采用 AGPL-3.0 许可证,或在商业用途中需要商业许可证
您有责任确保您对任何模型的使用符合其许可条款。
详情请参阅 Ultralytics 模型许可

1️⃣ 安装核心包

dotnet add package YoloDotNet

2️⃣ 安装 恰好一个(!) 执行提供程序

# CPU(推荐起点)
dotnet add package YoloDotNet.ExecutionProvider.Cpu

# 硬件加速执行(任选其一)
dotnet add package YoloDotNet.ExecutionProvider.Cuda
dotnet add package YoloDotNet.ExecutionProvider.OpenVino
dotnet add package YoloDotNet.ExecutionProvider.CoreML
dotnet add package YoloDotNet.ExecutionProvider.DirectML

💡 注意: CUDA 执行提供程序包含可选的 TensorRT 加速功能。无需单独安装 TensorRT 包。

3️⃣ 运行目标检测

using SkiaSharp;
using YoloDotNet;
using YoloDotNet.Models;
using YoloDotNet.Extensions;
using YoloDotNet.ExecutionProvider.Cpu;

using var yolo = new Yolo(new YoloOptions
{
    ExecutionProvider = new CpuExecutionProvider("model.onnx")
});

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

// 注意:IoU 参数仅用于基于 NMS 的模型。
// 对于 YOLOv10 和 YOLOv26,由于后处理由模型内部完成,因此会忽略 IoU。
var results = yolo.RunObjectDetection(image, confidence: 0.25, iou: 0.7);

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

现在您已成功使用 纯 C# 运行 YOLO 推理。

💡 重要提示:精度取决于配置

YOLO 推理的精度并非自动获得。

图像缩放模式、采样方法以及置信度/IoU 阈值等预处理设置必须与模型的训练方式保持一致。
这些设置直接决定了精度与性能之间的权衡,应被视为模型本身的一部分。

📖 在调整模型或比较结果之前,请阅读:
👉 精度与配置指南

支持的任务

分类 目标检测 OBB 检测 分割 姿态估计
pexels.com pexels.com pexels.com pexels.com pexels.com

✅ 已验证的 YOLO 模型

以下 YOLO 模型已使用 YoloDotNet,并通过 Ultralytics 官方导出及默认头部进行了 测试和验证

分类 目标检测 分割 姿态估计 旋转目标检测
YOLOv8-cls
YOLOv11-cls
YOLOv12-cls
YOLOv26-cls
YOLOv5u
YOLOv8
YOLOv9
YOLOv10
YOLOv11
YOLOv12
YOLOv26
RT-DETR
YOLOv8-seg
YOLOv11-seg
YOLOv12-seg
YOLOv26-seg
YOLO-World (v2)
YOLOv8-pose
YOLOv11-pose
YOLOv12-pose
YOLOv26-pose
YOLOv8-obb
YOLOv11-obb
YOLOv12-obb
YOLOv26-obb

📁 示例

演示文件夹中提供了动手示例:

👉 浏览演示项目

包括图像推理、视频流、GPU 加速、分割以及大图像工作流。

执行提供者

提供者 Windows Linux macOS 文档
CPU CPU README
CUDA / TensorRT CUDA README
OpenVINO OpenVINO README
CoreML CoreML README
DirectML DirectML README

ℹ️ 只能引用 一个 执行提供者包。
混用不同提供者会导致原生运行时冲突。

⚡ 性能特性

YoloDotNet 致力于稳定且低开销的推理,其运行时成本主要由执行提供者和模型决定。

📊 基准测试:/test/YoloDotNet.Benchmarks

  • 预热后延迟稳定
  • 从 CPU → GPU → TensorRT 的性能可预测扩展
  • 内存分配行为可预测
  • 适用于实时和长时间运行的服务

🚀 模块化执行提供者

  • 核心包与具体提供者无关
  • 执行提供者为独立的 NuGet 包
  • 原生 ONNX Runtime 依赖被隔离

这样做的意义: 减少冲突、部署更可预测,且在生产环境中更加安全。

支持 YoloDotNet

⭐ 给仓库加星
💬 分享反馈
🤝 赞助开发

GitHub Sponsors
PayPal

许可证

MIT 许可证

版权所有 © Niklas Swärd

特此授予任何人免费获取本软件及其相关文档文件(“软件”)副本的权利,以进行处理。在不受限制的情况下,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利;并允许向任何接收该软件的人提供服务,但须遵守以下条件:

上述版权声明和本许可声明应包含在所有副本或软件的重要部分中。

“软件”按“原样”提供,不提供任何形式的保证,无论是明示还是暗示,包括但不限于适销性、特定用途适用性和非侵权性的保证。在任何情况下,作者或版权所有者均不对因合同、侵权或其他原因引起的任何索赔、损害赔偿或其他责任负责,这些责任可能源于或与软件的使用有关。


模型许可与责任

  • YoloDotNet 采用 MIT 许可证,并为使用 Ultralytics YOLO 工具导出的 YOLO 模型提供 ONNX 推理引擎。

  • 本项目 包含、分发、下载或捆绑任何预训练模型。

  • 用户必须自行提供 ONNX 模型。

  • 使用 Ultralytics 工具生成的 YOLO ONNX 模型通常根据 AGPL-3.0 或 Ultralytics 的单独商业许可证进行授权。

  • YoloDotNet 不会 强制、修改或转移与用户提供的模型相关的任何许可条款。

  • 用户需自行负责 确保其对任何模型的使用符合适用的许可条款,包括与商业使用、分发或网络部署相关的要求。

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|5天前
Agent开发框架图像

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|6天前
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

150.7k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

108.3k|★★☆☆☆|昨天
开发框架图像Agent

gemini-cli

gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。

100.8k|★★☆☆☆|2天前
插件Agent图像

markitdown

MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器

93.4k|★★☆☆☆|5天前
插件开发框架