【YoloDeployCsharp】基于.NET Framework的YOLO深度学习模型部署测试平台
1. 项目介绍
基于.NET Framework 4.8 开发的深度学习模型部署测试平台,提供了YOLO框架的主流系列模型,包括YOLOv8~v9,以及其系列下的Det、Seg、Pose、Obb、Cls等应用场景,同时支持图像与视频检测。模型部署引擎使用的是OpenVINO、TensorRT、ONNX runtime以及OpenCV DNN,支持CPU、IGPU以及GPU多种设备推理。
其中,OpenVINO以及TensorRT的C#接口均为自行开发,项目链接为:
OpenVINO C# API :
https://github.com/guojin-yan/OpenVINO-CSharp-API.git
TensorRT C# API :
https://github.com/guojin-yan/TensorRT-CSharp-API.git
演示视频:
C#&YOLO系列深度学习模型部署平台页面主要包括四个区域,分别为:模型选择和加载区域、推理区域、输入图像展示区域以及输出结果图像展示区域。如下图所示:

如下图所示,演示的是使用YOLOv5 Det模型的推理情况,

同样的方式,我们可以实现多种模型在不同平台的上的推理,如下图所示:
![]() |
![]() |
|---|---|
![]() |
![]() |
2. 支持模型
项目在开发时,同时开发了YOLOv5~v9以及YOLO World等YOLO系列模型,模型部署工具使用的是OpenVINO 、TensorRT 、ONNX runtime、OpenCV DNN,但有一些模型部署工具对模型的算子存在不支持情况,因此,对该项目中所使用的所有模型进行了测试,如下表所示:
| Model | OpenVINO CPU | OpenVINO GPU | TensorRT GPU | ONNX runtime CPU | ONNX runtime GPU | OpenCV DNN |
|---|---|---|---|---|---|---|
| YOLOv5 Det | ||||||
| YOLOv5 Seg | ||||||
| YOLOv5 Cls | ||||||
| YOLOv6 Det | ||||||
| YOLOv7 Det | ||||||
| YOLOv8 Det | ||||||
| YOLOv8 Seg | ||||||
| YOLOv8 Pose | ||||||
| YOLOv8 Obb | ||||||
| YOLOv8 Cls | ||||||
| YOLOv9 Det | ||||||
| YOLOv9 Seg | ||||||
| YOLO World |
3. 时间测试
在开发的模型部署平台上进行时间测试,当前的测试环境为:
- CPU:11th Intel Core i7-1165G7 2.8GHz
- IGPU:Intel Iris Xe Graphics
- GPU:NVIDIA GeForce RTX 2060
在同一环境下,对其中一些模型进行了测试,如下表所示:
| Model | OpenVINO CPU | OpenVINO IGPU | TensorRT GPU | ONNX runtime CPU | ONNX runtime GPU | OpenCV DNN |
|---|---|---|---|---|---|---|
| YOLOv5s Det | 53.78 ms | 28.84 ms | 22.95 ms | 95.68 ms | 29.22 ms | 178.53 ms |
| YOLOv5s Seg | 119.53 ms | 43.49 ms | 31.17 ms | 144.68 ms | 42.27 ms | 500.26 ms |
| YOLOv6s Det | 98.66 ms | 43.50 ms | 19.93 ms | 147.14 ms | 25.90 msd | 155.20 ms |
| YOLOv8s Det | 77.06 ms | 37.54 ms | 20.04 ms | 134.05 ms | 25.82 ms | 191.34 ms |
| YOLOv8s Seg | 105.55 ms | 48.45 ms | 25.91 ms | 200.01 ms | 37.24 ms | 532.16 ms |
通过测试结果可以看出:
- 在GPU上:使用独立显卡加速的TensorRT在推理速度上表现是十分优秀的,但使用集成显卡加速的OpenVINO其推理速度也不容小觑,如果上到英特尔的独立显卡,其推理速度应该还会有很大程度上的提升,而ONNX runtime使用独立显卡加速,其推理性能上与TensorRT相比稍逊色;
- 在CPU上,OpenVINO 的表现时十分突出的,在使用极少的CPU占用上,其推理速度已经有了很大的提升,而ONNX runtime以及OpenCV DNN占用CPU很大的情况下,其推理速度远不如OpenVINO。
4. 总结
项目源码目前已经在GitHub上开源,项目链接为:
https://github.com/guojin-yan/YoloDeployCsharp.git
各位开发者可以根据自己情况加逆行下载,并进行项目配置,其中一些内容的配置可以参考一下文章:
最后如果各位开发者在使用中有任何问题,欢迎大家与我联系。

