环境:
Win10
Android studio 3.2
Tensorflow r1.12
一、下载tensorflow源码
git clone git@github.com:tensorflow/tensorflow.git
git checkout r1.12
转存失败重新上传取消
转存失败
重新上传
取消
转存失败重新上传取消
二、修改配置
1. 打开tensorflow/examples/android/AndroidManifest.xml,去掉
<uses-sdk
android:minSdkVersion="21"
android:targetSdkVersion="23" />
转存失败重新上传取消
转存失败
重新上传
取消
转存失败重新上传取消
因为新版的已经不在AndroidManifest.xml中定义sdk的版本了。
2. 将训练好并固化的模型文件frozen_inference_graph.pb和标签文件mydetect.txt拷贝到tensorflow/examples/android/assets目录下。
其中的mydetect.txt文件是自己新建的,里面的内容就是每个类别的label名字,但是注意第一行必须是???
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
}
把
注释掉。避免自动下载模型。
将
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,打开它就可以检测了。