1

Tensorflow を使用してオブジェクト検出用に独自のモデルをトレーニングし、Android 用の Tensorflow モバイルで動作するようにしました。Tensorflow Lite がリリースされ、将来的にモバイルに取って代わるので、私はそれを使い始めたいと思っていました。Tensorflow チームは、オブジェクト検出用の TFLite のデモを提供しました (ここで見つけることができます)。そのため、自分のモデルで動作させようとしましたが、タイトルにエラーが発生しました。logcat は次のとおりです。

05-17 11:18:50.624 25688-25688/? I/tensorflow: DetectorActivity: Camera orientation relative to screen canvas: 90
05-17 11:18:50.624 25688-25688/? I/tensorflow: DetectorActivity: Initializing at size 640x480
05-17 11:18:50.628 25688-25688/? I/tensorflow: MultiBoxTracker: Initializing ObjectTracker: 640x480
05-17 11:18:50.637 25688-25688/? I/tensorflow: DetectorActivity: Preparing image 1 for detection in bg thread.
05-17 11:18:50.689 25688-25707/? I/tensorflow: DetectorActivity: Running detection on image 1
05-17 11:18:52.496 25688-25707/? E/AndroidRuntime: FATAL EXCEPTION: inference
                                                   Process: org.tensorflow.lite.demo, PID: 25688
                                                   java.lang.IllegalArgumentException: Output error: Shape of output target [1, 1917, 4] does not match with the shape of the Tensor [1, 1917, 1, 4].
                                                       at org.tensorflow.lite.Tensor.copyTo(Tensor.java:44)
                                                       at org.tensorflow.lite.Interpreter.runForMultipleInputsOutputs(Interpreter.java:154)
                                                       at org.tensorflow.demo.TFLiteObjectDetectionAPIModel.recognizeImage(TFLiteObjectDetectionAPIModel.java:222)
                                                       at org.tensorflow.demo.DetectorActivity$3.run(DetectorActivity.java:242)
                                                       at android.os.Handler.handleCallback(Handler.java:761)
                                                       at android.os.Handler.dispatchMessage(Handler.java:98)
                                                       at android.os.Looper.loop(Looper.java:156)
                                                       at android.os.HandlerThread.run(HandlerThread.java:61)

注 :モデルをトレーニングするためのチェックポイントとして、ssd_mobilenet_v1_coco_2017_11_17を使用しました。コードで変更したのは、これ (TFLiteObjectDetectionAPIModel.java) だけです。

  private static final int NUM_CLASSES = 3;

検出するオブジェクトが 2 つしかないためです。どんな助けや情報でも大歓迎です。

4

1 に答える 1