【YOLOv8】实战三:基于LabVIEW TensorRT部署YOLOv8

这篇具有很好参考价值的文章主要介绍了【YOLOv8】实战三:基于LabVIEW TensorRT部署YOLOv8。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

‍‍🏡博客主页: virobotics的CSDN博客:LabVIEW深度学习、人工智能博主
🎄所属专栏:『LabVIEW深度学习实战』
🍻上期文章: 【YOLOv8】实战二:YOLOv8 OpenVINO2022版 windows部署实战
📰如觉得博主文章写的不错或对你有所帮助的话,还望大家多多支持呀! 欢迎大家✌关注、👍点赞、✌收藏、👍订阅专栏

前言

大家五一出去玩了吗?祝大家五一出游快乐!之前给大家介绍了一些YOLO 模型在LabVIEW上的部署。感兴趣的话可以查看专栏【深度学习:物体识别(目标检测)】本文主要想和各位读者分享YOLOv8使用TensorRT工具包在LabVIEW中的部署。


一、YOLOv8简介

YOLOv8 是由 YOLOv5 的发布者 Ultralytics 发布的最新版本的 YOLO。它可用于对象检测、分割、分类任务以及大型数据集的学习,并且可以在包括 CPU 和 GPU 在内的各种硬件上执行。

YOLOv8是一种尖端的、最先进的 (SOTA) 模型,它建立在以前成功的 YOLO 版本的基础上,并引入了新的功能和改进,以进一步提高性能和灵活性。YOLOv8 旨在快速、准确且易于使用,这也使其成为对象检测、图像分割和图像分类任务的绝佳选择。具体创新包括一个新的骨干网络、一个新的 Ancher-Free 检测头和一个新的损失函数,还支持YOLO以往版本,方便不同版本切换和性能对比。

YOLOv8 有 5 个不同模型大小的预训练模型:n、s、m、l 和 x。关注下面的参数个数和COCO mAP(准确率),可以看到准确率比YOLOv5有了很大的提升。特别是 l 和 x,它们是大模型尺寸,在减少参数数量的同时提高了精度。
labview调用yolo,LabVIEW深度学习实战,深度学习:物体识别(目标检测),YOLO,深度学习,计算机视觉,人工智能,目标检测,原力计划
每个模型的准确率如下
labview调用yolo,LabVIEW深度学习实战,深度学习:物体识别(目标检测),YOLO,深度学习,计算机视觉,人工智能,目标检测,原力计划

YOLOv8官方开源地址:https://github.com/ultralytics/ultralytics


二、环境搭建

2.1 部署本项目时所用环境

  • 操作系统:Windows10
  • python:3.6及以上
  • LabVIEW:2018及以上 64位版本
  • AI视觉工具包:techforce_lib_opencv_cpu-1.0.0.98.vip
  • tensorRT工具包:virobotics_lib_tensorrt-1.0.0.22.vip

2.2 LabVIEW工具包下载及安装

  • AI视觉工具包下载与安装参考:
    https://blog.csdn.net/virobotics/article/details/123656523
  • TensorRT工具包下载与安装参考:
    https://blog.csdn.net/virobotics/article/details/129304465

三、yolov8导出为onnx

注意:本教程已经为大家提供了YOLOv8的onnx模型,可跳过本步骤,直接进行步骤四-项目实战。若是想要了解YOLOv8的onnx模型如何导出,则可继续阅读本部分内容。

下面我们来介绍onnx模型的导出(以yolov8s为例,想要导出其他模型的方式也一样,只需要修改名字即可)

3.1 安装YOLOv8

YOLOv8的安装有两种方式,pip安装和GitHub安装。

  • pip安装
pip install ultralytics -i https://pypi.douban.com/simple/
  • GitHub安装
git clone https://github.com/ultralytics/ultralytics

cd ultralytics

pip install -e '.[dev]'

安装完成后就可以通过yolo命令在命令行进行使用了。

