PaddlePaddle / PaddleOCR

Awesome multilingual OCR toolkits based on PaddlePaddle (practical ultra lightweight OCR system, support 80+ languages recognition, provide data annotation and synthesis tools, support training and deployment among server, mobile, embedded and IoT devices)
https://paddlepaddle.github.io/PaddleOCR/
Apache License 2.0
43.76k stars 7.79k forks source link

训练模型和推理模型效果不一致 #2080

Closed simplew2011 closed 2 years ago

simplew2011 commented 3 years ago

PaddleOCR-release-2.0 基于det_mv3_db.yml训练车牌检测模型。 使用训练完的模型直接测试,infer_det.py,效果很好。 然后使用export_model.py对best_accuracy模型进行转换为推理模型(基于训练时的配置表config.yml),得到inference模型,使用predict_det.py做预测。效果没有前者好,检测框不紧密。

F6726907-C310-4b5d-8CEF-EFCC44B193BC

使用官方的ch_ppocr_mobile_v2.0_det_train进行测试,以及转换后测试效果也不一致。

如下保证predict_det.py的效果和infer_det.py一致?

LDOUBLEV commented 3 years ago

可能是检测的后处理参数不一致的,调整下试试。训练的后处理参数是:https://github.com/PaddlePaddle/PaddleOCR/blob/fa32b9b184528d446a3aea14a750a3912491dfd5/configs/det/ch_ppocr_v2.0/ch_det_mv3_db_v2.0.yml#L58 预测的后处理参数是:https://github.com/PaddlePaddle/PaddleOCR/blob/fa32b9b184528d446a3aea14a750a3912491dfd5/tools/infer/utility.py#L46

simplew2011 commented 3 years ago

image

参数是一致的。 det_limit_side_len这个参数有无影响,改了640,736,960,似乎没啥变化

simplew2011 commented 3 years ago

以前v1.1版本也有这种问题,v2.0又出现

simplew2011 commented 3 years ago

image

左边是infer_det.py结果,右侧是predict_det.py结果,可以看到前者和目标框比较紧密,点集回归比较准。除了上诉参数,还有那些参数可能影响predict_det.py的结果呢?

LDOUBLEV commented 3 years ago

你的图像能否发我测试下

simplew2011 commented 3 years ago

你的图像能否发我测试下

您有一份文件待查收!即刻点击链接获取文件:https://cowtransfer.com/s/312cd6298a6042 或进入 cowtransfer.com 获取,在首页输入取件码:195535(24小时内有效)

simplew2011 commented 3 years ago

你的图像能否发我测试下

您有一份文件待查收!即刻点击链接获取文件:https://cowtransfer.com/s/312cd6298a6042 或进入 cowtransfer.com 获取,在首页输入取件码:195535(24小时内有效)

内含模型和图片

LDOUBLEV commented 3 years ago

找到问题了,是训练模型和预测模型的预处理不一致导致的,已经提了PR修复,可以按照PR的内容修改下代码,再试下

simplew2011 commented 3 years ago

找到问题了,是训练模型和预测模型的预处理不一致导致的,已经提了PR修复,可以按照PR的内容修改下代码,再试下

问题确实出现在DB预处理,但按建议改 'DetResizeForTest': None的效果还是比infer_det.py差不少,此处改成'image_shape': [640, 640]的效果会接近infer_det.py,稍稍差一点点。 image

simplew2011 commented 3 years ago

原图 image

LDOUBLEV commented 3 years ago

是预处理不一样,我看了一下你的config文件,应该是和预测的时候一些参数没对应上导致的,train model 在eval的时候 image image 在tools/infer/predict_det.py预测的时候,先修改下tools/infer/predict_det.py line42 的参数如下, image 然后预测的时候调整后处理参数和config文件里的超参数一致,

python3.7 tools/infer/predict_det.py --det_model_dir=./data/inference/    --image_dir=./car.png  --det_db_box_thresh=0.6 --det_db_unclip_ratio=1.5

这样得到的box是完全一样的

LDOUBLEV commented 3 years ago

infer/predict_det.py

 inference predict :[[[ 97. 528.]
  [271. 559.]
  [270. 624.]
  [ 95. 593.]]]

image

trained model results

train model predict : [[[ 97 528]
  [271 559]
  [270 624]
  [ 95 593]]]

image

LDOUBLEV commented 3 years ago

非常抱歉,后面会想办法统一下超参数,避免不必要的踩坑

simplew2011 commented 3 years ago

非常抱歉,后面会想办法统一下超参数,避免不必要的踩坑

感谢。

simplew2011 commented 3 years ago

非常抱歉,后面会想办法统一下超参数,避免不必要的踩坑

在训练时配置表,Eval.DetResizeForTest: image_shape: [736, 1280]可否和Train数据保持一致image_shape: [640, 640],为什么要设置为[736, 1280]?

LDOUBLEV commented 3 years ago

不同数据集的shape不同,建议 Eval.DetResizeForTest: 不设置参数,就是默认为None,eval的时候会按照原图大小预测,你可以在训练的配置文件里把image_shape: [736, 1280] 注释掉

lexiaoyuan commented 3 years ago

类似的问题(已解决),在这里记录一下。 基于det_mv3_east.yml训练的检测模型,训练完成后使用tools/infer_det.py测试效果很好,转推理模型后,用

python3 tools/infer/predict_det.py --image_dir="./doc/imgs_my_test/" --det_model_dir="inference/det_mv3_east"

做预测,完全没有效果。 修改为如下命令(指定了检测算法)后就有效果了:

