Android tensorflow lite选择tf ops,从源tflite模型构建的tensorflow lite AAR找不到org.tensorflow.lite.解释器
我按照tensorflow android指南生成了Android tensorflow lite选择tf ops,从源tflite模型构建的tensorflow lite AAR找不到org.tensorflow.lite.解释器,android,tensorflow,build.gradle,tensorflow-lite,aar,Android,Tensorflow,Build.gradle,Tensorflow Lite,Aar,我按照tensorflow android指南生成了tensorflow lite.aar和tensorflow lite从源代码中选择tf ops.aar 我当前的应用程序与 dependencies { ... implementation 'org.tensorflow:tensorflow-lite:2.3.0' implementation 'org.tensorflow:tensorflow-lite-gpu:2.3.0' implementatio
tensorflow lite.aar
和tensorflow lite从源代码中选择tf ops.aar
我当前的应用程序与
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选择tf ops.aar的大小
以减小appapk
大小
我正在按照build\u aar.sh
流程使用我的tflite模型缩小尺寸。使用的命令
bash tensorflow/lite/tools/build_aar.sh --input_models=custom_model.tflite --target_archs=arm64-v8a
这将生成tensorflow lite.aar
和tensorflow lite在bazel bin/tmp
文件夹中为custom_model.tflite
选择tf ops.aar
。tflite模型是量化的
使用新生成的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\u apk\u cpu=arm64-v8a--host\u crosstool\u top=@bazel\u tools//tools/cpp:toolschain tensorflow/lite/java:tensorflow lite
构建时,这个问题就消失了。但这会引入未满足的链接错误:dlopen失败:无法使用先前的tensorflow-lite选择tf ops.aar
和使用上述命令新建的tensorflow-lite.aar
找到符号
如果我把以前的tensorflow lite.aar
和新的tensorflow lite.aar
都放在bazel build-c opt--fat\u apk\u cpu=arm64-v8a--host\u crosstool\u top=@bazel\u tools//cpp:toolschain tensorflow/lite/java:tensorflow lite
中生成,那么就出现了构建错误
More than one file was found with OS independent path 'lib/arm64-v8a/libtensorflowlite_jni.so'
我按照基于非输入tflite模型的命令生成
tensorflow lite.aar
,tensorflow lite gpu.aar
,tensorflow lite从源代码中选择tf ops.aar
,但应用程序大小变得非常大。我已经尝试过了,但每一个都会带来一种新的错误。问题已修复,如下所述
在将tflite AAR添加到项目中时遇到一些问题,请尝试方法adding AAR工作正常,但问题是从源代码构建的tensorflow lite找不到解释器。我的意思是,我遇到了相同的问题(解释器未找到,但具有正常构建),并且该方法解决了问题。