深夜的调试日志:当YOLOv11遇上Jetson Nano
上周三凌晨两点,实验室的Jetson Nano风扇还在嘶吼。屏幕上显示着YOLOv11的检测帧率:3.2 FPS。这个数字让人清醒——项目要求的实时检测是25 FPS。原生的PyTorch模型在边缘设备上的无力感,在这个深夜格外清晰。这不是算法问题,是部署的战场。而我们的武器,是TensorRT。
为什么TensorRT是Jetson平台的“胜负手”
在x86服务器上跑模型,你可以任性。但在Jetson这类边缘设备上,每个CUDA核心、每KB内存都珍贵。TensorRT不只是“加速库”,它是NVIDIA为自家硬件量身定制的推理编译器。它会做层融合、精度校准、内核自动调优,甚至根据你的batch size和输入尺寸生成最优内核。简单说,它让Jetson的128个CUDA核心干出256个核心的活儿。
我见过太多团队直接把PyTorch的.pt文件往Jetson上拷,然后抱怨硬件性能差。这就像开着跑车用备胎跑赛道——硬件没问题,是你没调用正确的模式。
从ONNX到TensorRT:关键的转换陷阱
转换流程看起来标准:PyTorch → ONNX → TensorRT。但坑都在细节里。
# 导出ONNX时的典型配置(这是踩过坑的版本)torch.on