079、YOLOv12推理部署全流程:ONNX/TensorRT/NCNN适配指南与WBF融合策略在NMS后处理中的优化实践
2026/8/10 8:21:55 网站建设 项目流程

079、YOLOv12推理部署全流程:ONNX/TensorRT/NCNN适配指南与WBF融合策略在NMS后处理中的优化实践

凌晨两点半,客户现场打来电话说模型在Jetson Orin上跑起来只有8帧,我第一反应是问用的什么推理框架,对方支支吾吾说“就那个Python的demo改的”。得,又是直接拿PyTorch推理上线的经典操作。今天这篇笔记就把YOLOv12从PyTorch到ONNX再到TensorRT/NCNN的完整链路捋一遍,顺便把WBF融合策略在NMS后处理里的坑和优化讲透。

先说导出ONNX这步,很多人直接torch.onnx.export一把梭,结果导出后模型输出对不上。YOLOv12的检测头里有个细节——解耦头最后的卷积层输出通道数跟anchor数量有关,导出前一定要确认你用的是官方给的export.py脚本,别自己手写导出逻辑。我见过最离谱的案例是有人把训练时的multi_label开关带到了推理,导致输出shape变成[1, 84, 8400]而不是[1, 8400, 84],后面所有后处理代码全白写。导出时记得固定输入尺寸,动态shape在TensorRT里不是不能做,但性能会掉10%左右,除非业务必须,否则固定640x640最省心。

ONNX导出后先用onnxruntime验证一遍输出,这里有个小技巧——把PyTorch模型的输出和ONNX模型的输出做逐元素对比,误差超过1e-4就要查是不是某些算子被错误融合了。YOLOv12的C3k2模块里用了大量的SiLU激活,ONNX导出时如果遇到某些旧版本opset,SiLU会被拆成sigmoid+乘法,虽然数学等价但TensorRT解析时可能不认。建议ops

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询