Android 使用gradle构建并运行tensorflow lite演示

Android 使用gradle构建并运行tensorflow lite演示,android,android-studio,machine-learning,tensorflow-lite,Android,Android Studio,Machine Learning,Tensorflow Lite,所以最近根据这个tensorflow lite现在支持 用于目标检测的mobilenet_ssd。太好了。。 我设法用bazel构建并运行了演示,但最初我想用Android Studio来实现。不幸的是我做不到 下面是我得到的错误: Error:Plugin with id 'com.android.application' not found. 通过阅读评论,我似乎不是唯一一个对此感到困惑的人。有解决办法吗?或者目前没有gradle支持此特定更新 由于我还是人工智能领域的新手,因此非常感谢能

所以最近根据这个tensorflow lite现在支持 用于目标检测的mobilenet_ssd。太好了。。 我设法用bazel构建并运行了演示,但最初我想用Android Studio来实现。不幸的是我做不到

下面是我得到的错误:

Error:Plugin with id 'com.android.application' not found.
通过阅读评论,我似乎不是唯一一个对此感到困惑的人。有解决办法吗?或者目前没有gradle支持此特定更新


由于我还是人工智能领域的新手,因此非常感谢能够澄清此问题的任何信息。

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

  • (分类/检测/等)
  • (分类)

如何让TensorFlow Lite Android示例运行[TensorFlow/TensorFlow/contrib/Lite/examples/Android]; (例如,对象检测/ssd型号;detect.tflite[/mobilenet\u ssd.tflite]/coco\u labels\u list.txt)

基于的指令

方法1(Bazel)
  • git克隆https://github.com/tensorflow/tensorflow
  • cd-tensorflow
  • 可选:
    git签出主机
    /
    938a3b77797164db736a1006a7656326240baa59
    • [这些说明基于]
  • gedit工作区
    ,并添加对android_sdk_存储库和android_ndk_存储库的引用

    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)]
    
    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]
    
    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]
    
  • [注:根据要求,Bazel需要android-ndk-r14b]

  • bazel build-c opt--config=android\u arm--cxopt='--std=c++11'//tensorflow/contrib/lite/examples/android:tflite\u demo
  • adb安装bazel-bin/tensorflow/contrib/lite/examples/android/tflite\u demo.apk
  • 在Android手机上运行示例应用程序(tflDetect)(搜索-tflDetect)
  • [请求时授予应用程序权限]
方法2(梯度法)
  • git克隆https://github.com/tensorflow/tensorflow
  • cd-tensorflow
  • 可选:
    git签出主机
    /
    938a3b77797164db736a1006a7656326240baa59
    • [这些说明基于]
  • 可选:从tensorflow中提取tensorflow/contrib/lite/examples/android文件夹
  • 在android Studio项目中打开tensorflow/contrib/lite/examples/android目录
  • [安装它请求的所有Gradle扩展。]
  • 修改app/build.gradle

    • 删除(注释掉)此;
      jackOptions{enabled true}
    • 编译“org.tensorflow:tensorflow lite:0.0.0-nightly”
      更改为
      编译“org.tensorflow:tensorflow lite:1.10.0”
      [最新工作修订](或
      编译“org.tensorflow:tensorflow lite:+”
  • [这可防止出现以下错误:

    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)]
    
    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]
    
    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]
    
  • 梯度同步

  • 建造
  • [请求时授予应用程序权限]
  • 在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\u demo.so

  • 假设上面带有Gradle(方法2)说明的TensorFlow Lite Android示例已经完成
  • 使用上面的Bazel(方法1)指令执行TensorFlow Lite Android示例-这将使用
    libtensorflow_demo.so
  • libtensorflow\u演示。因此现在需要从安卓设备上安装的apk中提取
  • 打开Android studio-视图-工具窗口-设备文件资源管理器
  • 确保选择了Android设备
  • /data/app/org.tensorflow.lite.demo/lib/arm
    -右键单击
    libtensorflow\u demo.so
    -另存为-保存到硬盘上的临时文件夹
  • 创建文件夹
    tensorflow/contrib/lite/examples/android/app/src/main/jniLibs
  • 创建4个子文件夹(
    jniLibs/arm64-v8a
    jniLibs/armeabi-v7a
    jniLibs/x86
    jniLibs/x86\u 64
  • 在所有子文件夹中放置
    libtensorflow\u demo.so
  • 在android Studio中打开
    tensorflow/contrib/lite/examples/android
  • 使用Gradle重新构建
  • 运行]

如何让TensorFlow Lite Java演示运行[TensorFlow/TensorFlow/contrib/Lite/Java/Demo] (例如分类模型;mobilenet\u quant\u v1\u 224.tflite/labels\u mobilenet\u quant\u v1\u 224.txt)

基于的指令

方法1(Bazel) 见/(未测试)

方法2(梯度法)
  • git克隆https://github.com/tensorflow/tensorflow
  • cd-tensorflow
  • 可选:
    git签出主机
    /
    938a3b77797164db736a1006a7656326240baa59
    • [这些说明基于]
  • 可选:从tensorflow中提取tensorflow/contrib/lite/java/demo文件夹
  • 在Android Studio项目中打开tensorflow/contrib/lite/java/demo目录
  • [安装它请求的所有Gradle扩展。]
  • 编辑app-build.gradle;
    • androidTestCompile('androidx.test.espresso:espresso-core:3.1.0-alpha3'
      更改为
      androidTestCompile('com.android.support.test.espresso:espresso-core:3.0.2'
    • 编译“org.tensorflow:tensorflow lite:0.0.0-nightly”
      更改为
      编译“org.tensorflow:tensorflow lite:1.10.0”
      [最新工作修订](或
      编译“org.tensorflow:tensorflow lite:+”