🏡博客主页: virobotics(仪酷智能):LabVIEW深度学习、人工智能博主
🎄所属专栏:『LabVIEW深度学习实战』
📑上期文章:『【YOLOv9】实战一:在 Windows 上使用LabVIEW OpenVINO工具包部署YOLOv9实现实时目标检测(含源码)』
🍻本文由virobotics(仪酷智能)原创🥳欢迎大家关注✌点赞👍收藏⭐留言📝订阅专栏
文章目录
- 🧩前言
- 🧭TensorRT™工具包及YOLOv9简介
- 1.1 TensorRT™简介
- 1.2 LabVIEW TensorRT™工具包介绍
- 1.3 YOLOv9简介
- 🎈YOLOv9环境搭建
- 🚲️模型获取
- 3.1 源码下载
- 3.2 配置环境
- 3.3 下载并导出onnx模型
- 🎨项目实践
- 4.1 项目简介
- 4.2 yolov9导出engine模型
- 3.3 加载YOLOv9模型实现目标检测
- 3.3 运行效果
- 💻项目源码
- 🎯总结
🧩前言
好久不见,很开心今天能够以文字的形式与大家见面~
Hello,大家好,我是你们的virobotics(仪酷智能),一个深耕于LabVIEW和人工智能领域的开发工程师。
上一片博文给大家介绍了在 Windows 上使用LabVIEW OpenVINO工具包部署YOLOv9实现实时目标检测,相信大家对YOLOv9已有初步了解。如大家所知:YOLOv9引入了可编程梯度信息 (PGI) 和广义高效层聚合网络 (GELAN) 等开创性技术,不仅增强了模型的学习能力,还确保了在整个检测过程中保留关键信息,从而实现了卓越的准确性和性能。官方代码目前已经开源。
YOLOv9结合LabVIEW的强大功能和TensorRT的优化性能,我们可以创建高效且响应迅速的视觉系统。本文将详细介绍如何使用仪酷LabVIEW TensorRT工具包部署YOLOv9模型,以及如何处理可能遇到的挑战。
🧭TensorRT™工具包及YOLOv9简介
1.1 TensorRT™简介
TensorRT™是一个高性能的深度学习推理(Inference)优化器,可以为深度学习应用提供低延迟、高吞吐率的部署推理。TensorRT™可用于对超大规模数据中心、嵌入式平台或自动驾驶平台进行推理加速。TensorRT™现已能支持TensorFlow、Caffe、Mxnet、Pytorch等几乎所有的深度学习框架,将TensorRT™和NVIDIA的GPU结合起来,能在几乎所有的框架中进行快速和高效的部署推理。主要用来针对 NVIDIA GPU进行高性能推理(Inference)加速。
1.2 LabVIEW TensorRT™工具包介绍
LabVIEW TensorRT™工具包是我们(VIRobotics团队)基于TensorRT™ 开发的一款AI推理加速工具包,整个工具包作为LabVIEW的插件,结合LabVIEW提供的丰富工具及VI使得集成各种AI模型到更大的系统中变得简单。无论是数据采集、信号处理还是与其他硬件的交互,都可以在同一个环境中高效完成。可以显著提升在LabVIEW环境中开发和部署计算机视觉及深度学习应用的效率和性能。同时,利用NVIDIA TensorRT的优化能力,能够针对不同的硬件配置自动优化模型,提高推理速度,降低延迟。这对于需要实时反馈的应用来说,是一个巨大的优势。用户可以享受到加速后的模型推理速度,而无需深入了解底层的优化技术。
以下为yolov5s以及yolov8n模型使用LabVIEW TensorRT™工具包在不同显卡上推理的速度测评
(😸在此特别鸣谢不愿透漏姓名的合作伙伴提供的测评结果)
1.3 YOLOv9简介
YOLOv9 在COCO 数据集上的表现体现了其在实时物体检测方面的显著进步,为各种模型大小设定了新的基准。具体如下图所示。
如下图所示,在MS COCO数据集上实时目标检测器的比较中,基于GELAN和PGI的目标检测方法在目标检测性能方面超越了所有先前的从头开始训练的方法。在准确性方面,新方法优于使用大型数据集预训练的RT-DETR,同时也优于基于深度卷积设计的YOLO MS在参数利用方面的表现。
YOLOv9论文链接: YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information
YOLOv9官方开源地址: https://github.com/WongKinYiu/yolov9
🎈YOLOv9环境搭建
- 部署本项目时所用环境
- 操作系统:Windows 64
- LabVIEW:2018及以上 64位版本
- AI视觉工具包(techforce_lib_opencv_cpu):1.0.1.26及以上版本
- TensorRT工具包(virobotics_lib_tensorrt)1.0.0.51及以上版本
- 仪酷Object Detection工具包(virobotics_lib_object_detection):1.0.0.8及以上版本
- 软件下载及安装
- AI视觉工具包下载与安装参考:
https://blog.csdn.net/virobotics/article/details/123656523 - TensorRT工具包下载与安装参考:
https://blog.csdn.net/virobotics/article/details/129304465 - LabVIEW Object_Detection工具包下载与安装
https://blog.csdn.net/virobotics/article/details/132529219
🚲️模型获取
注意:本教程已经为大家提供了YOLOv9的onnx模型,可跳过本步骤。若是想要了解YOLOv9的onnx模型如何导出,则可继续阅读本部分内容。
3.1 源码下载
打开YOLOv9官方开源地址:https://github.com/WongKinYiu/yolov9,下载zip,并解压该压缩包
3.2 配置环境
在“yolov9-main”文件夹下,输入以下指令安装yolov9所需环境:
pip install -r requirements.txt
下面我们来介绍onnx模型的导出(以YOLOv9-c为例,想要导出其他模型的方式也一样,只需要修改名字即可)
3.3 下载并导出onnx模型
此处以官方预训练模型为例,首先下载预训练模型文件,然后调用export.py文件导出ONBNX格式的模型文件
可以在此处下载pt模型:
https://github.com/WongKinYiu/yolov9/releases/download/v0.1/yolov9-c-converted.pt
https://github.com/WongKinYiu/yolov9/releases/download/v0.1/yolov9-c.pt
也可以在官网中直接下载模型:
下载好了之后,将模型放在"yolov9-main"文件夹下,在yolov9-main文件夹下打开cmd,并输入指令:
python export.py --weights ./yolov9-c.pt --imgsz 640 --include onnx
如上图所示即已成功导出onnx模型。
🎨项目实践
4.1 项目简介
本文我们将结合之前开发的 LabVIEW TensorRT™工具包和LabVIEW Object_Detection工具包部署 YOLOv9 模型实现视频流及实时目标检测。
整个项目工程如下,项目模型以YOLOv9-C为例,目前官方较小尺寸的模型还未开放
- model:yolov9的onnx模型及coco.names文件,之后优化好的engine也可以放置在该文件夹下
- video:测试视频文件夹
- yolov9_onnx_to_engine.vi:将yolov9的onnx模型转化为TensorRT引擎模型(.engine)
- yolov9_trt_video.vi:yolov9检测视频流
- yolov9_trt_camera.vi:接入摄像头实现实时目标检测
4.2 yolov9导出engine模型
模型转化为engine,即TensorRT引擎模型是非常有必要的,这种格式是针对特定的GPU架构进行优化的,可以充分利用GPU的并行计算能力。通过将ONNX模型转换为TensorRT引擎模型,可以获得最佳的GPU加速效果,提高推理速度,同时可以获得更高的显存利用率和更低的显存带宽需求,同一台电脑,同一个模型只需做一次模型转换即可。
- 由于yolov9-c.onnx默认有两个输出,而推理时第二个输出往往用不到,所以我们需要使用tensorRT工具包中InetworkDefinition相关函数,首先判断onnx的输出数量,如发现有2个输出,则将后面一个输出(即index为1的输出)进行unmark操作。双击并打开yolov9_onnx_to_engine.vi,程序框图如下图所示:
当然,如果使用yolov9-c-converted.onnx,因为只有一个输出,故不需要去除最后一个输出,可以直接使用工具包自带的onnx_to_engine.vi进行转换。(也可以使用上面的代码进行转换,因为范例yolov9_onnx_to_engine.vi使用了条件分支判断模型的输出有几个。
- 选择需要转换的yolov9.onnx模型以及生成engine模型的路径:
- 将onnx模型转化为engine模型会因显卡不同而有所差异,所用时间也不同,我们只需等待模型转化完毕,将LabVIEW完全关闭即可。
3.3 加载YOLOv9模型实现目标检测
-
模型及其他初始化:加载yolov9的engine模型及coco.name文件,选择函数选板—Addons—VIRobotics—ModelZoo—Object Detection中的Object_Detection_InitialModel_TensorRT多态VI,其中选择器选择“InitialModel_yolov9_tensorRT”,设置正确的model_path路径和类别名字的文件(coco.names)
-
配置Config簇控件:如使用了上文的方法将yolov9的onnx转engine,需将InitialModel的Config输入端进行如下配置:
-
摄像头图像采集:启动摄像头,设置相机分辨率并采集图像
-
实时推理并绘制检测结果:进行图像预处理,推理,并获取推理结果,将结果绘制出来,以图片控件的形式显示在前面板上;
-
释放资源:释放相机资源及模型所占内存等资源
-
完整源码;
3.3 运行效果
按照前文YOLOv9环境搭建安装相关工具包,然后运行 yolov9_tensorRT_video.vi(运行之前请确保电脑已联网),在Nvidia RTX 3080上运行结果如下图所示:
💻项目源码
如需源码,请在一键三连并订阅本专栏后评论区留下邮箱
🎯总结
以上就是今天要给大家分享的内容,希望对大家有用。如有笔误,还请各位及时指正。后续我们将为大家更新更多关于AI模型在LabVIEW的部署范例,欢迎大家关注博主。我是virobotics(仪酷智能),我们下篇文章见~
如您想要探讨更多关于LabVIEW与人工智能技术,欢迎加入我们的技术交流群:705637299。进群请备注:CSDN
如果文章对你有帮助,欢迎✌关注、👍点赞、✌收藏、👍订阅专栏
推荐阅读
【YOLOv5】LabVIEW+TensorRT的yolov5部署实战(含源码))
【YOLOv8】实战一:手把手教你使用YOLOv8实现实时目标检测
【YOLOv8】实战二:YOLOv8 OpenVINO2022版 windows部署实战
【YOLOv8】实战三:基于LabVIEW TensorRT部署YOLOv8
👇技术交流 · 一起学习 · 咨询分享,请联系👇