IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> TensorFlow Lite 图像分类示例应用 Android 部署 -> 正文阅读

[人工智能]TensorFlow Lite 图像分类示例应用 Android 部署

简介

部署 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)

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

连接手机并打开USB调试

RunRun 'app'




步骤

1. 下载示例应用代码

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

2. 用 Android Studio 打开项目

examples/lite/examples/image_classification/android

3. 编译项目

BuildMake Project

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

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

4. 安装并运行 APP

连接 Android 设备,RunRun 'app'

5. 编译 APK

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

若没有,BuildBuild Bundle(s) / APK(s)Build APK(s)
在这里插入图片描述




相关概念

浮点模型: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


3. 无法Run,按钮是灰色的

File → Sync Project with Gradle Files

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 中定义的模型

参考 tensorflow官网安卓图像分类示例无法编译解决办法

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. 可能有用的信息

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
}


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




所有示例应用

下载地址



智能问答 BERT Question & Answer

这个应用编译时间非常久,APK 有 109 MB



数字识别 Digit Classifier



手势识别 Gesture Classification

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

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

下载模型 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

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

!pip uninstall keras-nightly
!pip uninstall -y tensorflow
!pip install h5py==2.10.0

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

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

编译并运行



图像分类 Image Classification



图像分割 Image Segmentation



个性化模型 Model Personalization

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



目标检测 Object Detection



姿态估计 Pose Estimation



姿态估计 Posenet



推荐系统 Recommendation



智能回复 Smart Reply



声音分类 Sound Classification



语音控制 Speech Commands



风格迁移 Style Transfer



超分辨率 Super Resolution



文本分类 Text Classification




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




参考文献

  1. Image classification | TensorFlow Lite
  2. TensorFlow Lite image classification Android example application
  3. 示例应用代码详解
  4. 基于Tensorflow2 Lite在Android手机上实现图像分类
  5. Android Gradle plugin release notes
  6. TensorFlow Lite 转换器
  7. Uninitialised Classifier or invalid context
  8. 手把手教你Android run起基于TensorFlow Lite的手势识别
  9. python - Tensorflow issue google colab ; tensorflow._api.v1.compat.v2’ has no attribute internal
  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-07-15 16:10:46  更:2021-07-15 16:11:55 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年4日历 -2024/4/27 12:27:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码