10,023 views
この記事は最終更新から 1750日 が経過しています。
ダウンロードしたMNIST画像は、一般的な画像ビューアで見ることができない。
ここではフリーの数値計算ソフト GNU-Octave を使って MNIST画像データを可視化してみる。
【参考】
「(28) MNIST画像をPNG画像で出力する(Python版)」では、同じことを Pythonでもやってみました。
学習用画像データファイルをオープンする。
octave:2> fid = fopen('train-images-idx3-ubyte','r','b')
fid = 3
学習用画像データファイルのフォーマットは以下の通り。
ファイル先頭のヘッダ部分には、画像データに関する情報が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 x 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」だろうか?
2番目に格納されている学習画像も見てみる。
octave:13> v = uint8(img(:,:,2)'); octave:14> imshow(v)
これは「0」に間違いない。
60000個目に格納されている学習画像も見てみる。
octave:15> v = uint8(img(:,:,60000)'); octave:16> imshow(v)
これは「8」に間違いない。
次回「(3) MNIST画像をPNG画像で出力する」では、MNIST画像を PNG画像ファイル化して眺めてみる。