テストデータ (MNIST IDX形式)


お知らせ

2016/4/14 前処理の質を改善したデータを公開しました。また、今までのトレーニングデータの4倍規模の画像データを公開しました。
2016/4/11 本日公開したデータに問題がありました。最新版をfaxocr-numbers-20160411c.zipとして再公開しています。
2016/4/10 公開データで、28x28とすべき画像サイズを20x20としてしまっていました。4/11版では修正されています。申し訳ありません。

データの概説

このページでは、私たちのシステムで用いているOCRのトレーニングデータ、テスト用データを公開しています。 

テストデータに含まれる手書き数字画像の元ファイル(抜粋)

こちらのファイル(faxocr-numbers-20160411c.zip)に、MNISTデータセットと同一のIDX形式で、トレーニング用データセット、テスト用データセットが含まれています。ファイルの内訳は下記の通りです。idx1ファイルはラベルデータ、idx3ファイルは対応する画像データを含んでいます。ファイル形式の詳細は、The MNIST DATABASE of handwritten digitsページの最下部をご確認下さい。なお、MNISTデータと異なり、画像データはモノクロ画像で、手書きで無い活字も含まれています。また、トレーニングデータは、クラス毎の画像数がバランスしていません。その他、ファイルに不具合がある場合は、できる限り対応させて頂きますので、お気軽にご連絡下さい。

トレーニング用データセット [小] (各1711 images)

28 x 28 pixels
faxocr-training-28_train_labels.idx1
faxocr-training-28_train_images.idx3

48 x 48 pixels
faxocr-training-48_train_labels.idx1
faxocr-training-48_train_images.idx3

トレーニング用データセット [中] (各6709 images)

28 x 28 pixels
faxocr-numbers-28_train_labels.idx1
faxocr-numbers-28_train_images.idx3

48 x 48 pixels
faxocr-numbers-48_train_labels.idx1
faxocr-numbers-48_train_images.idx3

テスト用データセット
 (各249 images)

28 x 28 pixels
faxocr-mustread-28_train_labels.idx1
faxocr-mustread-28_train_images.idx3

48 x 48 pixels
faxocr-mustread-48_train_labels.idx1
faxocr-mustread-48_train_images.idx3

なお、それぞれのデータセットには、以下の数字が含まれています。


 トレーニング用
データセット [小]
トレーニング用
データセット [中]
 テスト用データセット
 0 201 images 693 images 3 images
 1 204 images 689 images 7 images
 2 201 images 689 images 7 images
 3 195 images 667 images 28 images
 4 195 images 676 images 20 images
 5 161 images 682 images 14 images
 6 156 images 674 images 21 images
 7 128 images 666 images 30 images
 8 148 images
 638 images 58 images
 9 122 images 635 images 61 images
  1711 images 6709 images 249 images

ファイル概要
  • faxocr-numbers-20160410.zip / 最初の公開データ
  • faxocr-numbers-20160411.zip / 画像サイズを20x20から28x28へ修正
  • faxocr-numbers-20160411c.zip / IDXデータに統合する前に、48x48 → 28x28への縮小+アンチエイリアシング
  • faxocr-numbers-20160414.zip / 前処理の改善、より多量のトレーニングデータを追加
  • numbers-sample.zip / トレーニング用データセット(中)の元画像

利用に際してのお願い

データを公開するのは、私たちのKOCRと他の処理系の性能を比較し、今後の改良に生かすことを目的としています。とりわけ、「MNISTと同サイズの28 x 28とKOCRが内部的に利用してきた48 x 48での性能差」、「公開したトレーニングデータとMNISTデータ、それぞれで学習した際の性能差」に興味があります。それにより、i) トレーニングデータを増やせばよいのか、ii) 前処理や特徴量抽出を改善すればよいのか、iii) 学習モデルを変えればよいのか、今後の改良の方向性を決めたいと考えています。

そうした由来のデータですので、本データを利用された方は、もし差し支えなければ結果をこちらまでお知らせ頂ければ大変助かります。
もちろん、本データの公開により集まった知見を生かし、KOCRを改良して下さる方も大募集しています。

【現在の性能】
 手法・利用ライブラリ 認識率 (※) 教師データ (※2) 日時 備考
 Chainer / CNN 98.4% 元画像2016/04/30 @ksknw
 OpenCV / CNN 97.6% -2016/11/09 @musharna000 (special thanks to sohgo-san)
 Keras / CNN 97.1% 公開データ+MNIST2016/6/27 @musharna000
 Chainer / CNN 96.8% 20160414 / 48x482016/04/16 @ksknw
 濃度こう配特徴+次元削減 + SVM-RBF 96.4% 28×282016/07/15三重大学大学院工学研究科ヒューマインターフェース研
 OpenCV / SVM-RBF 95.2% -2016/05/23 @MieUnivHILabo
 Keras / ? 93.1% 20160411c / 28x282016/04/13 @musharna000
 OpenCV / SVM-RBF 92.0% 独自前処理2016/02 @tweeting_drtaka, 開発版
 Caffe / LeNet 84.3% 20160411c / 48x482016/04/11 @sakuramaru7777
 Caffe / LeNet 81.9%  20160411c / 28x282016/04/11 @sakuramaru7777
 Chainer / CNN 80数% 20160411c2016/04/12 @ksknw
 OpenCV / SVM-RBF 71.9% 独自前処理2016/01 @tweeting_drtaka, githubコミット版
