YCG09 / chinese_ocr

CTPN + DenseNet + CTC based end-to-end Chinese OCR implemented using tensorflow and keras
Apache License 2.0
2.74k stars 1.08k forks source link

只用两张图片训练,竟然不收敛,感觉不可能呢 #325

Open northeastsquare opened 4 years ago

northeastsquare commented 4 years ago

作者提供的图片,只用两张训练是收敛了,可是用我准备的,两张车牌图片没有收敛,与作者原训练任务不同点就是车牌图片模糊些,id范围只有一个中文省份,和数字和大写字母,结果不能收敛 就算随机猜,也能50%,可是trainloss 1.0左右,acc为0,为什么呢?

1/1 [==============================] - 0s 255ms/step - loss: 1.4361 - acc: 0.0000e+00 - val_loss: 1.4272 - val_acc: 0.0000e+00 Epoch 18485/100000000

而训练集只有一张图片,train loss 可以到0.01, train acc 到1.0

ch11_20191230044803 (002122)2020-01-13-23-55-44 -0 ch17_20191230054914 (013600)2020-01-14-00-10-14 -0

SpicyChickenFLY commented 4 years ago

这是文字序列识别,模型的最后是通过将特征图的每一列分别展开输入全连接层识别的,加入你输入的图像最终得到的特征图有70列就会有70个识别结果,然后通过CTC合并得到最终结果,所以和你说的50%的理论不相符

northeastsquare commented 4 years ago

一张图有70列的ground truth, 两张图,就是两个序列, 也就是序列总共就两个,随机猜一个,就可以 就是模型没有学习到这个序列的关系吗?

SpicyChickenFLY commented 4 years ago

模型预测出的序列结果并不是一个整体,而是一个由70列预测结果组成的序列(使用CTC之前),你训练的两张图里面其实可能包含着70*2个不同的类别,自然不是随机猜一个50%