专栏算法工具链J3转换的original_float_model.onnx与pc上原始的onnx模型输出不一致

J3转换的original_float_model.onnx与pc上原始的onnx模型输出不一致

已解决
默认721602025-04-30
70
27

1.模型转换之后

同一个输入,HB_ONNXRuntime推理original_float_model.onnx与onnx_runtime推理原始onnx模型,输出结果不一致

同一个输入,onnx_runtime推理original_float_model.onnx与onnx_runtime推理原始onnx模型,输出结果一致

这种问题是怎么回事

算法工具链
征程3
评论4
0/1000
  • Huanghui
    Lv.5

    你好,可以用模型一致性验证工具 hb_verifier 检验下两个模型,

    2025-04-30
    0
    0
  • Huanghui
    Lv.5
    2025-04-30
    0
    0
  • 默认72160
    Lv.1
    我感觉是HB_ONNXRuntime和onnx_runtime不同导致的。
    用HB_ONNXRuntime推理转换后的originaXXX 与原始的onnx模型,结果是一样的
    用onnx_runtime推理转换后的originaXXX 与原始的onnx模型,结果也是一样的
    就是不能一个用HB_ONNXRuntime推理一个用onnx_runtime
    2025-04-30
    0
    0
  • Huanghui
    Lv.5

    看下二者的余弦相似度看下二者的余弦相似度还有就是, HB_ONNXRuntime推理original_float_model.onnx ,这个模型的数据预处理方式跟 onnx_runtime推理原始onnx模型 数据预处理方式一样吗

    2025-04-30
    0
    23
    • Huanghui回复Huanghui:

      同一份数据,如果两个模型要求的数据他们预处理方式要求是不一样的,那么你拿一份数据肯定推理结果不一样的

      2025-04-30
      0
    • 默认72160回复Huanghui:

      我输入是featuremap,读取的都是用一个npy文件,没有相关预处理

      2025-04-30
      0
    • Huanghui回复默认72160:

      结果差异大吗?

      2025-04-30
      0
    • 默认72160回复Huanghui:

      很大,完全不对

      2025-04-30
      0
    • Huanghui回复默认72160:

      featuremap是要提前处理好数据的,

      2025-04-30
      0
    • 默认72160回复Huanghui:

      这个是需要怎么处理吗,我输入的featuremap是torch推理的中间结果转npy,然后转bin之后,用HB_ONNXRuntime测试了下onnx。中间featuremap就是读取,没有任何处理

      2025-04-30
      0
    • Huanghui回复Huanghui:

      你用onnx_runtime推理原始onnx模型是需要数据预处理的吧

      2025-04-30
      0
    • Huanghui:

      这个预处理要跟你的数据集处理方式一样

      2025-04-30
      0
    • 默认72160回复Huanghui:

      没有啊,onnx_runtime推理读取的是同一个npy也是没有处理的

      2025-04-30
      0
    • Huanghui回复默认72160:

      你这个onnx对应的原始模型是什么 ,有对应github链接吗

      2025-04-30
      0
    • 默认72160回复Huanghui:

      flash-occ,bev-poolv2(J3能跑吗)为界分3部分,第一部分验证了没啥问题,就这个第三部分,输入1,64,200,200 fea来验证就不行

      2025-04-30
      0
    • 默认72160回复默认72160:
      2025-04-30
      0
    • Huanghui回复默认72160:

      bev_polling这一层之前的输入到最后输出这个阶段 ?

      2025-04-30
      0
    • 默认72160回复Huanghui:

      不是,bev-pool之后已经得到了bev feature了, 做2Dbev feature编码的模型。1,64,200,200 fea是bev_polling这一层的输出,2D bev encoder的输入

      2025-04-30
      0
    • Huanghui回复默认72160:

      做一下模型一致性验证看下是不是模型问题

      2025-04-30
      0
    • Huanghui回复默认72160:

      如果两个模型余弦相似度很高,我觉得有可能还是这个阶段输入数据问题,

      2025-04-30
      0
    • 默认72160回复Huanghui:

      我这边打印看了一个tensor的值,HB_ONNXRuntime的输出是很大,基本上几百,而onnx_runtime只有10以内,所以就算分布一样,相似度高,也用不了

      2025-04-30
      0
    • Huanghui回复默认72160:
      或许真的是工具链的问题kuxiao_org.svg
      2025-04-30
      0
    • Huanghui回复默认72160:

      hb_runtime和onnx_runtime的实现机制不太一样 可能是

      2025-04-30
      0
    • 默认72160回复Huanghui:

      我这边输入的npy是bev-pool的输出,跟这个阶段已经没有关系了。就算输入是错的,只要保证验证的模型是同一个输入的话,输出也应该是一致的才对

      2025-04-30
      0
    • Huanghui回复默认72160:

      是这样的,我以为你拿的是整个模型,那可能是工具链的问题

      2025-04-30
      0
    • 默认72160回复Huanghui:

      顺便问下,你们J3上能有方法支持bev-poolv2这个op吗

      2025-04-30
      0
    • Huanghui回复默认72160:

      因为计算访存比的原因,J3上不建议跑bev算法模型。至于是都支持这个算子,我们先看下在答复你 。

      2025-04-30
      0