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)