【问题标题】:What is the easiest way to obtain a state-of-the-art handwritten digit classifier?获得最先进的手写数字分类器的最简单方法是什么?
【发布时间】:2015-04-13 20:38:58
【问题描述】:

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

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

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

顶行是从图像中提取的原始数字(不存在更高分辨率的图像),中间行是这些数字经过去偏斜、尺寸标准化和居中,底行是HOG+SVM 的输出。

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

然后我尝试调整this pylearn2 sample,它声称可以达到0.45% MNIST 测试错误。然而,在pylearn2 度过了一周之后,我无法让它发挥作用。它keeps crashing randomly all the time,即使在像运行this imageAmazon EC2 g2.2xlarge 实例这样无菌的环境中(我什至没有提到我自己的机器)。

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

设置高精度(例如,MNIST 测试误差 NVIDIA 卡即可运行。据我了解,pylearn2(因为它严重依赖cuda-convnet)确实如此。 Python 界面和在 Windows 上运行的能力将是一个令人愉快的奖励。

注意:我无法创建新的pylearn2 标签,因为我没有足够的声誉,但它肯定应该在那里。

【问题讨论】:

    标签: python opencv ocr caffe


    【解决方案1】:

    在 MINST 数据库的网页中,您可以在底部找到最先进方法的基准及其论文链接:

    http://yann.lecun.com/exdb/mnist/

    表格的最后一个条目具有 0.23% 的误差(令人印象深刻)的最佳结果。

    简短回答:没有easy 方法可以达到最先进的水平,除非您可以接受 2-5% 的错误(然后使用 sklearn)或者您在网上找到代码。

    【讨论】:

    • 我当然知道他们。问题是,最高结果使用(似乎)cuda-convnet 的一个分支,几乎无法编译。其他靠近顶部的只是论文。我要求一个我可以编译和运行的解决方案。正如我所说,pylearn2 声称达到 0.45%,但它根本不起作用。
    • 您可以接受的错误率是多少?我可以根据您的错误阈值向您建议一些方法。
    • 根据粗略估计,
    【解决方案2】:

    如果您还没有尝试过 caffe,请继续尝试。 它比 cuda-convnet 更容易编译,它不依赖 cuda(尽管它可以大大加快速度),并且它有一个使用 Lenet 算法的 mnist 示例。

    看这里: https://github.com/BVLC/caffe/tree/dev/examples/mnist

    【讨论】:

      猜你喜欢
      • 2022-01-24
      • 2019-04-21
      • 1970-01-01
      • 2011-03-27
      • 1970-01-01
      • 2018-02-09
      • 2011-04-04
      • 1970-01-01
      • 2011-12-02
      相关资源
      最近更新 更多