TensorFlow Docker映像下载与TensorFlow Lite APK获取

简介

部署 TensorFlow Lite 图像分类的示例应用在 Android 手机上

本文以 Windows 为例,编译好的 APK 在文末


安装

  • Android Studio 4.1.1,已上传 百度网盘(0h7c)
  • Android 设备,启用开发者选项并打开USB调试
    选项 → 关于手机 → 连续点击版本号 → 找到开发者选项 → 打开 USB 调试
文档说用 Android Studio 3.2.1,然而该版本太旧了,不支持较新的Gradle版本,本人尝试失败



初试

为了下面的步骤能顺利进行,先创建一个 Android 项目

FileNewNew Project...

LanguageJava

Minimum SDKAPI 23: Android 6.0 (Marshmallow)

tensorflow docker 映像下载 tensorflow lite apk_android


创建项目后会自动下载 gradle-6.5 等,并自动编译

连接手机并打开USB调试

RunRun 'app'

tensorflow docker 映像下载 tensorflow lite apk_tensorflow_02


步骤

1. 下载示例应用代码

登录后复制

git clone https://github.com/tensorflow/examples


2. 用 Android Studio 打开项目

examples/lite/examples/image_classification/android

tensorflow docker 映像下载 tensorflow lite apk_python_03



3. 编译项目BuildMake Project

tensorflow docker 映像下载 tensorflow lite apk_python_04


build.gradle 文件会让 SDK 自动下载需要的库,可能遇到一些坑,文末有解决方案

tensorflow docker 映像下载 tensorflow lite apk_tensorflow_05

这两张图是用 Android Studio 3.2.1 截的,实际上我用 Android Studio 4.1.1 时打开项目便开始自动编译,等它自动装好一堆东西就能 Run 了,不过步骤大致相同的



4. 安装并运行 APP

连接 Android 设备,RunRun 'app'

tensorflow docker 映像下载 tensorflow lite apk_python_06



5. 编译 APK

先在 examples/image_classification/android/app/build/outputs/apk/taskApi/debug 中找找

若没有,BuildBuild Bundle(s) / APK(s)Build APK(s)

tensorflow docker 映像下载 tensorflow lite apk_tensorflow_07


相关概念

浮点模型:floating point

量化模型:quantized model


TODO:代码详解

遇到的坑

1. 报错 Failed to open zip file. Gradle’s dependency cache may be corrupt (this sometimes occurs after a network connection timeout.)

删除 C:\Users\Administrator\.gradle\wrapper 中的 dists 文件夹,选择正确的 gradle 版本。

注意!Android Studio 版本较低可能不支持高版本的 gradle


2. 报错 Failed to install the following Android SDK packages as some licences have not been accepted.

登录后复制

cd C:\Users\Administrator\AppData\Local\Android\Sdk\tools\bin

sdkmanager.bat --licenses

接着全部填y

tensorflow docker 映像下载 tensorflow lite apk_python_08


3. 无法Run,按钮是灰色的File → Sync Project with Gradle Files

tensorflow docker 映像下载 tensorflow lite apk_android_09


4. 报错 Build model ‘org.jetbrains.plugins.gradle.model.BuildScriptClasspathModel’ for root project ‘TFLite Image Classification Demo App’ 即 java.lang.AbstractMethodError: org.jetbrains.plugins.gradle.tooling.util.ModuleComponentIdentifierImpl.getModuleIdentifier()Lorg/gradle/api/artifacts/ModuleIdentifier;

同1


5. Cause: dl.google.com:443 failed to respond

修改 C:\Users\Administrator\.gradlegradle.properties

登录后复制

systemProp.https.nonProxyHosts=localhost
systemProp.http.proxyHost=127.0.0.1
systemProp.http.nonProxyHosts=localhost
systemProp.http.proxyPort=1080

或全部注释掉


5. 无法下载模型,缺少 models/download.gradle 中定义的模型


6. 报错 No version of NDK matched the requested version 21.0.6113669. Versions available locally: 22.1.7171670

