Tensorflow Lite Android C/C++
1, Tensorflow Lite Android NDK 编译编译native库
请参考文章Tensorflow源码编译。
libtensorflowlite_jni.so为native库,libtensorflowlite.jar所实现java接口,libtensorflowlite-native-header.jar为联系native和java层的JNI接口头文件。
Java的实现:
tensorflow/bazel-tensorflow/tensorflow/lite/java/src/main/java
native的实现:
tensorflow/bazel-tensorflow/tensorflow/lite/java/src/main/native
2,libtensorflowlite-native-header.jar
jar包里有如下头文件:
$ tree libtensorflowlite-native-header
libtensorflowlite-native-header
├── META-INF
│ └── MANIFEST.MF
├── org_tensorflow_lite_NativeInterpreterWrapper.h
├── org_tensorflow_lite_Tensor.h
└── org_tensorflow_lite_TensorFlowLite.h
(1) org_tensorflow_lite_TensorFlowLite.hz
版本号API和初始化Tensorflow Lite的API;
/*
* Class: org_tensorflow_lite_TensorFlowLite
* Method: version
* Signature: ()Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_org_tensorflow_lite_TensorFlowLite_version
(JNIEnv *, jclass);
/*
* Class: org_tensorflow_lite_TensorFlowLite
* Method: initTensorFlow
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_org_tensorflow_lite_TensorFlowLite_initTensorFlow
(JNIEnv *, jclass);
Java_org_tensorflow_lite_TensorFlowLite_version在native/tensorflow_lite_jni.c和native/tensorflow_lite_jni.h中实现。
Java_org_tensorflow_lite_TensorFlowLite_initTensorFlow在native/init_tensorflow_jni.cc和native/init_tensorflow_jni.h中实现;调用了namespace tflite中的InitTensorFlow。
JNIEXPORT void JNICALL Java_org_tensorflow_lite_TensorFlowLite_initTensorFlow(
JNIEnv* env, jclass clazz) {
::tflite::InitTensorFlow();
}
(2) org_tensorflow_lite_NativeInterpreterWrapper.h
主要为interpreter接口;
/*
* Class: org_tensorflow_lite_NativeInterpreterWrapper
* Method: run
* Signature: (JJ)Z
*/
JNIEXPORT jboolean JNICALL Java_org_tensor