создайте и запустите tenorflow lite демо с Gradle - PullRequest
0 голосов
/ 14 мая 2018

так недавно, согласно этому комментарию tenorflow lite теперь поддерживает mobilenet_ssd для обнаружения объекта. Что здорово .. Мне удалось создать и запустить демо с помощью Bazel, но первоначально я хотел сделать это с Android Studio. К сожалению, я не смог этого сделать.

Вот ошибка, которую я получаю:

Error:Plugin with id 'com.android.application' not found.

Читая комментарии, кажется, я не единственный, кто запутался в этом. Есть ли решение для этого? или в данный момент нет поддержки gradle для этого конкретного обновления?

Любая информация, которая могла бы прояснить эту проблему, очень ценится, так как я все еще новичок в мире ИИ.

1 Ответ

0 голосов
/ 22 августа 2018

Здесь приведены инструкции по сборке и запуску следующих (22 августа 2018 г.) примеров TensorFlow Lite для Android в Bazel (метод 1) и Gradle (метод 2);


Как получить примеры TensorFlow Lite для Android для запуска [tenorflow / tenorflow / contrib / lite / examples / android];

(например, обнаружение объектов / модели ssd; detect.tflite [/mobilenet_ssd.tflite] /coco_labels_list.txt)

Инструкции на основе; https://medium.com/tensorflow/training-and-serving-a-realtime-mobile-object-detector-in-30-minutes-with-cloud-tpus-b78971cf1193

