【问题标题】:Can TensorFlow lite can be build with custom CPU?TensorFlow lite 可以使用自定义 CPU 构建吗?
【发布时间】:2018-07-09 13:32:38
【问题描述】:

我正在寻找 TF Lite Android 应用程序

可以在 GIT 上找到:https://github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/lite/java/demo

如何编译 tensorflow lite 框架以使用优化的“原子”cpu 类型?

是否可以在具有“atom”cpu 的 CPU 优化的 MAC 操作系统上编译它?

我想在带有“Intel Atom”处理器的 Android 设备 (SDK 22) 上运行该应用程序。 当我通过 Android Studio 运行应用程序而不进行任何更改时,速率约为 每帧 1200 毫秒。 与安装在我的 Galaxy S9(arm - snapdragon 处理器)上的相同 APK 相比,大约 每帧 30 毫秒

在“build.gradle”中有这个部分:

dependencies {
...    
compile 'org.tensorflow:tensorflow-lite:0.0.0-nightly'

...
}

看来是在下载框架,

如何通过 CPU 优化在本地编译它并设置应用程序使用它而不是下载未优化的夜间版本?

我尝试使用 cpu 标志运行本教程: Installing TensorFlow from Sources,但不确定它究竟如何帮助我处理 Android 场景..

【问题讨论】:

    标签: tensorflow gradle bazel aar tensorflow-lite


    【解决方案1】:

    假设您的 Atom 设备是 x86,请使用 --fat_apk_cpu 标志指定 x86 ABI:

    $ bazel build -c opt --cxxopt='--std=c++11' \ 
        --fat_apk_cpu=x86 \
        //tensorflow/contrib/lite/java/demo/app/src/main:TfLiteCameraDemo 
    

    如果您正在为 64 位设备构建,请将 x86 切换为 x86_64

    bazel-bin/tensorflow/contrib/lite/java/demo/app/src/main/TfLiteCameraDemo.apk 上提供的已构建APK 将包含x86 .so 文件:

    $ zipinfo bazel-bin/tensorflow/contrib/lite/java/demo/app/src/main/TfLiteCameraDemo.apk | grep lib
    -rw----     2.0 fat  1434712 b- defN 80-Jan-01 00:00 lib/x86/libtensorflowlite_jni.so 
    

    如果您的设备已连接,您可以使用bazel mobile-install而不是bazel build直接安装应用程序:

    $ bazel mobile-install -c opt --cxxopt='--std=c++11' \ 
      --fat_apk_cpu=x86 \ 
      --start_app \
      //tensorflow/contrib/lite/java/demo/app/src/main:TfLiteCameraDemo
    

    【讨论】:

    • 这样做时不断出现奇怪的编译错误:“错误:没有为 cpu 'x86' 找到 default_toolchain。有效的 cpu 是:[ darwin, darwin_x86_64, k8, ios_x86_64, ios_i386, ios_armv7, ios_arm64, watchos_i386, watchos_armv7k, tvos_x86_64, tvos_arm64, armeabi-v7a, ]" 如何将此 cpu 类型添加到此 cpu 集合中?
    • 你在运行什么命令?您是直接构建cc_library 吗?
    • 现在我在运行你给我的第一个命令时遇到了这个错误:错误:/Users/myuser/Workspaces/tensorflow/tensorflow/contrib/lite/java/demo/app/src/ main/BUILD:7:1: no such package '@androidsdk//com.android.support': 存储库无法被 '//tensorflow/contrib/lite/java/demo/app/src/main 解析和引用:TfLiteCameraDemo'错误:/Users/myuser/Workspaces/tensorflow/tensorflow/contrib/lite/java/demo/app/src/main/BUILD:7:1:没有这样的包'@androidsdk//com.android.support' : 无法解析和引用存储库
    • 请关注step 3 of the "Building from Source with Bazel" guide在WORKSPACE文件中设置Android SDK和NDK。
    • 看起来确实发生了变化,但文档没有更新。您收到的错误是缺少 SDK。您可以通过在 WORKSPACE 文件中添加行 android_sdk_repository( name = "androidsdk", path = "/path/to/Android/sdk" )android_ndk_repository( name = "androidndk", path = "/path/to/ndk" ) 来手动修复该问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多