关于多输入模型使用hrt_model_exec infer的一些问题

1.芯片型号:X3派

2.天工开物开发包OpenExplorer版本:Ai_Toolchain_Package-release-v1.18.2-OE-v2.4.2

3.问题定位:模型转换<–>板端部署

4.问题具体描述:相关文件与代码见链接:https://pan.baidu.com/s/1PSimqe6Nv5RHTwED\_QmOLQ 提取码:79l6

①已经使用工具链转换得到单目标跟踪模型DCMT.bin,但是板端部署后精度异常;

②使用板上的hrt_model_exec infer对上述的三输入模型精度进行调优验证;

③DCMT.bin有三个输入:一个bgr图片(NHWC),一个bgr图片(NHWC),一个featuremap(NCHW);

④三个输入的*.bin文件可以执行百度云链接中的main.py获得(x.bin; z.bin; b.bin);

⑤板端执行指令:hrt_model_exec infer --model_file DCMT.bin --input_file x.bin,z.bin,b.bin --enable_dump True --profile_path ./

⑥上述指令dump若干*.bin文件,其中有model_infer_input_0.bin; model_infer_input_1.bin; model_infer_input_2.bin三个文件;

⑦上述三个hrt_model_exec infer得到的*.bin文件与x.bin; z.bin; b.bin对应不上;

⑧表现为1:np.fromfile(‘model_infer_input_0.bin’, dtype=np.uint8)与np.fromfile(‘x.bin’, dtype=np.uint8)得到的两个numpy数组的shape不一致;

⑨表现为2:np.fromfile(‘model_infer_input_1.bin’, dtype=np.uint8)与np.fromfile(‘z.bin’, dtype=np.uint8)得到的两个numpy数组的shape不一致;

⑩表现为3:np.fromfile(‘model_infer_input_2.bin’, dtype=np.float32)与np.fromfile(‘b.bin’, dtype=np.float32)得到的两个numpy数组的shape一致(没毛病);

补充说明:

x.bin由一张255x255x3的uint8图片存为二进制文件得到;

z.bin由一张127x127x3的uint8图片存为二进制文件得到;

b.bin由一个1x4x1x1的float32数组存为二进制文件得到;

该问题与孪生网络单目标跟踪模型的模型转换问题 (horizon.ai) 相关性

main_20230328130831.py

感谢您使用地平线芯片算法工具链,最近我们在收集大家的满意度反馈,欢迎您填写问卷,详细情况可见:https://developer.horizon.ai/forumDetail/146177053698464782

你好,经分析,两个输入shape对不上是由于bgr输入时,有内存对齐操作,会自动padding,但有效数据是不会变的,也就是说不会影响推理结果。-
也就是说精度问题不是因为shape不一致导致的哈,请问quantized.onnx模型精度正常吗?建议参考https://developer.horizon.ai/forumDetail/71036815603174578先定位一下哈

你好,该问题已收到,我们看一下,有消息会及时和你说的哈~

Thanks! I have understood that the difference of shape is valid!

By comparing the original.onnx, optimized.onnx and quantized.onnx, i have found that the outputs of original.onnx and optimized.onnx is good~

However, the quantized.onnx outputs invalid results.

I will open a new issue to talk about this situation later.

你们好,我用板上的hrt_model_exec model_info指令看了这个帖子的*.bin的信息:

hrt_model_exec model_info --model_file DCMT.bin

输出如下:

请问bgr输入时的内存对齐操作是红框中的内容吗?

如果是,请问这种在NHWC的W和C维度进行pad的操作是正常的吗?

是的,图像输入内部会自动对齐的,这种操作是正常的哈