专栏算法工具链J5板端bin模型和python版*_quantied.onnx模型推理结果存在不一致

J5板端bin模型和python版*_quantied.onnx模型推理结果存在不一致

已解决
默认823682024-10-08
104
5

在python的preprocess是:

在C++里应该是在tensor_utils.cc里,image_data_type== HB_DNN_IMG_TYPE_NV12:

x86端保存结果和bin模型输出不一致:

在这里存的output。

x86:

板端:


目前用的模型是yolov5s,类别为一类,

上传了演示图片和onnx和bin模型。有大佬可以看看问题吗

附件:
算法工具链
征程5
评论1
0/1000
  • Huanghui
    Lv.5
    2024-10-08
    0
    4
    • 默认82368回复Huanghui:

      hb_verifier工具验证是通过的,但依然存在结果不一致的情况,因此如问题所示,我从x86的python中直接存出了特征图对比,发现了结果不一致的情况。

      2024-10-08
      0
    • 回复默认82368:

      之前碰到过这种情况 都是数据处理不一致 bin的数据和onnx的数据不对应 hb_verifier能保证喂入的数据是相同的 需要注意读的图像时bgr还是rgb NHWC还是NCHW 还有需不需要-128

      2024-10-09
      0
    • 默认82368回复:

      关于这个我有一些疑问。

      目前我看python的预处理是padResize->bgr2rgb->nv12->yuv444-128.

      且quantized.onnx与origin.onnx用的是同一套预处理逻辑。

      在板端的C++中,我看AI_benchmark中的示例代码。当data_type为例子中的NV12时,

      图像是bgr->padResize->bgr2nv12,而没有到yuv444_128的格式,如果我想要结果完全一致,是否需要在build时把input_type_rt改为yuv444?

      2024-10-09
      0
    • 回复默认82368:

      可以再看下工具链的ptq模型量化编译部分 onnx时由于缺少硬件转换所以需要喂入中间类型 你这个模型应该转的rt是nv12 所以中间类型是yuv444_128 上板有硬件就不需要了直接喂nv12就行

      2024-10-11
      0