android studio 集成TensorFlow Demo

来源:互联网 发布:ups监控软件下载 编辑:程序博客网 时间:2024/06/06 21:32

将编译完成的 libandroid_tensorflow_inference_java.jar 和 armeabi-v7a/libtensorflow_inference.so文件拉到项目libs文件夹内

修改CMakeLists.txt  //不添加,添加后会无法进行c++编程

add_library(tensorflow SHARED IMPORTED )set_target_properties(  tensorflow                        PROPERTIES IMPORTED_LOCATION                        ${CMAKE_SOURCE_DIR}/libs/${ANDROID_ABI}/libtensorflow_inference.so                        )

修改build.gradle

externalNativeBuild {    cmake {        cppFlags ""        abiFilters 'armeabi-v7a'    }}sourceSets {    main {        jniLibs.srcDirs = ['libs']    }}

tensorflow 官方demo的文件拉到项目

添加权限

uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.CAMERA"/><uses-feature android:name="android.hardware.camera" android:required="false"/><uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/><uses-feature android:name="android.hardware.camera.front" android:required="false"/><uses-feature android:name="android.hardware.camera.front.autofocus" android:required="false"/>

activity

<activity android:name=".ClassifierActivity" android:screenOrientation="portrait"/><activity android:name=".DetectorActivity" android:screenOrientation="portrait"/>

MainActivity内调用就可以预览了

public void onClassifier(View view){    Intent intent = new Intent(this,ClassifierActivity.class);    startActivity(intent);}public void onDetector(View view){    Intent intent = new Intent(this,DetectorActivity.class);    startActivity(intent);}

就这样把源码拉进自己的项目

模型下载

tensorflow_inception_graph.pb

multibox_model.pb

stylize_quantized.pb

ssd_mobilenet_v1_android_export.pb

conv_actions_frozen.pb

将下载的模型拉到assets文件夹

模型下载链接在TensorFlow源码的WORKSPACE内,不过没有graph-tiny-yolo-voc.pb

2017/10/10更新

加入tensorflow后不能进行jni编程,不然报各种错误

删除CMakeLists.txt的以下代码 

add_library(tensorflow SHARED IMPORTED )set_target_properties(  tensorflow                        PROPERTIES IMPORTED_LOCATION                        ${CMAKE_SOURCE_DIR}/libs/${ANDROID_ABI}/libtensorflow_inference.so                        )
在java代码中添加

static {    System.loadLibrary("native-lib");    System.loadLibrary("tensorflow_inference");}
这样就又可以愉快的用c++编程了

我自己在jdk1.8环境编译tensorflow的arm64-v8a,armeabi,armeabi-v7a,x86,x86_64的so文件和jar包
链接: https://pan.baidu.com/s/1nuQ4UpF 密码: hust