【Tensorflow】object_detection:win10 android studio cmake编译libtensorflow_demo运行自己的检测模型

本文介绍了在Windows 10环境下,使用Android Studio 3.2和TensorFlow r1.12,如何编译TensorFlow的Android demo并运行自定义的检测模型。步骤包括下载源码、修改配置,如更新AndroidManifest.xml、替换模型文件、修改BUILD文件中的版本号等,并详细说明了每个步骤的具体操作。最后通过同步Gradle文件、连接手机进行调试,成功运行包含自定义模型的TF Detect应用。
摘要由CSDN通过智能技术生成

环境:

Win10

Android studio 3.2

Tensorflow r1.12


一、下载tensorflow源码

git clone  git@github.com:tensorflow/tensorflow.git
git checkout r1.12
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==uploading.4e448015.gif转存失败重新上传取消 wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== uploading.4e448015.gif转存失败 重新上传 取消 wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==uploading.4e448015.gif转存失败重新上传取消 wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

二、修改配置

1. 打开tensorflow/examples/android/AndroidManifest.xml,去掉

    <uses-sdk
        android:minSdkVersion="21"
        android:targetSdkVersion="23" />
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==uploading.4e448015.gif转存失败重新上传取消 wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== uploading.4e448015.gif转存失败 重新上传 取消 wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==uploading.4e448015.gif转存失败重新上传取消 wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

因为新版的已经不在AndroidManifest.xml中定义sdk的版本了。

2. 将训练好并固化的模型文件frozen_inference_graph.pb和标签文件mydetect.txt拷贝到tensorflow/examples/android/assets目录下。

其中的mydetect.txt文件是自己新建的,里面的内容就是每个类别的label名字,但是注意第一行必须是???

???
car
dog
cat
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==uploading.4e448015.gif转存失败重新上传取消 wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== uploading.4e448015.gif转存失败 重新上传 取消 wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==uploading.4e448015.gif转存失败重新上传取消 wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

3. 打开tensorflow/examples/android/BUILD文件,将

android_binary(
    name = "tensorflow_demo",
    srcs = glob([
        "src/**/*.java",
    ]),
    aapt_version = "aapt",
    # Package assets from assets dir as well as all model targets. Remove undesired models
    # (and corresponding Activities in source) to reduce APK size.
    assets = [
        "//tensorflow/examples/android/assets:asset_files",
        ":external_assets",
    ],

修改为

android_binary(
    name = "tensorflow_demo",
    srcs = glob([
        "src/**/*.java",
    ]),
    aapt_version = "aapt",
    # Package assets from assets dir as well as all model targets. Remove undesired models
    # (and corresponding Activities in source) to reduce APK size.
    assets = [
        "//tensorflow/examples/android/assets:asset_files",
        ":external_assets",
        "//tensorflow/examples/android/assets:frozen_inference_graph.pb",
        "//tensorflow/examples/android/assets:mydetect.txt",
    ],

dependencies {
        classpath 'com.android.tools.build:gradle:3.0.1'
        classpath 'org.apache.httpcomponents:httpclient:4.5.4'
    }

修改为我自己使用的版本

dependencies {
        classpath 'com.android.tools.build:gradle:3.2.0'
        classpath 'org.apache.httpcomponents:httpclient:4.5.4'
    }

def nativeBuildSystem = 'bazel'

修改为

def nativeBuildSystem = 'cmake'

android {
    compileSdkVersion 23
    buildToolsVersion '26.0.2'

修改为自己使用的版本

android {
    compileSdkVersion 23
    buildToolsVersion '28.0.2'

添加

defaultConfig {
        minSdkVersion = 21
    }

apply from: "download-models.gradle"
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==uploading.4e448015.gif转存失败重新上传取消 wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== uploading.4e448015.gif转存失败 重新上传 取消 wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==uploading.4e448015.gif转存失败重新上传取消 wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

注释掉。避免自动下载模型。

//apply from: "download-models.gradle"
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==uploading.4e448015.gif转存失败重新上传取消 wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== uploading.4e448015.gif转存失败 重新上传 取消 wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==uploading.4e448015.gif转存失败重新上传取消 wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

dependencies {
    if (nativeBuildSystem == 'cmake' || nativeBuildSystem == 'none') {
        compile 'org.tensorflow:tensorflow-android:+'
    }
}

修改为

dependencies {
    if (nativeBuildSystem == 'cmake' || nativeBuildSystem == 'none') {
        implementation 'org.tensorflow:tensorflow-android:+'
    }
}

4.  打开tensorflow/examples/android/src/org/tensorflow/demo/DetectorActivity.java,将

private static final String TF_OD_API_MODEL_FILE = "file:///android_asset/ssd_mobilenet_v1_android_export.pb";
private static final String TF_OD_API_LABELS_FILE = "file:///android_asset/coco_labels_list.txt";

修改为

  private static final String TF_OD_API_MODEL_FILE = "file:///android_asset/frozen_inference_graph.pb";
  private static final String TF_OD_API_LABELS_FILE = "file:///android_asset/mydetect.txt";

三、编译android demo

现在点击一下android studio的Sync Project with gradle files,

如果不报错就ok了。

手机打开开发者模式,允许调试,连接电脑,点击Run 'app',就编译生成apk并安装到手机上。

在手机上生成了三个快捷方式TF Speech、TF Class、TF Detect、TF Stylize。

其中的TF Detect就是包含自己替换检测模型的app,打开它就可以检测了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值