[英]tensorflow-lite-select-tf-ops and tensorflow-lite AAR built from source tflite model cannot find org.tensorflow.lite.Interpreter
我按照 tensorflow android 指南從源代碼生成tensorflow-lite.aar
和tensorflow-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.aar
和tensorflow-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.aar
、 tensorflow-lite-gpu.aar
、 tensorflow-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.