スポンサーリンク

【Python】クラスごとの画像一覧を表示するIPyPlot

Machine Learning

はじめに

画像分類を行う際に、どのような特徴量や機械学習の手法を用いるかアイディアを膨らませるために、目視で画像を確認することがあります。Pythonのを利用する場合は、matplotlibライブラリで表示させるのが一般的です。しかし、インタラクティブなNotebookインターフェースの場合、膨大な数の画像をを表示させようとすると、実行⇄表示を繰り返す必要がり、非常にストレスが溜まります。そこで、この記事では、IPyPlotを活用した、誰でも簡単かつNotebookインターフェースでの快適な画像表示について紹介します。

IPyPlotを利用したコードの紹介

実行環境:Google Colaboratoory  2022/1/3

GitHubのREADME.mdを参考にコードを記載していきます。まず、Google ColabにIPyPlotをインストールします。

!pip install ipyplot

次に、IPyPlotをインポートします。また、この記事では例としてCIFAR10の画像を用いますので、kerasのデータセットをインポートします。

import ipyplot
from keras.datasets import cifar10

サンプルで利用するCIFAR10データセットは、60,000枚の32×32ピクセルのカラーの画像データで、1クラス6,000枚のデータで構成されています。また、それを分類する10個のラベル「飛行機、自動車、鳥、猫、鹿、犬、蛙、馬、船、トラック」で構成されています。CIFAR10をダウンロードするために、以下コードを実行します。

(x_train, y_train), (x_test, y_test) = cifar10.load_data()

x_trainには、5,000枚の画像が、y_trainには、5,000のラベルが保存されています。これらを、IPyPlotライブラリを活用して、ラベルごとに画像を表示させます。ipyplot.plot_class_tabsに、画像データとラベルを渡すだけなので、非常に簡単です。max_imgs_per_tabは、クラスごとの最大画像表示数になります。こちらのデフォルト値は30のため、適宜修正が必要です。さすがに、全ての画像を表示すると時間がかかるため、ここでは100を設定します。

ipyplot.plot_class_tabs(x_train, y_train.flatten(), max_imgs_per_tab=100)

全体コード

前章の全コードです。こちらをGoogle Colabにコピペすれば、動作しますので活用ください。

!pip install ipyplot

import ipyplot
from keras.datasets import cifar10

(x_train, y_train), (x_test, y_test) = cifar10.load_data()

ipyplot.plot_class_tabs(x_train, y_train.flatten(), max_imgs_per_tab=100)

参考資料

・IPyPlot
https://github.com/karolzak/ipyplot

・The CIFAR-10 dataset
https://www.cs.toronto.edu/~kriz/cifar.html

・Keras データセット CIFAR10画像分類
https://keras.io/ja/datasets/

コメント