在Android的jni中使用tflite c++ API做推理,以下是记录:
- 进入tensorflow源码根目录,修改WORKSPACE增加如下内容:
1 | android_sdk_repository( |
- 在tensorflow/contrib/lite/BUILD中增加如下内容,用于生成libtensorflowLite.so
1 | cc_binary( |
- 编译,根据APP_ABI可自行设置为armeabi-v7a或者arm64-v8a
1 | # build for armeabi-v7a |
发现提示如下错误:
jni_src/jni/src/utils/xxxxTFLite.cpp:41: error: undefined reference to ‘tflite::InterpreterBuilder::operator()(std::ndk1::unique_ptr<tflite::Interpreter, std::ndk1::default_deletetflite::Interpreter >*)’
原因是ndk-r16b有问题,使用android studio自带的r17 ndk编译
重新编译会生成文件 bazel-bin/tensorflow/contrib/lite/libtensorflowLite.so
这个就是我们需要的动态库,可以通过Android.mk、Application.mk集成到Android工程中使用