tensorflow使用自制MNIST数据集训练识别LCD数字模型

项目背景

最近老师需要我识别LCD数显仪表的数字,我首先想到的是采用类似车牌分割的办法,先把数字分割出来,再采用神经网络识别数字。

为什么不直接将整个LCD图片放进一个网络识别?

因为如果这样做的话需要大量的数据,而且可能精度不一定能够得到保证。

自制MNIST数据集

模仿mnist数据集制作自己的数据集
可以参考上述文章制作数据集

这是我自己生成的LCD数字训练图片,其实我在这里使用了一个比较巧的办法,因为按道理我是需要自己去采集显示中数显LCD的数据,但是由于条件不够,所以我才自己生成训练数据(老师还跟我提及到他以前有个学生也是采用这种思路获得训练数据,只不过那位大神是采用GAN生成数据)。
我这里的训练数据大概是两万多张。

训练模型

直接采用tensorflow提供的训练MNIST模型的代码就能够获得很好的效果,这里就不展示了。

训练问题

采用tensorflow提供的input_data.py作为数据读入后,训练出的模型会出现识别不到数字0
原因是自己的数据集比较少,而在mnist.py这个文集文件里面可以看到read_data_sets这个函数默认会采用前5000训练数据作为验证集的数据,所以前5000个训练集没有参与训练,而数字0刚好在这5000个数据里面。
解决办法:

  • 训练数据的时候选择较小的验证集数量,例如100等等
  • 前面那个生成MNIST训练集的方法加入将输入文件顺序打乱的功能
(0)

相关推荐