機械学習の画像認識の学習において、初心者でも使いやすく、サンプルデータとしてもよく利用されているのが「MNIST(エムニスト)」のデータセットです。MNISTは使いやすさだけではなく、他のライブラリでも簡単に取得することができる、応用力の高いデータセットです。
この記事ではMNISTとは何かをわかりやすく解説。さらに、ダウンロード方法やTensorflowやKeras、Chainer(※1)での取得方法まで紹介します。
(※1)2019年Preferred Networks(PFN)は2019年12月、同社が開発する深層学習フレームワーク「Chainer」のメジャーアップデートを終了すると発表。今後は、米Facebookが主導する深層学習フレームワーク「PyTorch」へ順次移行する。
公開日: 2018年6月19日
専門領域:人工知能(AI) / 生成AI / ディープラーニング / 機械学習
我妻 幸長 Yukinaga Azuma
「ヒトとAIの共生」がミッションの会社、SAI-Lab株式会社の代表取締役。AIの教育/研究/アート。東北大学大学院理学研究科、物理学専攻修了。博士(理学)。法政大学デザイン工学部兼任講師。オンライン教育プラットフォームUdemyで、十数万人にAIを教える人気講師。複数の有名企業でAI技術を指導。「AGI福岡」「自由研究室 AIRS-Lab」を主宰。著書に、「はじめてのディープラーニング」「はじめてのディープラーニング2」(SBクリエイティブ)、「Pythonで動かして学ぶ!あたらしい数学の教科書」「あたらしい脳科学と人工知能の教科書」「Google Colaboratoryで学ぶ! あたらしい人工知能技術の教科書」「PyTorchで作る!深層学習モデル・AI アプリ開発入門」「BERT実践入門」「生成AIプロンプトエンジニアリング入門」(翔泳社)。共著に「No.1スクール講師陣による 世界一受けたいiPhoneアプリ開発の授業」(技術評論社)。
…続きを読むMNISTとは?
MNIST(Mixed National Institute of Standards and Technology database)とは、手書き数字画像60,000枚と、テスト画像10,000枚を集めた、画像データセットです。さらに、手書きの数字「0〜9」に正解ラベルが与えられるデータセットでもあり、画像分類問題で人気の高いデータセットです。
MNISTは深層学習(ディープラーニング)の手法の1つであるニューラルネットワークを学ぶ上でも便利ですし、機械学習の入門のデータセットとしてもよく使われています。
手軽に入手できる点も含めて、人工知能(AI)の勉強を始める入り口としてMNISTは人気の高いデータセットです。
コンピュータ・ビジョンとは?
MNIST解説する前に、覚えておいていただきたいのが「コンピュータ・ビジョン」です。
コンピュータ・ビジョンとは、科学技術分野のうちの1つで、コンピュータを用いた視覚( Vision)の実現を研究する学術分野です。
コンピュータ・ビジョンを活用して行える例として、画像分類や画像認識があります。畳み込みニューラルネットワークを使用すれば、これらの分類や認識を良好に機能させてくれます。
畳み込みニューラルネットワークは深い層を持った、ニューラルネットワークの種類のうちの1つですが、ニューラルネットワークについて詳しく知りたい人は「ニューラルネットワークとは?人工知能の基本を初心者向けに解説!」を見てみてください。
そして、コンピュータ・ビジョンを活用しているものの1つに、MNISTがあります。MINSTは、コンピュータ・ビジョンを使用し、手書きの数字が書かれている画像データから正解ラベルを導き出すことができます。
MNISTは教師あり学習のデータセットなので、学習データには正解ラベル、もしくはクラスが与えられています。(詳しくは次の章で解説します)
\文字より動画で学びたいあなたへ/
Udemyで講座を探す >MNISTのデータ仕様について
続いてMNISTのデータ仕様についてわかりやすく解説します。
MNISTのデータセットは、手書きで書かれた数字が画像になった画像データと、その画像に書かれた数字の正解となるラベルデータで構成されています。そして、画像データとラベルデータのペアは学習用に60,000個、検証用に10,000個あります。
そして、MNISTのデータは以下の4つのファイルで構成されています。
・train-images-idx3-ubyte: 学習用の画像データセット
・train-labels-idx1-ubyte: 学習用のラベルデータセット
・t10k-images-idx3-ubyte:検証用の画像データセット
・t10k-labels-idx1-ubyte:検証用のラベルデータセット
MNISTの画像データについて
まずは、MNISTのデータセットに含まれている、学習用の画像データセット(train-images-idx3-ubyte)と、検証用の画像データセット(t10k-images-idx3-ubyte)のフォーマットについて解説します。
画像データセットのフォーマットは以下になります。
offset | type | value | description |
0000 | 32 bit integer | 0x00000803(2051) | 識別子(定数) |
0004 | 32 bit integer | 60000 | 画像データの数 |
0008 | 32 bit integer | 28 | 1画像あたりのデータ行数 |
0012 | 32 bit integer | 28 | 1画像あたりのデータ列数 |
0016 | unsigned byte | 0〜255 | 1つ目の画像の1ピクセル目の値 |
0017 | unsigned byte | 0〜255 | 1つ目の画像の2ピクセル目の値 |
xxxx | unsigned byte | 0〜255 | 最後の画像の784ピクセル目の値 |
画素数であるピクセルの値は、0から255まであり、0が白、255が黒を表しています。
ラベルデータについて
つづいて、MNISTの学習用のラベルデータ(train-labels-idx1-ubyte)と、検証用のラベルデータ(t10k-labels-idx1-ubyte)について解説します。
ラベルデータのフォーマットは以下になります。
offset | type | value | description |
0000 | 32 bit integer | 0x00000801(2049) | 識別子(定数) |
0004 | 32 bit integer | 60000 or 10000 | ラベルデータの数 |
0008 | unsigned byte | 0〜9 | 1つ目のデータのラベル |
0009 | unsigned byte | 0〜9 | 2つ目のデータのラベル |
xxxx | unsigned byte | 0〜9 | 最後のデータのラベル |
ラベルは画像がどの数字を表しているのかを示す、0から9までの数値です。
【簡単】MNISTのダウンロード方法!
最後に、MNISTのダウンロード方法、そして「Tensorflow」「Keras」「Chainer(※1)」のライブラリ別でのデータ利用方法について解説します。
MNISTはこちらのサイトからダウンロードできます。サイトに書かれている以下の項目をダウンロードしてください。
train-images-idx3-ubyte.gz: training set images (9912422 bytes)
train-labels-idx1-ubyte.gz: training set labels (28881 bytes)
t10k-images-idx3-ubyte.gz: test set images (1648877 bytes)
t10k-labels-idx1-ubyte.gz: test set labels (4542 bytes)
■Tensorflow(テンソルフロー)の場合
Googleが提供するオープンソフトライブラリである「Tensorflow」には、MNISTデータを使用したチュートリアルがあります。「Tensorflow」をインストールした後、以下のinput_dateを使用することで取得できます。
from tensorflow.examples.tutorials.mnist import input_data mnist = input_data.read_data_sets(“/tmp/mnist_data/”, one_hot=True)
■Keras の場合
Pythonで書かれたオープンソースニューラルネットワークライブラリである「Keras」でも、MNISTデータセットが提供されています。以下のコードを書けばKerasでもMNISTデータセットを取得できます。
from keras.datasets import mnist (x_train, y_train), (x_test, y_test) = mnist.load_data()
■Chainer の場合(※1)
さらに、ニューラルネットワークの計算、そして学習をするオープンソースソフトウェアライブラリである「Chainer」でもMNISTデータセットを取得することができます。以下のコードでMNISTデータセットを取得することができます。
import chainer train, test = chainer.datasets.get_mnist()
(※1)2019年Preferred Networks(PFN)は2019年12月、同社が開発する深層学習フレームワーク「Chainer」のメジャーアップデートを終了すると発表。今後は、米Facebookが主導する深層学習フレームワーク「PyTorch」へ順次移行する。
人工知能(AI)や機械学習のサンプルデータとして頻繁に利用されるのが、MNISTのデータセットです。MNISTの学習を入り口にして、人工知能(AI)を学び始めてみてはいかがでしょうか?
AIによる画像分類を学ぼう!【PyTorch+Colab】-CNNの基礎からTransformerの応用まで-
人工知能(AI)を使った画像分類について学ぶコースです。CNNの基礎、CNNベースの有名モデル、Vision Transformer(ViT)などについて学び、Google Colaboratory環境でPythonを使い実装しましょう。
\無料でプレビューをチェック!/
講座を見てみる評価:★★★★★
訓練済みのモデルを一部使って、画像分類を行う方法を学べました。また、世界的に有名なモデルを沢山知れたのでこれから活用していきたいと思いました。ありがとうございました。
評価:★★★★★
今まで漠然(私は)としていた画像認識AIの過去から現在の手法がわかりました。それぞれの時間や正確性も明確で参考になりました。これを使ってやってみたい事がたくさん浮かんできました。60歳を超えていますが何かワクワクします。ありがとうございました。
最新情報・キャンペーン情報発信中