Cifar10の画像を抽出する

AI

はじめに

AIの領域では画像を識別する技術が象徴的で、初学者向けのテーマになったり、アルゴリズムの優劣を競う競技で使われることがよくあります。その課題の題材としてよく用いられる画像のデータセットの一つにCifar10があります。このデータはプログラムで扱いやすいように、複数の画像を一つのバイナリに纏めた状態で提供されています。以前の記事でも示してきてはいますが、昨今AIを簡単に利用できるサービスやツールが提供されており、AI利用者は必ずしもプログラムを書ける必要はなくなってきています。画像だけ集められれば良いという人にとってはこのCifar10は使いにくいかもしれません。今回は、Cifar10を画像データに展開する方法を示します。プログラムを書かない方のために、スクリプトも提供しますのでご安心ください。

では、始めましょう。

前提

CIFAR-10データのダウンロード

Cifar10のサイトからイメージデータをダウンロードしてきておいてください。

バージョンがPython, Matlab, binaryの3種類ありますが、Pythonのものをダウンロードしましょう。

CIFAR-10とCIFAR-100がありますが、どちらも扱うことができます。

Cifar10のサイト

Pythonの準備

・Python3系を前提とします。
・ライブラリはnumpyとPILを用いますので、pipでインストールしておきましょう。

データの解説

ダウンロードしてきたファイルを展開すると画像データとラベルのデータが入っています。なぜかcifar-10とcifar-100は違うファイル構成になっています。それぞれ次の通りです。

■cifar-10

 

data_batch_<n> が画像データになります。

batches.metaがラベルデータになります。

■cifar-100

trainとtestが画像データです。metaがラベルデータです。

画像の展開

CIFAR-10, CIFAR-100のどちらも、画像データはPythonのオブジェクトがシリアライズされた状態になっている(cPickle)ので、直接ロードして扱うことが可能です。公式には次の処理で読めるよー。と書かれています。

 

では、これに従って画像を展開してみましょう。スクリプトは次の通り。100行未満なので、そのまま書いてしまいます。

 

このスクリプトを次のように実行すれば、指定のフォルダに画像が展開されます。

このとおり。

まとめ

今回は、CIFAR10の画像を展開する方法を纏めました。プログラムがあまり得意でない方もこれを用いて画像を抽出し、AIサービスに入力することができるようになりますので、試しにTensorflowやAutoMLを使ってみるとよいのではないでしょうか。

 

コメント