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
? 各位开发者可以根据自己情况加逆行下载,并进行项目配置,其中一些内容的配置可以参考一下文章:
? 最后如果各位开发者在使用中有任何问题,欢迎大家与我联系。