AIプログラミング

KerasのCNNを使用してオリジナル画像で画像認識を行ってみる

投稿日:

KerasのCNNを使用してオリジナル画像で画像認識を行ってみる

今まではMNISTやscikit-learn等の予め用意されていたデータを使用して画像認識などを行っていました。今回からいよいよオリジナルの画像でCNNの画像認識を行っていきます。画像認識はKerasのCNNを使用して行っていきます。

用意した画像は4種類。
・猫            ・・・・185枚
・ライオン ・・・・151枚
・犬         ・・・・180枚
・女性        ・・・・223枚
・合計        ・・・・739枚

枚数が違うのは当初250枚を用意していましたが、明らかに異なる画像が混入していために、不要なデータを除去しているうちに差分が出てしまいました。

8割を訓練用データに用いて、残り2割をテスト用データに使用しています。

訓練用データ・・・591枚
テスト用データ・・・148枚

必要なライブラリを取り込んでいます。

猫(cat)、ライオン(lion)、犬(dog)、女性(woman)のディレクトリを事前に作成しておき、その中に画像を格納しています。

画像は50×50ピクセルのRGB形式に変換され、それぞれnumpy形式に変換しています。

Xは画像データ、Yは正解ラベルのデータになります。

#画像データを0から1の範囲に変換

画像データを0から1の範囲に変換しています。RGB形式のため(0,0,0)~(255,255,255)の範囲となるため、255で割ることで0~1の範囲となります。

Kerasの場合は正解ラベルは数値ではなく、0or1を要素に持つベクトルで扱う必要があるため、正解ラベルの形式を変換します。例:猫[1,0,0,0]、ライオン[0,1,0,0]

学習用データとテストデータに分割をしています。8割を訓練用データに用いて、残り2割をテスト用データに使用しています。

CNNのモデルを構築しています。Kerasは視覚的に層階層が見やすいです。結果を踏まえ調整をしていきます。

バッチサイズは省略しています。省略した場合はdefaultで32となっています。エポック数は200に設定しています。

実際にテストを実行し評価を行っています。

結果は71%でした。

訓練データでは98%をいっていましたが、結果が70%という非常に悪い成績になりました。

過学習しすぎたのか、モデルが悪かったのか、写真の精度が良くなかったのか、どこかしら問題があるようです。

今後はいろいろなケースを試してみて精度を上げていきたいと思います。

-AIプログラミング
-

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