PyTorch 能检出,INT8 上板就漏检?我做了一个 YOLO 无标签校准集构建器,征集真实项目测试

📅 2026/7/24 6:55:23 👁️ 阅读次数 📝 编程学习
PyTorch 能检出,INT8 上板就漏检?我做了一个 YOLO 无标签校准集构建器,征集真实项目测试

很多 YOLO 工业缺陷检测、安防监控、车流统计项目,都会遇到一个非常现实的落地问题:

服务器上 PyTorch FP32 跑得很漂亮,一上边缘端 INT8 就开始漏检。

训练时置信度 0.90+,Demo 框稳如老狗; 导出到 ONNX / TensorRT / RKNN / Hailo / 地平线 NPU 后,突然出现:

  • 置信度整体下降;
  • 微小瑕疵框消失;
  • 边缘目标漏检;
  • 同一个目标类别翻转;
  • tracking 轨迹开始断裂;
  • 客户现场验收直接卡住。

这时候最难受的不是“模型不好”,而是没人说得清楚:

到底是训练集问题、导出问题、量化问题,还是校准集选错了?

官方和老工程师通常会说一句:

"换一批更贴近生产域的 calibration dataset 试试"

但真正的问题是:

现场几万张无标签图片,到底该选哪些图做 INT8 PTQ 校准?

现在很多团队的做法还是随机抽图:

  • 从训练集随机抽 100 张
  • 从现场视频随机截 500 张
  • 扔给导出工具
  • 然后祈祷 INT8 不要掉点

这本质上是在“抽签”

为了解决这个问题,我做了一个开源工具:NARH-YOLO Align,简称 NYA。

它的目标不是重新训练模型,也不是自动标注缺陷,而是把 INT8 量化校准从“随机抽图”变成“残差制导”筛选:

自动找出那些让 PyTorch FP32 和 ONNX / INT8 后端表现不一致的现场图片,并把它们打包成更有价值的 calibration set。

NYA 的核心原理:自动比对两个模型的预测残差

NYA 不需要人工标签。 它不是拿预测结果去和 ground truth 比,而是让两个后端在同一批现场图片上“左右互搏”:

PyTorch FP32 reference backend

                   vs.

ONNX / INT8 target backend<