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图像处理
JYPPX.DeploySharp
JYPPX.DeploySharp.OpenCvSharp
OpenVINO.runtime.win
OpenCvSharp4.runtime.win
- OpenVINO推理+ImageSharp图像处理
JYPPX.DeploySharp
JYPPX.DeploySharp.ImageSharp
OpenVINO.runtime.win
- ONNX Runtime推理+OpenCvSharp图像处理
JYPPX.DeploySharp
JYPPX.DeploySharp.OpenCvSharp
OpenCvSharp4.runtime.win
- ONNX Runtime推理+ImageSharp图像处理
JYPPX.DeploySharp
JYPPX.DeploySharp.OpenCvSharp
- ONNX Runtime(OpenVINO加速)推理+ImageSharp图像处理
JYPPX.DeploySharp
JYPPX.DeploySharp.ImageSharp
Intel.ML.OnnxRuntime.OpenVino
- ONNX Runtime(DML加速)推理+ImageSharp图像处理
JYPPX.DeploySharp
JYPPX.DeploySharp.ImageSharp
Microsoft.ML.OnnxRuntime.DirectML
- ONNX Runtime(CUDA加速)推理+ImageSharp图像处理
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图像处理
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图像处理
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许可认证。
最后如果各位开发者在使用中有任何问题,欢迎大家与我联系。

DeploySharp开源发布:让C#部署深度学习模型更加简单的更多相关文章
- flask部署深度学习模型
flask部署深度学习模型 作为著名Python web框架之一的Flask,具有简单轻量.灵活.扩展丰富且上手难度低的特点,因此成为了机器学习和深度学习模型上线跑定时任务,提供API的首选框架. 众 ...
- 用TVM在硬件平台上部署深度学习工作负载的端到端 IR 堆栈
用TVM在硬件平台上部署深度学习工作负载的端到端 IR 堆栈 深度学习已变得无处不在,不可或缺.这场革命的一部分是由可扩展的深度学习系统推动的,如滕索弗洛.MXNet.咖啡和皮托奇.大多数现有系统针对 ...
- PyTorch如何构建深度学习模型?
简介 每过一段时间,就会有一个深度学习库被开发,这些深度学习库往往可以改变深度学习领域的景观.Pytorch就是这样一个库. 在过去的一段时间里,我研究了Pytorch,我惊叹于它的操作简易.Pyto ...
- Opencv调用深度学习模型
https://blog.csdn.net/lovelyaiq/article/details/79929393 https://blog.csdn.net/qq_29462849/article/d ...
- Apple的Core ML3简介——为iPhone构建深度学习模型(附代码)
概述 Apple的Core ML 3是一个为开发人员和程序员设计的工具,帮助程序员进入人工智能生态 你可以使用Core ML 3为iPhone构建机器学习和深度学习模型 在本文中,我们将为iPhone ...
- 用 Java 训练深度学习模型,原来可以这么简单!
本文适合有 Java 基础的人群 作者:DJL-Keerthan&Lanking HelloGitHub 推出的<讲解开源项目> 系列.这一期是由亚马逊工程师:Keerthan V ...
- 调参侠的末日? Auto-Keras 自动搜索深度学习模型的网络架构和超参数
Auto-Keras 是一个开源的自动机器学习库.Auto-Keras 的终极目标是允许所有领域的只需要很少的数据科学或者机器学习背景的专家都可以很容易的使用深度学习.Auto-Keras 提供了一系 ...
- CUDA上深度学习模型量化的自动化优化
CUDA上深度学习模型量化的自动化优化 深度学习已成功应用于各种任务.在诸如自动驾驶汽车推理之类的实时场景中,模型的推理速度至关重要.网络量化是加速深度学习模型的有效方法.在量化模型中,数据和模型参数 ...
- CUDA上的量化深度学习模型的自动化优化
CUDA上的量化深度学习模型的自动化优化 深度学习已成功应用于各种任务.在诸如自动驾驶汽车推理之类的实时场景中,模型的推理速度至关重要.网络量化是加速深度学习模型的有效方法.在量化模型中,数据和模型参 ...
- TVM将深度学习模型编译为WebGL
使用TVM将深度学习模型编译为WebGL TVM带有全新的OpenGL / WebGL后端! OpenGL / WebGL后端 TVM已经瞄准了涵盖各种平台的大量后端:CPU,GPU,移动设备等.这次 ...
随机推荐
- 前端开发系列122-进阶篇之Floating point addition
本文简单说明 JavaScript 中常见的进制转换函数以及浮点数计算的注意点. 如何把任意进制的数据转换为十进制? 假设我们有二进制数据110,如果要把该数据转换为十进制数据可以参考下面的处理过程. ...
- Nextcloud error - opcache
首先LAMP的环境应该是已经搭建完了.将Nextcloud放入到web文件夹后,访问nextcloud报错如下. PHP is apparently set up to strip inline do ...
- jz2440 环境搭建
2.搭建三者互通 1.搭建TFTP服务 这两点搞定基本可以飞奔了 记录一下 配置 板子的ip ifconfig eth3 IP地址 不用重启network服务因为也没有这个服务 当然虚拟机里面的一样 ...
- AppLink对51Tracking的集成方式
什么是51Tracking 51Tracking是一个提供国际物流跟踪服务的平台,用户可以通过该平台跟踪包裹在全球范围内的物流信息.该平台提供多家物流公司的跟踪服务,帮助用户更方便地了解包裹的运输情况 ...
- webdriver.Chrome New API
The webdriver.Chrome APIs are simplified in the latest version of Selenium, and both find_element_by ...
- 深入浅析BIO、NIO、AIO
https://www.cnblogs.com/henuliulei/p/15143649.html BIO.NIO.AIO Java的I/O演进之路I/O模型 :就是用什么样的通道或者说是通信模式和 ...
- if-else问题
为什么会有这个问题,最近碰到很多逻辑判断,此时需要用到if-else 以前就听说判断if语句,一定要注意else问题,以前不以为意.现在碰到好多异常现象,每个if语句后面需要重新分析其他分支情况
- 实时语音驱动实现Android端Avatar虚拟人表情表达
语音驱动虚拟人功能简介 ZEGO Avatar SDK 提供了语音驱动功能,通过声音的声波信息,实时驱动当前虚拟人物的嘴形变化,使得虚拟形象能够和真人一样进行自然的情绪表达. 可广泛应用于社交互动.语 ...
- 开源之夏 2022 重磅来袭!欢迎报名 Casbin社区项目!
01 活动简介 "开源之夏(英文简称 OSPP)" 是中科院软件所 "开源软件供应链点亮计划" 指导下的一项面向高校学生的暑期活动,由中国科学院软件研究所与 o ...
- C#/.NET/.NET Core技术前沿周刊 | 第 49 期(2025年8.1-8.10)
前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录.追踪C#/.NET/.NET Core领域.生态的每周最新.最实用.最有价值的技术文章.社区动态.优质项目和学习资源等. ...