Модель обнаружения объектов Google Cloud Vision падает на Android - PullRequest
0 голосов
/ 24 января 2020

Я недавно обучил модели обнаружения объектов в Google Cloud Vision. Я экспортировал файл метаданных jason, текстовый файл метки и файл tflite модели обученной модели и намереваюсь запустить его на Android. Однако я не могу запустить эту модель с помощью демонстрационного приложения Android, так как оно каждый раз вылетает.

Используемое демонстрационное приложение совместимо с локальной обученной и преобразованной моделью tflite, но не с той, которая была экспортирована из Google Cloud.

Что здесь может быть не так и как это можно решить?

Спасибо

Ссылка: Демо-приложение: https://github.com/tensorflow/examples/tree/master/lite/examples/object_detection

Частичный журнал:

2020-01-24 11:29:11.628 18071-18071/org.tensorflow.lite.examples.detection E/libc: Access denied finding property "persist.camera.privapp.list"
2020-01-24 11:29:11.732 18071-18101/org.tensorflow.lite.examples.detection I/tensorflow: CameraConnectionFragment: Opening camera preview: 640x480
2020-01-24 11:29:11.769 18071-18102/org.tensorflow.lite.examples.detection D/vndksupport: Loading /vendor/lib/hw/android.hardware.graphics.mapper@2.0-impl.so from current namespace instead of sphal namespace.
2020-01-24 11:29:11.770 18071-18102/org.tensorflow.lite.examples.detection D/vndksupport: Loading /vendor/lib/hw/gralloc.msm8937.so from current namespace instead of sphal namespace.
2020-01-24 11:29:11.803 18071-18071/org.tensorflow.lite.examples.detection I/Timeline: Timeline: Activity_idle id: android.os.BinderProxy@5ab1c5e time:332335506
2020-01-24 11:29:12.198 18071-18101/org.tensorflow.lite.examples.detection D/tensorflow: CameraActivity: Initializing buffer 0 at size 307200
2020-01-24 11:29:12.201 18071-18101/org.tensorflow.lite.examples.detection D/tensorflow: CameraActivity: Initializing buffer 1 at size 153599
2020-01-24 11:29:12.203 18071-18101/org.tensorflow.lite.examples.detection D/tensorflow: CameraActivity: Initializing buffer 2 at size 153599
2020-01-24 11:29:12.204 18071-18101/org.tensorflow.lite.examples.detection I/tensorflow: DetectorActivity: Preparing image 1 for detection in bg thread.
2020-01-24 11:29:12.311 18071-18100/org.tensorflow.lite.examples.detection I/tensorflow: DetectorActivity: Running detection on image 1
2020-01-24 11:29:12.475 18071-18100/org.tensorflow.lite.examples.detection E/AndroidRuntime: FATAL EXCEPTION: inference
    Process: org.tensorflow.lite.examples.detection, PID: 18071
    java.lang.IllegalArgumentException: Cannot convert between a TensorFlowLite buffer with 307200 bytes and a Java Buffer with 270000 bytes.
        at org.tensorflow.lite.Tensor.throwIfShapeIsIncompatible(Tensor.java:332)
        at org.tensorflow.lite.Tensor.throwIfDataIsIncompatible(Tensor.java:305)
        at org.tensorflow.lite.Tensor.setTo(Tensor.java:123)
        at org.tensorflow.lite.NativeInterpreterWrapper.run(NativeInterpreterWrapper.java:148)
        at org.tensorflow.lite.Interpreter.runForMultipleInputsOutputs(Interpreter.java:296)
        at org.tensorflow.lite.examples.detection.tflite.TFLiteObjectDetectionAPIModel.recognizeImage(TFLiteObjectDetectionAPIModel.java:193)
        at org.tensorflow.lite.examples.detection.DetectorActivity$2.run(DetectorActivity.java:183)
        at android.os.Handler.handleCallback(Handler.java:790)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:175)
        at android.os.HandlerThread.run(HandlerThread.java:65)

===================================== ===================

Обновление: теперь мы знаем, что это потому, что изображение, подаваемое на модель, и форма ввода модели не совпадают , Форма ввода / вывода моделей, обученных из Google Cloud Vision, кажется непоследовательной. Недавно я получил один из [1 320 320 3] и [1 20 4], а другой из [1 512 512 3] и [1 20 4].

Демонстрационное приложение предназначено для обрабатывать модели с [1 300 300 3] входом и [1 10 4] выходом.

Как назначить формы модели перед тренировкой в ​​Google Cloud Vision или как сделать демонстрационное приложение способным обрабатывать модель определенной c формы?

================================= =======================

В качестве попытки включить демонстрационное приложение для обработки модели определенной c формы, я изменил TF_OD_API_INPUT_SIZE с 300 на 320, что, похоже, решило проблему формы входных данных. Однако проблемы возникают на стороне вывода.

Новый журнал ошибок сообщает: java.lang.IllegalArgumentException: Cannot copy between a TensorFlowLite tensor with shape [1, 20, 4] and a Java object with shape [1, 10, 4].

Изменение TEXT_SIZE_DIP с 10 на 20. Не помогает.

1 Ответ

0 голосов
/ 05 февраля 2020

Причина для cra sh состоит в том, что входная форма не совпадает с формой модели, после решения которой возникает другая cra * sh из-за несоответствия выходной формы.

Решение этой проблемы заключается в настройке формы ввода-вывода демонстрационного приложения в соответствии с метаданными модели, предоставленными AutoML в Google Cloud.

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