前提・実現したいこと
kerasを用いてVGG16の学習済みモデルをfine-tuningし、3classを識別するモデルを作成しました。
作成したモデルを、Tensorflowのandroid用demo appであるTF classiferに導入しようと考えています。
model自体は「model.h5」形式で出力しています。
(https://qiita.com/icchi_h/items/c37b52a3eb926d63f917 こちらの記事を参考にしました)
下記プログラムを用いて、「model.h5」→「model.h5.pb」形式には変換しました。
https://github.com/amir-abdi/keras_to_tensorflow
また、TF classiferに関しては、オリジナルのものではなく、機能をclassiferに絞った
https://github.com/Nilhcem/tensorflow-classifier-android/tree/1.4.0
こちらを使用しています。
上記記事を参考に、android studioにてモデルおよびクラスの入れ替えを行ったのですが、android実機にて自作モデルが全く機能しません。
もともとのデモアプリはandroidにてちゃんと作動していますが、
モデルを入れ替えると、classや確率が一切表示されなくなってしまいます。
おそらくprivate static final~の設定がまずいのかと思いますが、どう変更すればいいかがわからず途方に暮れています。
使っているVGG16モデルの構造は、上記quita記事と全く同じですが、画像の入力サイズはkerasのデフォルトの224にしています。
色々調べてみたのですが、自分のモデルでIMAGE_MEAN、IMAGE_STD、INPUT_NAME、OUTPUT_NAMEをどのように確認したらいいのかがわかりませんでした。
なんせkerasもpythonもandroid studioも使い始めの初心者のため、御助力いただけると助かります。
該当のソースコード
ClassifierActivity.java
java
1 2 private static final int INPUT_SIZE = 224; 3 private static final int IMAGE_MEAN = 127; 4 private static final float IMAGE_STD = 1; 5 private static final String INPUT_NAME = "input"; 6 private static final String OUTPUT_NAME = "output"; 7 8 9 private static final String MODEL_FILE = "file:///android_asset/tensorflow_inception_graph.pb"; 10 private static final String LABEL_FILE = 11 "file:///android_asset/imagenet_comp_graph_label_strings.txt";
###利用している環境
wndows10
python3.6
keras2.1.2
tensorflowGPU1.8
android studio 3.2
あなたの回答
tips
プレビュー