hnlyf168 / SimdYolo
git clone https://github.com/hnlyf168/SimdYolo.git
v0.11.2 · 3d ago
Pure C#/.NET YOLO inference: SIMD CPU, Vulkan/Metal GPU, direct .pt and ONNX; detection, segmentation and pose.
—
stars, 24h
+27
stars, 7 days · #1,419
+27
stars, 30 days · #9,494
27
★ total · +27% this week
6
forks · 0 open issues
Star history starts 2026-10-20; the chart appears after the second daily snapshot.
LanguageC#
License—
Created2026-10-14 (6d ago)
Last push3d ago
Watchers0
OwnerUser
Links
README excerpt
# SimdYolo **纯 C# / .NET 10 的 YOLO 推理与检测头微调。** CPU 使用 SIMD/intrinsics,GPU 使用 Vulkan/Metal;直接加载支持范围内的 `.pt` 和 ONNX。 文档导航 · 0.11.2原版/ORT排名 · 网页版示例 · 推理 API · 训练说明 · 模型与许可证 **当前源码:0.11.3;最新正式 NuGet / Release:0.11.2。** 下载正式版 · 0.11.2发布说明。历史附件保持原内容。 0.11.3继续优化加载与首次推理:PT只读解析、一次扫描BN融合、ONNX整数路由及工作区复用,网页一次读取标签/训练能力;Vulkan复用进程实例,减少驱动反复加载。新增可选`.NET ReadyToRun`快速启动发布,主库普通构建仍为托管IL。加载/首帧/稳态对照与图 · 发布方式、计时口径与复现 · 稳定性验证。本轮结果与下文0.11.2原版排名分别保留。 ## 加载与首次结果 同一0.11.3源码,CPU、FP32、640×640、12线程,每组4个新进程窗口。以下为托管入口到首次原始输出,不含.NET宿主启动、图片预处理/NMS及最终掩码。 | 模型 | 普通IL发布 | FastStartup发布 | 耗时减少 | | --- | ---: | ---: | ---: | | YOLOv8n PT检测 | 348.63 ms | **281.63 ms** | 19.2% | | YOLO26n PT分割 | 402.88 ms | **317.97 ms** | 21.1% | | YOLO11n PT姿态 | 362.72 ms | **285.46 ms** | 21.3% | 网页独立实验(33模型,进程启动到API可用)为0.11.2普通发布 **1.68 s → 0.11.3 FastStartup 1.17 s**,减少30.7%。普通IL源码优化的ONNX CPU稳态中位耗时改善约2–5%,PT CPU基本持平;部分P95没有改善,完整表保留全部窗口。以上不更新历史PyTorch/ORT排名。 ## 当前版本能力 当前源码为 **0.11.2**,包含图片推理、目标分离与背景去除优化,并完成与原版PyTorch/ORT的新一轮对照:掩码使用SIMD、坐标表和行缓存,多实例按面积及线程数并行;网页复用RGB与有界掩码缓存,改用RGB24二进制上传,调整置信度无需重载模型。优化前后实测 · 本版验证与截图。历史0.10.1下载包不包含这些新增功能。 0.11.0已加入纯.NET的训练验证/早停/最佳模型、PT/SYTRAIN导出ONNX、网页检测框标注与预标注、CPU FP16混合/INT8实验推理。使用说明与API · 0.11.0验证。 低精度目前**没有实测速度优势**,默认仍为FP32。FP16使用Half操作数和FP32累加;INT8使用托管整数内核;GPU仍为FP32。应用不引入Python、ORT或原生推理库。 | 能力 | 当前0.11.2源码 | | --- | --- | | 推理任务 | 目标检测、实例分割、姿态估计 | | 已验证模型 | YOLOv8n、Ultralytics YOLOv9t、YOLOv10n、YOLO11n、YOLO26n;v8/11/26 包含分割、姿态 | | 模型格式 | 完整 `.pt`/`.pth`、ONNX,本项目训练生成的 `.sytrain` | | CPU | C# FP32、SIMD/intrinsics、分块GEMM、Winograd、张量池、掩码行缓存与多实例并行;实验低精度默认关闭 | | GPU | Vulkan/Metal 与包内着色器;本轮 Windows / GTX 1050 Ti / Vulkan 实测,Metal 未实机验证 | | 训练 | 五代检测头微调,冻结骨干/FPN;双头、自定义类别、SGD、取消/恢复;独立验证集、最佳模型与早停 | | 训练设备 | CPU SIMD;Vulkan 加速冻结网络与大 GEMM,小矩阵及深度卷积/BN/损失/SGD 使用 CPU | | 网页 | 大图推理、人物/车辆分离与背景去除、数据标注与预标注、训练验证、评估/对比/导出、任务记录 | | 导出 | 完整PT或训练SYTRAIN纯.NET导出标准ONNX;静态batch1、FP32、opset17 | | 标签 | `ModelInfo.Read(path).ClassNames` 读取 PT/ONNX/SYTRAIN 类别,不初始化 GPU | 主库和训练核心为纯托管 C#,无 Python、PyTorch、TorchSharp、ORT、BLAS/MKL/OpenBLAS 运行依赖。GPU 通过 P/Invoke 调用系统图形 API。Vulkan 不需要 CUDA Toolkit、cuDNN、cuBLAS,也无需安装 Vulkan SDK 才能运行;需要兼容驱动和 Vulkan loader,修改着色器后才需重新编译。 训练支持表、实际权重和评测见五代检测头训练及0.10.1训练评测。当前仍为**冻结骨干/FPN 的检测头微调**,没有全参数、分割/姿态或 Metal 训练。`.sytrain` 可直接推理与恢复,是本项目归档格式,不能冒充 PyTorch `.pt`;0.11.0源码已支持纯.NET导出标准ONNX。梯度累加按图像平均,每图 BN 独立统计。 **历史0.10.1发布包**包含五代检测头训练及该版本训练优化。中文发布说明保留验证范围及未通过的参数比较项;0.11.x新增功能使用当前源码或包。 0.10.1重点优化CPU SIMD、卷积反向和临时工作区,并补上五模型训练后参数及保存模型的精度对比:训练速度、排名与结果。 下表为0.10.1检测头训练每步耗时(ms,越低越快;**粗体为同设备组第一**)。128×128、FP32、2类、4线程、相同冻结特征,两独立窗口;不含骨干、预处理和保存,不代表全参数训练速度。 | 模型 | 原版 PyTorch CPU | 我们 CPU SIMD | 原版 PyTorch CUDA | 我们 Vulkan 混合 | | --- | ---: | ---: | ---: | ---: | | yolov8n | 11.37 | **7.17** | 27.13 | **11.43** | | yolov9t | 10.90 | **6.46** | 27.17 | **10.39** | | yolov10n | 26.56 | **15.39** | 59.08 | **22.64** | | yolo11n | 13.33 | **7.05** | 30.58 | **9.77** | | yolo26n | 26.06 | **9.29** | 64.49 | **10.61** | ## 下载与启动 | 附件 | 内容 | | --- | --- | | SimdYolo.0.11.2.nupkg | 推理主库、中文XML及GPU着色器