簡體   English   中英

從源 tflite model 構建的 tensorflow-lite-select-tf-ops 和 tensorflow-lite AAR 找不到 org.tensorflow.lite.Interpreter

[英]tensorflow-lite-select-tf-ops and tensorflow-lite AAR built from source tflite model cannot find org.tensorflow.lite.Interpreter

我按照 tensorflow android 指南從源代碼生成tensorflow-lite.aartensorflow-lite-select-tf-ops.aar

https://www.tensorflow.org/lite/guide/build_android

我當前的應用程序適用於,

dependencies {
    ...
    implementation 'org.tensorflow:tensorflow-lite:2.3.0'
    implementation 'org.tensorflow:tensorflow-lite-gpu:2.3.0'
    implementation 'org.tensorflow:tensorflow-lite-select-tf-ops:2.3.0'
}

我希望減小tensorflow-lite-select-tf-ops.aar的大小以減小應用apk大小

我正在關注build_aar.sh過程以使用我的 tflite model 減小大小。 使用的命令,

bash tensorflow/lite/tools/build_aar.sh --input_models=custom_model.tflite --target_archs=arm64-v8a

這會在bazel-bin/tmp文件夾中為custom_model.tflite生成tensorflow-lite.aartensorflow-lite-select-tf-ops.aar ops.aar 。 tflite model 是FP16量化的。

使用新生成的 aar 文件實現,

dependencies {
    ...
//    implementation 'org.tensorflow:tensorflow-lite-select-tf-ops:2.3.0'
//    implementation 'org.tensorflow:tensorflow-lite:2.3.0'
    implementation 'org.tensorflow:tensorflow-lite-gpu:2.3.0'

    implementation files('libs/tensorflow-lite.aar')
//    implementation files('libs/tensorflow-lite-gpu.aar')
    implementation files('libs/tensorflow-lite-select-tf-ops.aar')
}

但是當它們被包含在 android 應用程序編譯錯誤發生。

C:\folder\myapp\app\src\main\java\com\example\mapp\tflite\YoloV4Classifier.java:19: error: cannot find symbol
import org.tensorflow.lite.Interpreter;
                          ^
  symbol:   class Interpreter
  location: package org.tensorflow.lite

tensorflow-lite.aar使用bazel build -c opt --fat_apk_cpu=arm64-v8a --host_crosstool_top=@bazel_tools//tools/cpp:toolchain tensorflow/lite/java:tensorflow-lite時,這個問題就消失了。 但這引入了UnsatisfiedLinkError: dlopen failed: cannot locate symbol with previous tensorflow-lite-select-tf-ops.aar和使用上述命令新建tensorflow-lite.aar

如果我將之前從tensorflow-lite.aar生成的 tensorflow- custom_model.tflite和使用bazel build -c opt --fat_apk_cpu=arm64-v8a --host_crosstool_top=@bazel_tools//tools/cpp:toolchain tensorflow/lite/java:tensorflow-lite生成的新tensorflow-lite.aar lite.aar bazel build -c opt --fat_apk_cpu=arm64-v8a --host_crosstool_top=@bazel_tools//tools/cpp:toolchain tensorflow/lite/java:tensorflow-lite然后有構建錯誤,

More than one file was found with OS independent path 'lib/arm64-v8a/libtensorflowlite_jni.so'

我按照非輸入 tflite model 命令從源代碼生成tensorflow-lite.aartensorflow-lite-gpu.aartensorflow-lite-select-tf-ops.aar ,但應用程序大小變得非常大。 我嘗試了其他方法,但每種方法都會引發一種新的錯誤。

只需將此行添加到應用程序級 build.gradle 中的依賴項

    implementation 'org.tensorflow:tensorflow-lite-select-tf-ops:2.9.0'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM