论坛算法工具链【已解决】J6-M板端推理报错:Due to RuntimeError:index out of range in scatterElementV2。推理结果却是正确

【已解决】J6-M板端推理报错:Due to RuntimeError:index out of range in scatterElementV2。推理结果却是正确

默认802562026-08-10
224
8
1、芯片型号:J6-M

2、OE包版本:j6_open_v3.9.0-py310

3、问题描述:模型推理

4、问题详细描述:
(1)使用工具链在模型转换编译显示:Warning: INT64 can't be quantized to float32,但是pytorch的scatter()要求输入的indices是int64;而且必须先将我corrds[]强制转换为int64,否则量化的cosine值在scatterElement之后会很低。我的pytorch代码如下:

(2)model.hbm上板子推理报错如下:

关键问题:报错推理结果90%情况下是正确的;偶而下电上电后推理有问题,不报这个错。情况不稳定。
附件:
算法工具链
技术深度解析征程6
评论2
0/600
  • 金属货机
    Lv.2

    我先复现一下您遇到的报错,看怎么去改

    2026-08-12
    0
    0
  • 金属货机
    Lv.2
    我复现了您的问题,现在看来是因为传给ScatterElements的某个索引值越界了。对于您遇到的第一个问题,可以忽略,因为索引本身需要保持INT64。这不是导致板端推理报错的原因。
    现在的修复方案是将越界坐标写入长度为14401的临时canvas,scatter完成后再裁掉哨兵列。但是这么做更多是在模型端的防御手段,要治本还需要您在体素化完成模型推理开始之前检查实际传入模型的coords,确认所有参与 Scatter 的坐标满足0
    2026-08-12
    0
    6
    • 金属货机回复金属货机:

      参考的代码如下:

      2026-08-12
      0
    • 金属货机回复金属货机:
      2026-08-12
      0
    • 金属货机回复金属货机:

      确认所有参与Scatter的坐标满足y大于等于零小于ny,x大于等于零小于nx。不知道为什么评论没完整显示

      2026-08-12
      0
    • 默认80256回复金属货机:

      感谢您的解答,按照如上方式修改不报越界错误了,但是上板子推理分割的精度与纯浮点推理相差更大了。比如浮点推理(ground:55876, nogroundL:44124 );修改前定点推理(ground:52471, noground:47529);修改后定点推理(ground:39148, noground:60852),测试30帧都是。在直接测浮点onnx推理没,没有报越界错误

      2026-08-13
      0
    • 金属货机回复默认80256:

      这么看很可能是因为丢弃了会影响分割结果的体素,可以排查一下越界坐标位于实际有效体素区还是固定长度输入的padding区,如果是前者再进一步去看看体素化、坐标范围或网格配置,就不能直接丢弃了。如果是后者去检查一下voxel_features是否确实为0.你可以将自定义程序实际送入模型的输入保存下来再去用浮点ONNX和hrt_model_exec再去运行,检查是输入生成,模型转换还是c++代码的问题。

      2026-08-13
      0
    • 默认80256回复金属货机:

      好的,谢谢

      2026-08-13
      0