2017-08-12 3 views
1

私はオブジェクト分類のためにtensorflowを使ってアンドロイドアプリケーションを作成しようとしています。私はMobileNet-SSDを使って簡単なモデルを訓練しました。 hereのguid行に従ってアプリケーションを作成しました。それはその例で使用したモデルでうまくいきました、しかし、私が作成したモデルで、それは私に次のエラーが発生しました:次のコードを実行しようとしたときAndroid用Tensorflow

Caused by: java.lang.RuntimeException: Node 'output' does not exist in model 'file:///android_asset/ssd_mobilenet_2classes.pb' 
    at org.tensorflow.contrib.android.TensorFlowInferenceInterface.graphOperation(TensorFlowInferenceInterface.java:173) 
    at com.mindorks.tensorflowexample.TensorFlowImageClassifier.create(TensorFlowImageClassifier.java:111) 

は私がexeptionを得る:

classifier = TensorFlowImageClassifier.create(
            getAssets(), 
            MODEL_FILE, 
            LABEL_FILE, 
            INPUT_SIZE, 
            IMAGE_MEAN, 
            IMAGE_STD, 
            "input", 
            "output"); 

しかし、テンソルフローobject detection tutorialでモデルをテストしたところ、完全に機能しました。

誰かが問題を理解するのを手伝ってもらえますか?

ありがとうございました。

+0

モデルファイルをプロジェクトのどこに配置しましたか?サンプルモデルの配置方法と同じように、資産フォルダ内の –

+0

のフォルダに移動します。 – KTB

+0

ファイル名がコードにそのまま書かれていることを確認してください。スペルミスをしたか、アセットフォルダが間違っているようです。あなたはプロジェクトの構造を表示できますか? –

答えて

1

各TensorFlowモデルは、計算のグラフをエンコードします。入力および出力は、グラフ内のノードの名前で識別できます。この特定のケースでは、ロードするモデルにoutputという名前のノードが存在しないため、エラーが表示されます。

上記のスニペットにあるこの名前is coming from the last argument to TensorFlowImageClassifier.create

また、あなたが暗示したAndroidの例では、完全な画像を分類しています。また、object detection python notebookは、ロードしたいモデルが画像内に複数のオブジェクトを検出し、検出された各オブジェクトのテンソル内のスコアがdetection_scoresであることを示しています。

various constantsを作成したモデルに一致する値に更新した後、TensorFlowアンドロイドサンプルの "multiple objects"検出の例(TensorFlowMultiBoxDetector class)からインスピレーションを得たいと思うかもしれません。

希望に役立ちます。

+0

はい、それは私がやった間違いでした。私は分類よりむしろオブジェクト検出アプローチに従うべきです。お返事ありがとうございます – KTB

関連する問題