ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

YOLO11 在 C# 中的工程落地,核心路径非常清晰:Python 端训练并导出 ONNX 模型,C# 端用 ONNX Runtime 加载推理

YOLO11 在 C# 中的工程落地,核心路径非常清晰:Python 端训练并导出 ONNX 模型,C# 端用 ONNX Runtime 加载推理 YOLO11 在 C# 中的工程落地核心路径非常清晰Python 端训练并导出 ONNX 模型C# 端用 ONNX Runtime 加载推理。目前已有多个成熟的 NuGet 库把这个链路封装得很好不需要从零手写预处理和后处理代码。核心路径训练与推理分离工业界最务实的做法是“训练在 Python推理在 C#”Python 侧用 Ultralytics 训练 YOLO11 模型导出为 ONNX 格式。这是跨语言部署的关键中间格式C# 无法直接加载 PyTorch 的.pt文件。C# 侧引用 ONNX Runtime 的 NuGet 包加载.onnx文件进行推理。这样做的好处是 C# 上位机单进程内存共享零拷贝传递图像数据避免了 Python 与 C# 跨进程通信的 30-50ms 开销。推荐方案YoloSharp 系列库搜索结果中出现了多个 C# YOLO 推理库其中YoloSharp和YoloSharpOnnx是功能最完整、工业验证较充分的选项。YoloSharpCompunet 出品支持所有 YOLO 视觉任务目标检测、实例分割、OBB 旋转框、姿态估计、分类覆盖 YOLOv8 到 YOLO11。YoloSharpOnnx则额外提供了批量推理和异步推理能力支持 CPU、CUDA/TensorRT、OpenVINO、DirectML 等多种执行后端内存复用做得较好。C# 集成代码示例以 YoloSharp 为例核心调用极其简洁usingCompunet.YoloSharp;// 加载模型懒加载首次调用时初始化usingvarpredictornewYoloPredictor(yolo11n.onnx);// 同步检测varresultpredictor.Detect(path/to/image.jpg);// 或异步检测varresultawaitpredictor.DetectAsync(path/to/image.jpg);// 输出结果每个 Detection 包含 ClassName、Confidence 和归一化坐标foreach(vardetinresult){Console.WriteLine(${det.ClassName}:{det.Confidence:F2});}如果需要 OBB 旋转框检测工业零件定位常用调用predictor.Obb()或predictor.ObbAsync()。工业场景的实测性能参考根据实际产线项目的对比数据YOLO11n 在工业缺陷检测上的表现如下模型参数量mAP0.51080Ti 推理时延YOLOv5n1.9M78.2%22msYOLOv8n3.2M81.5%28msYOLO11n2.7M83.9%25msYOLO11 在保持轻量化的同时通过改进的 SPP 结构和 Neck 设计对小目标缺陷划痕、气孔的检测精度有提升对金属反光干扰也更鲁棒。与 Halcon 的协同定位在工业质检的选型上一个清晰的共识是Halcon 做定位和预处理YOLO 做复杂缺陷分类。Halcon 的亚像素精度0.01-0.1 像素是 YOLO 边界框通常 1-2 像素误差无法企及的但 YOLO 在“形态多变、无法用规则描述”的缺陷上优势明显。一个实际案例中用 YOLO11 分割模型识别托盘中的产品在新增真实场景标注数据后获得了“近乎完美且一致的结果”甚至对光照变化也鲁棒。实操要点模型导出时注意动态维度。导出 ONNX 时指定dynamic_axes让 batch、height、width 支持动态尺寸否则推理时只能处理固定 640×640 的输入。后处理不要手写。YOLO11 的输出包含大量候选框需要 NMS非极大值抑制去重。推荐使用 YoloSharp 这类封装好的库它们已经正确处理了坐标还原、置信度过滤和 NMS。GPU 优先。工控机有 NVIDIA 显卡时用YoloSharp.Gpu或ExecutionProviderCUDA推理速度相比 CPU 通常有数倍提升。
返回列表