(yolo8) root@jetlcc-desktop:/home/jetlcc/len/tools/yolov8# dpkg -l | grep TensorRT ii libnvinfer-bin 8.5.2-1+cuda11.4 arm64 TensorRT binaries ii libnvinfer-dev 8.5.2-1+cuda11.4 arm64 TensorRT development libraries and headers ii libnvinfer-plugin-dev 8.5.2-1+cuda11.4 arm64 TensorRT plugin libraries ii libnvinfer-plugin8 8.5.2-1+cuda11.4 arm64 TensorRT plugin libraries ii libnvinfer-samples 8.5.2-1+cuda11.4 all TensorRT samples ii libnvinfer8 8.5.2-1+cuda11.4 arm64 TensorRT runtime libraries ii libnvonnxparsers-dev 8.5.2-1+cuda11.4 arm64 TensorRT ONNX libraries ii libnvonnxparsers8 8.5.2-1+cuda11.4 arm64 TensorRT ONNX libraries ii libnvparsers-dev 8.5.2-1+cuda11.4 arm64 TensorRT parsers libraries ii libnvparsers8 8.5.2-1+cuda11.4 arm64 TensorRT parsers libraries ii nvidia-tensorrt 5.1-b147 arm64 NVIDIA TensorRT Meta Package ii tensorrt 8.5.2.2-1+cuda11.4 arm64 Meta package for TensorRT (yolo8) root@jetlcc-desktop:/home/jetlcc/len/tools/yolov8#
时间: 2025-07-19 17:33:08 浏览: 8
<think>根据用户提供的TensorRT安装信息,我们可以确认Jetson Nano上已经安装了TensorRT 8.5.2(CUDA 11.4版本)。接下来需要指导用户如何利用已安装的TensorRT来优化YOLOv8的推理性能,并解决之前出现的ONNX Runtime问题。
### 解决方案:使用TensorRT部署YOLOv8
#### 1. 转换ONNX模型到TensorRT引擎
```bash
# 确保在虚拟环境中
source activate yolo8
# 使用Ultralytics官方工具转换
yolo export model=yolov8n.onnx format=engine device=0
```
#### 2. 解决转换可能出现的错误
**错误场景1:ONNX解析失败**
```bash
# 安装ONNX GraphSurgeon(TensorRT依赖)
pip install onnx-graphsurgeon --index-url https://pypi.ngc.nvidia.com
```
**错误场景2:CUDA版本不匹配**
```bash
# 检查CUDA版本(需与TensorRT的CUDA 11.4匹配)
nvcc --version # 应为11.4
# 若不匹配,重新安装PyTorch的CUDA 11.4版本
pip install torch==1.12.0+cu114 torchvision==0.13.0+cu114 --extra-index-url https://download.pytorch.org/whl/cu114
```
#### 3. 使用TensorRT引擎进行推理
```bash
yolo predict model=yolov8n.engine source="ultralytics/assets/bus.jpg" task=detect
```
#### 4. 性能优化技巧
```python
# 创建~/.ultralytics/settings.yaml并添加
params:
workers: 0 # 禁用多进程(Jetson内存限制)
batch: 1
imgsz: 640
half: True # FP16模式
```
#### 5. 验证TensorRT加速效果
```python
import time
from ultralytics import YOLO
model = YOLO('yolov8n.engine')
# 预热
model.predict(source="ultralytics/assets/bus.jpg", verbose=False)
# 测速
start = time.time()
for _ in range(10):
model.predict(source="ultralytics/assets/bus.jpg", verbose=False)
print(f"平均推理时间: {(time.time()-start)/10:.2f}秒")
```
### 备选方案:使用TensorRT API直接部署
```c++
// 示例代码:tensorrt_deploy.cpp
#include <NvInfer.h>
#include <NvOnnxParser.h>
// 创建TensorRT引擎(需编译执行)
// 详细代码参考:https://github.com/wang-xinyu/tensorrtx/tree/master/yolov8
```
### 系统配置检查清单
```bash
# 确认TensorRT版本
dpkg -l | grep TensorRT
# 确认GPU内存分配
sudo tegrastats # 监控GPU内存使用
# 设置性能模式(最高时钟频率)
sudo nvpmodel -m 0 # 10W模式
sudo jetson_clocks
```
§§相关问题§§1. 如何解决TensorRT转换YOLOv8模型时出现的`Unsupported ONNX data type: STRING`错误?2. 在Jetson Nano上使用TensorRT部署YOLOv8时,如何启用FP16精度提升推理速度?3. 如何通过修改TensorRT配置参数来优化YOLOv8引擎的内存占用?4. 当TensorRT推理出现`INVALID_ARGUMENT`错误时,有哪些调试步骤?5. 如何利用TensorRT的profiler工具分析YOLOv8模型各层执行时间?</think>### Jetson Nano 上的 TensorRT 环境分析与优化指南
#### 环境分析(基于您的 `dpkg` 输出)
1. **TensorRT 版本**:8.5.2 (CUDA 11.4)
2. **关键组件**:
- `libnvinfer8`:TensorRT 运行时库
- `libnvonnxparsers8`:ONNX 解析支持
- `nvidia-tensorrt`:主元数据包
3. **兼容性状态**:
```bash
# 验证 CUDA-TensorRT 版本匹配
nvcc --version # 应显示 CUDA 11.4
cat /usr/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
```
#### 优化 YOLOv8 的 TensorRT 部署方案
##### 1. 转换 ONNX 到 TensorRT 引擎
```bash
# 使用官方转换工具
/usr/src/tensorrt/bin/trtexec \
--onnx=yolov8n.onnx \
--saveEngine=yolov8n.engine \
--fp16 \ # 启用 FP16 加速
--workspace=1024 \ # 限制内存使用
--verbose
```
##### 2. 内存优化配置
```bash
# 创建优化配置文件 (~/.ultralytics/settings.yaml)
params:
workers: 0 # 禁用多进程加载
batch: 1 # 单批次处理
imgsz: 640 # 固定输入尺寸
half: True # FP16 推理
```
##### 3. 使用 TensorRT 执行预测
```bash
yolo predict \
model=yolov8n.engine \
source="ultralytics/assets/bus.jpg" \
task=detect \
device=0 \
verbose=False # 减少日志输出
```
##### 4. 性能监控工具
```bash
# 实时监控资源使用
tegrastats --interval 1000 # 每秒刷新
# 输出示例
RAM 1500/2000MB | SWAP 450/2048MB | CPU [50%] | GPU [60%] | EMC 50% | APE 150
```
#### 常见问题解决方案
**问题:转换时出现 `Unsupported ONNX opset version`**
```bash
# 降低 ONNX opset 版本
yolo export model=yolov8n.pt format=onnx opset=12
```
**问题:推理时显存不足**
```python
# 在预测代码中添加内存清理
import torch
import gc
def predict_with_memory_cleanup():
results = model.predict(...)
torch.cuda.empty_cache()
gc.collect()
return results
```
#### 验证 TensorRT 加速效果
```python
from ultralytics import YOLO
import time
# 加载 TensorRT 引擎
trt_model = YOLO('yolov8n.engine')
# 基准测试
start = time.time()
for _ in range(10):
trt_model.predict("ultralytics/assets/bus.jpg", verbose=False)
print(f"TensorRT 平均推理时间: {(time.time()-start)/10:.4f}s")
```
阅读全文
相关推荐


















