找回密码
 立即注册
首页 业界区 业界 DeploySharp开源发布:让C#部署深度学习模型更加简单 ...

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

徙办 4 天前
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 支持并优化现有引擎的异构计算能力。
    项目链接:
  1. https://github.com/guojin-yan/DeploySharp.git
复制代码
2. 模型支持列表

Model NameModel TypeOpenVINOONNX RuntimeTensorRTYOLOv5Detection✅✅ing...YOLOv5Segmentation✅✅ing...YOLOv6Detection✅✅ing...YOLOv7Detection✅✅ing...YOLOv8Detection✅✅ing...YOLOv8Segmentation✅✅ing...YOLOv8Pose✅✅ing...YOLOv8Oriented Bounding Boxes✅✅ing...YOLOv9Detection✅✅ing...YOLOv9Segmentation✅✅ing...YOLOv10Detection✅✅ing...YOLOv11Detection✅✅ing...YOLOv11Segmentation✅✅ing...YOLOv11Pose✅✅ing...YOLOv11Oriented Bounding Boxes✅✅ing...YOLOv12Detection✅✅ing...AnomalibSegmentation✅✅ing...3. NuGet Package

3.1 Core Managed Libraries

PackageDescriptionLinkJYPPX.DeploySharpDeploySharp API core librarieshttps://www.nuget.org/packages/JYPPX.DeploySharp/3.2 Native Runtime Libraries

PackageDescriptionLinkJYPPX.DeploySharp.ImageSharpAn assembly that uses ImageSharp as an image processing tool.https://www.nuget.org/packages/JYPPX.DeploySharp.ImageSharp/JYPPX.DeploySharp.OpenCvSharpAn assembly that uses OpenCvSharp as an image processing tool.https://www.nuget.org/packages/JYPPX.DeploySharp.OpenCvSharp/4. 如何安装

4.1 获取方式

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

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

4.2 NuGet Package组合使用方式

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

  • OpenVINO推理+OpenCvSharp图像处理
  1. JYPPX.DeploySharp
  2. JYPPX.DeploySharp.OpenCvSharp
  3. OpenVINO.runtime.win
  4. OpenCvSharp4.runtime.win
复制代码

  • OpenVINO推理+ImageSharp图像处理
  1. JYPPX.DeploySharp
  2. JYPPX.DeploySharp.ImageSharp
  3. OpenVINO.runtime.win
复制代码

  • ONNX Runtime推理+OpenCvSharp图像处理
  1. JYPPX.DeploySharp
  2. JYPPX.DeploySharp.OpenCvSharp
  3. OpenCvSharp4.runtime.win
复制代码

  • ONNX Runtime推理+ImageSharp图像处理
  1. JYPPX.DeploySharp
  2. JYPPX.DeploySharp.OpenCvSharp
复制代码

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

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

  • ONNX Runtime(CUDA加速)推理+ImageSharp图像处理
  1. JYPPX.DeploySharp
  2. JYPPX.DeploySharp.ImageSharp
  3. Microsoft.ML.OnnxRuntime.DirectML
复制代码
     由于使用CUDA对ONNX Runtime加速受GPU设备型号以及软件版本影响,因此需要按照ONNX Runtime官方提供的版本对应关系进行下载使用,其中ONNX Runtime与CUDA、cuDNN对应关系请参考一下以下链接:
  1. https://runtime.onnx.org.cn/docs/execution-providers/CUDA-ExecutionProvider.html#requirements
复制代码
     以上所列出的使用方式均可以通过NuGet Package一键安装,同样的,ONNX Runtime还支持更多加速方式,但需要用户自己进行代码构建,其构建流程与方式,参考官方教程即可,链接为:
  1. https://runtime.onnx.org.cn/docs/execution-providers/
复制代码
5. 开始使用

     如果你不知道如何使用,通过下面代码简单了解使用方法。
5.1 ImageSharp图像处理
  1. using DeploySharp.Data;
  2. using DeploySharp.Engine;
  3. using DeploySharp.Model;
  4. using SixLabors.ImageSharp;
  5. using SixLabors.ImageSharp.PixelFormats;
  6. using System;
  7. namespace DeploySharp.ImageSharp.Demo
  8. {
  9.     public class YOLOv5DetDemo
  10.     {
  11.         public static void Run()
  12.         {
  13.             // 模型和测试图片可以前往QQ群(945057948)下载
  14.             // 将下面的模型路径替换为你自己的模型路径
  15.             string modelPath = @"E:\Model\Yolo\yolov5s.onnx";
  16.             // 将下面的图片路径替换为你自己的图片路径
  17.             string imagePath = @"E:\Data\image\bus.jpg";
  18.             Yolov5DetConfig config = new Yolov5DetConfig(modelPath);
  19.             //config.SetTargetInferenceBackend(InferenceBackend.OnnxRuntime);
  20.             Yolov5DetModel model = new Yolov5DetModel(config);
  21.             var img = Image.Load(imagePath);
  22.             var result = model.Predict(img);
  23.             model.ModelInferenceProfiler.PrintAllRecords();
  24.             var resultImg = Visualize.DrawDetResult(result, img as Image<Rgb24>, new VisualizeOptions(1.0f));
  25.             resultImg.Save(@$"./result_{ModelType.YOLOv5Det.ToString()}.jpg");
  26.         }
  27.     }
  28. }
复制代码
5.2 OpenCvSharp图像处理
  1. using OpenCvSharp;
  2. using System.Diagnostics;
  3. using DeploySharp.Model;
  4. using DeploySharp.Data;
  5. using DeploySharp.Engine;
  6. using DeploySharp;
  7. using System.Net.Http.Headers;
  8. namespace DeploySharp.OpenCvSharp.Demo
  9. {
  10.     public class YOLOv5DetDemo
  11.     {
  12.         public static void Run()
  13.         {
  14.             // 模型和测试图片可以前往QQ群(945057948)下载
  15.             // 将下面的模型路径替换为你自己的模型路径
  16.             string modelPath = @"E:\Model\Yolo\yolov5s.onnx";
  17.             // 将下面的图片路径替换为你自己的图片路径
  18.             string imagePath = @"E:\Data\image\bus.jpg";
  19.             Yolov5DetConfig config = new Yolov5DetConfig(modelPath);
  20.             config.SetTargetInferenceBackend(InferenceBackend.OnnxRuntime);
  21.             Yolov5DetModel model = new Yolov5DetModel(config);
  22.             Mat img = Cv2.ImRead(imagePath);
  23.             var result = model.Predict(img);
  24.             model.ModelInferenceProfiler.PrintAllRecords();
  25.             var resultImg = Visualize.DrawDetResult(result, img, new VisualizeOptions(1.0f));
  26.             Cv2.ImShow("image", resultImg);
  27.             Cv2.WaitKey();
  28.         }
  29.     }
  30. }
复制代码
6.应用案例

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

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

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

8. 贡献

     如果您对DeploySharp在C#使用感兴趣,有兴趣对开源社区做出自己的贡献,欢迎加入我们,一起开发DeploySharp
     如果你对该项目有一些想法或改进思路,欢迎联系我们,指导下我们的工作。
9.  许可证书

     本项目的发布受Apache 2.0 license许可认证。
    最后如果各位开发者在使用中有任何问题,欢迎大家与我联系。
5.png


来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册