【YoloDeployCsharp】基于.NET Framework的YOLO深度学习模型部署测试平台的更多相关文章
- 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 ...
- 利用 TFLearn 快速搭建经典深度学习模型
利用 TFLearn 快速搭建经典深度学习模型 使用 TensorFlow 一个最大的好处是可以用各种运算符(Ops)灵活构建计算图,同时可以支持自定义运算符(见本公众号早期文章<Tenso ...
- 在NLP中深度学习模型何时需要树形结构?
在NLP中深度学习模型何时需要树形结构? 前段时间阅读了Jiwei Li等人[1]在EMNLP2015上发表的论文<When Are Tree Structures Necessary for ...
- PyTorch如何构建深度学习模型?
简介 每过一段时间,就会有一个深度学习库被开发,这些深度学习库往往可以改变深度学习领域的景观.Pytorch就是这样一个库. 在过去的一段时间里,我研究了Pytorch,我惊叹于它的操作简易.Pyto ...
- flask部署深度学习模型
flask部署深度学习模型 作为著名Python web框架之一的Flask,具有简单轻量.灵活.扩展丰富且上手难度低的特点,因此成为了机器学习和深度学习模型上线跑定时任务,提供API的首选框架. 众 ...
- 用 Java 训练深度学习模型,原来可以这么简单!
本文适合有 Java 基础的人群 作者:DJL-Keerthan&Lanking HelloGitHub 推出的<讲解开源项目> 系列.这一期是由亚马逊工程师:Keerthan V ...
- CUDA上深度学习模型量化的自动化优化
CUDA上深度学习模型量化的自动化优化 深度学习已成功应用于各种任务.在诸如自动驾驶汽车推理之类的实时场景中,模型的推理速度至关重要.网络量化是加速深度学习模型的有效方法.在量化模型中,数据和模型参数 ...
- CUDA上的量化深度学习模型的自动化优化
CUDA上的量化深度学习模型的自动化优化 深度学习已成功应用于各种任务.在诸如自动驾驶汽车推理之类的实时场景中,模型的推理速度至关重要.网络量化是加速深度学习模型的有效方法.在量化模型中,数据和模型参 ...
- AI佳作解读系列(一)——深度学习模型训练痛点及解决方法
1 模型训练基本步骤 进入了AI领域,学习了手写字识别等几个demo后,就会发现深度学习模型训练是十分关键和有挑战性的.选定了网络结构后,深度学习训练过程基本大同小异,一般分为如下几个步骤 定义算法公 ...
随机推荐
- MySQL 汉字字段 拼音排序
原数据 排序后 SELECT c1 FROM test ORDER BY CONVERT ( c1 USING gbk )
- quartus之ram的IP测试
quartus之ram的IP测试 1.基本原理 ram,读取存储器,用于储存数据.基本的原理就是使用时钟驱动时序,利用地址区分位置,使用使能控制写入.输出的结果以写入的位宽输出. 2.实际操作 顶层代 ...
- FPGA之PLD的简单设计
FPGA之PLD的简单设计 1.实验原理 PLD是可编程逻辑器件的简称,是FPGA的前身(FPGA是在PLD的基础上发展出来的).从PLD设计可以感受早期可编程逻辑器件的特点,了解FPGA在器件层的原 ...
- 化腐朽为神奇的QueryMapping
化腐朽为神奇的QueryMapping 老车除了报废没别的方法? 应用系统就像老车,经过十几二十年的使用,积累了大量里程数据,但是英雄迟暮,反应迟钝,时不时还要病休.但就这样报废,推到重来,如果没有充 ...
- FFmpeg开发笔记(九)Linux交叉编译Android的x265库
<FFmpeg开发实战:从零基础到短视频上线>一书的"12.1.2 交叉编译Android需要的so库"介绍了如何在Windows环境交叉编译Android所需FF ...
- Go 中的格式化字符串`fmt.Sprintf()` 和 `fmt.Printf()`
在 Go 中,可以使用 fmt.Sprintf() 和 fmt.Printf() 函数来格式化字符串,这两个函数类似于 C 语言中的 scanf 和 printf 函数. fmt.Sprintf() ...
- reactive stream协议详解
目录 背景 什么是reactive stream 深入了解java版本的reactive stream Publisher Subscriber Subscription Processor JDK中 ...
- vc修改ocx控件classID
背景: 客户希望,classID 为客户自已定义好的一个 ID ,由于我们自动生成的 classID 和客户定义的 ID 不同,所以我们需要修改 classID 为客户指定的 ID 解决方法: 1.打 ...
- centos6.5下安装配置apache2.4.9
centos6.5下安装配置apache2.4.9 摘要: 需要下载的包 apr-1.5.0.tar.gz apr-util-1.5.3.tar.gz pcre-8.33.tar.gz httpd-2 ...
- python mmsql连接支持
前言 因为我使用的是mmsql数据库,因为遇到一点坑,所以发布出来. 正文 准备工作: https://www.lfd.uci.edu/~gohlke/pythonlibs/#pymssql 下载对应 ...



