【YOLOv9】实战二:手把手教你使用TensorRT实现YOLOv9实时目标检测(含源码)

‍‍🏡博客主页: 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环境搭建

  1. 部署本项目时所用环境
  • 操作系统: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及以上版本
  1. 软件下载及安装
  • 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模型实现目标检测

  1. 模型及其他初始化:加载yolov9的engine模型及coco.name文件,选择函数选板—Addons—VIRobotics—ModelZoo—Object Detection中的Object_Detection_InitialModel_TensorRT多态VI,其中选择器选择“InitialModel_yolov9_tensorRT”,设置正确的model_path路径和类别名字的文件(coco.names)

    在这里插入图片描述

  2. 配置Config簇控件:如使用了上文的方法将yolov9的onnx转engine,需将InitialModel的Config输入端进行如下配置:
    在这里插入图片描述

  3. 摄像头图像采集:启动摄像头,设置相机分辨率并采集图像

    在这里插入图片描述

  4. 实时推理并绘制检测结果:进行图像预处理,推理,并获取推理结果,将结果绘制出来,以图片控件的形式显示在前面板上;

    在这里插入图片描述

  5. 释放资源:释放相机资源及模型所占内存等资源

  6. 完整源码;
    在这里插入图片描述

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
👇技术交流 · 一起学习 · 咨询分享,请联系👇

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/826993.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CTF工具处理(2)--HackBar报错

来源:HackBar插件绕许可_hackbar许可证-CSDN博客 报错页面: 工具报错原因: 版本升级,需要收费。 破解: 1.下载文件(去网上找破解HackBar) 2.添加附件: 3.重启: 按F12就…

引领4G拾音新时代:DuDuTalk双定向拾音设备上市,助力现场管理步入智能化

近日,继DuDuTalk的4G智能拾音工牌(挂牌和胸牌)之后,赛思云科技在线下沟通场景智能语音采集方案领域的又一突破性产品4G双定向桌面拾音终端全新上市。 该产品是面向营业网点、市政大厅、医疗诊室、售票窗口、贵宾室等环境的柜台服…

【工具-pip】

工具-pip ■ pip-工具■ pip-安装■ pip-卸载■ pip-帮助■ pip- 批量安装库■ 批量卸载库■ 提高pip下载速度 ■ pip-工具 pip 是 Python 标准库中的一个包,这个包是用来管理 Python 第三方库。 通用的 Python 包管理工具。提供了对 Python 包的查找、下载、安装、…

cesium 动态线效果

