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

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



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值