TensorFlow Lite モデルを使った画像認識
以前、ナキウサギなどの画像認識をOpenCVを使って行いました。
記事の投降後も、いろいろ分類な分類器(以降、モデル)を作成して試してきたのですが、期待する画像認識は行えませんでした。そのため、しばらく保留にしておいたのですが、TensorFlow Liteのモデルが比較的簡単に作成できることが分かったので、やってみました。
1.TensorFlow Lite モデルの作成方法
TensorFlow Lite モデルの作成方法を紹介しているサイト様がいらっしゃいます。
上記サイト様のやり方で進めれば、TensorFlow Lite モデルができます。注意点としては、画像認識に使う画像は数多く必要なので、水増し処理で画像を作成した方が良いです。少ないとエラーで終了します。
※TensorFlow Lite Model Maker は Google Colab の環境で動作するのですが、Google Colab無料版ではディスク容量不足が出るようになりました。今は有料版でないと、TensorFlow Lite Model Makerが使えないようです。ローカルで動作できるようにやってみてるのですが、今のところ、うまくいっていません。
以降、追記予定
2.TensorFlow Lite モデルの動作確認方法
TensorFlow Lite モデルの動作確認には、Googleの機械学習ライブラリ「ML-Kit」を使ったアプリケーションを作成します。
今回は、ML-Kitを使った画像認識アプリケーションについての解説は行いません。次回の投稿で、お手軽な確認方法をご紹介します。
3.画像認識結果
今回もナキウサギの画像を使います。実際に用意した画像は、以下の通りです(水増し分は除く)。
- ナキウサギ画像 20枚
- 「止まれ」標識 3枚
- ランダムに用意した画像 46枚
最初、ナキウサギの画像だけでモデルを作ったのですが、それでは検出したオブジェクトがすべてナキウサギになってしまいます。そこで、それ以外の画像も用意することで認識ができるようになりました。
以降、画像認識のテスト結果です。
ナキウサギが認識されています!このナキウサギ画像は、モデルを作る時に用意した画像ではありません。モデル作成に用意した画像は少ないですが、思った以上に認識してくれてます。
ただし、ナキウサギ画像はディスプレイ上で表示されたものです。実際のフィールドでうまく認識できるかは分かりません。それは次の「止まれ標識」の結果を考えた上のことです。
「止まれ標識」も認識しています。しかし、この止まれ画像は、ディスプレイ上で表示したものです。
実際に街中にある標識で試してみると、ある程度の大きさで止まれ標識がスマートフォン画面に表示されなければ認識できませんし、かつ適正な露出で表示されないと、止まれ標識として認識できませんでした。
今は街中に雪が多く残っているので露出オーバーになり、止まれ標識としてなかなか認識されませんでした。結果を考えると、車に搭載して交通標識を認識させるには、調整が大変そうです。
関係のない石油ファンヒーターを認識させると、それ以外の属性になりました。この石油ファンヒーターの画像も、モデル作成には使っていません。
このような、画像認識結果となりました。予想よりは良い結果になりましたが、実用を考えるとまだまだ調整が必要となりそうです。
4.精度の高いモデルを作りたい!
ナキウサギの画像認識に一歩近づきました。最終的な目標は、ナキウサギを検出した後、自動で写真を撮るですが、モデルにはTensor Flow Lite モデルを使うことにします。
今回のモデルは画像数が圧倒的に少ないため、多くの画像を集めて精度の高いモデルを作成したいと思います。
⇒ナキウサギの画像を55枚まで増やしたところ、確実に認識率が上がりました。やはり、いろいろなケースの画像を揃えるべきだと思います。