3.2 下载模型权重文件

在官方网站中下载我们所需要的权重文件
labview调用yolo,LabVIEW深度学习实战,深度学习:物体识别(目标检测),YOLO,深度学习,计算机视觉,人工智能,目标检测,原力计划

注意:这一步其实可以不做,我们在第三步导出模型为onnx的时候如果权重文件不存在,会自动帮我们下载一个权重文件,但速度会较慢,所以个人还是建议先在官网中下载权重文件,再导出为onnx模型

3.3 导出模型为onnx

新建一个文件夹名字为“yolov8_onnx”,将刚刚下载的权重文件“yolov8s.pt”放到该文件夹下的models文件夹里
labview调用yolo,LabVIEW深度学习实战,深度学习:物体识别(目标检测),YOLO,深度学习,计算机视觉,人工智能,目标检测,原力计划
在models文件夹下打开cmd,在cmd中输入以下命令将模型直接导出为onnx模型:

yolo export model=yolov8s.pt format=onnx opset=12 

labview调用yolo,LabVIEW深度学习实战,深度学习:物体识别(目标检测),YOLO,深度学习,计算机视觉,人工智能,目标检测,原力计划
YOLOv8的3个检测头一共有80x80+40x40+20x20=8400个输出单元格,每个单元格包含x,y,w,h这4项再加80个类别的置信度总共84列内容,所以通过上面命令导出的onnx模型的输出维度为1x84x8400。
labview调用yolo,LabVIEW深度学习实战,深度学习:物体识别(目标检测),YOLO,深度学习,计算机视觉,人工智能,目标检测,原力计划
如果觉得上面方式不方便,那我们也可以写一个python脚本,快速导出yolov8的onnx模型,程序如下:

from ultralytics import YOLO
 
# Load a model
model = YOLO("\models\yolov8s.pt")  # load an official model
 
# Export the model
model.export(format="onnx")


四、项目实践

实现效果:基于LabVIEW TensorRT部署YOLOv8

如需要查看TensorRT工具包相关vi含义,可查看:https://blog.csdn.net/virobotics/article/details/129492651

整个项目工程如下,本次项目以yolov8s为例

labview调用yolo,LabVIEW深度学习实战,深度学习:物体识别(目标检测),YOLO,深度学习,计算机视觉,人工智能,目标检测,原力计划

  • model:yolov8模型文件
  • subvi:子vi
  • export.py:将yolov8的pt导出为onnx
  • yolov8_trt_camera:yolov8摄像头视频实时推理

准备工作

  1. 放置一张待检测图片和coco.name到yolov8_onnx文件夹下,本项目中放置了一张dog.jpg图片;
  2. 确保models文件中已经放置了yolov8的onnx模型:yolov8s.onnx;

3.1 onnx转化为engine(onnx to engine.vi)

