浮点模型精度验证问题

环境:ubuntu 18.04, toolchain 1.1.21i

现象:浮点模型精度有问题

步骤:

1. 解压tool chain 压缩包,未做任何更改

2.进入horizon_model_convert_sample_xj3_1.1.21i/samples/03_classification/03_resnet18/mapper

3.执行01_check.sh ,02_preprocess.sh,03_build.sh

4.执行04_inference.sh,得到正确结果

5. 修改04_inference.sh,注释resnet18_quantized_model.onnx段,打开resnet18_original_float_model.onnx段。

6. 按照FAQ-2-15,开始修改../../cls_inference.py.

7. 遇到问题:

问题1:文档和代码不匹配,比如文档中load_image和实际代码中不同,line 63: BGR2YUV444Transformer(“CHW”)封装,文档中还在使用_ColorConvertTransformer。代码中似乎用YUV_BT601_Full_Range取代了YUV444_128?

问题2:resnet18_original_float_model.onnx段,model_type="original"导致line 61处条件不触发,没有追加bgr-》YUV的转换。而resnet18_quantized_model.onnx执行时,model_type为默认的“quanti”,为何两者不同,两者不是都需要转YUV吗?

问题3:但无论怎么修改,resnet18_original_float_model.onnx的精度表现都非常糟糕。我提供我目前的修改方式,请帮忙检查是否有错误,以及提供一个正确的例子,谢谢。

这一块量化后的模型转化成上板模型,其他模型都是转化中间步骤。

您可以参照我们的代码修改预处理环节,float.onnx与量化之后的quanti.onnx预处理方式是不一致的,可以参考我们的视频教程https://developer.horizon.ai/college/detail/id=136488103547258374

虽然是中间步骤,但这是FAQ-2-15的内容,并且是官方范例精度不正常,请你们帮忙检查一下,然后给出一个可用的范例即可。

不然后续应用自己的模型的时候,排查问题根源会遇到障碍的呀

1.我们发布的量化的模型精度是正常的,请放心。

2.模型的图像预处理无法统一,比如通道转换、归一化等,客户可以根据demo示例进行转换。

3.中间步骤我们用于校验模型转换过程中能够是否出现问题,量化的模型结果才是对齐精度的。

4.初始onnx模型精度是训练时得到的,和量化没有关系,所以我们不会做float.onnx模型的校验。