获得最先进的手写数字分类器最简单的方法是什么?

2024-05-19 12:37:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一个项目,涉及OCR处理手写数字,它使用典型的预处理分割识别管道。我已经手动完成了前两个阶段,通过调整一些标准算法从OpenCV为我的特定任务。对于第三阶段(识别),我想使用现成的分类器。在

首先我试过Tesseract,但它是really bad。所以我开始研究MNIST的进展。由于它很受欢迎,我希望能很容易地得到一个好的高质量分类器。实际上,最重要的答案here建议使用HOG+SVM串联,这在this ^{} sample中方便地实现。不幸的是,它没有我希望的那么好。它总是把0与{}混淆(我的眼睛很明显,它实际上是一个0),这是迄今为止我的算法所犯错误最多的原因。在

以下是HOG+SVM所犯错误的一些示例:

{3{图像的大小不在中间},而是从最上面的一行}中提取出来的。在

我试图通过在HOG+SVM之后应用一个kNN分类器来修复这个0-8错误(如果HOG+SVM输出8运行kNN并返回其输出),但是结果是一样的。在

然后我尝试调整this ^{} sample,它声称实现了0.45%MNIST测试错误。然而,在和pylearn2呆了一个星期后,我还是没能成功。它keeps crashing randomly all the time,即使在一个像Amazon EC2g2.2xlarge实例运行this image(我甚至没有提到我自己的机器)这样的无菌环境中。在

我知道Caffe的存在,但我没有尝试过。在

建立一个高精度(例如,MNIST test error<;1%)手写数字分类器的最简单方法是什么?最好是不需要NVIDIA卡运行的设备。据我所知,pylearn2(因为它严重依赖cuda-convnet)确实如此。一个Python接口和在Windows上运行的能力将是一个令人愉快的奖励。在

注意:我不能创建一个新的pylearn2标记,因为我没有足够的声誉,但它肯定应该在那里。在


Tags: sample项目算法分类器错误数字thisocr
2条回答

如果你还没喝咖啡,那就去喝咖啡吧。 它比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)或者你在网上找到代码。在

相关问题 更多 >