我尝试在Python中使用TensorFlow开发一个Captcha Recognition程序。
当我开始时,我检查了互联网上的一些文章,发现一个Captcha图像被分割成单独的数字,这些个别数字被识别。但我想尝试不同的方法。我想要识别没有分段的Captcha。
参考文献:
Automatic Number Plate Recognition - 我使用此博文作为参考。
Code for ANPR - 这是上述博客文章中的代码。
我的解决方案:
生成数据:
我生成了大约60000个160 * 60 RGB图像。所有验证码的长度均为6.我使用了25000张图像作为训练数据,9000张图像作为测试数据,并没有使用剩下的图像。
示例数据:
神经网络架构:
160 * 60 * 3 ------(5 * 5 Conv)---> 160 * 60 * 24 ------(2 * 2 MaxPool)---> 80 * 30 * 24 ----(5 * 5 Conv)----> 80 * 30 * 36 ----(4 * 2 MaxPool)----> 20 * 15 * 36 ----(完全连接)--->(4096 * 1)-----(完全连接)--->(216 * 1)
网络的其他一些属性:
1)迷你批量大小:100
2)优化器:Adam Optimizer
3)时代:60
4)验证码长度:6
6)使用的字符:[A-Z0-9]
面临的问题:
1)当我有一个卷积层时,我的网络开始输出相同的值。我尝试了标准化,但没有变化。所以我删除了图层并将最终的Maxpool图层从(2 * 2)更改为(4 * 2)。我已经运行了30个时期的程序
2)现在,当我使用上述架构运行60个时期的程序时,我在50或55个时期之后的训练集上获得了大约50%的准确度,但我在测试集上获得了0-5%的准确度。
我在这个网络中缺少什么?这是错误的数据吗?我的方法是否正确?为什么我没有取得好成绩?