【Android Studio】自作のディープラーニングモデルを組み込んで物体認識をする一番簡単な方法

android studio

カメラを起動して動的に物体認識を行うアプリの作り方です。TensorFlow Liteのimage classificationを使うと初心者でも簡単に実装できるのでおすすめです。

作りたいもの

カメラを起動して、カメラに映った花の判別を動的に行います。組み込むディープラーニングのモデルを変更することで、いろいろな識別アプリに応用できます。

TensorFlow Lite Image Classificationとは

カメラに映ったものを判別するデモアプリです。TensorFlowを使ったディープラーニングモデルを組み込んでおり、約1000種類の物体を識別できるようです。詳しくはこちら

TensorFlow LiteのClone

以下のコマンド打ち込んで、TensorFlow Liteのソースコードを保存してください。

Android Studioを起動します。Open an existing Android Studio projectから、先ほど保存したファイルを開きます。TensorflowLite > examples > lite > examples > image_classification > androidを選択してください。

まずはデモアプリをエミュレータ上で起動して、きちんと動作することを確認します。

自作のモデルの組み込み

次に、自作のモデルを既存のモデルと交換します。今回はmodel.tfliteという事前に作成しておいた花の分類をするモデルを組み込みます。tfliteファイルの作り方はこちらの記事を参考にしてください。assetsフォルダに以下の二つのファイルを入れました。

labels2.txtは分類ラベルを記載したファイルです。

分類ラベルを縦に並べて書いておきます。

コードの変更

既存のモデルはmobilenet_v1_1.0_224.tfliteです。これを新しくassetに入れたmodel.tfliteと置き換えます。変更する場所は3か所です。

ClassifierFloatMobileNet.java

ClassifierFloatMobileNet.javaの以下の部分をmobilenet_v1_1.0_224.tflite→model.tfliteに変更します。 その下の、label.txt→label2.txtの変更もします。

補足

デフォルトでは学習させる画像サイズが224×224になっています。もし、画像サイズが異なる場合は、以下のコードを任意の画像サイズのものに変えると良いと思います。

ClassifierQuantizedMobileNet.java

ClassifierQuantizedMobileNet.javaの以下の部分をlabel.txt→label2.txtに変更します。

Classifire.java

デフォルトではClassifierQuantizedMobileNet.javaが指定されている部分をClassifierFloatMobileNet.javaに変更します。以下のように修正してください。

タイトルとURLをコピーしました