一、扩展材质 function PolylineTrailMaterial(options) {options Cesium.defaultValue(options, Cesium.defaultValue.EMPTY_OBJECT);this._definitionChanged new Cesium.Event();// 变量初始化this.color Cesium.defaultValue(options.color && new Cesium.Colo…

基于区间预测的调度方法

《基于区间预测的光伏发电与蓄电池优化调度方法》 为了应对县级市光伏发电与用电需求之间的最优调度问题,提出一种面向蓄电池和光伏发电机的区间预测调度优化方法。该方法分别对发电功率调度、充电/放电功率调度和荷电状态调度进行决策从而获得最优调度的精确范围。…

Python Flask Web框架快速入门

Flask 入门Demo Flask 开发环境搭建,执行如下指令: pip install flask # 第一节: Flask 快速入门from flask import Flask app Flask(__name__)app.route(/flask) def hello_flask():return Hello Flaskapp.run() 核心代码剖析: 从 fla…

RTSP/Onvif视频监控平台EasyNVR如何提高匿名用户的用户名和密码安全性?

EasyNVR安防视频云平台是旭帆科技TSINGSEE青犀旗下支持RTSP/Onvif协议接入的安防监控流媒体视频云平台。平台具备视频实时监控直播、云端录像、云存储、录像检索与回看、告警等视频能力,能对接入的视频流进行处理与多端分发,包括RTSP、RTMP、HTTP-FLV、W…

Nginx+Lua+OpenResty(详解及使用)

一、 Nginx简介 Nginx是一个高性能的Web服务器和反向代理的软件。 Web服务器:就是运行我们web服务的容器,提供web功能,还有tomcat也提供类似的功能。 代理是软件架构和网络设计中,非常重要的一个概念。 二、Nginx的反向代理&…

flutter 谷歌的苹果系统消息推送

flutter firebase 云消息通知教程 (android-安卓、ios-苹果) Android、ReactNative、Flutter集成Firebase推送注意事项 Android:Firebase 凭据 iOS:基于 p8 令牌的 APN 连接 iOS:p12 生成证书 Flutter之对接国外推送onesignal踩坑笔记&a…

0.C++入门(专栏前言)

目录 1.什么是C 2.C的发展史 3.C的重要性 应用: 4.如何学习C 5.关于本专栏 1.什么是C 20世纪80年代,计算机界提出oop(object oriented programming:面向对象)思想,支持面向对象的程序设计应运而生。 1982年,本…

Java实现文件分片上传、大文件秒传

Java实现文件分片上传、大文件秒传,大文件如何做断点续传?JAVAWEB 文件上传及下载,JAVA大文件上传,大文件下载解决方案,JAVA实现文件分片上传并且断点续传,JAVA大文件分片上传/多线程上传功能,超…

JS-47-Node.js06-fs模块-读写文件

Node.js内置的fs模块就是文件系统模块,负责读写文件。 和所有其它JavaScript模块不同的是,fs模块同时提供了异步和同步的方法。 一、回顾:异步方法VS同步方法 1-1、异步方法 因为JavaScript的单线程模型,执行IO操作时&#xff…

STP学习的第一篇

1.STP的基本概念:根桥 (1)STP的主要作用之一是在整个交换网络中计算出一棵无环的“树”(STP树)。 (2)根桥是一个STP交换网络中的“树根”。 (3)STP开始工作后&#xf…

【C++类和对象】初始化列表与隐式类型转换

💞💞 前言 hello hello~ ,这里是大耳朵土土垚~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹 💥个人主页&#x…

《C语言深度解剖》(8):一篇文章彻底学会Visual Studio 调试技巧,新手必看!

🤡博客主页:醉竺 🥰本文专栏:《C语言深度解剖》 😻欢迎关注:感谢大家的点赞评论关注,祝您学有所成! ✨✨💜💛想要学习更多数据结构与算法点击专栏链接查看&am…

MySQL 基础语法(2)

文章目录 创建表查看表修改表表数据插入 本文为表结构相关的基础语言库相关的基础语句 创建表 CREATE TABLE table_name ( field1 datatype comment xxx, field2 datatype, field3 datatype ) character set 字符集 collate 校验规则 engine 存储引擎;CREATE TABLE&#xff1…

NLP(2)--搭建简单的模型(nn)

前言 仅记录学习过程,有问题欢迎讨论 可能使用到的包 可以通过Anaconda直接install,不行就PIP install xxx PythonTorchTransformersScikit-learnNumpyGensimPandas 我的版本: 可以用 conda list 查看 代码 如果有包导入不进来&…

如何搭建私域获取淘宝店铺卖家订单信息trade.fullinfo.get

私域流量主要由已经对企业或品牌感兴趣并进行关注的用户组成,这些用户对企业具有一定的忠诚度和粘性。通过与这些用户建立良好的互动和关系,企业可以进一步提升用户的忠诚度和转化率,从而有助于建立持续稳定的业务模式和盈利模式,…

【ARFoundation自学01】搭建AR框架+检测平面+点击克隆立方体到地面=自信入门!

介绍 AR 的功能其实是个大手机系统厂商和眼镜设备厂商开发的功能,并不是Unity的功能,毕竟Unity没有自己的手机设备!比如谷歌公司的安卓开发了ARcore,让所有安卓8.0版本以上的用户能够在手机上体验AR功能!苹果推出了AR…

2024红明谷杯——Misc 加密的流量

2024红明谷杯——Misc 加密的流量 写在前面: 这里是贝塔贝塔,照例来一段闲聊 打比赛但赛前一波三折,又是成功签到的一个比赛 说起来比赛全名叫红明谷卫星应用数据安全场景赛,但好像真的跟卫星的关系不大,没有bin方…