データセット「CIFAR-10」について説明。6万枚の物体カラー写真(乗り物や動物など)の「画像+ラベル」データが無料でダウンロードでき、画像認識などのディープラーニングに利用できる。scikit-learn、Keras/tf.keras、TensorFlow、PyTorchにおける利用コードも紹介。
CIFAR-10データセット(Canadian Institute For Advanced Research)(以下、CIFAR-10)は、
という10種類の「物体カラー写真」(乗り物や動物など)の画像データセットである(図1、Alex Krizhevsky氏/Vinod Nair氏/Geoffrey Hinton氏によって、オブジェクト認識用画像データセット「80 Million Tiny Images」から収集されて作成されたサブセットである)。
CIFAR-10は、主に画像認識を目的としたディープラーニング/機械学習の研究や初心者向けチュートリアルで使われている。CIFAR-10は上記の通り10クラス(種類)となっており手軽に扱えるが、より複雑な内容として100クラス版であるCIFAR-100も提供されている。
CIFAR-10データセット全体は、
で構成される(※「ラベル」=正解を示す教師データ)。また、図2にも示すように、各画像のフォーマットは、
となっている(※「ピクセル」=画素のこと。RGB形式であるため、簡単に画像化できる)。
このデータセットは、基本的に自由に使用できる(※ライセンスは指定されていない。CC(Creative Commons)でいう「パブリック・ドメイン・マーク 1.0」相当と考えられる。データの取得元を明記する場合は、以下を参考にしてほしい)。
データセットを引用する際に使える情報を以下にまとめておく。
実際にCIFAR-10を使うには、scikit-learn/Keras/TensorFlow/PyTorchといった各ライブラリが提供する機能を利用することをお勧めする。ムダな作業を省いて、効率的に使えるため。
以下に、それぞれのライブラリで「どのようなコードを書くとCIFAR-10が使えるか」の典型的なコードを簡単に示しておく(※コードの詳細は解説しない)。基本的に各ライブラリは、CIFAR-10データセットを自動的にダウンロードして使いやすい形にロードしてくれる機能を提供している。
# !pip install scikit-learn # ライブラリ「scikit-learn」をインストール
from sklearn.datasets import fetch_openml
cifar10 = fetch_openml('CIFAR_10')
sklearn.datasets.fetch_openml()関数(※EXPERIMENTAL、つまり実験段階のAPI)を呼び出せばよい。この関数は、OpenML.orgからデータセットをフェッチ(=取得)するためのもので、リスト1では「OpenML CIFAR_10」をフェッチしている。
# !pip install tensorflow # ライブラリ「TensorFlow」をインストール
# !pip install keras # tf.kerasの場合は不要だが、Kerasを使う場合はライブラリ「Keras」をインストール
from tensorflow.keras.datasets import cifar10 # tf.kerasを使う場合(通常)
#from keras.datasets import cifar10 # tf.kerasではなく、Kerasを使う必要がある場合はこちらを有効にする
(train_images, train_labels), (test_images, test_labels) = cifar10.load_data()
tf.keras.datasets.cifar10.load_data()関数を呼び出せばよい。
# !pip install tensorflow tensorflow-datasets # ライブラリ「TensorFlow」と「TensorFlow Datasets」をインストール
import tensorflow_datasets as tfds
cifar10_train = tfds.load(name="cifar10", split="train")
TensorFlow Datasetsで使用できるデータセットは、こちらのページにまとめられており、tensorflow_datasetsモジュール(=tfds)のtfds.load()関数から利用できる。
# !pip install torch torchvision # ライブラリ「PyTorch」をインストール
import torch
import torchvision
cifar10_data = torchvision.datasets. CIFAR10(
'./cifar-10', train=True, download=True,
transform=torchvision.transforms.ToTensor())
data_loader = torch.utils.data.DataLoader(cifar10_data, batch_size=4, shuffle=True)
torchvision.datasetsクラスのコンストラクター(厳密には__init__関数)でデータセットのオブジェクトを生成してデータをダウンロードし、torch.utils.data.DataLoaderクラスのコンストラクターでデータローダーのオブジェクトを生成してデータをロードする。
上記のようなライブラリを使わずに手動でCIFAR-10データセットを利用する場合は、CIFAR-10の公式ページ上にある、
という3つのファイルから、目的に合致するものをダウンロードすればよい。各ファイルの仕様やデータのロード方法については、公式ページを確認してほしい。
Copyright© Digital Advantage Corp. All Rights Reserved.