我正在做一个项目,涉及OCR处理手写数字,它使用典型的预处理分割识别管道。我已经手动完成了前两个阶段,通过调整一些标准算法从OpenCV
为我的特定任务。对于第三阶段(识别),我想使用现成的分类器。在
首先我试过Tesseract,但它是really bad。所以我开始研究MNIST
的进展。由于它很受欢迎,我希望能很容易地得到一个好的高质量分类器。实际上,最重要的答案here建议使用HOG+SVM
串联,这在this ^{0
与{0
),这是迄今为止我的算法所犯错误最多的原因。在
以下是HOG+SVM
所犯错误的一些示例:
{3{图像的大小不在中间},而是从最上面的一行}中提取出来的。在
我试图通过在HOG+SVM
之后应用一个kNN
分类器来修复这个0-8
错误(如果HOG+SVM
输出8
运行kNN
并返回其输出),但是结果是一样的。在
然后我尝试调整this ^{MNIST
测试错误。然而,在和pylearn2
呆了一个星期后,我还是没能成功。它keeps crashing randomly all the time,即使在一个像Amazon EC2
g2.2xlarge
实例运行this image(我甚至没有提到我自己的机器)这样的无菌环境中。在
我知道Caffe
的存在,但我没有尝试过。在
建立一个高精度(例如,MNIST test error<;1%)手写数字分类器的最简单方法是什么?最好是不需要NVIDIA
卡运行的设备。据我所知,pylearn2
(因为它严重依赖cuda-convnet
)确实如此。一个Python
接口和在Windows
上运行的能力将是一个令人愉快的奖励。在
注意:我不能创建一个新的pylearn2
标记,因为我没有足够的声誉,但它肯定应该在那里。在
如果你还没喝咖啡,那就去喝咖啡吧。 它比cuda convnet编译容易得多,它不依赖cuda(尽管它大大加快了速度),并且有一个用Lenet算法的mnist示例。在
看这里: https://github.com/BVLC/caffe/tree/dev/examples/mnist
在MINST数据库的网页中,您可以在底部找到一个最先进方法的基准,并链接到他们的论文:
http://yann.lecun.com/exdb/mnist/
表的最后一个条目的错误率为0.23%(相当令人印象深刻)的最佳结果。在
简而言之:没有
easy
的方法来达到最先进的速度,除非你能接受2-5%的错误(然后使用sklearn)或者你在网上找到代码。在相关问题 更多 >
编程相关推荐