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深度学习模型部署测试平台的更多相关文章

  1. Opencv调用深度学习模型

    https://blog.csdn.net/lovelyaiq/article/details/79929393 https://blog.csdn.net/qq_29462849/article/d ...

  2. Apple的Core ML3简介——为iPhone构建深度学习模型(附代码)

    概述 Apple的Core ML 3是一个为开发人员和程序员设计的工具,帮助程序员进入人工智能生态 你可以使用Core ML 3为iPhone构建机器学习和深度学习模型 在本文中,我们将为iPhone ...

  3. 利用 TFLearn 快速搭建经典深度学习模型

      利用 TFLearn 快速搭建经典深度学习模型 使用 TensorFlow 一个最大的好处是可以用各种运算符(Ops)灵活构建计算图,同时可以支持自定义运算符(见本公众号早期文章<Tenso ...

  4. 在NLP中深度学习模型何时需要树形结构?

    在NLP中深度学习模型何时需要树形结构? 前段时间阅读了Jiwei Li等人[1]在EMNLP2015上发表的论文<When Are Tree Structures Necessary for ...

  5. PyTorch如何构建深度学习模型?

    简介 每过一段时间,就会有一个深度学习库被开发,这些深度学习库往往可以改变深度学习领域的景观.Pytorch就是这样一个库. 在过去的一段时间里,我研究了Pytorch,我惊叹于它的操作简易.Pyto ...

  6. flask部署深度学习模型

    flask部署深度学习模型 作为著名Python web框架之一的Flask,具有简单轻量.灵活.扩展丰富且上手难度低的特点,因此成为了机器学习和深度学习模型上线跑定时任务,提供API的首选框架. 众 ...

  7. 用 Java 训练深度学习模型,原来可以这么简单!

    本文适合有 Java 基础的人群 作者:DJL-Keerthan&Lanking HelloGitHub 推出的<讲解开源项目> 系列.这一期是由亚马逊工程师:Keerthan V ...

  8. CUDA上深度学习模型量化的自动化优化

    CUDA上深度学习模型量化的自动化优化 深度学习已成功应用于各种任务.在诸如自动驾驶汽车推理之类的实时场景中,模型的推理速度至关重要.网络量化是加速深度学习模型的有效方法.在量化模型中,数据和模型参数 ...

  9. CUDA上的量化深度学习模型的自动化优化

    CUDA上的量化深度学习模型的自动化优化 深度学习已成功应用于各种任务.在诸如自动驾驶汽车推理之类的实时场景中,模型的推理速度至关重要.网络量化是加速深度学习模型的有效方法.在量化模型中,数据和模型参 ...

  10. AI佳作解读系列(一)——深度学习模型训练痛点及解决方法

    1 模型训练基本步骤 进入了AI领域,学习了手写字识别等几个demo后,就会发现深度学习模型训练是十分关键和有挑战性的.选定了网络结构后,深度学习训练过程基本大同小异,一般分为如下几个步骤 定义算法公 ...

随机推荐

  1. 使用fiddler抓取HTTPS的数据包(抓取App端的数据包)

    众所周知,我们在做接口测试的时候有两种情况: 第一种是先拿到接口测试规范文档,再去做接口测试. 第二种是没有接口文档,只有通过自己抓包. 那么说到抓包,就不得不说抓包工具,对于浏览器web端,我们只需 ...

  2. 实现基于TCP的服务端/客户端

    服务端套接字创建过程 第一步:调用socket函数创建套接字 //成功时返回文件表述符,失败时返回-1 int socket(int __domain, int __type, int __proto ...

  3. #Multi-SG#HDU 5795 A Simple Nim

    题目 有\(n\)堆石子,每次可以从一堆中取出若干个或是将一堆分成三堆非空的石子, 取完最后一颗石子获胜,问先手是否必胜 分析 它的后继还包含了分成三堆非空石子的SG函数,找规律可以发现 \[SG[x ...

  4. OpenHarmony AI框架开发指导

    一.概述 1.功能简介 AI 业务子系统是 OpenHarmony 提供原生的分布式 AI 能力的子系统.AI 业务子系统提供了统一的 AI 引擎框架,实现算法能力快速插件化集成. AI 引擎框架主要 ...

  5. OpenHarmony加速行业应用落地,多款软件发行版正通过兼容性测评

    4 月 25 日,OpenAtom OpenHarmony(以下简称"OpenHarmony")技术日在深圳举办,大会聚焦 OpenHarmony 3.1 Release 版本核心 ...

  6. 直播预告丨 OpenHarmony 标准系统多媒体子系统之相机解读

    5 月 26日(周四)晚上 19 点,OpenHarmony 开源开发者成长计划知识赋能第五期"掌握 OpenHarmony 多媒体的框架原理"的第六节直播课,即将开播! 深开鸿资 ...

  7. C# Break 和 Continue 语句以及数组详解

    C# Break 它被用于"跳出" switch 语句. break 语句也可用于跳出循环. 以下示例在 i 等于 4 时跳出循环: 示例: for (int i = 0; i & ...

  8. 国产开源数据库OpenGauss的安装运行

    步骤一:OpenGauss 的安装 环境 OS:openEuler 20.03 64bit with ARM 架构:arm64 部署:单机 安装过程 1.环境配置 安装依赖包: yum install ...

  9. 双端队列的基本实现【数据结构与算法—TypeScript 实现】

    笔记整理自 coderwhy 『TypeScript 高阶数据结构与算法』课程 特性 本质:允许队列在两端进行 入队 和 出队 操作 设计 实现方式:基于 数组 实现 属性: data:存放队列元素 ...

  10. C#开发的PhotoNet看图软件 - 开源研究系列文章 - 个人小作品

    这几天忙于编程.上次发布了壁纸管理器的插件版( https://www.cnblogs.com/lzhdim/p/18074135 ),然后整理和添加了一下相关的壁纸图片文件,虽然在管理器中也能浏览壁 ...