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

‍‍🏡博客主页: virobotics(仪酷智能):LabVIEW深度学习、人工智能博主
🎄所属专栏:『LabVIEW深度学习实战』
📑上期文章:『【YOLOv9】实战一:在 Windows 上使用LabVIEW OpenVINO工具包部署YOLOv9实现实时目标检测(含源码)』
🍻本文由virobotics(仪酷智能)原创

🥳欢迎大家关注✌点赞👍收藏⭐留言📝订阅专栏

🧩前言

好久不见,很开心今天能够以文字的形式与大家见面~

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. 部署本项目时所用环境
  1. 软件下载及安装

🚲️模型获取

注意:本教程已经为大家提供了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完全关闭即可。

4.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. 完整源码;
    在这里插入图片描述

4.4 运行效果

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

  • 40
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 21
    评论
### 回答1: 首先,你需要安装好PyTorch和OpenCV。然后,你可以从GitHub上下载yolov5的代码。 接下来,你需要准备你的数据集。数据集应该包你想要检测的物体的图像和标签。标签应该是一个XML文件,其中包物体的类别和位置。 然后,你需要将数据集分成训练集和验证集。训练集用于训练模型,验证集用于评估模型的性能。 接下来,你需要创建一个配置文件,其中包模型的参数和训练的超参数。你可以使用默认的配置文件,也可以根据你的需求进行修改。 然后,你可以开始训练模型。在训练过程中,你可以使用tensorboard来监视模型的性能。 最后,你可以使用训练好的模型来进行目标检测。你可以使用OpenCV来读取图像,并使用训练好的模型来检测物体。 总之,使用yolov5训练自己的目标检测模型需要一些准备工作和技能,但是一旦你掌握了这些技能,你就可以创建自己的目标检测模型了。 ### 回答2: Yolov5是一种便捷快速的目标检测框架,它在精度和速度上比之前的版本有所提高。如果你想要使用Yolov5训练自己的目标检测模型,以下是一些步骤和技巧。 1. 准备数据集:首先,必须准备一个数据集,该数据集包你想要检测的物体的图像。数据集可以从其他公开数据集直接下载或从自己收集的数据集中获取。无论是哪种方式,数据集都必须以YOLOv5可读的格式组织,即每个图像必须有一个它的标签文件,标签文件中包有关每个物体位置和类别的信息。 2. 安装必要的依赖项:安装YOLOv5需要具有Python,其次我们要安装所需的Python的库依赖,例如Pytorch、NumPy、Pandas,等等。 可以通过使用conda或pip来安装这些依赖项; 3. Clone YOLOv5 Github repostory:要下载Yolov5,可以克隆YOLOv5 Github网址。从命令行中运行以下命令: git clone https://github.com/ultralytics/yolov5.git cd yolov5 4. 这个项目结构: * ┣ data/ * ┃ ┣ image/ * ┃ ┃ ┣ train/ * ┃ ┃ ┃ ┣ image_1.jpg * ┃ ┃ ┃ ┣ image_1.txt * ┃ ┃ ┃ ...... * ┃ ┃ ┣ valid/ * ┃ ┣ train.py * ┃ ┣ utils/ * ┃ ┣ models/ * ┃ ┣ weights/ * ┣ name.names * ┣ yolov5s.yaml 5. 准备NGC预训练数据:在训练模型前,需要下载预训练权重。YOLOv5的权重文件可以从NGC上下载,也可以从 https://github.com/ultralytics/yolov5/releases/ 上下载发布的权重文件。 6. 配置自己的类别:可以通过YOLOv5的配置文件修改,Yolov5使用YAML(Yet Another Markup Language)格式来配置其超参数,如类别数量,学习率,训练epoch等。 7. 训练模型:准备好以上步骤后,就可以开始训练模型了。可以使用 train.py 脚本进行训练。比如: python train.py --img 640 --batch 16 --epochs 10 --data ./data/yolo.yaml --cfg models/yolov5s.yaml --weights "" 8. 验证、测试模型:尽管loss值很低,并不意味着模型一定很好。因此,为了更好的评估模型的性能,建议你对测试集进行评估,可以使用 detect.py 脚本来进行评估。比如: python detect.py --source data/images/test/ --weights runs/train/exp/weights/best.pt 9. 将模型导出为TensorRT引擎:为了在移动设备或嵌入式设备上使用Yolov5模型,可以将其导出为TensorRT引擎。可以使用Yolov5提供的 export.py 脚本导出为TensorRT引擎。 python export.py --weights runs/train/exp7/weights/best.pt --img 640 --batch 1 总的来说,使用Yolov5训练自己的目标检测模型需要一些前置工作去写,然后通过配置参数,运行训练、验证和测试脚本。在每个步骤中,需要十分清楚自己要做什么,处理好每一个细节问题,才能顺利地完成自己的目标检测模型训练并有一定的精度。 ### 回答3: Yolov5是一种深度学习模型,能够进行目标检测,它对于广泛的物体检测任务具有出色的性能。本文将手把手地介绍如何使用Yolov5进行目标检测模型的训练。 1. 下载和安装Yolov5 第一步是下载和安装Yolov5。我们可以在Github上得到最新的代码,并通过命令运行安装。安装完成后,建议按照提示安装必要的Python依赖项。 2. 准备数据集 第步是准备好训练和测试数据集,可以使用现成的数据集,也可以从头开始创建自己的数据集。对于自制数据集,需要将图像和注释文件存储在相应目录中。注释文件描述了图像中所有目标的位置和类别。当完成这一步骤时,我们应该获得训练和测试集目录,每个目录应该包图像文件和相应的注释文件。 3. 配置训练参数 第三步是为训练配置所需的超参数。这些参数包括网络结构,学习率,批量大小,迭代次数等等。可以通过修改配置文件来设置这些参数。我们需要基于网络结构来选择模型的版本。在配置文件中,我们需要设置图像的大小、目标分类的数量、训练和测试数据集的路径以及其他必要的参数。 4. 训练模型 当所有参数设置完成后,可以开始训练模型。通过在命令行中运行yolo.py脚本,可以启动训练过程。该脚本在训练期间使用指定的超参数和数据集对模型进行训练,并输出各个batch的训练状态信息。 5. 评估模型 训练完模型后,需要对模型进行评估。评估过程包括计算模型的准确度、精度和召回率等指标。我们可以使用测试集对模型进行测试,并输出相关的指标信息。在测试期间,我们可以使用训练期超参数的某些变体或者优化超参数,以改进模型的精度。 6. 应用模型 最后一步是将模型应用于新的数据集。这可以通过在模型的输出上提取目标的位置和类别来完成,从而进行物体检测。在将模型应用于新数据集时,最好考虑训练和验证数据之间的数据分布差异,确保模型在新的数据集上的表现仍然良好。 总之,使用Yolov5进行目标检测模型的训练需要准备好训练和测试数据集、配置模型的超参数以及选择网络结构和版本。训练和评估模型后,就可以将模型应用于新的数据集。需要注意的是,在整个过程中,超参数的选择和调整对模型的性能有着关键性的影响。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

virobotics

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值