对于我们的某个模型,我需要构建一个自定义版本的TensorFlow,以便在我们的应用中导入。默认值不包含某些所需文件。
我在TensorFlow存储库#10153中遵循了这个问题,其中一些存在我遇到的相同问题。他们似乎已经想出了如何从源代码中成功创建和导入自定义TensorFlow。
到目前为止,我成功创建了libtensorflow_inference.so
和libandroid_tensorflow_inference_java.jar
个文件。但是,当我运行应用程序并加载我的模型时,我收到此错误:
FATAL EXCEPTION: main
Process: org.tensorflow.demo, PID: 23980
java.lang.RuntimeException: Unable to start activity ComponentInfo{org.tensorflow.demo/org.tensorflow.demo.ClassifierActivity}: java.lang.RuntimeException: Native TF methods not found; check that the correct native libraries are present in the APK.
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2817)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
Caused by: java.lang.RuntimeException: Native TF methods not found; check that the correct native libraries are present in the APK.
at org.tensorflow.contrib.android.TensorFlowInferenceInterface.prepareNativeRuntime(TensorFlowInferenceInterface.java:534)
at org.tensorflow.contrib.android.TensorFlowInferenceInterface.<init>(TensorFlowInferenceInterface.java:60)
at org.tensorflow.demo.models.Classifier.<init>(Classifier.java:80)
at org.tensorflow.demo.models.yolo.YoloClassifier.<init>(YoloClassifier.java:30)
at org.tensorflow.demo.ClassifierActivity.start(ClassifierActivity.java:269)
at org.tensorflow.demo.ClassifierActivity.onCreate(ClassifierActivity.java:155)
我将.jar放在libs
文件夹中,并将其作为依赖项添加到我的build.gradle中
compile files('libs/libandroid_tensorflow_inference_java.jar')
我还在`armeavi-v7a'文件夹中添加了libtensorflow_inference.so
(并确保在具有此cpu架构的设备上运行它)
我尝试用夜间TensorFlow版本here中的可用替换我的.jar和.so并出现同样的错误。所以我想这个异常与导入有关,我应该遵循哪些步骤来正确地将自定义/外部TensorFlow构建集成为依赖项?
答案 0 :(得分:2)
将自定义库导入项目时遇到了同样的问题(我们删除了未使用的操作)。 像你一样,我尝试导入夜间构建但没有成功。
我尝试在全新的Android projet上运行自定义库时解决了这个问题。我再次按照这里的说明:https://github.com/tensorflow/tensorflow/issues/10153,模型运行良好。
我认为TensorFlow提供的演示使用了大量的gradle选项来重命名/移动默认文件夹。从而打破了一些手动进口。