Как настроить демоверсию Android для обнаружения объектов Tensorflow для работы с Inception v2 - PullRequest
0 голосов
/ 09 ноября 2018

Мы создали приложение для Android на основе демонстрационного приложения Android для обнаружения объектов Tensorflow. Он работает при использовании сети Mobilenet, но падает, если мы пытаемся использовать сеть на основе Inception v2.

Возможно ли обнаружение объектов Tensorflow Inception v2 на Android?

https://github.com/tensorflow/models/tree/master/research/object_detection

Мы используем точно такой же код, что и демонстрационная версия детектора Tensorflow. https://github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/android/src/org/tensorflow/demo/TensorFlowObjectDetectionAPIModel.java

Модели из зоопарка здесь, https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/detection_model_zoo.md

Использование TF Object Detection API. Если мы используем сетевой pb-файл, обученный использованию ssd_mobilenet_v2_coco, демо-приложение работает. Если мы используем сетевой pb-файл, обученный с использованием fast_rcnn_inception_v2_coco, он вылетает (см. Ниже)

Возможно ли приложение для Android работать с моделью Inception v2? (Точность мобильной сети очень плохая, но начало намного лучше)

11-14 12:11:47.817 7122-7199/org.tensorflow.demo E/AndroidRuntime: FATAL EXCEPTION: inference
Process: org.tensorflow.demo, PID: 7122
java.nio.BufferOverflowException
at java.nio.FloatBuffer.put(FloatBuffer.java:444)
at org.tensorflow.Tensor.writeTo(Tensor.java:488)
at org.tensorflow.contrib.android.TensorFlowInferenceInterface.fetch(TensorFlowInferenceInterface.java:488)
at org.tensorflow.contrib.android.TensorFlowInferenceInterface.fetch(TensorFlowInferenceInterface.java:442)
at org.tensorflow.demo.TensorFlowObjectDetectionAPIModel.recognizeImage(TensorFlowObjectDetectionAPIModel.java:170)
at org.tensorflow.demo.DetectorActivity$3.run(DetectorActivity.java:288)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.os.HandlerThread.run(HandlerThread.java:61)

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

Я читал об этой проблеме один раз.

Я думаю, что проблема в этой строке вашего кода:

  private static final int MAX_RESULTS = 100;

Это создает массив для вывода с указанной длиной. Я думаю, что SSD mobilenet дает максимальное количество прогнозов, но более быстрый RCNN по умолчанию (без каких-либо настроек с вашей стороны) дает вам больше. Попробуйте увеличить это значение, например, до 500.

0 голосов
/ 12 ноября 2018

Должно быть возможно использовать SSD Inception, хотя это и не рекомендуется. Задание довольно большое для мобильных устройств, и я не думаю, что у нас сейчас нет поддержки его квантования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...