使用onnx_to_engine.vi,将该vi拖拽至前面板空白区域,创建并输入onnx的路径以及engine的路径,type即精度,可选择FP32或FP16,肉眼观看精度无大差别。(一般FP16模型比FP32速度快一倍
labview调用yolo,LabVIEW深度学习实战,深度学习:物体识别(目标检测),YOLO,深度学习,计算机视觉,人工智能,目标检测,原力计划
转换的完整程序如下:
labview调用yolo,LabVIEW深度学习实战,深度学习:物体识别(目标检测),YOLO,深度学习,计算机视觉,人工智能,目标检测,原力计划

点击运行,等待1~3分钟,模型转换成功,可在刚刚设定的路径中找到我们转化好的yolov8s_FP16.engine,本项目演示结果使用的模型精度为FP16。
labview调用yolo,LabVIEW深度学习实战,深度学习:物体识别(目标检测),YOLO,深度学习,计算机视觉,人工智能,目标检测,原力计划

Q:为什么要转换模型,不直接调用ONNX?
A:tensorRT内部加载ONNX后其实是做了一个转换模型的工作,该过程时间长、占用内存巨大。因此不推荐每次初始化都加载ONNX模型,而是加载engine。

4.2 YOLOv8在LabVIREW中使用TensoRT工具包实现实时目标检测

1.模型初始化:加载yolov8s.engine文件,设置输入输出缓存
• 输入大小为1 * 3 * 640 * 640
• 输出大小为1 * 84 * 8400;
labview调用yolo,LabVIEW深度学习实战,深度学习:物体识别(目标检测),YOLO,深度学习,计算机视觉,人工智能,目标检测,原力计划

2.图像预处理:创建所需Mat并启动摄像头,对视频流中的每帧进行预处理
labview调用yolo,LabVIEW深度学习实战,深度学习:物体识别(目标检测),YOLO,深度学习,计算机视觉,人工智能,目标检测,原力计划

cvtColor:颜色空间转换把采集的BGR图像转为RGB
letterbox:深度学习模型输入图片的尺寸为正方形,而数据集中的图片一般为长方形,粗暴的resize会使得图片失真,采用letterbox可以较好的解决这个问题。该方法可以保持图片的长宽比例,剩下的部分采用灰色填充。
labview调用yolo,LabVIEW深度学习实战,深度学习:物体识别(目标检测),YOLO,深度学习,计算机视觉,人工智能,目标检测,原力计划

blobFromImage的作用:

  • size:640x640(图像resize为640x640)
  • Scale=1/255,
  • Means=[0,0,0](图像归一化至0~1之间)

最后,要将图片数据HWC转换(transpose)为神经网络容易识别的NCHW格式

  • H:图片的高度:640
  • W:图片的宽度:640
  • C:图片的通道数:3
  • N:图片的数量,通常为1

4.模型推理:推荐使用数据指针作为输入给到run.vi,数据的大小为1x3x640x640;

labview调用yolo,LabVIEW深度学习实战,深度学习:物体识别(目标检测),YOLO,深度学习,计算机视觉,人工智能,目标检测,原力计划

5.获取推理结果:循环外初始化一个84x8400的二维数组,此数组作为Get_Result.vi的输入,输出为84x8400的二维数组结果,推理之后,将推理结果由84x8400 transpose为8400x84,以便于输入到后处理;

labview调用yolo,LabVIEW深度学习实战,深度学习:物体识别(目标检测),YOLO,深度学习,计算机视觉,人工智能,目标检测,原力计划

labview调用yolo,LabVIEW深度学习实战,深度学习:物体识别(目标检测),YOLO,深度学习,计算机视觉,人工智能,目标检测,原力计划

6.后处理

labview调用yolo,LabVIEW深度学习实战,深度学习:物体识别(目标检测),YOLO,深度学习,计算机视觉,人工智能,目标检测,原力计划

范例中yolov8_post_process 的输入8400x84,84的排列顺序:

  • 第0列代表物体中心x在图中的位置
  • 第1列表示物体中心y在图中的位置
  • 第2列表示物体的宽度
  • 第3列表示物体的高度
  • 第4~83列为基于COCO数据集的80分类的标记权重,最大的为输出分类。

8400的含义是:YOLOv8的3个检测头一共有80x80+40x40+20x20=8400个输出单元格
yolov8_post_process 的输出为box的x,y,w,h以及confidence和类别class

注:如果用户训练自己的数据集,则列数将根据用户定义的类别数改变。如果用户的数据集中有2类,那么输入数据的大小将为8400x6。前4列意义和之前相同,后2列为每一个分类的标记权重。

7.绘制检测结果

labview调用yolo,LabVIEW深度学习实战,深度学习:物体识别(目标检测),YOLO,深度学习,计算机视觉,人工智能,目标检测,原力计划

8.完整源码;
labview调用yolo,LabVIEW深度学习实战,深度学习:物体识别(目标检测),YOLO,深度学习,计算机视觉,人工智能,目标检测,原力计划

9.运行效果(运行电脑独显为笔记本RTX 3060,模型精度为FP16,检测1280*720的视频流)
labview调用yolo,LabVIEW深度学习实战,深度学习:物体识别(目标检测),YOLO,深度学习,计算机视觉,人工智能,目标检测,原力计划
之后我们将给大家介绍使用GPU(tensorRT)完成图像的预处理和后处理,进一步优化模型,提升速度</font

五、项目源码

码字不易,如需源码,请一键三连并订阅本专栏后评论区留下邮箱


总结

以上就是今天要给大家分享的内容,希望对大家有用。我们下篇文章见~

如果文章对你有帮助,欢迎✌关注、👍点赞、✌收藏、👍订阅专栏

推荐阅读

LabVIEW图形化的AI视觉开发平台(非NI Vision),大幅降低人工智能开发门槛
LabVIEW图形化的AI视觉开发平台(非NI Vision)VI简介
LabVIEW AI视觉工具包OpenCV Mat基本用法和属性
手把手教你使用LabVIEW人工智能视觉工具包快速实现图像读取与采集
LabVIEW图形化TensoRT工具包的安装下载分享
【YOLOv8】实战一:手把手教你使用YOLOv8实现实时目标检测)
【YOLOv8】实战二:YOLOv8 OpenVINO2022版 windows部署实战
👇技术交流 · 一起学习 · 咨询分享,请联系👇文章来源地址https://www.toymoban.com/news/detail-721961.html

