首页
/ 【免费下载】 YOLOv8-TensorRT在Jetson平台上的部署指南

【免费下载】 YOLOv8-TensorRT在Jetson平台上的部署指南

2026-02-04 05:17:44作者:胡易黎Nicole

前言

本文将详细介绍如何在Jetson嵌入式平台上部署YOLOv8-TensorRT项目,实现高效的目标检测、实例分割和姿态估计任务。Jetson系列开发板因其强大的AI计算能力,在边缘计算领域广受欢迎。通过TensorRT加速,可以充分发挥Jetson硬件的性能优势。

环境准备

本文测试环境基于Jetson Xavier NX 4GB版本,主要软件环境如下:

  • Jetpack 4.6.3
  • CUDA 10.2
  • CUDNN 8.2.1
  • TensorRT 8.2.1
  • DeepStream 6.0.1
  • OpenCV 4.1.1
  • CMake 3.10.2

建议读者使用相同或兼容的软件版本以避免环境问题。

目标检测部署

1. 导出End2End ONNX模型

首先需要在PC端将PyTorch模型转换为ONNX格式:

python3 export-det.py --weights yolov8s.pt --sim

注意事项:

  • 必须使用PyTorch格式的模型权重(.pt文件)
  • --sim参数会启用模型简化,建议保留
  • 此步骤必须在PC上执行

2. 转换为TensorRT引擎

将生成的ONNX模型传输到Jetson设备后,使用TensorRT工具进行转换:

/usr/src/tensorrt/bin/trtexec \
--onnx=yolov8s.onnx \
--saveEngine=yolov8s.engine

转换完成后会生成可直接用于推理的yolov8s.engine文件。

3. C++推理实现

Jetson平台推荐使用C++进行推理以获得最佳性能。项目提供了完整的C++实现:

  1. 修改main.cpp中的类别名称和颜色配置
  2. 使用CMake编译项目:
mkdir build && cd build
cmake .. && make
  1. 推理示例:
# 单张图片推理
./yolov8 yolov8s.engine data/bus.jpg
# 批量图片推理
./yolov8 yolov8s.engine data/
# 视频推理
./yolov8 yolov8s.engine data/test.mp4

实例分割部署

1. 导出分割模型

与检测模型类似,首先导出ONNX格式:

python3 export-seg.py --weights yolov8s-seg.pt --sim

2. 转换为TensorRT引擎

/usr/src/tensorrt/bin/trtexec \
--onnx=yolov8s-seg.onnx \
--saveEngine=yolov8s-seg.engine

3. C++推理实现

编译步骤与检测模型类似,但需要注意在main.cpp中调整以下参数:

int seg_h = 160;   // 原型高度
int seg_w = 160;   // 原型宽度
int seg_channels = 32;  // 原型通道数
float score_thres = 0.25f;  // 分数阈值
float iou_thres = 0.65f;    // IOU阈值

姿态估计部署

1. 导出姿态估计模型

yolo export model=yolov8s-pose.pt format=onnx simplify=True

2. 转换为TensorRT引擎

/usr/src/tensorrt/bin/trtexec \
--onnx=yolov8s-pose.onnx \
--saveEngine=yolov8s-pose.engine

3. C++推理实现

main.cpp中需要配置关键点颜色、骨架连接等可视化参数:

int topk = 100;            // 保留的检测框数量
float score_thres = 0.25f; // 关键点置信度阈值
float iou_thres = 0.65f;   // NMS阈值

性能优化建议

  1. 量化加速:考虑使用FP16或INT8量化进一步提升推理速度
  2. 批处理:对视频流处理时,适当增加批处理大小
  3. 内存管理:Jetson设备内存有限,注意控制并发任务数量
  4. 电源模式:调整Jetson电源模式为MAXN以获得最佳性能

常见问题解答

Q: 为什么必须使用PyTorch原始模型? A: 第三方转换的模型可能包含不兼容的操作,导致TensorRT转换失败。

Q: 如何自定义类别数量? A: 需要在导出ONNX前修改模型配置,并同步更新C++代码中的类别定义。

Q: 推理时出现内存不足错误怎么办? A: 可以尝试减小模型输入尺寸或使用更小的模型变体(yolov8n)。

通过本文介绍的方法,开发者可以高效地在Jetson平台上部署YOLOv8的各种任务模型,充分利用TensorRT的加速能力,实现边缘端的实时AI推理。

登录后查看全文
热门项目推荐
相关项目推荐