在Android上跑TensorFlow之接入TensorFlow

来源:互联网 发布:met.sf.json tobean 编辑:程序博客网 时间:2024/06/05 03:31

TensorFlow对移动设备的支持,挺好。

今天我们就来说说如何在Android应用中接入TensorFlow的运行框架。

在TensorFlow源码中,已经很好的包含了对支持Android运行的源码。

我们知道,要在Android中调用Native接口,需要so包和jar包(jni接口),

所以,我们先说说如何在TensorFlow源码中编译so包和jar包:

一、编译so包:

在TensorFlow源码根目录下运行:

bazel build -c opt //tensorflow/contrib/android:libtensorflow_inference.so \
   --crosstool_top=//external:android/crosstool \
   --host_crosstool_top=@bazel_tools//tools/cpp:toolchain \
   --cpu=armeabi-v7a

编译好的so包,会存在:

bazel-bin/tensorflow/contrib/android/libtensorflow_inference.so

二、编译jar包:

在TensorFlow源码根目录下运行:

bazel build //tensorflow/contrib/android:android_tensorflow_inference_java

编译好的jar包,会存在:

bazel-bin/tensorflow/contrib/android/libandroid_tensorflow_inference_java.jar


三、调用步骤:

调用的接口,都封装在TensorFlowInferenceInterface类中,在 tensorflow\contrib\android\java\org\tensorflow\contrib\android\TensorFlowInferenceInterface.java文件里

调用TensorFlow的步骤总结为这几点:加载、输入、运行、输出

1、加载:就是加载模型,生成实例。使用 loadGraph。

2、输入:就是传入参数。使用feed接口。

3、运行:就是运行推理流程。使用run接口。

4、输出:就是获取返回。使用fetch接口。

具体的实现和使用,请参见 tensorflow/examples/android/src/org/tensorflow/demo/TensorFlowImageClassifier.java


备注:

网方源码里也有文档介绍:

tensorflow\contrib\android\README.md