【YoloDeployCsharp】基于.NET Framework的YOLO深度学习模型部署测试平台

news/2024/9/24 21:21:28/

YoloDeployCsharp|基于.NET Framework的YOLO深度学习模型部署测试平台

  • 1. 项目介绍
  • 2. 支持模型
  • 3. 时间测试
  • 4. 总结

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#模型部署平台:基于YOLOv8目标检测模型的视频检测
  • 哔哩哔哩:C#模型部署平台:基于YOLOv8目标检测模型的视频检测_哔哩哔哩_bilibili

  C#&YOLO系列深度学习模型部署平台页面主要包括四个区域,分别为:模型选择和加载区域、推理区域、输入图像展示区域以及输出结果图像展示区域。如下图所示:

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

  同样的方式,我们可以实现多种模型在不同平台的上的推理,如下图所示:

下面是制作的一个演示视频:

C#模型部署平台:基于YOLOv8目标检测模型的视频检测

2. 支持模型

  项目在开发时,同时开发了YOLOv5~v9以及YOLO World等YOLO系列模型,模型部署工具使用的是OpenVINO 、TensorRT 、ONNX runtime、OpenCV DNN,但有一些模型部署工具对模型的算子存在不支持情况,因此,对该项目中所使用的所有模型进行了测试,如下表所示:

ModelOpenVINO CPUOpenVINO GPUTensorRT GPUONNX runtime CPUONNX runtime GPUOpenCV 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

在同一环境下,对其中一些模型进行了测试,如下表所示:

ModelOpenVINO CPUOpenVINO IGPUTensorRT GPUONNX runtime CPUONNX runtime GPUOpenCV DNN
YOLOv5s Det53.78 ms28.84 ms22.95 ms95.68 ms29.22 ms178.53 ms
YOLOv5s Seg119.53 ms43.49 ms31.17 ms144.68 ms42.27 ms500.26 ms
YOLOv6s Det98.66 ms43.50 ms19.93 ms147.14 ms25.90 msd155.20 ms
YOLOv8s Det77.06 ms37.54 ms20.04 ms134.05 ms25.82 ms191.34 ms
YOLOv8s Seg105.55 ms48.45 ms25.91 ms200.01 ms37.24 ms532.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

  各位开发者可以根据自己情况加逆行下载,并进行项目配置,其中一些内容的配置可以参考一下文章:

  • 最新发布!TensorRT C# API :基于C#与TensorRT部署深度学习模型

  • 在 Windows 上使用 OpenVINO™ C# API 部署 Yolov8-obb 实现任意方向的目标检测 | 开发者实战

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


http://www.ppmy.cn/news/1452982.html

相关文章

Android滑动冲突解决方案面试问题及回答

问题 1: 什么是滑动冲突?在Android开发中常见哪些类型? 答案: 滑动冲突通常发生在多个滑动组件(如ScrollView, ListView, ViewPager等)嵌套使用时,各个组件对同一个滑动事件的响应发生冲突。常见的类型包括垂直滑动冲…

【多维动态规划】Leetcode 62. 不同路径【中等】

不同路径 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。 问总共有多少条不同的路径&#xff1…

MLP手写数字识别(3)-使用tf.data.Dataset模块制作模型输入(tensorflow)

1、tensorflow版本查看 import tensorflow as tfprint(Tensorflow Version:{}.format(tf.__version__)) print(tf.config.list_physical_devices())2、MNIST数据集下载与预处理 (train_images,train_labels),(test_images,test_labels) tf.keras.datasets.mnist.load_data()…

汽车 - 降档补油超车

降档补油这事可是开手动档最大的乐趣之一,甚至还是进阶技巧“跟趾”的基础,所以建议开手动档的朋友一定要熟练掌握。 首先我们要明白手动档降档的意义,简单来说,发动机在转速高的时候能获得更好的加速力。这点相信开手动档的朋友都…

计算机毕业设计Python+Spark知识图谱高考志愿推荐系统 高考数据分析 高考可视化 高考大数据 大数据毕业设计

毕业设计(论文)任务书 毕业设计(论文)题目: 基于大数据的高考志愿推荐系统 设计(论文)的主要内容与要求: 主要内容: 高…

数据仓库实验三:分类规则挖掘实验

目录 一、实验目的二、实验内容和要求三、实验步骤1、创建数据库和表2、决策树分类规则挖掘(1)新建一个 Analysis Services 项目 jueceshu(2)建立数据源视图(3)建立挖掘结构 DST.dmm(4&#xff…

腾讯云CentOS7使用Docker安装ElasticSearch与Kibana详细教程

文章目录 一、安装ElasticSearch二、安装Kibana 一、安装ElasticSearch 使用Docker拉取ElasticSearch镜像 这里版本选择的是7.15.2 docker pull docker.elastic.co/elasticsearch/elasticsearch:7.15.22. 查看ElasticSearch的镜像id docker images3. 创建ElasticSearch容器 …

力扣每日一题104:二叉树的最大深度

题目 给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:3示例 2: 输入:root [1,null,2…