到了这里,关于【YOLOv8】实战三:基于LabVIEW TensorRT部署YOLOv8的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 记录我的tensorrt 部署yolov8

    系统 :ubuntu 18.04 代码 :https://github.com/triple-Mu/YOLOv8-TensorRT conda 环境 : 按照上面代码环境安装  python==3.8 cuda : 11.8 tensorrt : 8.5.1.7-1+cuda11.8 没有cudnn nvidia-tensorrt(conda) : 8.4.1.5  Driver Version: 530.41.03 在我电脑上加速 3倍左右   我电脑设备 3060

    2024年02月10日
    浏览(11)
  • linux下 yolov8 tensorrt模型部署

    linux下 yolov8 tensorrt模型部署

    TensorRT系列之 Windows10下yolov8 tensorrt模型加速部署 TensorRT系列之 Linux下 yolov8 tensorrt模型加速部署 TensorRT系列之 Linux下 yolov7 tensorrt模型加速部署 TensorRT系列之 Linux下 yolov6 tensorrt模型加速部署 TensorRT系列之 Linux下 yolov5 tensorrt模型加速部署 TensorRT系列之 Linux下 yolox tensorrt模型加速部

    2024年02月08日
    浏览(11)
  • YOLOv8 Tensorrt Python/C++部署教程

    YOLOv8 Tensorrt Python/C++部署教程

    https://www.bilibili.com/video/BV1Pa4y1N7HS https://github.com/Monday-Leo/YOLOv8_Tensorrt 基于 Tensorrt 加速 Yolov8 ,本项目采用 ONNX转Tensorrt 方案 支持 Windows10 和 Linux 支持 Python/C++ Tensorrt 8.4.3. Cuda 11.6 Cudnn 8.4.1 onnx 1.12.0 安装 yolov8 仓库,并下载官方模型。 使用官方命令 导出ONNX模型 。 使用本仓库

    2023年04月25日
    浏览(44)
  • YOLOv8-TensorRT C++ ubuntu部署

    YOLOv8-TensorRT C++ ubuntu部署

    先要安装好显卡驱动、CUDA、CUDNN 以ubuntu20.04、显卡1650安装470版本的显卡驱动、11.3版本的CUDA及8.2版本的CUDNN为例 进入网站: https://developer.nvidia.com/nvidia-tensorrt-8x-download 进行勾选下载: TAR是免安装直接解压可用的 解压: 终端打印出如下内容表明cuda+cudnn+tensorrt安装正常: 可以

    2024年01月20日
    浏览(30)
  • YOLOv8在NX上的tensorrt的加速部署(60帧率)

    YOLOv8在NX上的tensorrt的加速部署(60帧率)

    所有过程均可以参考本人所写的文章 (1)虚拟环境工具 MInforge3-Linux-aarch64 Jetson 平台都是RAM架构,平常的conda都是基于X86架构平台的。环境搭建参考文章 (2)YOLOv8_ros代码,采用自己创建的yolov_ros代码。yolov8_ros参考文章 (3)jetpack 环境(本篇文章是 jetpack5.1.2 )jetpack升级参考

    2024年01月18日
    浏览(12)
  • 【YOLO】Windows 下 YOLOv8 使用 TensorRT 进行模型加速部署

    【YOLO】Windows 下 YOLOv8 使用 TensorRT 进行模型加速部署

    本文全文参考文章为 win10下 yolov8 tensorrt模型加速部署【实战】 本文使用的代码仓库为 TensorRT-Alpha 注:其他 Yolov8 TensorRT 部署项目:YOLOv8 Tensorrt Python/C++部署教程 安装Visual Studio 2019或者Visual Studio 2022、Nvidia驱动 安装cuda,cudnn、opencv、tensorrt并进行相应的环境配置,这里不做配

    2024年02月11日
    浏览(13)
  • 【YOLOv8-Seg】实战二:LabVIEW+OpenVINO加速YOLOv8-seg实例分割

    【YOLOv8-Seg】实战二:LabVIEW+OpenVINO加速YOLOv8-seg实例分割

    ‍‍🏡博客主页: virobotics的CSDN博客:LabVIEW深度学习、人工智能博主 🎄所属专栏:『LabVIEW深度学习实战』 🍻上期文章: 【YOLOv8-seg】实战一:手把手教你使用YOLOv8实现实例分割 📰如觉得博主文章写的不错或对你有所帮助的话,还望大家多多支持呀! 欢迎大家✌关注、👍

    2024年02月13日
    浏览(13)
  • yolov8n 瑞芯微RKNN、地平线Horizon芯片部署、TensorRT部署,部署工程难度小、模型推理速度快

    yolov8n 瑞芯微RKNN、地平线Horizon芯片部署、TensorRT部署,部署工程难度小、模型推理速度快

      特别说明:参考官方开源的yolov8代码、瑞芯微官方文档、地平线的官方文档,如有侵权告知删,谢谢。   模型和完整仿真测试代码,放在github上参考链接 模型和代码。   因为之前写了几篇yolov8模型部署的博文,存在两个问题:部署难度大、模型推理速度慢。该篇解

    2024年01月16日
    浏览(15)
  • 【TensorRT】基于C#调用TensorRT 部署Yolov5模型 - 上篇:构建TensorRTSharp

    【TensorRT】基于C#调用TensorRT 部署Yolov5模型 - 上篇:构建TensorRTSharp

      NVIDIA TensorRT™ 是用于高性能深度学习推理的 SDK,可为深度学习推理应用提供低延迟和高吞吐量。详细安装方式参考以下博客: NVIDIA TensorRT 安装 (Windows C++)   前文中已经介绍了在C++中利用TensorRT 部署Yolov5模型,但在实际应用中,经常会出现在C#中部署模型的需求,目前T

    2023年04月24日
    浏览(10)
  • 使用TensorRT对yolov5进行部署(基于python,超详细)

    使用TensorRT对yolov5进行部署(基于python,超详细)

    哈喽大家好 ! 我是唐宋宋宋,很荣幸与您相见!!! 我的环境: cuda:11.1 cudnn:8.7.0 TensorRT:8.4.1.5 首先需要下载TensorRT,官网链接附下: NVIDIA TensorRT 8.x Download | NVIDIA Developer 注:下载TensorRT版本需要和你电脑上的cuda版本对应 yolov5的代码需要大家上github自己扒 链接已经提供

    2024年02月07日
    浏览(15)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包