TensorRT C++ api 部署 YOLOv8 + ByteTrack

一. 项目简介

  • 基于 TensorRT-v8 ,部署YOLOv8 + ByteTrack 的目标跟踪;

  • 支持嵌入式设备 Jetson 系列上部署,也可以在 Linux x86_64的服务器上部署;

博主所做的主要工作:

  1. 参考 tensorrtx 项目,模型 .pth -> .engine,提取出推理部分代码,封装为C++的类,便于其他项目调用;
  2. 预处理更换成了自己写的 CUDA编程预处理;
  3. 后处理去掉了CUDA编程,因为测试其相比CPU后处理提速并不明显;
  4. 后处理的 NMS 大幅减小conf_thres超参数,源于 ByteTrack 跟踪的原理,这一点非常重要
  5. YOLOv8 推理编译为一个动态链接库,以解耦项目;
  6. 参考官方 ByteTrack TensorRT部署,修改其与YOLO检测器的接口;
  7. ByteTrack 也编译为一个动态链接库,进一步解耦项目;
  8. 增加类别过滤功能,可以在main.cpp第 8 行设置自己想要跟踪的类别。

二. 项目效果

在这里插入图片描述
在这里插入图片描述

三. 环境配置

  1. 基本要求:
  • TensorRT 8.0+
  • OpenCV 3.4.0+
  1. 本人在 Jetson Nano 上的运行环境如下:
  • 烧录的系统镜像为 Jetpack 4.6.1,该jetpack 原装环境如下:
CUDAcuDNNTensorRTOpenCV
10.28.28.2.14.1.1

关于如何在 Jetson nano 上烧录镜像,网上资料还是很多的,这里就不赘述了,注意下载 Jetpack镜像时选择 4.6.1 版本,该版本对应的 TensorRT v8 版本

  • 安装Eigen
apt install libeigen3-dev
  1. 如果是服务器上,保证基本环境版本满足,再安装Eigen库即可

提示:无论何种设备,记得确认 CMakeLists.txt 文件中相关库的路径。

四. 代码地址

五. 模型转换

目的:得到TensorRT的序列化文件,后缀 .engine

  • 首先获取 wts 格式的模型文件,链接:yolov8s.wts,提取码:gsqm

  • 然后按以下步骤执行:

cd {TensorRT-YOLOv8-ByteTrack}/tensorrtx-yolov8/
mkdir build
cd build
cp {path/to/yolov8s.wts} .
cmake ..
make
./yolov8 -s yolov8s.wts yolov8s.engine s

cd ../../
mkdir yolo/engine
cp tensorrtx-yolov8/build/yolov8s.engine yolo/engine

六. 运行项目

  • 开始编译并运行目标跟踪的代码
  • 按如下步骤运行
mkdir build
cd build
cmake ..
make
./main ../videos/demo.mp4  # 传入自己视频的路径

之后会在 build 目录下的到result.mp4,为跟踪效果的视频文件

如果想要跟踪的视频实时播放,可解开main.cpp第 94 行的注释。

七. 项目参考

主要参考了下面的项目:

感谢阅毕,若有帮助,欢迎点赞收藏

============================= END =============================

  • 5
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
### 回答1: TensorRT是一个高性能的深度学习推理库,可以帮助您在 NVIDIA GPU 上加速深度学习推理。要在C++部署YOLOv5,您需要进行以下步骤: 1.安装 TensorRT:在系统上安装 TensorRT 库和配套的驱动程序。 2.导出权重:在训练模型之后,您需要将权重导出到一个可以被 TensorRT 读取的格式,如 ONNX 或 TensorRT 格式。 3.构建网络:使用 TensorRTC++ API 构建网络,并将权重加载到网络中。 4.配置推理:设置网络的运行参数,如批量大小和精度。 5.运行推理:使用 TensorRT 运行网络,并得到结果。 6.解码结果:最后,您需要对结果进行解码,以便更好地理解结果。 希望这能帮到你。 ### 回答2: TensorRT是一个高性能的推理引擎,可以加速神经网络模型的推理,而yolov5 c是一种基于深度学习的物体检测模型,因此使用TensorRT部署yolov5 c可以提高模型的运行速度和效率。 下面是TensorRT部署yolov5 c的步骤: 1. 模型转换:将yolov5的模型文件转换为TensorRT可处理的格式。这可以使用yolov5_offical代码库中的convert.py脚本来完成。通过在终端中运行该脚本,可以生成一个TensorRT可识别的Engine文件。 2. Engine文件编写:将生成的Engine文件加载到CUDA内存中,并在CPU上分配空间。 3. 归一化和预处理:对于输入图片,进行归一化和预处理,使其适合模型的输入。 4. 推理:在CPU上运行推理,得出检测结果并处理。 5. 结果可视化:将推理结果可视化,可以使用OpenCV等工具库来实现。 TensorRT部署yolov5 c可以让模型实现更快的推理速度,同时提供高效能的计算功能,进一步提高了模型在实际应用中的作用。使用TensorRT,可以有效缩短模型推理的时间,提高应用的实时性和响应速度。 ### 回答3: TensorRT是一种针对机器学习模型的高性能推理引擎,它可以通过优化、量化、融合等技术将模型的推理速度提升数十倍。在使用TensorRT部署yolov5 c时,可以按照以下步骤进行: 1. 准备环境:首先需要安装yolov5 c和TensorRT,并安装CMake辅助构建工具。同时还需要下载yolov5的配置文件和权重文件。 2. 将模型转换为TensorRT引擎:使用TensorRT提供的API,将训练好的yolov5 c模型转换为TensorRT引擎。这个过程主要包含以下几个步骤: (1)通过TensorRT提供的Builder API创建一个Builder对象,用于定义TensorRT引擎的配置。 (2)将yolov5 c模型加载进来,通过Parser API解析为TensorRT的网络描述对象。 (3)使用Builder对象定义TensorRT引擎,包括设置精度、批大小、推理模式等。 (4)转换为TensorRT引擎,生成对应的.engine文件,以便进行后续推理。 3. 进行推理:使用生成的TensorRT引擎文件,进行推理操作。这个过程主要包含以下几个步骤: (1)创建一个执行上下文,用于对输入数据进行处理和输出结果。 (2)将输入数据加载到TensorRT引擎中,通过execute API进行推理。 (3)获取输出结果,将其解析为目标检测的结果,包括物体类别、位置和置信度等。 4. 部署到目标设备:最后根据实际应用需要,将部署好的yolov5 c模型和TensorRT引擎部署到目标设备上,进行实时目标检测。 总之,TensorRT部署yolov5 c可以较大的提高其推理性能,使得其在实际应用场景中更加高效、准确和实时。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值