ncnn icon indicating copy to clipboard operation
ncnn copied to clipboard

NCNN模型与转换前的Pytorch(pt)模型预测结果有差异

Open MyNameIsShort opened this issue 1 year ago • 4 comments

detail | 详细描述 | 詳細な説明

Pytorch(LPRNet)训练的车牌识别模型(pt),由pnnx转换为ncnn(bin,param),在大部分情况下预测结果是一样的 问题: 如果在数据集中挑出一张车牌图像,在车牌字符下方涂画几笔

  • 使用原pt模型或recognize_trace_pnnx.py中export_torchscript函数生成的pt模型预测结果正确
  • 用NCNN框架进行预测,结果错误

诉求:请问是转换过程中的精度缺失,或是使用过程中哪个细节没有做好导致的吗,有办法优化吗?

MyNameIsShort avatar Sep 19 '24 09:09 MyNameIsShort

1.首先确保你输入模型的矩阵是一样的 2.pnnx转换的时候,默认会量化到fp16,可能是因为这个,需要设置为原始精度转出再试试(转模型的时候加一个fp16=0的参数)

wzyforgit avatar Sep 20 '24 00:09 wzyforgit

我的问题。输入矩阵在前文问题中提到的图片处理后高度多了一像素

MyNameIsShort avatar Sep 20 '24 06:09 MyNameIsShort

前提:满足下列条件:

  1. 输入模型的矩阵是一样的
  2. fp16=0

问题1:使用C++与Python API (NCNN) 预测的结果不一致,有些差别,Python的预测结果更为精确。 如:

  • 正确车牌号为XSM350,Python:XSM350;C++:ASM350
  • 正确车牌号为TYH695,Python:TYMH695;C++:TYM693

请问这个问题和输入预处理或者后处理有关系吗

问题2:NCNN与转换前的Pytorch(pt)模型还是有差异,pt模型预测的正确率更高

MyNameIsShort avatar Sep 25 '24 04:09 MyNameIsShort

https://github.com/Tencent/ncnn/wiki/FAQ-ncnn-produce-wrong-result

尝试使用resize好的bmp图片,完全确保图片解码后数据是一致的

nihui avatar Apr 21 '25 11:04 nihui