AIプログラミング

CIFAR-10のデータセットを用いてCNNの画像認識を行ってみる

更新日:

CIFAR-10のデータセットを用いてCNNの画像認識を行ってみる

Kerasを用いてCNNを使用して画像認識を行ってみます。使用するデータはCIFAR-10と呼ばれるもので、飛行機、鳥、犬などの10種類の分類を行うことができます。全体画像数は60000件となり、そのうち50000件が訓練用データ、残り10000件がテスト用データに分けられます。CIFAR-10はKerasのデータセットに用意されているので、簡単にインポートして実行することが出来ます。

使用するデータ

使用データ:CIFAR-10
訓練用データ:50000
テストデータ:10000
説明変数:画像データ
目的変数::10クラス問題(下記参照)

回帰/識別:識別(10クラス)
識別方法:CNN

CIFAR-10

ソースコード

ソースコードの詳細

CIFAR-10のデータセットのインポート

kerasで用意されているデータセットからCIFAR-10のデータをインポートしています。CIFAR-10は訓練用データが60000件、テスト用データが10000件と初めから分かれているため、それぞれをtrain用とtest用に格納します。

CIFAR-10の正規化

画像データを正規化しています。一般的に特徴量データは0~1の範囲となるとあつかいやすいと言われていることから、255で割り0~1の範囲にしています。画像データはRGB形式の255色で定義されているためです。

クラスラベルの1-hotベクトル化

今回は10クラス問題のため10を指定して1-hotベクトル化を行います。1-hotベクトルとは対応する要素を1にする方法となり、1の場合は [ 1,0,0,0,0,0,・・・],、2の場合は[ 0,1,0,0,0,0.・・・]というように変換されます。

CNNの構築

CNNのモデルを構築しています。

コンパイル

作成したモデルに対してのコンパイルを行っています。パラメータとしてSGD、categorical_crossentropyを指定しています。

訓練

エポック数を20に設定し訓練しています。バッチ数は省略している場合は32となります。

モデルの保存

CNNを使用した場合は使用するPCによっては非常に時間がかかるため訓練後のモデルを保存しています。モデルを保存しておくことで追加で訓練を行いたい場合はloadして使用することが出来ます。

評価 & 評価結果出力

実際のテストデータに対して訓練済みのモデルを適用してみます。結果は74%でした。精度があまり高くない理由としては訓練が不十分だったことが考えられます。訓練中の正解精度はまだ頂点に達しておらず、まだまだ伸びる余地があるので、エポック数を追加で何回か増やすことで更に精度は高まりそうです。

モデルの図示化

model

作成したモデルに対しての図示化を行っています。

 

-AIプログラミング
-, ,

Copyright© AI人工知能テクノロジー , 2019 All Rights Reserved.