CIFAR-10 データセット(Python を使用)
CIFAR-10 データセットを紹介する. 利用条件は利用者で確認すること.
【目次】
* CIFAR-10 データセット
CIFAR-10 データセット(Canadian Institute for Advanced Research, 10 classes)は,公開されているデータセット(オープンデータ)である.
CIFAR-10 データセット(Canadian Institute for Advanced Research, 10 classes) は,クラス数 10 の カラー画像と,各画像に付いたのラベルから構成されるデータセットである. 機械学習での画像分類の学習や検証に利用できる.
- 画像の枚数:合計 60000枚.
(内訳)60000枚の内訳は次の通りである
50000枚:教師データ
10000枚:検証データ
- 画像のサイズ: 32x32 である.カラー画像.
- クラス数: 10 (飛行機,自動車,鳥,猫,鹿,犬,カエル,馬,船,トラック)(airplane, automobile, bird, cat, deer, dog, frog, horse, ship, truck).各画像に1つのラベル付けが行われている.
- 0: airplane(飛行機)
- 1: automobile(自動車)
- 2: bird(鳥)
- 3: cat(猫)
- 4: deer(鹿)
- 5: dog(犬)
- 6: frog(カエル)
- 7: horse(馬)
- 8: ship(船)
- 9: truck(トラック)
【文献】
Alex Krizhevsky, Vinod Nair, and Geoffrey Hinton. 'Learning multiple layers of features from tiny images', Alex Krizhevsky, 2009.
【サイト内の関連ページ】
- MNIST データセットを扱う Python プログラム: 別ページ で説明している.
- CIFAR-10 データセットによる学習と分類(TensorFlow データセット,TensorFlow,Python を使用)(Windows 上,Google Colaboratroy の両方を記載)
- CIFAR 10 の画像分類を行う畳み込みニューラルネットワーク (CNN) の学習,転移学習
【関連する外部ページ】
- CIFAR-10 データセットの URL: https://www.cs.toronto.edu/~kriz/cifar.html
- Papers With Code の CIFAR-10 データセットのページ: https://paperswithcode.com/dataset/cifar-10
- PyTorch の CIFAR-10: https://pytorch.org/vision/stable/datasets.html#cifar
- TensorFlow データセットの CIFAR-10 データセット: https://www.tensorflow.org/datasets/catalog/cifar10
1. 前準備
Python の準備(Windows,Ubuntu 上)
- Windows での Python 3.10,関連パッケージ,Python 開発環境のインストール(winget を使用しないインストール): 別ページ »で説明
- Ubuntu では,システム Pythonを使うことができる.Python3 開発用ファイル,pip, setuptools のインストール: 別ページ »で説明
【サイト内の関連ページ】
- Python のまとめ: 別ページ »にまとめ
- Google Colaboratory の使い方など: 別ページ »で説明
【関連する外部ページ】 Python の公式ページ: https://www.python.org/
TensorFlow, TensorFlow データセット, Keras, numpy, matplotlib のインストール
Windows の場合
Windows では,コマンドプロンプトを管理者として実行し, 次のコマンドを実行する.
python -m pip install -U tensorflow-gpu tensorflow_datasets keras numpy matplotlib
Windows での TensorFlow のインストールの詳細: 別ページ »で説明
(このページで,Build Tools for Visual Studio 2022,NVIDIA ドライバ, NVIDIA CUDA ツールキット, NVIDIA cuDNNのインストールも説明している.)
Ubuntu の場合
Ubuntu では,次のコマンドを実行.
sudo apt -y update sudo apt -y install python3-numpy python3-matplotlib sudo pip3 install -U tensorflow-gpu tensorflow_datasets keras
Ubuntu での TensorFlow のインストールの詳細: 別ページ »で説明
(このページで,NVIDIA ドライバ, NVIDIA CUDA ツールキット, NVIDIA cuDNNのインストールも説明している.)
2. CIFAR-10 データセットのロード
【Python の利用】
Python は,次のコマンドで起動できる.
Python 開発環境(Jupyter Qt Console, Jupyter ノートブック (Jupyter Notebook), Jupyter Lab, Nteract, Spyder, PyCharm, PyScripterなど)も便利である.
Python のまとめ: 別ページ »にまとめ
- Windows で,コマンドプロンプトを実行.
- jupyter qtconsole の起動
これ以降の操作は,jupyter qtconsole で行う.
jupyter qtconsole
Python 開発環境として,Jupyter Qt Console, Jupyter ノートブック (Jupyter Notebook), Jupyter Lab, Nteract, spyder のインストール
Windows で,コマンドプロンプトを管理者として実行し,次のコマンドを実行する.
次のコマンドを実行することにより,pipとsetuptoolsを更新する,Jupyter Notebook,PyQt5、Spyderなどの主要なPython環境がインストールされる.
python -m pip install -U pip setuptools requests notebook==6.5.7 jupyterlab jupyter jupyter-console jupytext PyQt5 nteract_on_jupyter spyder
- パッケージのインポート,TensorFlow のバージョン確認など
import tensorflow as tf import numpy as np import tensorflow_datasets as tfds %matplotlib inline import matplotlib.pyplot as plt import warnings warnings.filterwarnings('ignore') # Suppress Matplotlib warnings
- TensorFlow データセット から CIFAR-10 データセット をロード
- x_train: サイズ 32 × 32 の50000枚のカラー画像
- y_train: 50000枚のカラー画像それぞれの,種類番号(0 から 9 のどれか)
- x_test: サイズ 32 × 32 の 10000枚のカラー画像
- y_test: 10000枚のカラー画像それぞれの,種類番号(0 から 9 のどれか)
結果は,TensorFlow の Tensor である.
type は型,shape はサイズ,np.max と np.mi は最大値と最小値.
tensorflow_datasets の loadで, 「batch_size = -1」を指定して,一括読み込みを行っている.
cifar10, cifar10_metadata = tfds.load('cifar10', with_info = True, shuffle_files=True, as_supervised=True, batch_size = -1) x_train, y_train, x_test, y_test = cifar10['train'][0], cifar10['train'][1], cifar10['test'][0], cifar10['test'][1] print(cifar10_metadata)
3. CIFAR-10 データセットの確認
- データセットの中の画像を表示
MatplotLib を用いて,0 番目の画像を表示する
NUM = 0 plt.figure() plt.imshow(x_train[NUM,:,:,0], cmap='gray') plt.colorbar() plt.gca().grid(False) plt.show()
- データセットの情報を表示
print(cifar10_metadata) print(cifar10_metadata.features["label"].num_classes) print(cifar10_metadata.features["label"].names)
- データの確認表示
MatplotLib を用いて,複数の画像を並べて表示する.
class_names = ['airplane', 'automobile', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck'] plt.style.use('default') plt.figure(figsize=(10,10)) for i in range(25): plt.subplot(5,5,i+1) plt.xticks([]) plt.yticks([]) plt.grid(False) plt.imshow(x_train[i], cmap=plt.cm.binary) plt.xlabel(class_names[y_train[i]]) plt.show()
- train, test を得る
train = cifar10['train'] test = cifar10['test'] print(train) print(test)