python3 tools/infer/predict_det.py --image_dir="./doc/imgs_my_test/" --det_model_dir="inference/det_mv3_east" --det_algorithm="EAST"
hungnv21292 commented 3 years ago

Hi All, I had same issue with recognition module. The detail of my issue in #2755 Could you please give me your suggestion. Thank you so much.

ddz-mark commented 3 years ago

请问:自己训练的 文本识别 rec 模型,同一批测试集,inference模型与eval模型最后的准确率差距很大,为什么?

yangy996 commented 3 years ago

不同数据集的shape不同,建议 Eval.DetResizeForTest: 不设置参数,就是默认为None,eval的时候会按照原图大小预测,你可以在训练的配置文件里把image_shape: [736, 1280] 注释掉

大佬,你好,在release/2.1分支上,这个结果不同的问题还是存在,predict_det.py的时候不加'image_shape': [960, 960](随意指定),结果识别不出来;随意加个尺寸[960, 960]或者 [736, 1280] ,结果就能正常出来

Dandelion111 commented 3 years ago

非常抱歉,后面会想办法统一下超参数,避免不必要的踩坑

请问大佬解决这个问题了吗?我也遇到了这个情况,自己训练的DBNet模型用官方python预测代码可以检测的很好,模型到处为推理模型之后,用cpp推理却检测不到?好奇怪

Dandelion111 commented 3 years ago

PaddleOCR-release-2.0 基于det_mv3_db.yml训练车牌检测模型。 使用训练完的模型直接测试,infer_det.py,效果很好。 然后使用export_model.py对best_accuracy模型进行转换为推理模型(基于训练时的配置表config.yml),得到inference模型,使用predict_det.py做预测。效果没有前者好,检测框不紧密。

F6726907-C310-4b5d-8CEF-EFCC44B193BC

使用官方的ch_ppocr_mobile_v2.0_det_train进行测试,以及转换后测试效果也不一致。

如下保证predict_det.py的效果和infer_det.py一致? 请问大佬解决这个问题了吗?我也遇到了这个情况,自己训练的DBNet模型用官方python预测代码可以检测的很好,模型到处为推理模型之后,用cpp推理却检测不到?好奇怪

yangy996 commented 3 years ago

2021/8/26,这个不一致问题还是存在,打包出来的模型效果比较差

yangy996 commented 3 years ago

image 把这一行注释掉,结果就一样了...

KrabbeJing commented 3 years ago

image 把这一行注释掉,结果就一样了...

兄弟,感恩抱拳了

yangy996 commented 3 years ago

是预处理不一样,我看了一下你的config文件,应该是和预测的时候一些参数没对应上导致的,train model 在eval的时候 image image 在tools/infer/predict_det.py预测的时候,先修改下tools/infer/predict_det.py line42 的参数如下, image 然后预测的时候调整后处理参数和config文件里的超参数一致,

python3.7 tools/infer/predict_det.py --det_model_dir=./data/inference/    --image_dir=./car.png  --det_db_box_thresh=0.6 --det_db_unclip_ratio=1.5

这样得到的box是完全一样的

按照你说的这些设置完成之后,还是检测不到,能给帮忙看看吗

你的代码不是最新的吧,切换成最新的代码吧

yangy996 commented 3 years ago

image 把这一行注释掉,结果就一样了...

注释掉了,还是没有效果,崩溃

检测不到,还是导出的模型检测和训练的模型检测不一样?

zhangyingying520 commented 3 years ago

是预处理不一样,我看了一下你的config文件,应该是和预测的时候一些参数没对应上导致的,train model 在eval的时候 image image 在tools/infer/predict_det.py预测的时候,先修改下tools/infer/predict_det.py line42 的参数如下, image 然后预测的时候调整后处理参数和config文件里的超参数一致,

python3.7 tools/infer/predict_det.py --det_model_dir=./data/inference/    --image_dir=./car.png  --det_db_box_thresh=0.6 --det_db_unclip_ratio=1.5

这样得到的box是完全一样的

按照你说的这些设置完成之后,还是检测不到,能给帮忙看看吗

你的代码不是最新的吧,切换成最新的代码吧

已经解决,是推理过程出了问题

paddle-bot-old[bot] commented 2 years ago

Since you haven\'t replied for more than 3 months, we have closed this issue/pr. If the problem is not solved or there is a follow-up one, please reopen it at any time and we will continue to follow up. It is recommended to pull and try the latest code first. 由于您超过三个月未回复,我们将关闭这个issue/pr。 若问题未解决或有后续问题,请随时重新打开(建议先拉取最新代码进行尝试),我们会继续跟进。

HaoyuScut commented 2 years ago

image 把这一行注释掉,结果就一样了...

就是这里!

Double97828 commented 11 months ago

image 把这一行注释掉,结果就一样了...

就是这里!

我也是这里注释掉了就好了,什么原因呢?因为后面我想用python的那个库来加载我的推理模型,感觉出现了一样的问题,但是在这里我没有办法做注释了

yangy996 commented 11 months ago

image 把这一行注释掉,结果就一样了...

就是这里!

我也是这里注释掉了就好了,什么原因呢?因为后面我想用python的那个库来加载我的推理模型,感觉出现了一样的问题,但是在这里我没有办法做注释了

https://blog.csdn.net/YY007H/article/details/125506785

1443244362 commented 3 months ago

image 把这一行注释掉,结果就一样了...

就是这里!

真正的大佬 三年后依然可以帮助到人

GreatV commented 3 months ago

这类问题 FAQ 已经写了: https://paddlepaddle.github.io/PaddleOCR/ppocr/model_train/detection.html#5-faq