データセット「Fashion-MNIST」について説明。7万枚の写真(ファッション商品)の「画像+ラベル」データが無料でダウンロードでき、画像認識などのディープラーニングに利用できる。scikit-learn、Keras/tf.keras、TensorFlow、PyTorchにおける利用コードも紹介。
Fashion-MNISTデータセット(以下、Fashion-MNIST)は、
という10種類の「ファッション商品」写真の画像データセットである(図1)。
Fashion-MNISTは、主に画像認識を目的としたディープラーニング/機械学習の研究や初心者向けチュートリアルで使われること、つまりMNISTの「ファッション商品画像版」(いわば強化版)として使われることを意識している。そのため例えば、MNISTは「0」〜「9」という10種類の手書き数字データセットとなっているが、Fashion-MNISTも前述した通り、10種類の写真データセットとなっているのである。MNISTには「高い精度が出すぎてしまう」という欠点があるが、本稿で紹介するFashion-MNISTに置き換えることでその欠点を回避できる可能性がある。
Fashion-MNISTデータセット全体は(MNISTと同じく)、
で構成される(※「ラベル」=正解を示す教師データ)。また、図2にも示すように、各画像のフォーマットは(MNISTと同じく)、
となっている(※「フィールド」=データを画像化する場合には「ピクセル」に対応する。RGBで作るグレースケールでは、0が黒で、255が白となり逆なので注意してほしい)。
このデータセットは、MITライセンスとなっている。
データセットを引用する際に使える情報を以下にまとめておく。
実際にFashion-MNISTを使うには、scikit-learn/Keras/TensorFlow/PyTorchといった各ライブラリが提供する機能を利用することをお勧めする。というのも、Fashion-MNISTの公式ページからダウンロード可能な、
という4つのファイルは、.jpgのような一般的な画像ファイルではなく、独自のフォーマットを持つ単一(=複数の画像データがひとまとめになった形式)の画像データセットだからである(※ファイルフォーマットの仕様は、MNIST公式ページの「FILE FORMATS FOR THE MNIST DATABASE」および「THE IDX FILE FORMAT」を確認してほしい)。
ライブラリを使わない場合、この画像フォーマットを読み込むためのリーダーをプログラムとして作る必要がある。プログラムの作成は難しくはないが、多くの人が使うものなので、主要な機械学習&ディープラーニングのライブラリでは基本機能としてFashion-MNISTをロードする機能が含まれている。よってそのロード機能を活用して、ムダな作業を減らすことを本稿ではお勧めする。
それぞれのライブラリで「どのようなコードを書くとFashion-MNISTが使えるか」の典型的なコードを簡単に示しておく(※コードの詳細は解説しない)。基本的に各ライブラリは、Fashion-MNISTデータセットを自動的にダウンロードして使いやすい形にロードしてくれる機能を提供している。
# ! pip install scikit-learn # ライブラリ「scikit-learn」をインストール
from sklearn.datasets import fetch_openml
fashion_mnist = fetch_openml('Fashion-MNIST')
sklearn.datasets.fetch_openml()関数(※EXPERIMENTAL、つまり実験段階のAPI)を呼び出せばよい。この関数は、OpenML.orgからデータセットをフェッチ(=取得)するためのもので、リスト1では「OpenML Fashion-MNIST」をフェッチしている。
# !pip install tensorflow # ライブラリ「TensorFlow」をインストール
# !pip install keras # tf.kerasの場合は不要だが、Kerasを使う場合はライブラリ「Keras」をインストール
from tensorflow.keras.datasets import fashion_mnist # tf.kerasを使う場合(通常)
#from keras.datasets import fashion_mnist # tf.kerasではなく、Kerasを使う必要がある場合はこちらを有効にする
(train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data()
tf.keras.datasets.fashion_mnist.load_data()関数を呼び出せばよい。
# !pip install tensorflow tensorflow-datasets # ライブラリ「TensorFlow」と「TensorFlow Datasets」をインストール
import tensorflow_datasets as tfds
fashion_mnist_train = tfds.load(name="fashion_mnist", split="train")
TensorFlow Datasetsで使用できるデータセットは、こちらのページにまとめられており、tensorflow_datasetsモジュール(=tfds)のtfds.load()関数から利用できる。
# !pip install torch torchvision # ライブラリ「PyTorch」をインストール
import torch
import torchvision
fashion_mnist_data = torchvision.datasets.FashionMNIST(
'./fashion-mnist', train=True, download=True,
transform=torchvision.transforms.ToTensor())
data_loader = torch.utils.data.DataLoader(fashion_mnist_data, batch_size=4, shuffle=True)
torchvision.datasetsクラスのコンストラクター(厳密には__init__関数)でデータセットのオブジェクトを生成してデータをダウンロードし、torch.utils.data.DataLoaderクラスのコンストラクターでデータローダーのオブジェクトを生成してデータをロードする。
Copyright© Digital Advantage Corp. All Rights Reserved.