开篇前,我先给你讲个真实的事。上个月,一个做智慧农业的兄弟找到我,说他们在果园部署的YOLOv8检测系统,在Jetson Nano上跑只有25FPS。客户要求至少60FPS,因为拖拉机以15km/h的速度经过时,低帧率会导致漏检。他试了各种方法——换轻量模型、降低输入分辨率、甚至把检测头砍了一层,结果要么精度崩到80%,要么帧率只涨了5FPS。最后他无奈地问我:“老哥,这板子是不是该扔了?”
我笑了。Jetson Nano虽然只有128个CUDA核心,但它有专门的TensorRT引擎。问题不是板子不行,而是他还在用PyTorch的model.forward()去跑推理,连基本的FP16都没开。今天我就带你走完一套完整的TensorRT流水线,把YOLOv8从25FPS推到100FPS以上。你准备好了吗?
痛点拆解:为什么你的模型在Jetson上跑不快?
先说最常见的错误:直接把PyTorch模型搬到Jetson上,用torch.jit.script或者torch.onnx.export导出,然后用ONNX Runtime跑。这是典型的“你以为优化了,其实没优化”。
反例代码(你很可能写过):
importtorchimportcv2import