畳み込みニューラルネットワークを使った画像検出モデルの作成方法

深層学習(ディープラーニング)で画像認識に挑戦

以前の記事でMNISTを使った数字画像認識の学習モデルを作成しました。

でも、やっぱり色々な画像を認識できる学習済モデルを作成したいと思い、画像認識モデルで有名なCIFAR-10を使った学習済モデルの作成に挑戦してみました。

で、その学習済みモデルを使って実際に画像認識ができるところまで作成してみたので、その内容を紹介します。

 

参考にした書籍

これからDeep Learningの勉強をするなら、こちらで紹介する書籍が参考になります。

 

開発環境

macOS Sierra

Anaconda3-4.2.0-MacOSX-x86_64

keras 1.2.2

tensorflow 0.12.1

 

CIFAR-10とは

今回使用する画像データセットCIFAR-10とは、10種類の画像それぞれ6000枚集めた計60000枚の画像データセットのことです。

そのうち訓練用画像が50000枚、テスト用画像が10000枚の構成になった画像データセットです。

 

どんな画像が入っているのかというと、

[“airplane”,”automobile”,”bird”,”cat”,”deer”,

“dog”,”frog”,”horse”,”ship”,”truck”]

です。

 

自分で画像を準備するとなると、ものすごい労力がかかりますが、手頃に画像データの学習を始めるならCIFAR-10がオススメです。

最近ではCIFAR-100とかいう画像データセットもあるようです。

詳細はこちらのサイトで確認してみてください。

 

学習モデルの作成

では早速作成に取り掛かりたいと思います。

深層学習(ディープラーニング)で有名な畳み込みニューラルネットワークの勉強も兼ねて実装しています。

今回は9層で試してみました。

正直、精度の高い学習モデルを作成するためには、どのくらいの層が必要で、過学習を防ぐためには「Dropout」にどんな値を設定すれば良いのか良く分かりません。

この辺については、そのうち色々な実験を繰り返して真面目に勉強していくとして、今回は適当に学習モデルを定義して実装することにします。

学習回数も適当です。

この辺りはお好みで修正してください。

取り敢えず以下のソースそのままでも動きます。

以下学習結果です。

78%の精度となりました。

かなり精度が悪いですね。

畳み込みニューラルネットワークの学習モデルをもう少し工夫するか、学習回数を大幅に増やすなどの対応が必要そうです。

ただ今回は学習済モデルの作成と、その学習済モデルで実際に画像を認識させてみるところが目的なので、学習結果は多少悪くても良しとします。

 

学習済モデルで画像認識に挑戦

学習済みモデルができたら、実際に画像を準備して認識させてみましょう。

今回準備した画像は以下の画像たちです。

適当にネットから拝借してきました。

 

blog_testpicというディレクトリを作成し、そこに認識させたい画像を保存して以下のソースを実行してみましょう。

結果にinputにした画像ファイル名と認識した画像の種類を出力しているようにしています。

以下、実行結果です。

概ね正解していますが、dogをdeerと間違えています。

学習精度が低いのでしょうがない感じですね。

 

ただ、実際に目的としていた画像を認識させてみるところまでは実装できたので、今後はどうやったら学習精度が上がるか模索していきたいと思います。

併せて、自分で集めた画像から学習モデルの作成にも挑戦していくので、成功したら紹介していきたいと思います。

 


その他の物体検出記事はこちらから

 

それではまた。

あなたにオススメの記事

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

PAGE TOP