孪生网络单目标跟踪模型的模型转换问题

多输入跟踪模型的模型转换问题

  1. 系统软件版本: (通过 cat /etc/version 获得)

  2. 问题涉及的技术领域:模型转换工具

  3. 问题描述:①多输入模型的模型转换后出现模型各输入的顺序颠倒;②相同输入情况下,*.bin文件无法产生与onnx模型相近的输出。

  4. 复现概率:必现 已进行的排查措施、分析及结果: 见下所述

  5. 在debug项目文件夹中:

  6. bin目录存放已经转换完成的模型,转换产生的文件打包放在了百度云的model压缩包里

  7. deploy目录存放标定数据,配置文件(yaml)和两个onnx,名字带sim的是去冗余后的onnx,onnx文件已经验证没问题

  8. tracking目录存放出问题的debug脚本,具体表现见

  9. 该模型有三个输入,z是1x3x127x127的图,x是1x3x255x255的图,b是一个1x4x1x1的featuremap

  10. *.onnx中输入顺序是z,x,b,但是*.bin文件中输入顺序变为b,x,z

  11. 该模型有两个输出,第一个cls是1x1x31x31的分类得分图,第二个reg是1x4x31x31的回归得分图

  12. 输出顺序没有反掉,但是*.bin与*.onnx中的输出差异很大,尤其是reg,里面的值全部为同一常数

  13. 可以在tracking目录中执行sudo python3 running_on_X3.py并外接显示器观察跟踪效果,发现bbox异常,主要是因为上述reg异常

  14. 提供必要的问题日志: 已放置在链接:https://pan.baidu.com/s/1\_hYncNL0hVb7QsBdEK2y1A 提取码:8vjr

  15. 软件上是否有做自定义修改:无

cat /etc/version输出为x3_ubuntu_v1.1.0

您好,经确认,多输入模型在模型转换后出现输入顺序颠倒的情况是正常的,会保证输入名称不改变,onnx模型推理是需要用dict的方式传入数据的,所以这种情况不会影响根据key取value。-
针对第二个问题,建议您先参考这篇文章:https://developer.horizon.ai/forumDetail/71036815603174578进行精度验证及调优。

经过验证,百度云链接中的SiamWAVE_optimized_float_model.onnx输出结果正常,但是SiamWAVE_quantized_model.onnx输出结果异常,请问这是量化过程出错的原因吗?如果是,请问是否必须使用QAT呢?(已经尝试使用另一批标定数据重新转换,并没有解决问题)(calibration_type: ‘kl’ max_percentile: 1.0)

余弦值最低约0.838

你好,先不急着用QAT哈,先问四个问题:-
SiamWAVE_quantized_model.onnx模型精度相比于预期差多少呢?

是否有注意到quantized模型推理需要使用sess.run()接口?

是否有注意到quantized模型推理input_offset需要是128?

是否有尝试将部分尾部算子回退到 CPU 高精度计算?-

朋友你好,我之前也转换过单目标跟踪模型,模型应该和你的不一样,但是遇到过和你一样的问题,关于reg分支的输出,你可以多测一下,看看是不是reg的值始终在一定范围内,如果是的话,可能是有一些算子,在bpu上运行时有数值范围限制,我之前使用的exp算子就有这个问题,导致reg的输出范围被截断了,然后通过把这个算子运行在cpu上解决了