Метод 1 (Базель)

  • git clone https://github.com/tensorflow/tensorflow
  • cd tensorflow
  • ДОПОЛНИТЕЛЬНО: git checkout master / 938a3b77797164db736a1006a7656326240baa59
  • gedit WORKSPACE и добавьте ссылки на android_sdk_repository и android_ndk_repository;

    android_sdk_repository(
        name = "androidsdk",
        api_level = 28,
        build_tools_version = "28.0.1",
        # Replace with path to Android SDK on your system
        path = "/[INSERTCORRECTPATHHERE]/android-sdk-linux",
    )
    android_ndk_repository(
       name="androidndk",
       path="/[INSERTCORRECTPATHHERE]/android-ndk-r14b",
       api_level=28)
    
  • [Это предотвращает следующую ошибку:

    ERROR: /.../tensorflow/contrib/lite/kernels/internal/BUILD:620:1: no such package '@androidndk//': The repository could not be resolved and referenced by '//tensorflow/contrib/lite/kernels/internal:cpu_check'
    ERROR: Analysis of target '//tensorflow/contrib/lite/examples/android:tflite_demo' failed; build aborted: Analysis failed
    FAILED: Build did NOT complete successfully (60 packages loaded)]
    
  • [Примечание: для Bazel требуется android-ndk-r14b согласно https://medium.com/tensorflow/training-and-serving-a-realtime-mobile-object-detector-in-30-minutes-with-cloud-tpus-b78971cf1193]

  • bazel build -c opt --config=android_arm --cxxopt='--std=c++11' //tensorflow/contrib/lite/examples/android:tflite_demo
  • adb install bazel-bin/tensorflow/contrib/lite/examples/android/tflite_demo.apk
  • Запуск примера приложения (tflDetect) на телефоне Android (поиск - tflDetect)
  • [давать разрешения приложению при запросе]

Метод 2 (Gradle)

  • git clone https://github.com/tensorflow/tensorflow
  • cd tensorflow
  • ДОПОЛНИТЕЛЬНО: git checkout master / 938a3b77797164db736a1006a7656326240baa59
  • ДОПОЛНИТЕЛЬНО: извлекать папку tenorflow / contrib / lite / examples / android из тензор потока
  • Откройте каталог tenorflow / contrib / lite / examples / android в проекте Android Studio.
  • [Установите все необходимые расширения Gradle.]
  • изменить приложение / build.gradle;

    • удалить (закомментировать) это; jackOptions { enabled true }
    • изменить compile 'org.tensorflow:tensorflow-lite:0.0.0-nightly' на compile 'org.tensorflow:tensorflow-lite:1.10.0' [последняя рабочая версия] (или compile 'org.tensorflow:tensorflow-lite:+'
  • [Это предотвращает следующую ошибку:

    08-22 05:03:19.470 24480-24480/org.tensorflow.lite.demo W/System.err: TensorFlowLite: failed to load native library: dlopen failed: cannot locate symbol "__android_log_vprint" referenced by "/data/app/org.tensorflow.lite.demo-2/lib/arm/libtensorflowlite_jni.so"...
    08-22 02:48:55.728 29643-29643/org.tensorflow.lite.demo E/art: No implementation found for long org.tensorflow.lite.NativeInterpreterWrapper]
    
  • Gradle Sync

  • Сложение
  • Run
  • [давать разрешения приложению по запросу]
  • Запуск примера приложения (tflDetect) на телефоне Android (поиск - tflDetect)

Обратите внимание, если при запуске выдается ошибка, например;

    Unknown failure (at android.os.Binder.execTransact(Binder.java:573))
    Error while Installing APKs
    ...
    Installation failed with message Invalid File: /.../app/build/intermediates/split-apk/debug/slices/slice_5.apk.
    It is possible that this issue is resolved by uninstalling an existing version of the apk if it is present, and then re-installing.
    WARNING: Uninstalling will remove the application data!
    Do you want to uninstall the existing application?

Затем попробуйте одно из следующих действий:

  • Перезагрузите телефон и перезапустите приложение
  • Сборка - пересобрать проект и перезапустить приложение

[EDIT: Чтобы включить дополнительное отслеживание объектов, необходимо установить libtensorflow_demo.so;

  • Предположим, что примеры TensorFlow Lite для Android с приведенными выше инструкциями Gradle (метод 2) уже выполнены
  • Выполните примеры TensorFlow Lite для Android с инструкциями Bazel (метод 1), приведенными выше - это установит рабочую версию примеров Android с libtensorflow_demo.so
  • libtensorflow_demo.so теперь нужно извлечь из установленного apk на устройстве Android
  • Открыть Android studio - Просмотр - Инструмент Windows - Device File Explorer
  • Убедитесь, что выбрано устройство Android
  • /data/app/org.tensorflow.lite.demo/lib/arm - Щелкните правой кнопкой мыши libtensorflow_demo.so - Сохранить как - сохранить во временную папку на жестком диске
  • создать папку tensorflow/contrib/lite/examples/android/app/src/main/jniLibs
  • создать 4 подпапки (jniLibs/arm64-v8a, jniLibs/armeabi-v7a, jniLibs/x86, jniLibs/x86_64)
  • место libtensorflow_demo.so во всех подпапках
  • Открыть tensorflow/contrib/lite/examples/android в Android Studio
  • Сборка заново с использованием Gradle
  • Выполнить]

Как запустить демонстрационное Java-приложение TensorFlow Lite для запуска [tenorflow / tenorflow / contrib / lite / java / demo]

(например, классификация моделей; mobilenet_quant_v1_224.tflite / tags_mobilenet_quant_v1_224.txt)

Инструкции на основе; https://www.tensorflow.org/mobile/tflite/demo_android

Метод 1 (Базель)

См. https://www.tensorflow.org/mobile/tflite/demo_android / https://github.com/tensorflow/tensorflow/blob/master/tensorflow/contrib/lite/java/demo/README.md (не тестировалось)

Метод 2 (Gradle)

  • git clone https://github.com/tensorflow/tensorflow
  • cd tensorflow
  • ДОПОЛНИТЕЛЬНО: git checkout master / 938a3b77797164db736a1006a7656326240baa59
  • ДОПОЛНИТЕЛЬНО: извлекать папку tenorflow / contrib / lite / java / demo из тензор потока
  • Откройте каталог tenorflow / contrib / lite / java / demo в проекте Android Studio.
  • [Установите все необходимые расширения Gradle.]
  • edit app - build.gradle;
    • изменить androidTestCompile('androidx.test.espresso:espresso-core:3.1.0-alpha3' на androidTestCompile('com.android.support.test.espresso:espresso-core:3.0.2'
    • изменить compile 'org.tensorflow:tensorflow-lite:0.0.0-nightly' на compile 'org.tensorflow:tensorflow-lite:1.10.0' [последняя рабочая версия] (или compile 'org.tensorflow:tensorflow-lite:+'
  • [Это предотвращает следующую ошибку:

    08-22 05:03:19.470 24480-24480/org.tensorflow.lite.demo W/System.err: TensorFlowLite: failed to load native library: dlopen failed: cannot locate symbol "__android_log_vprint" referenced by "/data/app/org.tensorflow.lite.demo-2/lib/arm/libtensorflowlite_jni.so"...
    08-22 02:48:55.728 29643-29643/org.tensorflow.lite.demo E/art: No implementation found for long org.tensorflow.lite.NativeInterpreterWrapper]
    
  • [При запросе выберите; 'добавить репозиторий Maven и проект синхронизации']

  • Gradle Sync
  • Сборка
  • Запуск
  • [Запуск демонстрационного приложения (tflitecamerademo) на телефоне Android (поиск - tflitecamerademo)]
  • [давать разрешения приложению по запросу]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...