Fork me on GitHub

Android端运行Tensorflow

将Tensorflow训练好的模型部署在Android端,网上找到的很多资料要么过于复杂,要么就根本不能运行,于是记录下具体的整合步骤。

New Project

local.propertities文件中指定ndk目录

1
ndk.dir=/Users/zijiao/Library/Android/sdk/ndk-bundle

src/main/jniLibs/[cpu]目录添加对应的libtensorflow_demo.so文件

其中[cpu]包含arm64-v8aarmeabi-v7ax86x86_64

修改build.gradle文件

android闭包中添加

1
aaptOptions { noCompress 'pb' }

android-defaultConfig闭包下添加(可选)

1
2
3
4
5
6
ndk{
//生成的so名字
moduleName "tensorflow_demo"
//输出指定三种abi体系结构下的so库。目前可有可无。
abiFilters "arm64-v8a", "armeabi-v7a", "x86_64", "x86"
}

TensorFlowInferenceInterface.java 拷到src/main/java/org.tensorflow.contrib.android目录下

注意加载so文件

1
2
3
static {
System.loadLibrary("tensorflow_demo");
}

Model文件Label文件拷到src/main/assets目录下

测试是否成功

1
2
3
4
5
6
TensorFlowInferenceInterface inference = new TensorFlowInferenceInterface();
String modelPath = "file:///android_asset/[.pb文件名]";
int code = inference.initializeTensorFlow(getAssets(), modelPath);
if (code == 0) {
// 初始化成功
}


------------- The end -------------