Я обучил свою модель, используя ssd_mobilenet_v2_quantized_coco , что также было долгим кропотливым процессом копания.Как только обучение прошло успешно, модель правильно обнаруживала изображения с моего ноутбука, но на моем телефоне, как только обнаруживался объект, приложение зависало.Я использовал приложение Android TF lite, доступное на GitHub .Я выполнил некоторую отладку в Android Studio и получил следующий журнал ошибок при обнаружении объекта и сбое приложения:
I/tensorflow: MultiBoxTracker: Processing 0 results from 314 I/tensorflow:
DetectorActivity: Preparing image 506 for detection in bg thread.
I/tensorflow: DetectorActivity: Running detection on image 506
I/tensorflow: MultiBoxTracker: Processing 0 results from 506
I/tensorflow: DetectorActivity: Preparing image 676 for detection in bg thread.
I/tensorflow: DetectorActivity: Running detection on image 676
E/AndroidRuntime: FATAL EXCEPTION: inference
Process: org.tensorflow.lite.demo, PID: 3122
java.lang.ArrayIndexOutOfBoundsException: length=80; index=-2147483648
at java.util.Vector.elementData(Vector.java:734)
at java.util.Vector.get(Vector.java:750)
at org.tensorflow.demo.TFLiteObjectDetectionAPIModel.recognizeImage(TFLiteObjectDetectionAPIModel.java:213)
at org.tensorflow.demo.DetectorActivity$3.run(DetectorActivity.java:247)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:193)
at android.os.HandlerThread.run(HandlerThread.java:65)
Я предполагаю, что ярлыки, расположенные в файле .txt, как-то неправильно читаются.Это связано со строкой:
в org.tensorflow.demo.TFLiteObjectDetectionAPIModel.recognizeImage (TFLiteObjectDetectionAPIModel.java:213)
, и эта строка соответствует следующему коду:
labels.get((int) outputClasses[0][i] + labelOffset)
Однако я не знаю, что изменить в label.txt.Возможно, мне нужно отредактировать этот текст в соответствии с предложением здесь .Любые другие предложения и объяснения возможных причин приветствуются.
Обновление.Я добавил ???к файлам label.txt и compiled / run, но я все еще получаю ту же ошибку, что и выше.PS Я также обучил ssdmobilenet_V2_coco (модель без квантования), и она работает без сбоев в приложении.Я предполагаю, что, возможно, квантование по-разному преобразует индексы меток и, возможно, приводит к внешней ошибке для меток.