所以最近根据这个comment tensorflow lite现在支持 用于对象检测的mobilenet_ssd。哪个好.. 我设法用bazel构建和运行演示,但最初我想用Android Studio做到这一点。不幸的是我无法做到。
以下是我收到的错误:
Error:Plugin with id 'com.android.application' not found.
阅读评论似乎我并不是唯一一个对此感到困惑的人。这有解决方案吗?或者目前没有这个特定更新的gradle支持?
任何可以澄清这个问题的信息都非常受欢迎,因为我还是AI世界的新手。
答案 0 :(得分:2)
以下是在Bazel(方法1)和Gradle(方法2)中构建和运行以下TensorFlow Lite Android示例的说明;
(例如,对象检测/ ssd模型; detect.tflite [/mobilenet_ssd.tflite] /coco_labels_list.txt)
git clone https://github.com/tensorflow/tensorflow
cd tensorflow
git checkout master
/ 938a3b77797164db736a1006a7656326240baa59
gedit WORKSPACE
,并添加对android_sdk_repository和android_ndk_repository的引用;
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)]
[注意,根据https://medium.com/tensorflow/training-and-serving-a-realtime-mobile-object-detector-in-30-minutes-with-cloud-tpus-b78971cf1193,Bazel需要android-ndk-r14b]
bazel build -c opt --config=android_arm --cxxopt='--std=c++11' //tensorflow/contrib/lite/examples/android:tflite_demo
adb install bazel-bin/tensorflow/contrib/lite/examples/android/tflite_demo.apk
git clone https://github.com/tensorflow/tensorflow
cd tensorflow
git checkout master
/ 938a3b77797164db736a1006a7656326240baa59
修改app / build.gradle;
jackOptions { enabled true }
compile 'org.tensorflow:tensorflow-lite:0.0.0-nightly'
更改为compile 'org.tensorflow:tensorflow-lite:1.10.0'
[最新的工作修订版](或compile 'org.tensorflow:tensorflow-lite:+'
[这可以防止出现以下错误:
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]
成绩同步
请注意是否在运行时抛出错误,例如;
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?
然后尝试以下任一操作;
[编辑:
为了使可选的对象跟踪正常工作,需要安装libtensorflow_demo.so
;
libtensorflow_demo.so
libtensorflow_demo.so
/data/app/org.tensorflow.lite.demo/lib/arm
-右键单击libtensorflow_demo.so
-另存为-保存到硬盘驱动器上的临时文件夹中tensorflow/contrib/lite/examples/android/app/src/main/jniLibs
jniLibs/arm64-v8a
,jniLibs/armeabi-v7a
,jniLibs/x86
,jniLibs/x86_64
)libtensorflow_demo.so
放在所有子文件夹中tensorflow/contrib/lite/examples/android
(例如分类模型; mobilenet_quant_v1_224.tflite / labels_mobilenet_quant_v1_224.txt)
基于的指令; https://www.tensorflow.org/mobile/tflite/demo_android
请参见https://www.tensorflow.org/mobile/tflite/demo_android / https://github.com/tensorflow/tensorflow/blob/master/tensorflow/contrib/lite/java/demo/README.md(未经测试)
git clone https://github.com/tensorflow/tensorflow
cd tensorflow
git checkout master
/ 938a3b77797164db736a1006a7656326240baa59
androidTestCompile('androidx.test.espresso:espresso-core:3.1.0-alpha3'
更改为androidTestCompile('com.android.support.test.espresso:espresso-core:3.0.2'
compile 'org.tensorflow:tensorflow-lite:0.0.0-nightly'
更改为compile 'org.tensorflow:tensorflow-lite:1.10.0'
[最新的工作修订版](或compile 'org.tensorflow:tensorflow-lite:+'
[这可以防止出现以下错误:
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]
[根据要求选择; '添加Maven存储库并同步项目']