[TensorFlow] うちの犬の犬種を判定するプログラムの実装 ( 学習済みモデル使用 )

[TensorFlow] うちの犬の犬種を判定するプログラムの実装 ( 学習済みモデル使用 )

本記事では、TensorFlow の keras ライブラリに用意されている VGG16 という学習済みモデルを使用して、うちの犬の犬種を判別するプログラムの実装を行ってみたいと思います。

VGG16とは?

VGG16 とは、画像認識モデルの性能を競う大規模なコンペであるILSVRC(ImageNet Large Scale Visual Recognition Challenge)における2014年大会において、高成績を納めたモデルです。

このモデルはTensorFlow内のkerasというライブラリに用意されており、誰でも簡単に利用することができます。

このように既に用意されたモデルのことを「学習済みモデル」と呼びますが、これを使用することのメリットは何と言っても、学習プロセスを実装する必要がないということです。

このモデルの場合であれば ImageNet という大規模な画像データセットを使用して学習を行っているため、改めて画像を用意して学習を行わせるというステップを省略出来るわけです。
以前自作関数でモデルを作成しましたが、その時に最も時間がかかったのがこの学習の過程でした。それをスキップ出来るというのは、機械学習を実装する上でとても大きなメリットとなります。

デメリットとしては用意されていない画像についての判定を行えないということですが、それについてはまた次回以降の記事で考察していきたいと思います。

実装

では早速実装を行っていきたいと思います。
今回のプログラムの流れは次のようになります。

  1. VGG16モデルの呼び出し
  2. 判定したい画像の用意
  3. 画像をモデルに読み込ませるために加工
  4. モデルに画像を渡して判定を実行
  5. モデルの算出結果をデコードして表示

前述のように、モデルについての実装はVGG16に全て任せるのでコードは驚くほど少量で実装することができます。
では、早速実装していきたいと思います。

モデルの呼び出し

VGG16モデルのロードです。モデルは大きいため、少し時間がかかります。

 

画像データに対する前準備、予測

残りの実装は一息にやってしまいます。画像の準備から、結果予測までです。

 

算出結果の出力

では、モデルに渡した画像と、それに対してモデルが算出した予測結果をみてみましょう。
ちなみに使用している犬の画像は、ちょっと毛がもさもさしてしまっているうちの犬です。

予測結果は、上位5種までが出力されます。

結果まとめ

各画像に対する判定結果をみてみると、どれに対しても 85% ~ 99% の確率でマルチーズだと判定できていることがわかります。

このように、マルチーズについての画像判定を行いたいとき、VGG16のように既にマルチーズに対する学習を終えているモデルを使用することで、とても簡単に画像認識のプログラムを実装出来ることがわかりました。

最後に

予測結果は常に一位がマルチーズでしたが、2位には Lhasa という犬種が多くランクインしています。
Lhasa とは何でしょう?調べてみました。

…ごめんね…こんなにもっさりの犬と見間違いさせてしまって…。
来週トリミング行こうね….。

 

 

以上。

MachineLearningカテゴリの最新記事