【RT-DETR涨点改进】27 RT-DETR推理加速:从TensorRT到ONNX Runtime的零开销切换

【RT-DETR涨点改进】27 RT-DETR推理加速:从TensorRT到ONNX Runtime的零开销切换

27 RT-DETR推理加速:从TensorRT到ONNX Runtime的零开销切换

开篇故事

上个月,我帮一家做智慧安防的客户做模型部署优化。他们的技术总监愁眉苦脸地跟我说:“我们RT-DETR模型在开发机上用TensorRT跑得飞快,但到了客户现场的NVIDIA Jetson Orin上,推理速度直接掉了40%。”

我问他:“你们TensorRT的engine文件是怎么生成的?”

他说:“在开发机上用trtexec转的,指定了FP16精度。”

问题就出在这里——不同GPU架构的TensorRT engine不兼容。更糟的是,他们为了适配不同设备,维护了3套不同的推理代码:一套TensorRT、一套ONNX Runtime、一套OpenVINO。

每套代码里都有重复的数据预处理、后处理逻辑,改一个地方要同步改三处,已经出过两次因为预处理不一致导致的精度问题。

今天这篇,我就带你解决这个“多后端推理”的痛点——用一个统一的接口,让RT-DETR在TensorRT、ONNX Runtime、OpenVINO之间零开销切换,同时保证预处理和后处理的逻辑完全一致。

痛点拆解

常见错误实现

很多人的做法是这样的——为每个推理引擎写一套独立的类:

# 错误示范:为每个引擎写独立类