zipzou / captcha-recognition

验证码OCR识别
MIT License
91 stars 22 forks source link

predict时size mismatch #20

Open houchenwang opened 3 months ago

houchenwang commented 3 months ago

模型的train和eval都很正常,acc也稳定在0.97以上,但用来predict同规格照片时报错size mismatch,求大佬释疑

fb07606ea6526261ef8dc6de7ee9731
zipzou commented 3 months ago

-m参数和你训练时使用的模型一致吗?

houchenwang commented 3 months ago

是一样的呀,用的都是kaptcha

zipzou commented 3 months ago

但是看这个报错,像是你指定了captcha模型的参数pkl文件,但是使用了kaptcha模型结构,导致模型参数不能正确加载,你这边再检查下吧,看报错肯定是模型和参数文件不匹配,conv2 32x16x5x5 属于captcha模型的参数shape。

houchenwang commented 3 months ago

好的,能再确认一下就是我使用的pkl文件实际上是captcha的是吗?但我训练时选择的模型确实是kaptcha,用kaptcha图片train和eval没问题后再尝试predict的

zipzou commented 3 months ago

不对,看报错,好像是predict用了capthca模型,但是pkl参数是kaptcha的参数

zipzou commented 3 months ago

你可以做如下尝试:修改predict.py的逻辑,将里面的cli相关的删除,直接调用predict方法,并将参数写死传入。

houchenwang commented 3 months ago

谢谢您!成功了

houchenwang commented 3 months ago

但是这个输出能区分大小写吗

houchenwang commented 3 months ago

我有这个需求

zipzou commented 3 months ago

数据区分大小写,就能够支持大小写。

houchenwang commented 3 months ago

微信截图_20240602125807 na'zhe'shi那这是为何?

zipzou commented 3 months ago

这个需要校验下数据,以及训练的时候是否label处理正确,现有代码逻辑,是支持52个vocab大小,若数据无误的话,大小写是没问题的。

houchenwang commented 3 months ago

我是小白,但实在急需用这个模块,我对您的train和data,dataloader文件都没有改动。您能麻烦指出一下label处理的代码在哪个位置,如何修改吗?万分感谢。数据全部都是这种答案命名的jpg,应该没问题~

zipzou commented 3 months ago
  1. 首先校验:训练数据中,大小写是否与文件名的大小写对应;
  2. 其次校验,在get_dict中,id2label或label2id是否正确处理了大小写;
  3. 最后校验,dataloader中,文件名对应的大小写,是否正确地被映射为了对应的ID。 可以通过debug定位是否有问题
houchenwang commented 3 months ago

我检查了您的get_dict就是不对的,但改正后还是不成功,具体来说就是predict的结果还是编码1-36对应的字母/数字,没有出现过37-52对应的字母。看起来是train或dataloader的逻辑里是没考虑到大小写的,不知您能否指点一下?麻烦您了,不胜感激

houchenwang commented 3 months ago

抱歉我的措辞有误,只是说您的get_dict是未注意大小写的