自己动手实现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,得出如下结果:
当然识别率成功率不是很高,只有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现在已经有很成熟的算法,代码也有很多开源的,我只是把我的简单的算法分享出来,供有需要的同学参考。
我这里并没有用很牛逼的算法(本身就是非专业的,自然也想不到啥牛逼算法),都是按照书上讲的从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现在已经有很成熟的算法,代码也有很多开源的,我只是把我的简单的算法分享出来,供有需要的同学参考。
相关文章推荐
- 自己动手实现Android平台手写体数字识别之概述和训练集准备
- 机器学习01-KNN算法的python实现及手写体数字的识别
- python实现kNN算法识别手写体数字
- 利用KNN算法实现手写体数字的识别
- CNN:人工智能之神经网络算法进阶优化,六种不同优化算法实现手写数字识别逐步提高,应用案例自动驾驶之捕捉并识别周围车牌号—Jason niu
- C#中调用Matlab人工神经网络算法实现手写数字识别
- Android平台Camera实时滤镜实现方法探讨(九)--磨皮算法探讨(一)
- 手写体数字识别(一)知识准备
- 基于K-近邻算法识别手写数字的实现
- PK/NN/*/SVM:实现手写数字识别(数据集50000张图片)比较3种算法神经网络、灰度平均值、SVM各自的准确率—Jason niu
- [BOT]自己动手实现android 饼状图,PieGraphView,附源码解析
- tensorflow 学习专栏(五):在mnist数据集上使用tensorflow实现临近算法(Nearest-Neighbor)进行手写数字识别
- 在android平台上用LanSoSdk实现自己的左右3D视频转换播放源代码.
- 机器学习深度学习基础笔记(2)——梯度下降之手写数字识别算法实现
- Android+TensorFlow+CNN+MNIST 手写数字识别实现
- 深度学习-实现提高版本的手写数字识别算法
- Python实现KNN算法手写识别数字
- 基于OpenCV实现手写体数字训练与识别
- [机器学习]kNN算法python实现(实例:数字识别)
- 自己动手实现zookeeper的FastLeaderELection选举算法和心跳同步