DeploySharp开源发布:让C#部署深度学习模型更加简单

1. 简介

DeploySharp 是一个专为 C# 开发者设计的跨平台模型部署框架,提供从模型加载、配置管理到推理执行的端到端解决方案。其核心架构采用模块化命名空间设计,显著降低了 C# 生态中深度学习模型的集成复杂度,

1. 架构设计与功能分层

  • 根命名空间 DeploySharp 作为统一入口,集成模型加载、推理执行等核心功能
  • 通过子命名空间(如 DeploySharp.Engine)实现模块化分层设计
  • 关键类采用泛型设计,支持图像处理/分类/检测等多任务标准数据交互

2. 多引擎支持与扩展能力

  • 原生支持 OpenVINO(通过OpenVinoSharp)、ONNX Runtime 推理引擎
  • 支持 YOLOv5-v12全系列模型、Anomaly及其他主流模型部署

3. 跨平台运行时支持

  • 兼容 .NET Framework 4.8 及 .NET 6/7/8/9
  • 深度集成 .NET 运行时生态(NuGet 包管理)

4. 高性能推理能力

  • 异步推理支持(System.Threading.Tasks
  • 支持单张/批量图片推理模式
  • 丰富的预处理(ImageSharp/OpenCvSharp)和后处理操作

5. 开发者支持体系

  • 中英双语代码注释与技术文档
  • log4net 分级日志系统(错误/警告/调试)
  • 提供可视化结果展示方案
  • 提供完善的示例代码库

该项目开源遵循 Apache License 2.0 协议,开发者可通过 QQ 群、微信公众号等渠道获取支持。未来版本计划扩展 TensorRT 支持并优化现有引擎的异构计算能力。

项目链接:

复制代码
https://github.com/guojin-yan/DeploySharp.git

2. 模型支持列表

Model Name Model Type OpenVINO ONNX Runtime TensorRT
YOLOv5 Detection ing...
YOLOv5 Segmentation ing...
YOLOv6 Detection ing...
YOLOv7 Detection ing...
YOLOv8 Detection ing...
YOLOv8 Segmentation ing...
YOLOv8 Pose ing...
YOLOv8 Oriented Bounding Boxes ing...
YOLOv9 Detection ing...
YOLOv9 Segmentation ing...
YOLOv10 Detection ing...
YOLOv11 Detection ing...
YOLOv11 Segmentation ing...
YOLOv11 Pose ing...
YOLOv11 Oriented Bounding Boxes ing...
YOLOv12 Detection ing...
Anomalib Segmentation ing...

3. NuGet Package

3.1 Core Managed Libraries

Package Description Link
JYPPX.DeploySharp DeploySharp API core libraries https://www.nuget.org/packages/JYPPX.DeploySharp/

3.2 Native Runtime Libraries

Package Description Link
JYPPX.DeploySharp.ImageSharp An assembly that uses ImageSharp as an image processing tool. https://www.nuget.org/packages/JYPPX.DeploySharp.ImageSharp/
JYPPX.DeploySharp.OpenCvSharp An assembly that uses OpenCvSharp as an image processing tool. https://www.nuget.org/packages/JYPPX.DeploySharp.OpenCvSharp/

4. 如何安装

4.1 获取方式

大家可以直接在NuGet Gallery官网上进行查找使用:

或者在Visual Studio的NuGet程序包中进行查找安装:

4.2 NuGet Package组合使用方式

DeploySharp包含了OpenCvSharp、ImageSharp等图像处理方式,同时支持OpenVINO、ONNX Runtime模型部署引擎,因此用户可以根据自己需求自行组合,并安装对应的NuGet Package即可开箱使用。以下总结了常用的一些使用情况的NuGet Package安装场景:

  • OpenVINO推理+OpenCvSharp图像处理
shell 复制代码
JYPPX.DeploySharp
JYPPX.DeploySharp.OpenCvSharp

OpenVINO.runtime.win
OpenCvSharp4.runtime.win 
  • OpenVINO推理+ImageSharp图像处理
shell 复制代码
JYPPX.DeploySharp
JYPPX.DeploySharp.ImageSharp

OpenVINO.runtime.win
  • ONNX Runtime推理+OpenCvSharp图像处理
shell 复制代码
JYPPX.DeploySharp
JYPPX.DeploySharp.OpenCvSharp

OpenCvSharp4.runtime.win 
  • ONNX Runtime推理+ImageSharp图像处理
shell 复制代码
JYPPX.DeploySharp
JYPPX.DeploySharp.OpenCvSharp
  • ONNX Runtime(OpenVINO加速)推理+ImageSharp图像处理
shell 复制代码
JYPPX.DeploySharp
JYPPX.DeploySharp.ImageSharp

Intel.ML.OnnxRuntime.OpenVino
  • ONNX Runtime(DML加速)推理+ImageSharp图像处理
shell 复制代码
JYPPX.DeploySharp
JYPPX.DeploySharp.ImageSharp

Microsoft.ML.OnnxRuntime.DirectML
  • ONNX Runtime(CUDA加速)推理+ImageSharp图像处理
shell 复制代码
JYPPX.DeploySharp
JYPPX.DeploySharp.ImageSharp

Microsoft.ML.OnnxRuntime.DirectML

由于使用CUDA对ONNX Runtime加速受GPU设备型号以及软件版本影响,因此需要按照ONNX Runtime官方提供的版本对应关系进行下载使用,其中ONNX Runtime与CUDA、cuDNN对应关系请参考一下以下链接:

复制代码
https://runtime.onnx.org.cn/docs/execution-providers/CUDA-ExecutionProvider.html#requirements

以上所列出的使用方式均可以通过NuGet Package一键安装,同样的,ONNX Runtime还支持更多加速方式,但需要用户自己进行代码构建,其构建流程与方式,参考官方教程即可,链接为:

复制代码
https://runtime.onnx.org.cn/docs/execution-providers/

5. 开始使用

如果你不知道如何使用,通过下面代码简单了解使用方法。

5.1 ImageSharp图像处理

c# 复制代码
using DeploySharp.Data;
using DeploySharp.Engine;
using DeploySharp.Model;
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.PixelFormats;
using System;

namespace DeploySharp.ImageSharp.Demo
{
    public class YOLOv5DetDemo
    {
        public static void Run()
        {
            // 模型和测试图片可以前往QQ群(945057948)下载
            // 将下面的模型路径替换为你自己的模型路径
            string modelPath = @"E:\Model\Yolo\yolov5s.onnx";
            // 将下面的图片路径替换为你自己的图片路径
            string imagePath = @"E:\Data\image\bus.jpg";
            Yolov5DetConfig config = new Yolov5DetConfig(modelPath);
            //config.SetTargetInferenceBackend(InferenceBackend.OnnxRuntime);
            Yolov5DetModel model = new Yolov5DetModel(config);
            var img = Image.Load(imagePath);
            var result = model.Predict(img);
            model.ModelInferenceProfiler.PrintAllRecords();
            var resultImg = Visualize.DrawDetResult(result, img as Image<Rgb24>, new VisualizeOptions(1.0f));
            resultImg.Save(@$"./result_{ModelType.YOLOv5Det.ToString()}.jpg");
        }
    }
}

5.2 OpenCvSharp图像处理

c# 复制代码
using OpenCvSharp;
using System.Diagnostics;
using DeploySharp.Model;
using DeploySharp.Data;
using DeploySharp.Engine;
using DeploySharp;
using System.Net.Http.Headers;

namespace DeploySharp.OpenCvSharp.Demo
{
    public class YOLOv5DetDemo
    {
        public static void Run()
        {
            // 模型和测试图片可以前往QQ群(945057948)下载
            // 将下面的模型路径替换为你自己的模型路径
            string modelPath = @"E:\Model\Yolo\yolov5s.onnx";
            // 将下面的图片路径替换为你自己的图片路径
            string imagePath = @"E:\Data\image\bus.jpg";
            Yolov5DetConfig config = new Yolov5DetConfig(modelPath);
            config.SetTargetInferenceBackend(InferenceBackend.OnnxRuntime);
            Yolov5DetModel model = new Yolov5DetModel(config);
            Mat img = Cv2.ImRead(imagePath);
            var result = model.Predict(img);
            model.ModelInferenceProfiler.PrintAllRecords();
            var resultImg = Visualize.DrawDetResult(result, img, new VisualizeOptions(1.0f));
            Cv2.ImShow("image", resultImg);
            Cv2.WaitKey();
        }
    }
}

6.应用案例

获取更多应用案例请参考:

案例类型 框架 链接
桌面应用 .NET Framework 4.8 https://github.com/guojin-yan/DeploySharp/tree/DeploySharpV1.0/applications/.NET Framework 4.8/DeploySharp.ImageSharp-ApplicationPlatform
桌面应用 .NET 6.0 https://github.com/guojin-yan/DeploySharp/tree/DeploySharpV1.0/applications/.NET 6.0/DeploySharp.OpenCvSharp-ApplicationPlatform
控制台应用 .NET Framework 4.8、.NET 6.0-9.0 https://github.com/guojin-yan/DeploySharp/tree/DeploySharpV1.0/samples

后续会推出更多的应用案例使用介绍,敬请关注。

7. API文档

如果想了解更多信息,可以参阅:DeploySharp API Documented

8. 贡献

如果您对DeploySharp 在C#使用感兴趣,有兴趣对开源社区做出自己的贡献,欢迎加入我们,一起开发DeploySharp

如果你对该项目有一些想法或改进思路,欢迎联系我们,指导下我们的工作。

9. 许可证书

本项目的发布受Apache 2.0 license许可认证。

最后如果各位开发者在使用中有任何问题,欢迎大家与我联系。

相关推荐
钰fly18 小时前
工具块与vs的联合编程(豆包总结生成)
c#
c#上位机19 小时前
wpf之行为
c#·wpf
星夜泊客19 小时前
C# 基础:为什么类可以在静态方法中创建自己的实例?
开发语言·经验分享·笔记·unity·c#·游戏引擎
kylezhao201921 小时前
深入浅出地理解 C# WPF 中的属性
hadoop·c#·wpf
多多*21 小时前
2月3日面试题整理 字节跳动后端开发相关
android·java·开发语言·网络·jvm·adb·c#
Dev7z1 天前
基于改进YOLOv5n与OpenVINO加速的课堂手机检测系统设计与实现
人工智能·yolo·openvino·手机检测·课堂手机检测
一念春风1 天前
C# 通用工具类代码
c#
海盗12341 天前
WPF上位机组件开发-设备状态运行图基础版
开发语言·c#·wpf
浮生如梦_1 天前
C# 窗体工厂类 - 简单工厂模式演示案例
计算机视觉·c#·视觉检测·简单工厂模式
两千次1 天前
web主从站
windows·c#