【第一次训练】
训练数据:syn
训练数量:51200
在真实数据上测试结果:
字符准确率:67%
word 准确率:5%
【第二次训练】
训练数据:syn + gan
训练数量:syn 51200, gan 51200
是否提前结束:是
结束标志:11个字符平均acc 达到98%
在真实数据上测试结果:
字符准确率:75.3%
word 准确率:14.5%
真实样本总数:124
全部正确数:18
错1-2个数:27
其他:79
【第三次训练】
训练数据:syn + gan
训练数量:syn 51200, gan 51200
是否提前结束:是
结束标志:11个字符平均acc 达到99%
结束时实际迭代次数:4000
结束时acc:
on refine_batch
[ 1. 1. 1. 0.99437499 1. 0.99874997
0.95687503 1. 0.99624997 0.95937502 1. ]
on syn_batch
[ 1. 1. 1. 0.99312502 1. 1.
0.98312497 1. 0.99812502 0.97437501 1. ]
在真实数据上测试结果:
字符准确率:75.8%
word 准确率:15.3%
真实样本总数:124
全部正确数:19
错1-2个数:28
其他:77
一个初步的判断:平均准确率达到了0.98,但是个别字符达到0.95就截止了,总体准确率没有提升。修改截止阈值为0.999再测一波。如果不行,考虑规范化输入图像明暗亮度,目前gan图的明暗程度比较统一。
【第四次训练】
训练数据:syn + gan
训练数量:syn 51200, gan 51200
是否提前结束:是
结束标志:11个字符平均acc 达到99.9%
结束时实际迭代次数:8300
结束时acc:
on refine_batch
[ 1. 1. 1. 1. 1. 1.
0.99562502 1. 1. 0.99374998 1. ]
on syn_batch
[ 1. 1. 1. 0.99937499 1. 1.
0.99874997 1. 1. 0.995 1. ]
在真实数据上测试结果:
字符准确率:78.7%
word 准确率:24.19%
真实样本总数:124
全部正确数:30
错1-2个数:23
其他:71
【第5次训练】
在训练4对基础上fine tune。并且执行了直方图匹配
结束标志:11个字符平均acc 达到99.95%
结束时实际迭代次数:1100(不包括训练4之前到迭代次数)
结束时acc:
on refine_batch
[ 1. 1. 1. 1. 1. 1.
0.99687499 1. 0.99937499 0.99874997 1. ]
on syn_batch
[ 1. 1. 1. 1. 1. 1. 1.
1. 1. 0.99687499 1. ]
在真实数据上测试结果:
字符准确率:84%
word 准确率:33%
真实样本总数:124
全部正确数:41
错1-2个数:36
其他:47
【第6次训练】
使用第4次的训练model,对输入图像进行了直方图匹配,将图像直方图调整到(-0.4,0.8)范围内。
字符准确率:82.7%
word 准确率:29%
真实样本总数:124
全部正确数:36
错1-2个数:34
其他:54
【第七次训练】
对输入层进行BatchNormalization操作(axis = 1)
结束标志:11个字符平均acc 达到99.9%
结束时实际迭代次数:4500
结束时acc:
on refine_batch
[ 1. 1. 1. 1. 1. 1.
0.99624997 1. 0.99874997 0.995 1. ]
on syn_batch
[ 1. 1. 1. 1. 1. 1.
0.99562502 1. 0.99812502 0.99624997 1. ]
在真实数据上测试结果:
字符准确率:76%
word 准确率:25%
真实样本总数:124
全部正确数:31
错1-2个数:22
其他:71
【第8次训练】
在第7次训练的基础上,识别前,使用hist_norm
在真实数据上测试结果:
字符准确率:87%
word 准确率:53%
真实样本总数:124
全部正确数:66
错1-2个数:17
其他:41
【第8.5次训练】
训练迭代次数:51200
识别前,使用hist_norm
结束时acc:
loss on refine_batch is
[ 1. 1. 1. 1. 1. 0.99937499
0.99874997 1. 1. 0.99687499 1. ]
loss on syn_batch is
[ 1. 1. 1. 1. 1. 1. 1.
1. 1. 0.99937499 1. ]
在真实数据上测试结果:
字符准确率:87.9%
word 准确率:54%
真实样本总数:124
全部正确数:67
错1-2个数:17
其他:40
【第9次训练】
直方图均衡化效果并不好
所以本次实验只把 syn 和 refine 在训练前都拉伸到(-1,1)
对于真实图像,在识别前,也把直方图拉伸到(-1,1)
对输入层进行BatchNormalization操作(axis = 1)
结束标志:11个字符平均acc 达到99.9%
结束时实际迭代次数:5500
结束时acc:
on refine_batch
on syn_batch
在真实数据上测试结果:
字符准确率:83%
word 准确率:33%
真实样本总数:124
全部正确数:42
错1-2个数:35
其他:47
结果没有提升,问题还是在于gan的相似性
【第10次训练】
只针对acc_other中图片做特定的识别,将生成图片进行了纵向拉伸后再训练OCR模型。
在第8.5次实验得到的 acc_other 集合上做验证。
验证字符准确率:71%
count100 is 0
count2 is 9
count_other is 7
【第10.5次训练】
对第10次验证实验得到的 7 张 acc_other 图进行人工剪切,有4张图片识别结果得到了修正,
./cache/kk/20170411_097.jpg
20171414
./cache/kk/20170609_115.jpg
20170609
./cache/kk/20170423_029.jpg
20170403
./cache/kk/20170611_050.jpg
20170411
final char acc is : 0.875
结论,图片识别前的裁剪是影响识别准确的关键因素。需要专门针对裁切,进行优化。
【第11次训练】
对syn 图进行了拉伸& 压缩处理
结束标志:11个字符平均acc 达到99.9%
结束时实际迭代次数:13000
结束时acc:
loss on syn_batch is
[ 1. 1. 1. 1. 1. 1.
0.99937499 1. 1. 1. 1. ]
loss on refine_batch is
[ 1. 1. 1. 0.99874997 1. 0.99937499
0.9975 1. 0.99874997 0.9975 1. ]
在真实数据上测试结果:
字符准确率:93%
word 准确率:69%
真实样本总数:124
全部正确数:86
错1-2个数:31
其他:7
错的7个全是20161203那个渣图,这个图暂时放弃吧。
接下来的方向,研究发票代码和发票号码,然后考虑整合。
【第12次训练】
在11次的基础上增量训练
结束标志:11个字符平均acc 达到99.95%
结束时实际迭代次数:4300()
结束时acc:
loss on syn_batch is
[ 1. 1. 1. 1. 1. 1. 1.
1. 1. 0.99937499 1. ]
loss on refine_batch is
[ 1. 1. 1. 0.99937499 1. 1.
0.99812502 1. 0.99937499 0.99937499 1. ]
training is finish, and final iteration is 4300
在真实数据上测试结果:
字符准确率:94.6%
word 准确率:72%
真实样本总数:124
全部正确数:90
错1-2个数:28
其他:6
需要解决 acc2 中的问题,只错1-2个,为什么就不能全对呢?差在哪里??
【第12.1次训练】
在第12次第基础上,试图将网络 acc 训练到极致
结束标志:11个字符平均acc 达到99.97%
在真实数据上测试结果:
字符准确率:94.7%
word 准确率:72.5%
真实样本总数:124
全部正确数:90
错1-2个数:28
其他:6
同样 需要解决 acc2 中的问题,只错1-2个,为什么就不能全对呢?差在哪里??
从这个结果看,应该考虑增加图片拉伸压缩多样性的问题了。
【第12.2次训练】
在第12.1次第基础上,试图将网络 acc 训练到极致
结束标志:迭代51200次
在真实数据上测试结果:
字符准确率:94.7%
word 准确率:73.3%
真实样本总数:124
全部正确数:91
错1-2个数:28
其他:5
同样 需要解决 acc2 中的问题,只错1-2个,为什么就不能全对呢?差在哪里??
从这个结果看,应该考虑增加图片拉伸压缩多样性的问题了。