※ テスト用データセット
249件の正答率
※2. 元画像は同じですが、それぞれ前処理が異なっています

データの由来

トレーニング用データ [小]: Githubに登録されたKOCRのリポジトリ中の数字データ3117ファイルから、罫線が含まれていない数字を抽出したうえで、極度に類似した画像を除外したデータに、いくつかの画像を手作業で追加しています。なお、KOCRのリポジトリ中に収載されているデータは、このFaxOCRシステムを利用して収集しました。

トレーニング用データ [中]: FaxOCRシステムを利用して収集したデータから、テスト用データを削除したもの。

テスト用データ: 我々のFaxOCRを実際に利用した際に初期のKOCRが誤読した手書き数字のうち、これは読めないと困るという数字を目視で選択したデータセットです。

IDXファイル生成前の元画像データ:

それぞれのデータの元となった画像ファイルは、実際のファックスから切り出した、サイズもまちまちでノイズが混入した画像ファイルです。上記のIDXファイルの生成に際しては、ノイズを除去し、文字部分を拡大したうえでセンタリングし、deskew処理する等の前処理を行っています。ただし、前処理の精度も完全ではありません。そこで、処理前の元画像ファイル(PNG)と前処理後の画像ファイルも合わせて公開します。

 numbers-export.zipトレーニング用データセット[小]の元画像ファイル 
 numbers-sample.zipトレーニング用データセット[中]の元画像ファイル
 numbers-mustread.zipテスト用データセットの元画像ファイル
 numbers-export-processed.zip トレーニング用データセットの前処理後 
 numbers-mustread-processed.zipテスト用データセットの前処理後

なお、上記のサンプルの通り、本データにはペンによる字が混在しています。その結果、ノイズ除去のためにモルフォロジー演算を行うと、穴がつぶれたり(上記サンプル6)、間隔がつぶれたり(上記5・9)と、一筋縄ではいきません。当方の最新コード(未コミット)では現在、224/249程度を認識しています。(2016年1月)



OpenCV上のSVMでのPOLYカーネルの利用について

LeCunのMNISTページによると、MNISTデータをSVMで認識する場合、Gaussianカーネルよりも多項式カーネルの方が性能が良いようです。ただ、KOCRが利用しているopencv(version 2)では、RBFカーネルのサンプルコードは多数見つかるものの、POLYカーネルのサンプルコードがどうも見つかりません。とりわけ、train_auto()を用いた学習に際して、degreeを固定する方法がどうも分かりません。いろいろ試した末、当方では下記のようなコードを用いていますが、もし正しいreferenceをご存知の方は教えていただければ助かります。(opencvのソースを読んでしまう方が、話が早いのかも知れませんが)

なお、2行目のparam.degreeに設定するだけだと(degree_gridにパラメータを設定しないと)、学習時間が12倍近くになります。
性能がごく僅か落ちる印象です。僅かに落ちたり、僅かに上がったりします。(2016/4/14 追記)

    param.kernel_type = CvSVM::POLY;
    param.degree = 9;

    CvParamGrid degree_grid = CvSVM::get_default_grid(CvSVM::DEGREE);
    degree_grid.min_val = 5.0;
    degree_grid.max_val = 9.0;
    degree_grid.step = 2.0;

    svm_ = new CvSVM();
    svm_->train_auto(Direction, Classlabel, NULL, NULL, param,
                       50,
                       svm.get_default_grid(CvSVM::C),
                       svm.get_default_grid(CvSVM::GAMMA),
                       svm.get_default_grid(CvSVM::P),
                       svm.get_default_grid(CvSVM::NU),
                       svm.get_default_grid(CvSVM::COEF),
                       degree_grid
                       );

ċ
faxocr-numbers-20160414.zip
(2279k)
Takashi Okumura,
2016/04/13 9:09
ċ
numbers-export-processed.zip
(703k)
Takashi Okumura,
2016/04/10 6:07
ċ
numbers-export.zip
(1883k)
Takashi Okumura,
2016/04/10 0:08
ċ
numbers-mustread-processed.zip
(101k)
Takashi Okumura,
2016/04/10 6:07
ċ
numbers-mustread.zip
(343k)
Takashi Okumura,
2016/04/10 0:09
ċ
numbers-sample.zip
(9321k)
Takashi Okumura,
2016/04/13 17:47
Comments