quantized_model.onnx与bin推理结果不一致

简单说明

我使用OE量化包量化了opencv的官方人脸检测算法yunet,使用OE包中提供的onnxruntime推理quantized_model.onnx时结果与原模型相差不大,效果不错,但是把bin文件部署到开发板上时推理结果出现严重偏差

量化步骤

原始的onnx模型输入为BGR 0-255 CHW格式(onnx内部直接将0-255的数据输入接下来的卷积层),为了避免工具包自动添加的预处理节点的影响,在配置文件我直接选择使用featuremap,以下为配置文件截图

一致性验证


如下图,quanti表示的是quantized_model.onnx,origin表示的是原始onnx的推理结果,bin表示在rdkx5上使用如下代码推理得到的结果。

问题

在OE使用文档中提及quantized_model.onnx与bin文件应当是一致的,而我这里推理出现不一致。

您好,感谢您的反馈,主要问题为目前X5的python接口不支持featuremap,新版本的接口正在开发中

谢谢您的回复,那请问针对我的原始0-255的输入,量化时我应该怎么修改配置文件呢?
我观察到直接使用input_type_rt=bgr,似乎会为onnx添加一个预处理节点将0-255转换为-128-127,这是否会导致后续的量化不一致。

另一个问题,是只有python接口不支持featuremap吗,C++的接口我发现bin的推理输出也不一致

C++接口是支持featuremap输入的,若是C++接口也导致推理输出不一致,可能是量化过程中存在精度掉点,

在算法开发的过程中,遇到各种数值不可控的问题都是正常的,算法工具链提供了完整的流程说明,debug工具及流程说明,供您参考。

PTQ流程详解:6.1. PTQ转换原理及流程 — Horizon Open Explorer

精度调优:8.2. PTQ模型精度调优 — Horizon Open Explorer

性能调优:8.1. 模型性能调优 — Horizon Open Explorer

精度debug工具详解:6.2.12. 精度debug工具 — Horizon Open Explorer

Runtime程序编写详解:9. 嵌入式应用开发(runtime)手册 — Horizon Open Explorer

并不会哈,因为最终都是需要转到NV12在板端推理

非常感谢,重新换回nv12解决了