您的位置:首页 > 移动开发 > Android开发

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

2013-10-07 11:01 633 查看
上一篇博文里已经将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现在已经有很成熟的算法,代码也有很多开源的,我只是把我的简单的算法分享出来,供有需要的同学参考。



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