【问题标题】:build and run tensorflow lite demo with gradle使用 gradle 构建和运行 tensorflow lite demo
【发布时间】:2018-05-14 12:20:40
【问题描述】:

所以最近根据这个comment tensorflow lite 现在支持 用于对象检测的 mobilenet_ssd。这是伟大的.. 我设法用 bazel 构建和运行演示,但最初我想用 Android Studio 来做。不幸的是我做不到。

这是我得到的错误:

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

通读 cmets,似乎我不是唯一对此感到困惑的人。有解决方案吗?或者目前没有针对此特定更新的 gradle 支持?

非常感谢任何可以澄清这个问题的信息,因为我还是人工智能世界的新手。

【问题讨论】:

    标签: android android-studio machine-learning tensorflow-lite


    【解决方案1】:

    以下是在 Bazel(方法 1)和 Gradle(方法 2)中构建和运行以下(2018 年 8 月 22 日)TensorFlow Lite Android 示例的说明;


    如何让 TensorFlow Lite Android 示例运行 [tensorflow/tensorflow/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)]
      
    • [注意根据https://medium.com/tensorflow/training-and-serving-a-realtime-mobile-object-detector-in-30-minutes-with-cloud-tpus-b78971cf1193,Bazel需要android-ndk-r14b]

    • 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
    • 在 Android 手机上运行示例应用 (tflDetect)(搜索 - tflDetect)
    • [在请求时授予应用权限]

    方法 2(梯度)

    • git clone https://github.com/tensorflow/tensorflow
    • cd tensorflow
    • 可选:git checkout master / 938a3b77797164db736a1006a7656326240baa59
    • 可选:从 tensorflow 中提取 tensorflow/contrib/lite/examples/android 文件夹
    • 在 Android Studio 项目中打开 tensorflow/contrib/lite/examples/android 目录。
    • [安装它请求的所有 Gradle 扩展。]
    • 修改app/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 同步

    • 构建
    • 运行
    • [在请求时授予应用权限]
    • 在 Android 手机上运行示例应用 (tflDetect)(搜索 - 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?
    

    然后尝试以下方法之一;

    • 重启手机,重新运行应用程序
    • Build - 重建项目,然后重新运行应用程序

    [编辑: 要使可选的对象跟踪工作,需要安装libtensorflow_demo.so

    • 假设上述带有 Gradle(方法 2)指令的 TensorFlow Lite Android 示例已经完成
    • 使用上面的 Bazel(方法 1)说明执行 TensorFlow Lite Android 示例 - 这将安装带有 libtensorflow_demo.so 的 Android 示例的工作版本
    • libtensorflow_demo.so 现在需要从 Android 设备上安装的 apk 中提取出来
    • 打开 Android studio - 视图 - 工具窗口 - 设备文件资源管理器
    • 确保已选择 Android 设备
    • /data/app/org.tensorflow.lite.demo/lib/arm - 右键单击​​ libtensorflow_demo.so - 另存为 - 保存到硬盘上的临时文件夹
    • 创建文件夹tensorflow/contrib/lite/examples/android/app/src/main/jniLibs
    • 创建 4 个子文件夹(jniLibs/arm64-v8ajniLibs/armeabi-v7ajniLibs/x86jniLibs/x86_64
    • libtensorflow_demo.so 放在所有子文件夹中
    • 在 Android Studio 中打开tensorflow/contrib/lite/examples/android
    • 使用 Gradle 再次构建
    • 运行 ]​​i>

    如何让 TensorFlow Lite Java Demo 运行 [tensorflow/tensorflow/contrib/lite/java/demo]

    (例如分类模型;mobilenet_quant_v1_224.tflite/labels_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(梯度)

    • git clone https://github.com/tensorflow/tensorflow
    • cd tensorflow
    • 可选:git checkout master / 938a3b77797164db736a1006a7656326240baa59
    • 可选:从 tensorflow 中提取 tensorflow/contrib/lite/java/demo 文件夹
    • 在 Android Studio 项目中打开 tensorflow/contrib/lite/java/demo 目录。
    • [安装它请求的所有 Gradle 扩展。]
    • 编辑应用程序 - 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 同步
    • 构建
    • 运行
    • [在 Android 手机上运行演示应用 (tflitecamerademo)(搜索 - tflitecamerademo)]
    • [在请求时授予应用权限]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多