AI视觉检测资源:ONNX → TensorRT 转换 checklist

张开发
2026/5/24 8:47:56 15 分钟阅读
AI视觉检测资源:ONNX → TensorRT 转换 checklist
ONNX → TensorRT 转换总失败这份 Checklist 让你一次成功“ONNX 导出成功TensorRT 解析报错”“trtexec 卡在 ‘Building CUDA Engine’ 一小时不动”“INT8 精度崩了但不知道哪一步出错”在工业 AI 视觉部署中ONNX → TensorRT是从训练到推理的关键桥梁。但算子不支持、动态 shape 配置错误、精度掉点等问题常常让工程师“卡”数天。本文整理了一份实战验证的转换 Checklist覆盖导出 → 校验 → 构建 → 验证全流程助你避开 90% 的坑✅ 一、ONNX 导出阶段检查项正确做法常见错误输入尺寸固定dynamicFalse除非明确需要动态 batch动态 shape 导致 TensorRT 构建失败Opset 版本使用 opset11 或 13兼容性最好opset17 可能含 TRT 不支持算子权重类型避免 INT64强制转为 FP32/INT32报错“TensorRT does not support INT64”简化模型运行onnxsim合并冗余节点多余 Transpose/Reshape 导致解析失败命令示例python-monnxsim model.onnx model_sim.onpx --input-shape1,3,640,640✅ 二、ONNX 校验阶段检查项工具/方法结构合法性onnx.checker.check_model(model)算子支持性对照 TensorRT Supported Ops关键算子替换Upsample → Resizemode‘linear’ 需 TRT ≥8.5SiLU → HardSwish若 TRT 版本低可视化拓扑Netron 打开 ONNX检查是否有孤立节点⚠️高危算子Gather 动态索引TRT 支持有限自定义 OP需插件实现✅ 三、TensorRT 引擎构建阶段配置项推荐设置说明精度模式FP16 INT8若需量化同时启用可 fallbackWorkspace≥1GB1 30内存不足导致构建失败Optimization Profile明确设置 min/opt/max shape动态 batch 必须配置校准器继承IInt8EntropyCalibrator2MinMax 对小目标不鲁棒️调试技巧使用trtexec先测试trtexec--onnxmodel_sim.onnx--fp16--workspace2048✅ 四、精度 性能验证阶段验证项方法数值一致性对比 ONNX Runtime 与 TensorRT 输出L2 误差 1e-3mAP 对齐在相同测试集上运行FP16 损失应 0.5%INT8 1.5%吞吐量达标Jetson Orin 上 YOLOv8s FP16 ≥200 FPS内存稳定连续推理 1 小时无 OOM快速诊断脚本# 伪代码输出层逐元素对比diffnp.abs(trt_output-onnx_output).max()assertdiff1e-2,f数值偏差过大:{diff} 结语ONNX → TensorRT 转换不是“能不能跑通”而是“是否稳定可靠”。一次成功的转换背后是数十个细节的精准把控。把这份 Checklist 打印出来贴在工位上——下次转换一次过

更多文章