Здесь приведены инструкции по сборке и запуску следующих (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)]
- [давать разрешения приложению по запросу]