Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
simplew2011 opened this issue Feb 23, 2021 · 32 comments
Closed

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

simplew2011 opened this issue Feb 23, 2021 · 32 comments

Comments

@simplew2011
Copy link

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
Copy link
Collaborator

可能是检测的后处理参数不一致的,调整下试试。训练的后处理参数是:


预测的后处理参数是:
parser.add_argument("--det_db_thresh", type=float, default=0.3)

@simplew2011
Copy link
Author

image

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

@simplew2011
Copy link
Author

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

@simplew2011
Copy link
Author

image

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

@LDOUBLEV
Copy link
Collaborator

你的图像能否发我测试下

@simplew2011
Copy link
Author

你的图像能否发我测试下

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

@simplew2011
Copy link
Author

你的图像能否发我测试下

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

内含模型和图片

@LDOUBLEV
Copy link
Collaborator

LDOUBLEV commented Feb 24, 2021

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

@simplew2011
Copy link
Author

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

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

@simplew2011
Copy link
Author

原图
image

@LDOUBLEV
Copy link
Collaborator

是预处理不一样,我看了一下你的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
Copy link
Collaborator

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
Copy link
Collaborator

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

LDOUBLEV added a commit to LDOUBLEV/PaddleOCR that referenced this issue Feb 24, 2021
@simplew2011
Copy link
Author

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

感谢。

@simplew2011
Copy link
Author

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

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

@LDOUBLEV
Copy link
Collaborator

LDOUBLEV commented Feb 25, 2021

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

@lexiaoyuan
Copy link

类似的问题(已解决),在这里记录一下。
基于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
Copy link

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
Copy link

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

@yangy996
Copy link

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

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

@Dandelion111
Copy link

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

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

@Dandelion111
Copy link

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
Copy link

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

@yangy996
Copy link

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

@KrabbeJing
Copy link

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

兄弟,感恩抱拳了

@yangy996
Copy link

是预处理不一样,我看了一下你的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
Copy link

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

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

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

@zhangyingying520
Copy link
Contributor

是预处理不一样,我看了一下你的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
Copy link

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
Copy link

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

就是这里!

@Double97828
Copy link

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

就是这里!

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

@yangy996
Copy link

yangy996 commented Nov 8, 2023

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

就是这里!

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

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests