ncnn
ncnn copied to clipboard
NCNN模型与转换前的Pytorch(pt)模型预测结果有差异
detail | 详细描述 | 詳細な説明
Pytorch(LPRNet)训练的车牌识别模型(pt),由pnnx转换为ncnn(bin,param),在大部分情况下预测结果是一样的 问题: 如果在数据集中挑出一张车牌图像,在车牌字符下方涂画几笔
- 使用原pt模型或recognize_trace_pnnx.py中export_torchscript函数生成的pt模型预测结果正确
- 用NCNN框架进行预测,结果错误
诉求:请问是转换过程中的精度缺失,或是使用过程中哪个细节没有做好导致的吗,有办法优化吗?
1.首先确保你输入模型的矩阵是一样的 2.pnnx转换的时候,默认会量化到fp16,可能是因为这个,需要设置为原始精度转出再试试(转模型的时候加一个fp16=0的参数)
我的问题。输入矩阵在前文问题中提到的图片处理后高度多了一像素
前提:满足下列条件:
- 输入模型的矩阵是一样的
- fp16=0
问题1:使用C++与Python API (NCNN) 预测的结果不一致,有些差别,Python的预测结果更为精确。 如:
- 正确车牌号为XSM350,Python:XSM350;C++:ASM350
- 正确车牌号为TYH695,Python:TYMH695;C++:TYM693
请问这个问题和输入预处理或者后处理有关系吗
问题2:NCNN与转换前的Pytorch(pt)模型还是有差异,pt模型预测的正确率更高
https://github.com/Tencent/ncnn/wiki/FAQ-ncnn-produce-wrong-result
尝试使用resize好的bmp图片,完全确保图片解码后数据是一致的