【Jetson】YOLOv8环境搭建与TensorRT加速部署
一、前言
在 Jetson 平台上开发 YOLO 系列模型时,使用 Conda 虚拟环境可以有效隔离依赖冲突。Miniforge 作为 Conda 的轻量级替代品,对 ARM 架构(aarch64)兼容性更佳。本教程将完成 YOLOv8 的 GPU 加速推理,并进一步实现 TensorRT 部署,显著提升推理效率。
二、安装和使用 Miniforge(Linux-aarch64 专用版)
Miniforge 是针对 ARM 架构优化的 Conda 发行版,是 Jetson 平台的首选环境管理工具。
1. 下载安装脚本
# 下载官方最新版 Miniforge (aarch64架构)wgethttps://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-aarch64.sh若下载失败,更换国内镜像源下载
2. 安装脚本授权与执行
# 给安装脚本添加可执行权限chmod+x Miniforge3-Linux-aarch64.sh# 执行安装脚本,安装过程是交互式的,请按照提示操作即可bashMiniforge3-Linux-aarch64.sh3. 激活 Conda 环境
安装完成后,须激活配置才能使用 Conda 命令:
# 刷新环境变量,激活Condasource~/.bashrc# 验证安装是否成功,查看Conda版本,能输出conda版本信息conda--version三. 创建 YOLO 虚拟环境
1. 创建 YOLO 虚拟环境
# 创建名为 yolo 的环境,指定Python3.8conda create-nyolo_envpython=3.8-y# 激活虚拟环境conda activate yolo_env# 退出conda deactivate2.检查虚拟环境 pip 可用性
进入环境后,先确认 pip 指向当前虚拟环境,避免全局污染:
pip--version# 正常输出示例:应该显示当前虚拟环境目录# pip 24.3.1 from /home/simopto/miniforge3/envs/yolo_env/lib/python3.8/site-packages/pip (python 3.8)3.安装 YOLO 核心依赖(ultralytics)
ultralytics框架集成了 YOLOv5~YOLO11 所有功能,添加 NVIDIA 官方源可安装 Jetson 优化的 PyTorch 依赖,确保 GPU 加速生效。
# 安装ultralytics,优先使用NVIDIA优化源pipinstallultralytics --extra-index-url https://pypi.ngc.nvidia.com验证 PyTorch GPU 支持(重要)
安装完成后,检查 PyTorch 是否能识别 Jetson GPU:
python-c"import torch; print('PyTorch Version:', torch.__version__, 'CUDA Available:', torch.cuda.is_available())"# 预期输出:# PyTorch Version: 2.0.0+nv23.05 CUDA Available: True# `CUDA Available: True`:代表 GPU 加速配置成功# 若为 `False`:需重新检查 PyTorch 安装(参考前文 PyTorch 安装教程)四、YOLOv8 模型推理测试
方式1:官方在线测试
自动下载预训练模型 + 官方测试图片,一键推理:
yolo predictmodel=yolov8n.ptsource='https://ultralytics.com/images/bus.jpg'方式2:本地离线测试(推荐,解决网络问题)
若网络无法下载模型/图片,手动准备文件后本地推理:
- 手动下载
yolov8n.pt模型文件,yolo模型下载链接:https://docs.ultralytics.com/zh - 准备一张本地测试图片(命名为
test.jpg) - 执行推理命令:
yolo predictmodel=yolov8n.ptsource=test.jpg- 如果连接了摄像头可以实时检测:
yolo predictmodel=yolov8n.ptsource=0show=Truesource=0:0 代表系统的默认摄像头 /dev/video0
✅ 推理成功标志
- 终端打印检测结果
- 自动生成结果目录:
runs/detect/predict - 目录内包含标注好检测框的结果图片,推理完成!
五、使用tensorrt加速
1)YOLOv8模型导出TensorRT Engine格式
通过Ultralytics官方接口,将原生的.pt权重文件导出为TensorRT专属的.engine加速引擎文件
- 创建 export_trt.py 导出脚本:
from ultralyticsimportYOLO# 加载原生YOLOv8n权重模型model=YOLO('yolov8n.pt')# 导出为TensorRT引擎文件model.export(format='engine',# 指定导出格式为TensorRTimgsz=640,# 模型输入图像尺寸half=True,# 开启FP16半精度推理,大幅提升速度、降低显存占用dynamic=True,# 支持动态输入尺寸,提升部署灵活性simplify=True# 简化ONNX计算图,剔除冗余算子,优化推理速度)- 执行模型导出
将 export_trt.py 和 yolov8n.pt 放置在同一目录,执行导出命令:
python3 export_trt.py执行完成后,目录会生成两个核心文件:yolov8n.onnx、yolov8n.engine,其中engine文件为最终推理加速模型。
2)报错记录:
执行python3 export_trt.py是可能会出现报错:ModuleNotFoundError: No module named 'tensorrt'
- 报错原因
Jetson设备的TensorRT库为系统全局自带,默认安装在系统Python环境中,Conda创建的虚拟环境无法直接调用系统原生TensorRT模块,因此出现模块找不到报错。 - 解决方案:迁移系统TensorRT至虚拟环境
核心思路:将系统Python环境中的TensorRT完整包,复制到Conda虚拟环境的依赖库目录中,实现环境兼容。
#步骤1:查看系统TensorRT路径ls/usr/lib/python3.8/dist-packages/|greptensorrt#输出结果(系统自带库):tensorrt tensorrt-8.5.2.2.dist-info#步骤2:获取Conda虚拟环境依赖路径env_path=$(python-c"import site;print(site.getsitepackages()[0])")echo$env_path#输出示例(个人环境路径):/home/guest/miniforge3/envs/yolo_env/lib/python3.8/site-packages#步骤3:复制TensorRT库至虚拟环境#执行以下命令,完整迁移TensorRT核心文件与配置文件:sudocp-r/usr/lib/python3.8/dist-packages/tensorrt /home/guest/miniforge3/envs/yolo_env/lib/python3.8/site-packages/sudocp-r/usr/lib/python3.8/dist-packages/tensorrt-8.5.2.2.dist-info /home/guest/miniforge3/envs/yolo_env/lib/python3.8/site-packages/#步骤4:修改文件权限(规避权限报错)sudochown-Rguest:guest /home/guest/miniforge3/envs/yolo_env/lib/python3.8/site-packages/tensorrt*#步骤5:验证TensorRT环境有效性,python-c"import tensorrt as trt; print(trt.__version__)"#成功输出版本号即代表环境配置完成:8.5.2.23) 模型推理性能对比测试
通过电脑摄像头实时识别,分别测试原生PT模型与TensorRT加速Engine模型的推理速度,直观对比加速效果。
- TensorRT加速模型(engine)推理测试
yolo predictmodel=yolov8n.enginesource=0show=True推理性能:单帧推理耗时约 9ms
- 原生PT模型推理测试(对照组)
yolo predictmodel=yolov8n.ptsource=0show=True单帧推理耗时约 20ms
- 实测对比:原生模型单帧推理约 20ms,TensorRT 加速后仅需 9ms,推理速度大幅提升
