YOLO 目标检测实战(06):TensorRT 导出与三后端基准
目标:导出 FP16 TensorRT engine,并在同一张图上对比 PyTorch / ONNX / TensorRT 三个后端的平均延迟,看看引擎到底快在哪。
这是「YOLO 目标检测实战」的第 06 篇。完整目录见 00 · 系列导读。
一、导出 TensorRT
容器内需已安装 tensorrt(镜像已 pin tensorrt-cu12;脚本在缺失时会尝试安装固定版本)。
1 | bash scripts/06_export_tensorrt.sh |
关键参数:
1 | yolo export \ |
说明:
quantize=16→ FP16 engine(新卡上常用默认,不必再传已弃用的half写法);workspace=4:构建时的工作空间(GB 量级),可按显存调整;- 生成的
best.engine会拷到weights/best.engine。
注意:
.engine与 GPU 架构 / TensorRT 版本强绑定,换卡或换 TRT 大版本通常需要重新 export。别把 engine 当成能到处拷的通用文件。
二、用 engine 做一次预测(可选)
1 | yolo detect predict \ |
三、三后端延迟基准
1 | python scripts/07_bench_backends.py |
默认权重路径:
| 后端 | 路径 |
|---|---|
| PyTorch | runs/train/coco128/weights/best.pt |
| ONNX | weights/best.onnx |
| TensorRT | weights/best.engine |
输出形如(数值因 GPU / 驱动 / 是否独占而异,此处不写死绝对毫秒):
1 | [PyTorch] ... avg=xx.xx ms/img fps≈.. dets=N |
解读建议:
- 先看 TensorRT 是否明显快于 PyTorch(FP16 + engine 常见收益);
- ONNX(经 Ultralytics + onnxruntime-gpu)介于两者之间或接近其一,都属正常;
- 比较时尽量保证 GPU 空闲,并保留足够
warmup,避免把首次建引擎 / 首次推理的开销算进均值。
四、这一步结束后你应有
1 | weights/ |
下一步
有了最快的 engine,把它封成服务。→ 07 · FastAPI 推理服务部署
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 WALL-E's Blog!











