私は、典型的な前処理 - セグメンテーション - 認識パイプラインを使用する OCR-ing 手書き数字を含むプロジェクトに取り組んでいます。最初の 2 つの段階OpenCVは、特定のタスクに合わせていくつかの標準アルゴリズムを調整して手動で行いました。第 3 段階 (認識) では、既製の分類器を使用したいと考えています。
最初に Tesseract を試してみましたが、本当にひどいものでした。そこで、 の進行状況を調べ始めましたMNIST。人気があるので、高品質の優れた分類器を簡単に入手できることを願っていました。実際、ここでの一番の答えは、このサンプルHOG+SVMで便利に実装されているタンデムの使用を示唆しています。残念ながら、私が望んでいたほど良くはありません。これは、 と を混同し続けます(実際には であることが私の目には明らかです)。OpenCV080
によって作成されたエラーの例を次に示しますHOG+SVM。



上の行は画像から抽出された元の数字 (より高解像度の画像は存在しません)、中央の行はこれらの数字の傾き補正、サイズの正規化、中央揃え、下の行は の出力ですHOG+SVM。
後で分類子を0-8適用してこのエラーをホットフィックスしようとしましたが(出力が実行され、代わりにその出力が返される場合)、結果は同じでした。kNNHOG+SVMHOG+SVM8kNN
次に、0.45% のテスト エラーを達成すると主張するこのpylearn2サンプルを適応させようとしました。MNISTしかし、1週間一緒pylearn2に過ごした後、私はそれを機能させることができませんでした. このイメージを実行するインスタンスのように無菌の環境であっても、常にランダムにクラッシュし続けます(自分のマシンについては言及しません)。Amazon EC2 g2.2xlarge
の存在は知っていCaffeますが、試したことはありません。
高精度 (たとえば、MNIST テスト エラー < 1%) の手書き数字分類器を設定する最も簡単な方法は何でしょうか? NVIDIAできれば、実行するカードを必要としないもの。私が理解している限り、pylearn2(に大きく依存しているためcuda-convnet)そうです。Pythonインターフェイスと実行する機能はWindows、楽しいボーナスです。
注:pylearn2十分な評判がないため、新しいタグを作成できませんが、確かにあるはずです。