(2) MNIST学習画像を見てみる

この記事は最終更新から 482日 が経過しています。

ダウンロードしたMNIST画像は、一般的な画像ビューアで見ることができない。
ここではフリーの数値計算ソフト GNU-Octave を使ってMNIST画像データを可視化してみる。

学習用画像データファイルをオープンする。

octave:2> fid=fopen('train-images-idx3-ubyte','r','b')
fid =  3

学習用画像データファイルのフォーマットは以下の通り。
https://www.dogrow.net/nnet/wp-content/uploads/2013/10/20131005_03.png
ファイル先頭のヘッダ部分には、画像データに関する情報が4項目格納されている。

octave:3> magic_number = fread(fid,1,'int32')
magic_number =  2051
octave:4> number_of_items = fread(fid, 1, 'int32')
number_of_items =  60000
octave:5> number_of_rows = fread(fid,1,'int32')
number_of_rows =  28
octave:6> number_of_columns = fread(fid,1,'int32')
number_of_columns =  28

縦横28×28ピクセルの画像が60,000枚入っていることが確認できた。

次に画像を読み出してみる。
GNU-Octaveでは、fread関数で取得したデータの出力を2次元配列にすることができる。

octave:7> img = fread(fid, [28*28 60000],'uint8');
octave:8> size(img)
ans =
     784   60000
octave:9> img = reshape(img,28,28,60000);
octave:10> size(img)
ans =
      28      28   60000

先頭から一つずつ画像を表示してみる。
GNU-Octaveでは、imshowコマンドで2次元配列データを簡単に画像表示できる。

octave:11> v = uint8(img(:,:,1)');
octave:12> imshow(v)

これは「5」だろうか?
https://www.dogrow.net/nnet/wp-content/uploads/2013/10/20131005_M01.png

2番目に格納されている学習画像も見てみる。

octave:13> v = uint8(img(:,:,2)');
octave:14> imshow(v)

これは「0」に間違いない。
https://www.dogrow.net/nnet/wp-content/uploads/2013/10/20131005_M02.png

60000個目に格納されている学習画像も見てみる。

octave:15> v = uint8(img(:,:,60000)');
octave:16> imshow(v)

これは「8」に間違いない。
https://www.dogrow.net/nnet/wp-content/uploads/2013/10/20131005_M03.png

Leave a Comment


NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*