自己动手实现Android平台手写体数字识别之识别算法准备

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/chenxupro/article/details/12374497

上一篇博文里已经将MNIST的训练集和测试集都归一化成了20x20的图像,现在就可以选择一个合适的算法做识别了。

我这里并没有用很牛逼的算法(本身就是非专业的,自然也想不到啥牛逼算法),都是按照书上讲的从13特征点,Fisher分类开始做,然后引入了书上讲的比较多的BP神经网络,再后来结合了PCA去提取特征向量。

最终用PCA+BP Neural Network的算法训练60000个样本,测试1000个样本,取PCA得出的特征点的前64个作为神经网络的输入层,隐含层为35个节点,输出层为4个节点,learning rate是0.04,minimum mean squared error是0.02,得出如下结果:

Right Ratio=0.899000
error Ratio=0.101000
Num:0,Right Rate:0.964706
Num:1,Right Rate:0.928571
Num:2,Right Rate:0.870690
Num:3,Right Rate:0.887850
Num:4,Right Rate:0.890909
Num:5,Right Rate:0.827586
Num:6,Right Rate:0.954023
Num:7,Right Rate:0.898990
Num:8,Right Rate:0.831461
Num:9,Right Rate:0.936170
当然识别率成功率不是很高,只有90%左右,不过作为一个演示的算法,也够用了^_^

整个训练的过程约3分钟,得出BP Neural Network中的参数,存储到文件,将这些数据放到Android手机存储中待用。

Android中对拍摄的图像的预处理(灰度化,二值化,归一化,字符分割,去除孤立点等等)以及识别会在接后的博文中讲述。

PCA+BP Neural Network训练算法和识别的代码在这里https://sourceforge.net/projects/andocrrecog/files/PcaBpNNMnistTrain/

Android平台拍摄,识别,输出结果的完整代码在这里https://sourceforge.net/projects/andocrrecog/files/AndroidPcaBpNNHandwrittenDigitsRecog/

算法不是很腻害,识别率有待提高,其实OCR现在已经有很成熟的算法,代码也有很多开源的,我只是把我的简单的算法分享出来,供有需要的同学参考。



展开阅读全文

没有更多推荐了,返回首页