Install NDK '21.0.6113669' and sync project' 即可


7. 可能有用的信息

tensorflow docker 映像下载 tensorflow lite apk_tensorflow_10



登录后复制

buildscript {
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath "com.android.tools.build:gradle:4.1.1"
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

tensorflow docker 映像下载 tensorflow lite apk_tensorflow_11


gradle-wrapper.properties

登录后复制

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip


所有示例应用

tensorflow docker 映像下载 tensorflow lite apk_Image_12


智能问答 BERT Question & Answer

这个应用编译时间非常久,APK 有 109 MB
tensorflow docker 映像下载 tensorflow lite apk_android_13


数字识别 Digit Classifier

tensorflow docker 映像下载 tensorflow lite apk_python_14


手势识别 Gesture Classification

需自行训练模型,已上传 百度网盘(0118)

打开 examples/gesture_classification/web/index.html ,拍几张图片,训练 TRAIN

tensorflow docker 映像下载 tensorflow lite apk_Image_15


下载模型 DOWNLOAD MODEL,得到 model.jsonmodel.weights.binlabels.txt 三个文件使用  Google Colaboratory → 文件 → 打开笔记本 → GitHub → 填入 https://github.com/tensorflow/examples/blob/master/lite/examples/gesture_classification/ml/tensorflowjs_to_tflite_colab_notebook.ipynb

tensorflow docker 映像下载 tensorflow lite apk_python_16


点搜索图标 → 登陆 Google 账号 → 左侧边栏点文件图标 → 上传三个模型文件 → 在图中两处插入代码并运行 → RESTART RUNTIME(若有)

登录后复制

!pip uninstall keras-nightly
!pip uninstall -y tensorflow





登录后复制
!pip install h5py==2.10.0

tensorflow docker 映像下载 tensorflow lite apk_android_17

逐行运行 → 跳过 !rm -rf *.h5 *.tflite *.json *.binfiles.upload() → 下载得到 model.tflite

labels.txtmodel.tflite 放进 examples/gesture_classification/android/app/src/main/assets

编译并运行

tensorflow docker 映像下载 tensorflow lite apk_python_18


图像分类 Image Classification

tensorflow docker 映像下载 tensorflow lite apk_python_06


图像分割 Image Segmentation

tensorflow docker 映像下载 tensorflow lite apk_tensorflow_20


个性化模型 Model Personalization

先给 4 个不同分类拍 20 张以上图片,训练,识别

tensorflow docker 映像下载 tensorflow lite apk_Android_21


目标检测 Object Detection

tensorflow docker 映像下载 tensorflow lite apk_Android_22


姿态估计 Pose Estimation

tensorflow docker 映像下载 tensorflow lite apk_python_23


姿态估计 Posenet

tensorflow docker 映像下载 tensorflow lite apk_Image_24


推荐系统 Recommendation

tensorflow docker 映像下载 tensorflow lite apk_Image_25


智能回复 Smart Reply

tensorflow docker 映像下载 tensorflow lite apk_tensorflow_26


声音分类 Sound Classification

tensorflow docker 映像下载 tensorflow lite apk_android_27


语音控制 Speech Commands

tensorflow docker 映像下载 tensorflow lite apk_android_28


风格迁移 Style Transfer

tensorflow docker 映像下载 tensorflow lite apk_tensorflow_29


超分辨率 Super Resolution

tensorflow docker 映像下载 tensorflow lite apk_android_30


文本分类 Text Classification

tensorflow docker 映像下载 tensorflow lite apk_python_31



Keras 模型转换为 TensorFlow Lite 模型

代码

登录后复制

import tensorflow as tf

keras_file = 'model.h5'
model = tf.keras.models.load_model(keras_file)
converter = tf.lite.TFLiteConverter.from_keras_model(model)
tflite_model = converter.convert()
with open('model.tflite', 'wb') as f:
    f.write(tflite_model)
    
    


命令行

登录后复制

tflite_convert --keras_model_file=model.h5 --output_file=model.tflite


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空