sh2
sh2
原因是标签(Label)的长度比序列(Sequence)长度要大了。可以在报错函数中设置参数 `ignore_longer_outputs_than_inputs=True`, 之后这类数据的损失会自动返回0,报错也就消失了。你是在训练哪个模型的时候遇到的错误?CRNN还是EAST?
影响不大
好的,找的问题就好
损失函数应该不存在问题,降低batch_size试试。
参数还是源码中的没有更改。你可能训练的数据集不对,请确保是卡号的数据集而不是银行卡的。
多谢反馈,crnn部分代码已做更新,参照readme的crnn训练方法训练即可
> > 多谢反馈,crnn部分代码已做更新,参照readme的crnn训练方法训练即可 > > 1 新版本代码跟预训练模型不匹配,模型没有更新,要运行demo需要把cfg中的numclass 改为10才行 > 2 训练代码跑了一晚上,增强系数30,到38个epochs,loss 18左右,val_loss貌似还是不降,30几,然后val_acc一直为0 反馈问题已提交commit,更新代码。 1. 新版本模型比原来的新增了空格识别,也就是NUM_CLASSES+1了. 2. 新版本模型**不要**在原来模型基础上训练,可尝试从头训练或在README crnn部分下载预训练网络 3. 新版本模型可以尝试增大aug_nbr、降低batch_size、增大验证集(validation_ratio)来提升训练性能
1. 老版本并不能识别卡号中的空格(也就是`_`),在预处理部分将它去除掉了,所以`num_classes=10+1` 并没有问题,而新版支持,故为`12` 2. 不会出现末尾未满26位填充` _` 的情况,数字中间有空白区域会。你可以拿预训练网络实验一下,除了最后几位因训练不足因素没有识别出,其它表现还算乐观 3. 老版的模型本身并没有太大问题,而是我在数据预处理时的失误。也感谢你问题的提出。
在 `crnn/run.py` 中,`CBC.train()` 的 `src_dir` 参数传入的可能不正确
可以参考这个:https://www.cnblogs.com/lillylin/p/9954981.html