FC2カウンター FPGAの部屋 MNIST手書き数字のデータフォーマット

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

MNIST手書き数字のデータフォーマット

MNIST手書き数字のデータフォーマットを解析してみた。MNIST手書き数字のデータフォーマットに、今回、白線追従走行用のデータフォーマットを合わせた方が都合が良いのでやってみた。

日本語で参照したのは、”MNIST 手書き数字データを画像ファイルに変換する”。ここには、画像ファイルのフォーマットしか掲載されていなかったため、ラベルファイルのフォーマットも併せて、”MNIST handwritten digit database, Yann LeCun, Corinna Cortes and Chris Burges”を参照した。

MNIST handwritten digit database, Yann LeCun, Corinna Cortes and Chris Burges”から画像ファイルとラベルファイルのフォーマットを引用する。

TRAINING SET LABEL FILE (train-labels-idx1-ubyte):

[offset] [type]          [value]          [description] 
0000     32 bit integer  0x00000801(2049) magic number (MSB first) 
0004     32 bit integer  60000            number of items 
0008     unsigned byte   ??               label 
0009     unsigned byte   ??               label 
........ 
xxxx     unsigned byte   ??               label
The labels values are 0 to 9.

TRAINING SET IMAGE FILE (train-images-idx3-ubyte):

[offset] [type]          [value]          [description] 
0000     32 bit integer  0x00000803(2051) magic number 
0004     32 bit integer  60000            number of images 
0008     32 bit integer  28               number of rows 
0012     32 bit integer  28               number of columns 
0016     unsigned byte   ??               pixel 
0017     unsigned byte   ??               pixel 
........ 
xxxx     unsigned byte   ??               pixel
Pixels are organized row-wise. Pixel values are 0 to 255. 0 means background (white), 255 means foreground (black).

TEST SET LABEL FILE (t10k-labels-idx1-ubyte):

[offset] [type]          [value]          [description] 
0000     32 bit integer  0x00000801(2049) magic number (MSB first) 
0004     32 bit integer  10000            number of items 
0008     unsigned byte   ??               label 
0009     unsigned byte   ??               label 
........ 
xxxx     unsigned byte   ??               label
The labels values are 0 to 9.

TEST SET IMAGE FILE (t10k-images-idx3-ubyte):

[offset] [type]          [value]          [description] 
0000     32 bit integer  0x00000803(2051) magic number 
0004     32 bit integer  10000            number of images 
0008     32 bit integer  28               number of rows 
0012     32 bit integer  28               number of columns 
0016     unsigned byte   ??               pixel 
0017     unsigned byte   ??               pixel 
........ 
xxxx     unsigned byte   ??               pixel
Pixels are organized row-wise. Pixel values are 0 to 255. 0 means background (white), 255 means foreground (black). 


画像ファイルは 0 が白で 255 が黒だそうだ。そうか手書き数字は白地に黒だったのか。。。知らなかった。

実際のデータを見てみよう。トレーニングデータは大きいので、テストデータを見ていこう。
最初に画像ファイルの t10k-images-idx3-ubyte をバイナリエディタで見た。
MNIST_dataset_1_170801.png

最初の 0x0000 0803 が画像ファイルのマジック・ナンバーだ。その次の 0x0000 2710 は16進数なので、10進数に直すと10,000 となってデータの数を表す。0x0000 001c は10 進数にすると 28 だ。その次も同様。その後からは1バイトずつ、つまり、0 ~ 255 までのピクセル値を表す。

次にラベル・ファイルの t10k-labels-idx1-ubyte を見てみよう。
MNIST_dataset_2_170801.png

最初の 0x0000 0801 はラベル・ファイルのマジック・ナンバーだ。その次の 0x0000 2710 は16進数なので、10進数に直すと10,000 となってデータの数を表す。その次からはラベルが続いている。最初のラベルは0x07 で、つまり最初の数字は 7 であるということを表す。その次の数字は 2 だ。
  1. 2017年08月01日 12:37 |
  2. DNN
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
http://marsee101.blog19.fc2.com/tb.php/3873-2cbbeb65
この記事にトラックバックする(FC2ブログユーザー)